代碼地址:
https://github.com/subpic/ava-mlsp
目的:
根據作者論文實現代碼結果
過程:
問題1:
from keras import backend as K
K.set_image_dim_ordering("tf")
error: K has no attribute "set_image_dim_ordering"
keras中未包含“set_image_dim_ordering"屬性,而此屬性是用於設置keras後端的數據維度順序,
即將keras的數據維度順序設置爲tensflow的格式。
- 解決方法
安裝版本爲1.13., 將keras版本升級到2.1.6,問題解除。
問題2:
x = apps.inception_block(input_feats, size=1024)
Value error: value input is float32, but allowed type is int32, int64
輸入數據中inception_block模塊的branch3*3中shape未使用int型.
- 解決方法
在size/2前面加上int就行:int(size/2)
問題3:
model path問題
下載的mlsp_wide_best_weight.h文件放在對應路徑即可,文件大小250M
- 解決方法
root_path + 'ava-mlsp-master/models/irnv2_mlsp_wide_orig/model_best_weights.h5‘
問題4:
helper.model問題
讀取測試集合時出現:‘pandas’ has no attribute '__dict__'
主要原因在於,讀取csv文件數據爲pandas時,並沒有__dict__方法可用,直接使用對應元祖的索引序號提取對應測試集圖片,可得到測試結果。 將讀取數據對應部分改爲 :
row.__dict__.intput_name改爲:
row[15]
最終得到測試結果:
Evaluated on test-set
SRCC/PLCC: 0.752 0.755
ACCURACY: 0.816087916499
數據分佈圖如下:
總結:
- 作者代碼大部分是藉助於keras和tensorflow開源代碼完成工作,不需要從頭開始,提高實現idea效率
- 作者寫的代碼十分嚴謹,從每個函數的功能聲明到數據的生成和可視化,構成一個完整的系統。
- 在實現完成所需功能後,還將通用函數形成庫函數作爲keras基礎上的功能包開源,是有效提高代碼效率的方式之一。