Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

JiayanYuan/mtcnn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

33 Commits

Repository files navigation

mtcnn

基于caffe的mtcnn训练实现,非常容易非常简单,并且有配套的纯c++版本的mtcnn-light
该算法证实可以被用来做其他目标检测,效果非常好,效率也非常高

caffemodel_2_mtcnnmodel:

caffemodel文件转换为mtcnn-light支持的.h头文件类型的模型,可以直接丢进去替换编译就行了

mtcnn-light:

改进版本的mtcnn-light,配合训练程序,和转换程序,实现一整套的流程到最后部署

train:

训练过程所使用的程序和脚本

mtcnn-caffe:

一个caffe实现的简单,稳定有效的mtcnn版本


训练

1.基础问题
a.样本问题,mtcnn训练时,会把训练的原图样本,通过目标所在区域进行裁剪,得到三类训练样本,即:正样本、负样本、部分(part)样本
其中:
裁剪方式:对目标区域,做平移、缩放等变换得到裁剪区域
IoU:目标区域和裁剪区域的重合度

此时三类样本如下定义:
正样本:IoU >= 0.65,标签为1
负样本:IoU < 0.3,标签为0
部分(part)样本:0.65 > IoU >= 0.4,标签为-1

b.网络问题,mtcnn分为三个小网络,分别是PNet、RNet、ONet,新版多了一个关键点回归的Net(这个不谈)。
PNet:12 x 12,负责粗选得到候选框,功能有:分类、回归
RNet:24 x 24,负责筛选PNet的粗筛结果,并微调box使得更加准确和过滤虚警,功能有:分类、回归
ONet:48 x 48,负责最后的筛选判定,并微调box,回归得到keypoint的位置,功能有:分类、回归、关键点

c.网络大小的问题,训练时输入图像大小为网络指定的大小,例如12 x 12,而因为PNet没有全连接层,是全卷积的网络,所以预测识别的时候是没有尺寸要求的,那么PNet可以对任意输入尺寸进行预测得到k个boundingbox和置信度,通过阈值过滤即可完成候选框提取过程,而该网络因为结构小,所以效率非常高。


2.训练步骤
参考:https://github.com/dlunion/mtcnn/tree/master/train
一般训练几万次后,loss到0.0x的时候就可以接受了

记得在当前目录下创建models-12、models-24、models-48来迎接喜气招财哟~

3.使用阶段
将训练的caffemodel,复制到caffemodel_2_mtcnnmodel里面,编译执行他(代码写的必须3个网络同时存在,所以自己看情况改下),这时候产生的mtcnn_models.h,就是我们要的网络头文件,添加到mtcnn-light覆盖下就可以执行看效果了

引用:

https://github.com/kpzhang93/MTCNN_face_detection_alignment
https://github.com/Seanlinx/mtcnn
https://github.com/CongWeilin/mtcnn-caffe
https://github.com/AlphaQi/MTCNN-light
https://github.com/dlunion/CCDL

注意:

该mtcnn项目的计算方法,和mtcnn-light、和官方的mtcnn计算方法有区别,所以不能被通用,当然如果你修改下也是很容易就跟原版一样了,只是我修改的版本更加容易理解吧

About

基于caffe的mtcnn训练实现,可以训练一个自己的有效的目标检测算法,非常容易非常简单,并且有配套的纯c++版本的mtcnn-light

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • C++ 88.3%
  • C 9.9%
  • Python 1.7%
  • Batchfile 0.1%

AltStyle によって変換されたページ (->オリジナル) /