2 回答

TA貢獻1796條經驗 獲得超7個贊
您可以使用 keras VGG16 API 輕松獲取 VGG16 模型
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
model = VGG16(weights='imagenet', include_top=False)
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
features = model.predict(x)
你read_image方法改變load_image方法。keras API 將調整圖像大小以滿足 vgg16 模型請求。

TA貢獻2019條經驗 獲得超9個贊
如果您使用 opencv 讀取圖像,它應該是 cv2.imread()。就我使用 vgg16 而言,應該有一個 read_image 函數之前定義,它接收任何形狀的圖像,將其調整為標準形狀(224 * 224 * 3)并進行所需的任何其他類型的預處理。
如果您使用的是 keras 預處理,它有一個預定義的 load_img 函數,可以為您進行預處理。
例子 :
from keras.preprocessing.image import load_img
load_image(path,target_size= (224*224*3))
我的樣本加載功能
from keras.preprocessing import image
from keras.applications.imagenet_utils import decode_predictions, preprocess_input
def load_image(path):
img = image.load_img(path,target_size=model.input_shape[1:3])
x = image.img_to_array(img)
x = np.expand_dims(x,axis=0)
x = preprocess_input(x)
return img,x
添加回答
舉報