本文使用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])