Caffe(13)--(SSRNet模型)Keras轉Caffe教程

https://github.com/lwplw/ssrnet2caffe


《SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation》
論文https://github.com/shamangary/SSR-Net/blob/master/ijcai18_ssrnet_pdfa_2b.pdf
GitHubhttps://github.com/lwplw/ssrnet2caffe


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
在這裏插入圖片描述(2)開發環境

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。

3.SSRNet網絡結構圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章