Caffe(13)--(SSRNet模型)Keras轉Caffe教程
阿新 • • 發佈:2018-12-28
SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation
paper:https://github.com/shamangary/SSR-Net/blob/master/ijcai18_ssrnet_pdfa_2b.pdf
1.SSRNet模型Demo
(1)原始碼:https://github.com/shamangary/SSR-Net
(2)開發環境:
TensorFlow – 1.10.1
Keras – 2.2.4
Python – 3.5
(3)原始碼檔案結構:
在/SSR-Net-master/demo/
-
TYY_demo_ssrnet_lbp_webcam.py
– demo指令碼-
lbpcascade_frontalface_improved.xml
– OpenCV人臉檢測用-
SSRNET_model.py
– SSRNet模型解析檔案在
/SSR-Net-master/pre-trained/morph_gender_models/ssrnet_3_3_3_64_1.0_1.0/
目錄下:-
ssrnet_3_3_3_64_1.0_1.0.h5
– 模型結構及權重檔案
2.SSRNet轉換到Caffe
(1)原始碼:https://github.com/lwplw/ssrnet2caffe
TensorFlow – 1.10.1
Keras – 2.2.4
Python – 3.5
Caffe
(3)原始碼檔案結構:
1)SSRNET_model.py – SSRNet模型解析檔案,來自上面SSRNet原始碼,做了修改:
刪掉了def merge_age(x,s1,s2,s3,lambda_local,lambda_d):函式,並修改網路輸出直接為9個引數,age的具體計算放在網路外的demo中,具體見原始碼。
2)convert_ssrnet.py – 轉換指令碼 3)keras2caffe.py – keras層轉換到Caffe層的具體實現 4)ssrnet.caffemodel – 轉換得到的Caffe下模型權重檔案 5)ssrnet.prototxt – 轉換得到的Caffe下模型結構檔案 6)ssrnet_3_3_3_64_1.0_1.0.h5 – keras下的模型結構和權重檔案
(4)其它說明
由於TensorFlow和Caffe的機制不同,在poolling層的原始碼實現上,Caffe有對結果向上取整的操作,最終導致TF下和Caffe下特徵圖的大小不一致,模型引數對應不上。
解決方案:
1)修改Caffe原始碼,並重新編譯。(選擇該方案,轉換完成)
Reference:https://blog.csdn.net/lwplwf/article/details/82418110
2)在Caffe下重新訓練SSRNet。