insightface之mxnet model轉caffemodel

我是工程獅發表於2018-08-16

insightface之mxnet model轉caffemodel

使用的工具是更新後的MXNet2Caffe:https://github.com/GarrickLin/MXNet2Caffe

mxnet model轉caffemodel的思路:先將mxnet的model-symbol.json轉化為caffe的prototxt,再由model-symbol.json、model-0000.params以及生成的prototxt檔案轉化為caffemodel。

這裡演示insightface的LResNet100E-IR的網路及模型的轉化,模型效果經過測試基本沒多少損失:

1、將LResNet100E-IR-symbol.json以及LResNet100E-IR-0154.params放置到model_mxnet資料夾下面。
2、終端執行下述命令:
python json2prototxt.py --mx-json model_mxnet/LResNet100E-IR-symbol.json --cf-prototxt model_caffe/LResNet100E-IR.prototxt
能夠直接將LResNet100E-IR-symbol.json轉化為LResNet100E-IR.prototxt,但會提示忽略掉未知的層,其實這些未知的層對於生成的LResNet100E-IR.prototxt網路效能幾乎沒有影響。
3、(1)對生成的prototxt檔案搜尋bottom: “_mulscalar0”,將_mulscalar0改為上一層的"data",也就是將bottom: "_mulscalar0"改為bottom: “data”。
(2)搜尋bottom: “dropout0”,將dropout0改為上一層的bn1,也就是將bottom: "dropout0"改為bottom: “bn1”。
(3)同理,搜尋bottom: “_mulscalar1”,將其改為bottom: “fc1”。
(4)將bottom: "_minusscalar1"改為bottom: “fc7”。
(5)將bottom: "broadcast_mul0"改為bottom: “activation0”。
4、終端執行下述命令:
python mxnet2caffe.py --mx-model model_mxnet/LResNet100E-IR --mx-epoch 154 --cf-prototxt model_caffe/LResNet100E-IR.prototxt --cf-model model_caffe/LResNet100E-IR.caffemodel
最後生成的LResNet100E-IR.caffemodel就儲存在model_caffe資料夾當中。

相關文章