您的位置:首页 > 编程语言

细小人脸检测的实践(Finding Tiny Faces论文代码复现)

2017-09-10 17:55 393 查看
https://www.cs.cmu.edu/~peiyunh/tiny/这个主页上介绍了CVPR中的一篇文章,关于细小人脸检测的。小物体检测一直还是CV界比较有挑战的一个问题。从作者的摘要可以看出,主要完成了以下三个工作:

We explore three aspects of the problem in the context of finding small faces: 

(1)the role of scale invariance,

(2)image resolution, 

(3)and contextual reasoning. 

具体而言,论文关键点包括以下三个方面:

Multi-task modeling of scales



目前常用的方法是使用尺度归一化分类器或者在 ROI 池化特征图上运行区域分类器。将区域尺寸归一化到一个标准尺寸,会面临一个简单的问题,因此直观的想法是:分别训练不同尺度的检测器。然而这种问题肯定会带来复杂性的增加。通过发现对卷积网络后端小尺寸特征图进行放大,这对检测小目标很重要。因此作者最后采用了尺度不变方式,来处理图像金字塔以捕获大规模变化,并采用特定尺度混合检测器

整个论文实现检测的流程如下:从输入图像开始,首先创建一个粗图像金字塔(包括2X插值)。然后,我们将缩放的输入图像输入到CNN中(论文中采用了resnet-101),以便在每个分辨率下预测模板响应(用于检测和回归)。最后,我们在原始分辨率图像上应用非最大抑制(NMS)来获得最终检测结果。





觉得工作挺有意义的,于是进行了代码的复现。

具体过程:

(1)安装matlab

(2)安装matconvnet,这个必须采用作者的fork版本,否则会出现split函数没有找到的问题。

(3)直接运行

tiny_face_detector.m这个文件进行测试。(利用这种运行的方式可以避免反复加载预训练模型,提高测试效率)


具体的执行过程可以看到如下的字眼,即可以看到实际过程中采用了多种分辨率。

find the pretrained model file

./trained_models/hr_res101.matLoading pretrained detector model...

load modelProcessing data/3.jpg at scale 0.062500.

Processing data/3.jpg at scale 0.125000.

Processing data/3.jpg at scale 0.250000.

Processing data/3.jpg at scale 0.500000.

Processing data/3.jpg at scale 1.000000.

Processing data/3.jpg at scale 1.414214.

Processing data/3.jpg at scale 2.000000.

下面为一些测试结果:



这种不是正面拍摄的照片,检测结果居然还是相当好的。



挑了张阅兵的照片,由于原始的照片是:650*350的,检测结果就相对一般了,主要可能是作者采用的20*15的框,已经超过了后面那排的人脸的像素。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微小人脸 matconvnet