Face Detection with the Faster R-CNN

来源:互联网 发布:研华数据采集卡 编辑:程序博客网 时间:2024/05/20 11:23

物体检测合集Object Detection blog
数据集合集CV Datasets on the web

正文

当我选用Faster RCNN做人脸检测时,已经有了一篇同名的论文了,详见Face Detection with the Faster R-CNN,同时其它博文也有用Faster RCNN训练自己数据集的教程,所以在此就不班门弄斧了。人脸检测的数据集我采用了FDDB,原因是该数据集小,而且之前用过。如果想要训练结果好一点,可以采用WIDER face,MegaFace这些大的数据集。

较其它博文的不同,我模仿Faster RCNN源代码手写了FDDB的训练过程(很多都是可重用的,需要写的不多)。我试过可以不改变solver就可以进行训练,如果出现loss为Nan的情况,可以适当减小lr试试。
这里写图片描述
图片来源于实验室,取自与某Q空间
训练结果比较差,在一些稍微暗一点或者人脸小一点的图片,就没法进行检测。本次练手的目的只是熟悉源码,对与训练结果没有做进一步优化,相关工作上面Face Detection with the Faster R-CNN也做过了,所以就不重复工作了。下次用SSD做个Face detection in video吧。


输入为data, im_info(height, width, scale)和gt_boxes。conv1-conv5为共享卷积层。rpn_cls_score(分类)和rpn_bbox_pred(回归)分别输出2 * 9(anchors)和4 * 9(anchors)。重点是”rpn-data”层anchor的操作。那么问题来了。

如何实现共享卷积层?
RPN和Fast R-CNN共享卷积层。RPN在features maps生成的候选窗口,然后经roi pooling后再检测,边框校准。
交替训练方法:
1. Stage 1 RPN, init from ImageNet model’
2. Stage 1 RPN, generate proposals
2. Stage 1 Fast R-CNN using RPN proposals, init from ImageNet model
3. Stage 2 RPN, init from stage 1 Fast R-CNN model
4. Stage 2 RPN, generate proposals
5. Stage 2 Fast R-CNN, init from stage 2 RPN R-CNN model

anchors的工作原理?
在conv feature map上做3*3的滑窗,每个窗口区域预测输入图像的3种尺度(128,256,512)和3种长宽比(1:1,1:2,2:1)的候选区。以40*60的feature map为例,总共有约20000(40*60*9)个anchor(候选区, region proposal)。针对人脸检测(大致为正方形),anchors可以调整长宽比。


Code

1 0
原创粉丝点击