总结

基于深度学习的目标检测研究进展
长文干货!走近人脸检测:从 VJ 到深度学习(上)
长文干货!走近人脸检测:从VJ到深度学习(下)

讲讲上面没有的。
关于目标检测,怎么去衡量一个目标检测器的好坏?
显然这个答案是检测速度和检测精度,这是最主要的两个指标,其它的包括训练时间,算法复杂度,算法的适应能力(不同场景,不同类别)。速度的评价指标按时间计算就可以了,对于精度的评价指标包含检测框和分类精度。

  • 检测框,一般就是IOU(交并比)
  • 分类的评价指标就有点多了,有 Precision, Accuracy, Recall, Miss Rate, FPPI(False Positive per Image).我有点懵了,那么多指标到底时怎么算的?

将算法预测的结果分成四种情况。
1. 正确肯定( True Positive,TP):预测为真,实际为真
2. 正确否定( True Negative,TN):预测为假,实际为假
3. 错误肯定( False Positive,FP):预测为真,实际为假
4. 错误否定( False Negative,FN):预测为假,实际为真

Precision = TP/(TP+FP),若实际上都为假,预测总为真,则Precision=0
Recall = TP/(TP+FN),若实际上都为真,预测总为假,则Recall=0
Miss Rate = FN/(TP + FN),反映真被误判为假
Accuracy = (TP + TN)/(P+N) = (TP + TN)/(TP + FN + FP + TN)
FPPI = (False Positive 次数)/N, N为图片数

参考内容 [机器学习指标大汇总]:http://www.36dsj.com/archives/42271

知道了如何衡量一个目标检测器的好坏,怎样设计检测器了?
检测的基本思路

Created with Raphaël 2.1.0窗口特征提取分类检测结果
  • 窗口

    • silding window
    • MCG
    • Selective Search
    • RPN…
  • 特征提取

    • Harr, HOG, LBP, CNN
  • 分类

    • SVM, Softmax
  • 检测结果

    • NMS,边框回归,窗口合并

设计目标检测器最简单有效的方法就是在别人已有的方法上改进。目前目标检测的方法大体分为R-CNN系列和级联系列两类,另外还有基于回归的YOLO,SSD,浅层+深层特征组合使用的Hypercolumns, HyperNet[8],不同大小的 RoI 用不同层的特征Scale Dependent Pooling[9],densebox。R-CNN系列上面已经提供了参考资料,所以这里谈谈上面没有提及的R-FCN,该方法在Faster R-CNN上进一步加速,去掉了检测分支各个ROI之间的重复计算,在feature map提取k*k个位置敏感区,别人的blog。此外,浅层+深层组合,浅层保留了局部细节,利于边框的准确定位。深层特征,更抽象的特征,利于分类。

设计的两条线路

  • 从准到快,R-CNN → Fast R-CNN → Faster R-CNN → R-FCN。
  • 从快到准,基于级联结构检测器。

对于特定的目标检测:人脸的检测要比通用的目标检测在速度上具有更高的要求,实际应用的特定目标检测会在经典的级联基础上修改,为了增加检测速度,可以采取的措施:减小单个CNN的复杂度,多个级联(例如卷积核大小5*5可以分为2个3*3的级联,可参考GoogleNet),加大滑步,减小输入窗口规模,若窗口不够准,可以增加校准模块。

Joint Training of Cascaded CNN for Face Detection

人脸检测中级联卷积神经网络的联合训练[7]
复现最好在caffe-fast-rcnn上进行,因为FaceCraft相比之前的separate cascaded networks修改了bbox location。训练的时候是模块单独训练,然后joint做fine-tune,还是从一开始就joint training? 文中提过threshold layer用于难负样本挖掘(这么翻译好别扭,harder negative ming),那么我倾向于前者,joint起来做fine-tune。


Joint Face Detection and Alignment using Multi-task Cascaded CNN

使用多任务级联卷积神经网络进行人脸检测和对齐【6】这篇文章对【5】进行了如下改进:
减少了滤波数量
滤波器大小由5×5 改为 3×3 以减少计算量
在线样本挖掘

整个架构由R-Net, R-Net, O-Net组成。P-Net区域网络用于获取人脸候选窗口以及bbox回归。R-Net对P-Net进行进一步筛选,O-Net输出网络同R-Net。需要对face,bbox,landmark进行分别训练,例如当训练face时,只采用face的loss,其余的loss设置为0,有点“有我没他”意思。文章后面提出了Multi-source training也仅仅给出了一个overall learning target(整体学习目标公式)。


A CNN Cascade for Face Detection

一种基于级联的卷积神经网络的人脸检测【5】


利用CNN提取特征然后级联的方式检测人脸,由三个弱分类器组成了一个强分类器,对no-faces的检测有很好的加速作用。detection nets 和calibration nets的结构上是相同的,只在输出层有所差异,detection nets的输出是一个二分类,以判断faces和no-faces。calibration nets的输出为45classes的候选项,优化bbox。

候选区域的划定,有N个三维的候选参数{[sn,xn,yn]}Nn=1{\lbrace [s_n, x_n, y_n]\rbrace}_{n=1}^N决定。文中指定了N=45个参数。

sn∈{0.83,0.91,1.0,1.10,1.21}

s_n \in \lbrace 0.83, 0.91, 1.0, 1.10, 1.21\rbrace

xn∈{−0.17,0,0.17}

x_n \in \lbrace -0.17, 0, 0.17 \rbrace

yn∈{−0.17,0,0.17}

y_n \in \lbrace-0.17, 0, 0.17 \rbrace

(x−xnwsn,y−ynhsn,wsn,hsn)

(x - \frac{x_n w}{s_n}, y - \frac{y_n h}{s_n}, \frac{w}{s_n}, \frac{h}{s_n})
分别计算每一个detection nets的输出人脸图像的bbox的bbox calibration,然后较准确的bbox,最后输出的

{[s,x,y]}=1Z∑n=1N[sn,x−N,yn]I(cn>t)

{\lbrace [s, x, y]\rbrace} = \frac{1}{Z}\sum_{n=1}^N[s_n, x-N, y_n]I(c_n>t)

下图间接的反应的检测步骤,该图说明了calibration net有利于提高Recall。

NMS

参考论文 ICPR2006-*Efficient Non-Maximum Suppression


A Fast and Accurate Unconstrained Face Detector

http://www.cbsr.ia.ac.cn/users/scliao/projects/npdface/index.html
https://github.com/CitrusRokid/OpenNPD


From Facial Parts Responses to Face Detection

基于DCN的高效(局部)人脸检测[3]


Multi-view Face Detection Using Deep CNN

基于深度卷积神经网络的多视角人脸检测方法[2],来自yahoo,可自适应多角度及部分遮挡,与R. Girshick et al. feature hierarchies for accurate object detection and semantic segmentation 不同,该方法不需要额外的components,例如分割,bounding-box回归,SVM。

github 1, github 2

数据采用AFLW,为了提高正样本数量,对图片进行随机子窗口采样,将IOU>0.5的列为正样本。通过随机反转来增加数据量。文中没有提负样本的处理方法,总结:将IOU<0.3的作为负样本。正负样本比例为1:2~3(本文采用1:3),此外采用Hard negative mining方法重复训练。

训练方式是在AlexNet的model上进行fine-tunned,fine-tune的方法采用50K迭代,batch size为128,正负样本比1:3,输入图片大小227x227。

与AlexNet不同的是,DDFD(本文检测方法)把全连接通过reshaping的方法改成卷积,不仅使处理任意大小的图片成为可能,同时包含了face classifier的heat-map。

因为CNN只响应227 x227大小的区域,所以通过对图片进行scale来获取新的heat-map用来检测不同大小的face。最后通过heat-map计算face proposals +SVM对图片进行分类,NMS对face进行定位。


如何将全连接层转换为全卷积连接层?

heatmap的实现参考net_surgery

# Load the original network and extract the fully connected layers' parameters.
net = caffe.Net('../models/bvlc_reference_caffenet/deploy.prototxt', '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel', caffe.TEST)
params = ['fc6', 'fc7', 'fc8']
# fc_params = {name: (weights, biases)}
fc_params = {pr: (net.params[pr][0].data, net.params[pr][1].data) for pr in params}for fc in params:print '{} weights are {} dimensional and biases are {} dimensional'.format(fc, fc_params[fc][0].shape, fc_params[fc][1].shape)# Load the fully convolutional network to transplant the parameters.
net_full_conv = caffe.Net('net_surgery/bvlc_caffenet_full_conv.prototxt', '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel',caffe.TEST)
params_full_conv = ['fc6-conv', 'fc7-conv', 'fc8-conv']
# conv_params = {name: (weights, biases)}
conv_params = {pr: (net_full_conv.params[pr][0].data, net_full_conv.params[pr][1].data) for pr in params_full_conv}for conv in params_full_conv:print '{} weights are {} dimensional and biases are {} dimensional'.format(conv, conv_params[conv][0].shape, conv_params[conv][1].shape)for pr, pr_conv in zip(params, params_full_conv):conv_params[pr_conv][0].flat = fc_params[pr][0].flat  # flat unrolls the arraysconv_params[pr_conv][1][...] = fc_params[pr][1]net_full_conv.save('net_surgery/bvlc_caffenet_full_conv.caffemodel')

Joint Cascade Face Detection and Alignment

C++ implementation of Joint Cascade Face Detection and Alignment[1].


Read More

  1. 怎么把人脸检测的速度做到极致?

Resources

  1. Fine-grained evaluation of face detection in the wild该网站同时给出了不少发表在顶会牛刊的人脸检测算法的检测结果及论文列表(部分有开源代码)
  2. Build a Face Detection App Using Node.js and OpenCV by Lukas White (OpenCV+Node.js构建在线人脸检测服务)
  3. 免费人脸检测库libfacedetection

[1]D. Chen, S. Ren, Y. Wei, X. Cao, and J. Sun. Joint Cascade Face Detection and Alignment. ECCV, 2014.
[2]S. S. Farfade, M. Saberian, and L-J Li. Multi-view Face Detection Using Deep Convolutional Neural Networks. ICMR, 2015.
[3]Shuo Yang, Ping Luo, Chen Change Loy, Xiaoou Tang. From Facial Parts Responses to Face Detection: A Deep Learning Approach. ICCV, 2015.
[4]Shengcai Liao, Anil K. Jain, and Stan Z. Li, “A Fast and Accurate Unconstrained Face Detector,” IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015
[5]Haoxiang Li, A Convolutional Neural Network Cascade for Face Detection.
[6]Kaipeng Zhang, et al. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
[7]Qin H, Yan J, Li X, et al. Joint Training of Cascaded CNN for Face Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 3456-3465.
[8]Towards Accurate Region Proposal Generation and Joint Object Detection. CVPR 2016
[9]Fast and Accurate CNN Object Detector with Scale Dependent Pooling
and Cascaded Rejection Classifiers. CVPR 2016.

Face Detection paper 1st season相关推荐

  1. Pedestrian Detection paper

    一.论文 综述类的文章 [1]P.Dollar, C. Wojek,B. Schiele, et al. Pedestrian detection: an evaluation of the stat ...

  2. object detection

    原地址:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html Object Detection Pu ...

  3. Object Detection(目标检测神文)

    目标检测神文,非常全而且持续在更新.转发自:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html,如 ...

  4. Object Detection经典代码与文章

    转载自Object Detection Papers Deep Neural Networks for Object Detection paper: http://papers.nips.cc/pa ...

  5. Oriented RepPoints for Aerial Object Detection

    Oriented RepPoints for Aerial Object Detection paper:https://arxiv.org/abs/2105.11111 摘要 航空目标通常是非轴对齐 ...

  6. Deep Learning Paper读后简记

    发现自己看完paper,总是很快就会被大脑删档,特此进行专栏记录,希望能够持续更新--- Quantization Robust Quantization: One Model to Rule The ...

  7. Unleashing Vanilla Vision Transformer with Masked Image Modeling for Object Detection

    MIMDet Title:Unleashing Vanilla Vision Transformer with Masked Image Modeling for Object Detection p ...

  8. FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection

    Paper name FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection Paper Reading Note UR ...

  9. MONODISTILL: LEARNING SPATIAL FEATURES FOR MONOCULAR 3D OBJECT DETECTION

    Paper name MONODISTILL: LEARNING SPATIAL FEATURES FOR MONOCULAR 3D OBJECT DETECTION Paper Reading No ...

最新文章

  1. ultraedit怎么配置java_【转】UltraEdit配置java环境
  2. SQLServer 一些有用的语句
  3. 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
  4. TCPDUMP/LIBPCAP 1-由零开始
  5. css中的xpath,使用XPath选择CSS类
  6. (195)FPGA上电后IO的默认状态(ISE软件默认为1)
  7. 深度学习及TensorFlow简介
  8. idea中git替换,推送到新的github或者gitlab上面
  9. TCP 的 keeplive保活机制
  10. mysql最左前缀原则学习笔记,in也可以走索引
  11. 【定义】三角形行列式和对角行列式
  12. Linux第七章相关代码
  13. java对象list_java 8 从一个list对象转list对象的属性
  14. scrapy爬取微信公众号内容,多管道储存,orm数据储存
  15. 算法中的大O是什么意思
  16. 前端开发学习之一------前端开发是什么以及我们要学什么
  17. RBG三颜色填格子(非DP实现)
  18. 阿里AI天池大赛-天猫复购预测-基于XGBoost模型预测
  19. 百个增量配电PPP项目将公布 千亿投资逐鹿电改工业园试点
  20. redmine mysql 优化_Redmine性能优化方案

热门文章

  1. 聊聊浏览器的标准模式和怪异模式
  2. WPS的PPT 宋体 黑体显示乱码的解决方案
  3. AOP 切点指定多个包
  4. 数独游戏思路html,数独游戏的前端实现
  5. secureCRT字体颜色、文件夹和文件区分显示的解决办法
  6. thinkcmf调用子类
  7. 关于python中的复数、下列说法正确的是_关于Python中的复数,下列说法正确的是?...
  8. 2021年05月软件设计师真题透析
  9. 049_jQuery 操作标签
  10. python编程比赛_用Python编程分析4W场球赛后,2018世界杯冠军竟是…