我正在研究這個轉移學習個人項目的特徵提取器,並且Kera的VGG16模型的預測函數看起來很慢(一批4幅圖像需要31秒)。我確實期望它很慢,但不確定預測函數是否比應該慢。Keras VGG16預測速度緩慢
data = DataGenerator()
data = data.from_csv(csv_path=csv_file,
img_dir=img_folder,
batch_size=batch)
#####################################################
conv_base = VGG16(include_top=False,
weights='imagenet',
input_shape=(480, 640, 3))
model = Sequential()
model.add(conv_base)
model.add(MaxPooling2D(pool_size=(3, 4)))
model.add(Flatten())
######################################################
for inputs, y in data:
feature_batch = model.predict(inputs)
yield feature_batch, y
所以,我的直覺是,這是由於這些原因慢:
- 我輸入的數據是 有點大((480,640,3)大小的圖像加載)
- 我在弱CPU上運行(M3-6Y30 @ 0.90GHz)
- 我在特徵提取器的末尾有一個扁平操作。
事情我已經嘗試:
- 其他StackOverflow的帖子建議增加最大池層 縮小特徵尺寸/刪除多餘的零。我做了我認爲 一個相當大的最大池窗口(從而減少特徵尺寸 顯著,但我的預測時間的增加。
- 批處理沒有改善時這可能是由於明顯向 使用我的M3 CPU的) 。 1幅圖像的批量大小需要8秒,4 批量大小需要32
是否有關於如何加快預測函數任何想法?我需要至少運行10,000個圖像,並且由於項目的性質,我希望在進入模型之前保留儘可能多的原始數據(將與其他特徵提取模型進行比較)
我所有的圖像文件都保存在本地,但我可以嘗試安裝雲計算機並將代碼移到那裏以支持GPU運行。
問題只是我在Dinky CPU上運行VGG16模型?
指導將不勝感激。
0.9GHz非常,非常非常弱 – OptimusCrime