GitHub - zuoqing1988/ZQCNN-v0.0: 一款比mini-caffe更快的Forward库
source link: https://github.com/zuoqing1988/ZQCNN-v0.0
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
ZQCNN-v0.0是ZuoQing参照mini-caffe写的forward库,随便用用
更新日志
2018-08-15日更新
(1)添加自然场景文本检测,模型从TextBoxes转过来的。我个人觉得速度太慢,而且准确度不高。
注意这个项目里用的PriorBoxLayer与SSD里的PriorBoxLayer是不同的,为了导出ZQCNN格式的权重我修改了deploy.prototxt保存为deploy_tmp.prototxt。 从此处下载模型。
(2)添加图片鉴黄,模型从open_nsfw转过来的,准确度高不高我也没测过。
从此处下载模型。
2018-08-10日更新
成功转了mxnet上的GenderAge-r50模型 以及Arcface-LResNet100E-IR,与转MobileFaceNet模型步骤一样。
下面Model Zoo 有我转好的模型,比自动转出来的应该略快。
打开ZQCNN.sln运行SampleGenderAge查看效果。我E5-1650V4的CPU,单线程时间波动很大,均值约1900-2000ms,四线程400多ms。
2018-08-09日更新
添加mxnet2zqcnn,成功将mxnet上的MobileFaceNet转成ZQCNN格式(不能保证其他模型也能转成功,ZQCNN还不支持很多Layer)。
第一步:编译出mxnet2zqcnn.exe
第二步:下载model-y1.zip然后解压
第三步:在刚才解压的目录下运行命令行 mxnet2zqcnn.exe model-symbol.json model-0000.params test.zqparams test.nchwbin
第四步:用记事本打开test.zqparams, 在第一行(Input Layer)后面加上 C=3 H=112 W=112 然后保存
第五步:把test.zqparams和test.nchwbin复制到model文件夹下,然后在VS2015里运行SampleMobileFaceNet.exe,注意工作目录是$(SolutionDir)
自动转出来的速度慢了不少,可以手工修改test.zqparams,可以参考ArcFace-MobileFaceNet-v0
2018-08-07日更新
BUG修复:之前Convolution, DepthwiseConvolution, InnerProduct, BatchNormScale/Scale默认with_bias=true, 现在改成默认with_bias=false。也就是之前的代码无法加载不带bias的这几个Layer。
示例,如下这样一个Layer,以前会默认为有bias_term,现在默认没有bias_term
Convolution name=conv1 bottom=data top=conv1 num_output=10 kernel_size=3 stride=1
2018-08-06日更新
增加人脸识别在LFW数据库的精度测试。打开ZQlibFaceID.sln可以看到相关Project。
由于C++代码的计算精度与matlab略有差距,统计出的精度也有一些差别,但是相差在0.1%以内。
2018-08-03日更新
支持多线程(通过openmp加速)。请注意,目前多线程反而比单线程慢
2018-07-26日更新
支持MobileNet-SSD。caffemodel转我用的模型参考export_mobilenet_SSD_caffemodel_to_nchw_binary.m。需要编译出matcaffe才行。 你可以试试这个版本caffe-ZQ
2018-06-05日更新
跟上时代潮流、发布源码。 忘了说需要依赖openblas,我是直接用的mini-caffe里面的那个版本,自己编译出来的很慢。
Model Zoo
人脸检测
人脸识别
模型名称 LFW精度 耗时 备注 SphereFace04 98.2% - 不建议使用 SphereFace04bn 98.5% - 不建议使用 SphereFace06bn 98.7%-98.8% - 不建议使用 SphereFace20 99.2%-99.3% 单线程约195ms, 3.6GHz 不建议使用 模型名称 LFW精度 耗时 备注 SphereFace04bn256 97.8%-97.9% 单线程6-7ms, 3.6GHz 速度最快 Mobile-SphereFace10bn 98.6%-98.7% 单线程15ms, 3.6GHz 性价比高 MobileFaceNet-v0 99.13%-99.23% 单线程33-35ms,4线程14-15ms, 3.6GHz 从model-y1.zip转的格式 MobileFaceNet-v1 99.17%-99.37% 单线程33-35ms,4线程14-15ms, 3.6GHz 我自己用insightface训练了一把 MobileFaceNet-res2-6-10-2-dim128 99.67%-99.55%(matlab crop), 99.72-99.60%(C++ crop) 时间与dim256接近 网络结构与dim256一样,只不过输出维数不同 MobileFaceNet-res2-6-10-2-dim256 99.60%-99.60%(matlab crop), 99.62-99.62%(C++ crop) 单线程约85ms,四线程约30ms, 3.6GHz 网络结构在下载链接里,用faces_emore训练的 MobileFaceNet-res2-6-10-2-dim512 99.52%-99.60%(matlab crop), 99.63-99.72%(C++ crop) 时间与dim256接近 网络结构与dim256一样,只不过输出维数不同。感谢moli训练此模型 MobileFaceNet-res4-8-16-4-dim256 99.78%-99.78%(matlab crop), 99.75-99.75%(C++ crop) 单线程约135ms,四线程约42ms, 3.6GHz 网络结构在下载链接里,用faces_emore训练的 ArcFace-r34 99.65%-99.70% 单线程500ms+,3.6GHz - ArcFace-r34-v2 99.73%-99.77%(matlab crop), 99.68-99.78%(C++ crop) 单线程500ms+,3.6GHz - ArcFace-r50 99.75%-99.78% 单线程700ms+,3.6GHz - ArcFace-r100 99.80%-99.82% 单线程1900ms+,四线程480ms, 3.6GHz 时间波动很大表情识别
FacialEmotion 七类表情用Fer2013训练
性别年龄识别
GenderAge-r50从insightface的gamodel-r50转的格式。
目标检测
MobileNetSSD 从MobileNet-SSD转的格式
MobileNetSSD-Mouth 用于SampleDetectMouth
文字检测
图片鉴黄
相关文章
(4)向量点积的精度问题
(5)ZQCNN支持Depthwise Convolution并用mobilenet改了一把SphereFaceNet-10
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK