[普通]​MTCNN实现流程

作者(passion) 阅读(1148次) 评论(0) 分类( 软件)


文章:https://arxiv.org/pdf/1604.02878.pdf


code:


1、mxnet上的实现:https://github.com/Seanlinx/mtcnn


2、tensorflow上的实现:https://github.com/AITTSMD/MTCNN-Tensorflow


3、pytorch上的实现: https://github.com/TropComplique/mtcnn-pytorch


4、caffe上的实现: https://github.com/CongWeilin/mtcnn-caffe


Tips: 个人建议在看这篇文章的时候,对照着pytorch的实现代码理解,尤其是里面的 try_mtcnn_step_by_step.ipynb 非常有助于理解整个文章的流程。


流程图

20180921115721501.png


网络结构图

2018092111573552.png


P-Net即Proposal net用于初始候选框提取


R-Net即refinement net用于进一步精简第一步的候选框


O-Net即output net用于输出最终的人脸框和5个landmark点


注意:P-net是个全卷积神经网络,因此可以输入不同大小的图像


具体流程(inference阶段)

1、对于给定的输入图像,进行scale操作,得到若干个不同scale的输入图像,这一步的目的是能够针对不同大小人脸进行候选框的检测


2-1、将不同scale的图像输入到P-Net中,注意,P-Net中的12123的输入只是一个示意图,代表对于图像中的1212的区域,经过P-Net的卷积后,就变成了一个11,而因为输入的图像大小不同,因此输出的大小也不同,假设输出的大小为wh,则输出的每个点都对应于原图中的一个1212的大小的区域。


2-2、设定阈值,根据face classification的结果,选出可能含有目标框的点


2-3、将这些在不同尺度下可能是目标框的点映射到原始没有经过scale的图中,得到了很多候选区域。


2-4、使用nms算法对目标框进行筛选,并且根据P-Net中输出的offset(对应bounding box regression)对候选框进行微调,校准。


3、将上一步得到所有候选框提取出来,并resize到24*24的大小,输入至R-Net中,并根据face classification的值,进一步对候选进行筛选,类似于2-4中的操作,对目标框位置进行筛选校准


4、类似于第3步的操作,进一步对目标框进行筛选,并得到最终的输出结果,并且根据Facial landmark的输出得到5个landmark。


注意,上述步骤中不同与上图的部分是,在P-Net和R-Net中,都没有输出Facial landmark localization,只在最终的O-Net中输出了。


« 上一篇:wifi共享上网(至尊版wifi)
« 下一篇:NAT穿透(UDP打洞)
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img