一、背景
同时已经训练好一个基于Mxnet的人脸属性检测模型,为了适应项目需要要将Mxnet转为ncnn模型。
Mxnet模型格式如下:
二、预期目标
利用上述模型,可以实现人脸属性的检测。检测准确性如下:
('acc_gender: ', 0.9220647773279352)
('acc_glass: ', 0.9949392712550608)
('acc_age: ', 0.8390688259109311)
('acc_race: ', 0.7327935222672065)
转换后的ncnn模型能够实现上述准确性即可认为转化成功。
三、转化流程
1.使用清华源安装MXNET、scikit-image
pip install mxnet -i https://pypi.tuna.tsinghua.edu.cn/simple/
2.按照参考文献编译ncnn
https://blog.csdn.net/ycdhqzhiai/article/details/80738987
ps:
(1)所有命令使用VS的命令提示符工具
(2)如果如果编译ncnn时提示error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”。将CMakeCache.txt中的MD改为MT。
3.参考文献https://www.jianshu.com/p/d8b31688d0a1模型转换。
脚本内容说明:
set MXNET_MODEL_DIR=E:/ncnn/ncnn/build2015/tools/mxnet/orig_model #原始模型文件夹
set NCNN_MODEL_DIR=E:/ncnn/ncnn/build2015/tools/mxnet/converted_model #转换后模型文件夹
mxnet2ncnn.exe %MXNET_MODEL_DIR%/model-symbol.json %MXNET_MODEL_DIR%/model-13999.params %NCNN_MODEL_DIR%/multitask_zxh.param %NCNN_MODEL_DIR%/multitask_zxh.bin #model-symbol.json 原始的名称
model-13999.params原始参数名称
pause
运行后可以得到两个新的模型文件。multitask_zxh.param和multitask_zxh.bin。
四、模型验证
原始的模型是用python调用的,新生成的模型文件需要用C语言调用。按照博客中的方法可以实现新模型的调用,https://blog.csdn.net/qq_36982160/article/details/79929869
同一幅图像,新旧模型得到的向量完全相同。