139

GitHub - zuoqing1988/ZQCNN-v0.0: 一款比mini-caffe更快的Forward库

 6 years ago
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.
neoserver,ios ssh client

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

人脸检测

MTCNNMTCNN转的格式

人脸识别

模型名称 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-r50insightfacegamodel-r50转的格式。

目标检测

MobileNetSSDMobileNet-SSD转的格式

MobileNetSSD-Mouth 用于SampleDetectMouth

文字检测

TextBoxesTextBoxes转的格式

图片鉴黄

NSFWopen_nsfw转的格式

相关文章

(1)人脸特征向量用整数存储精度损失多少?

(2)千万张脸的特征向量,计算相似度提速?

(3)打造一款比mini-caffe更快的Forward库

(4)向量点积的精度问题

(5)ZQCNN支持Depthwise Convolution并用mobilenet改了一把SphereFaceNet-10

(6)跟上时代潮流,发布一些源码

(7)ZQCNN支持SSD,比mini-caffe快大概30%

(8)ZQCNN的SSD支持同一个模型随意改分辨率

(9)ZQCNN格式的99.78%精度的人脸识别模型

(10)ZQCNN增加人脸识别在LFW数据集上的测试代码

(11)抱紧mxnet的大腿,着手写mxnet2zqcnn


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK