天天看點

keras使用預訓練模型inception_v3識别圖檔

本文使用keras中inception_v3預訓練模型識别圖檔。結合官方源碼,如下内容。

其中,

  • 資料輸入借助opencv-python,
  • 程式運作至​

    ​model=InceptionV3()​

    ​​時按需(如果不存在就)下載下傳模型訓練資料,你也可以(分析源碼​

    ​keras\applications\inception_v3.py​

    ​​)在網址​​離線下載下傳​​​并移動至​

    ​C:\Users\使用者名\.keras\models​

    ​下。
  • 所用​

    ​imagenet_class_index.json​

    ​​(分析源碼:​

    ​keras\applicationsimagenet_utils.py​

    ​​)需要到​​網址下載下傳​​。
  • 所用測試圖檔為部落格頭像
from keras.applications.inception_v3 import InceptionV3
import cv2
import numpy as np
import json

pre_x = []

input = cv2.imread('../data/cat.jpg')
input=cv2.resize(input, (299, 299))
input=cv2.cvtColor(input, cv2.COLOR_BGR2RGB)
pre_x.append(input) #input一張圖檔

pre_x=np.array(pre_x)

model=InceptionV3()
# model.summary()
preds=model.predict(pre_x/255.0)

with open('../data/imagenet_class_index.json') as f:
    js = json.load(f)

for p in preds: #周遊每個input
    s= [(js[str(i)],p[i]) for i in p.argsort()[-1:-4:-1]] #輸出最大3個      

輸出:

[([‘n02112018’, ‘Pomeranian’], 0.81736), ([‘n02085620’, ‘Chihuahua’], 0.066418365), ([‘n02509815’, ‘lesser_panda’], 0.003906726)]

官網教程(隻需要提供測試圖檔,如上會聯網下載下傳)代碼:

from keras.applications.inception_v3 import InceptionV3
import numpy as np
from keras.applications.inception_v3 import preprocess_input
from keras.applications.inception_v3 import decode_predictions
from keras.preprocessing import image


model=InceptionV3()
# model.summary()

# 按照 InceptionV3 模型的預設輸入尺寸
img = image.load_img('../data/rotman.jpg', target_size=(299, 299))

# 提取特征
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

preds = model.predict(x)

print('Predicted:', decode_predictions(preds, top=3)[0])