有关传统机器学习方法和深度学习方法在目标检测领域的一些总结。
Ref:Rapid Object Detection using a Boosted Cascade of Simple Features.(CVPR2001)
这个方法是一个二分类方法,判断是还是不是人脸。主要包括了以下内容:
在这个方法中不同于其他如[1]和[2],这些方法为了识别不同的尺寸的objects,对图片进行了下采样,构成一个图片尺寸的金字塔,而检测器的尺寸不变,检测器会将其内部的数据传入分类器中进行解析。而这篇论文中的方法不会改变图片的尺寸,而是以1.25为因数缩放级联检测器的输入尺寸,因为其的features的计算时间不会因为尺寸的变化而发生变化,这在不同尺寸objects的识别上不会增加额外的时间。
与[1]和[2]检测器扫描一样,这篇论文的检测器也会在图片上以一定步长进行扫描。
[1] H. A. Rowley, S. Baluja, and T. Kanade. Neural network- based face detection. TPAMI, 20:23–38, 1998.
[2]P. Viola and M. Jones. Robust real-time face detection. IJCV, 57(2):137–154, May 2004.
迅速、准确
与深度学习方法相比,它所能处理的数据相当有限,且仅仅支持object or background识别;和很多其他机器学习方法一样,它利用了图片的像素区域梯度来进行目标的检测,是不能够解决复杂场景下的目标检测的;它所使用的特征,虽然有垂直、水平、对角线梯度信息,但是仅仅使用一个特征数值作为根据进行分类,可以想象丢失的信息非常多;这个算法仅仅做了单对象的定位,没有涉及单对象分类和多对象定位分类。
此方法是一种产生候选区域的方法,输出可以用于分割和检测。
不需要标签,不需要学习,独立于class。
个人认为selective search的最后排序的效果并不是很好,在R-CNN的论文中提到了region的缺失和定位的粗糙,最后的排序并没有基于region里面的数据进行判断,而是通过提高小区域位于高rank和重复区域位于高rank的可能性,以此作者认为是具有高的rank的region更可能包含object。
[1]J.Uijlings,K.vandeSande,T.Gevers,andA.Smeulders.Selective search for object recognition. IJCV, 2013.
[2]R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.
mAP评估模型主要是用于估计recall-precision的面积,我们自然希望当recall一定时,precision越大越好,即面积越大模型越好。
假定我已经有了一个训练好的模型,它的输出是一系列的预测框伴随着置信度,现在我要评价这个模型的好坏。不同的benchmark数据集使用的mAP方法有些许不同。
主要有两个量决定了mAP值,分别是recall统计量和precision统计量。
在PASCAL VOC,给定一个recall[0,0.1,0.2,…,1]分别计算不同recall的precision,再求平均得到AP,每一个类均计算AP,最后做平均得到mAP。
它是早期的基于深度学习的目标检测算法,以至于在它的方法里面还包含有机器学习的方法。
它包含三个模块(i.e. selective search、CNN、class-specific linear SVMs)和一个optional bounding box regression(为了提高最后输出region的准确性),主要的三个模块也是借鉴了其他文章中的方法,神经网络的作用只是起到了提取特征的作用,神经网络提取的特征在数据维度上和质量上都优于传统的机器学习方法,所以相比state-of-the-art这篇文章的模型大幅度提高了mAP值。 同时这篇文章也使用了非最大值抑制算法(non-maximum suppression),用于在测试期间去除一些与更高分数的region产生的IoU大于某个学习的阈值的低分数region,每个类独立地进行非最大值抑制。
其中在训练时一个mini-batch的大小是128,测试时是取了2000左右的proposals进行提取特征、分类。
此篇文章开创性得把CNN应用于目标检测,得到了非常好的效果。
R-CNN模型是一个非端到端训练的模型,需要先训练好CNN然后再训练SVMs还有可选的回归;虽然对于所有的类,它仅仅使用一个CNN,但是每一个类都有一个SVM分类器,当类型很多时,模型将会难以去训练。因为multi-stage,导致了需要存储大量的中间feature,去训练SVM和回归。因为一个mini-batch或者测试阶段的前向传播包含了很多的proposals,它们一定存在重叠部分,也即意味着重复地计算,所以运行时间多,效率低下。
[1]R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.
这里提出了RoI和RoI池化层的概念,RoI池化层是来源于SPPnets所使用的spatial pyramid pooling layer。
相比于R-CNN,增加了多个全连接层,实现回归预测bounding box偏移量,用于各个类refine bounding box;相比于R-CNN,作者受到了SPPnets的启发,于是实现了sharing computation,减少了重复计算;相比于SPPnets的sample实现,作者的sample更有效率,也并没有影响迭代轮数;
同样使用了selective search产生proposal region;
[1]K.He,X.Zhang,S.Ren,andJ.Sun.Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV,2014.
[1]https://zhuanlan.zhihu.com/p/37998710