目标检测(一)-R-CNN系列

有关传统机器学习方法和深度学习方法在目标检测领域的一些总结。

传统机器学习方法

Detection based on Adaboost

Ref:Rapid Object Detection using a Boosted Cascade of Simple Features.(CVPR2001)

这个方法是一个二分类方法,判断是还是不是人脸。主要包括了以下内容:

  • 文中提出了一种新的图片表达方式和三种特征,新的图片表达方式是便于计算特征,而特征本质是一个值,每一种特征会在scale和location维度上变动,所以特征的个数相当庞大。在检测阶段,一个feature也可以在scale上变化,而且因为新的图片表达方式,它不会因为scale因数的不同而导致计算时间的变化,最后也可以在location上进行变化,在输入图片上不断移动。
  • 文中使用稍作修改的AdaBoost算法学习一个强分类器,弱分类器会对应一个特征,它会对应一个阈值,阈值会将特征的值划分为人脸和非人脸两个类别;
  • 文中提出一种退化的决策树strong classifier cascade,每一层就是一个AdaBoost学习的强分类器,每一层的作用就是为了过滤非人脸图片,最后没有被过滤掉的即为人脸图片。作者在训练级联的分类器时,也有他相应的策略,包括了因后面层面对的数据更难而提出降低或提高阈值来提高FPR以保证TPR、使用target来确定每一层强分类器的feature个数和整体的级联层数以寻求在精度和效率上的权衡等。
针对不同尺寸的objects识别

在这个方法中不同于其他如[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识别;和很多其他机器学习方法一样,它利用了图片的像素区域梯度来进行目标的检测,是不能够解决复杂场景下的目标检测的;它所使用的特征,虽然有垂直、水平、对角线梯度信息,但是仅仅使用一个特征数值作为根据进行分类,可以想象丢失的信息非常多;这个算法仅仅做了单对象的定位,没有涉及单对象分类和多对象定位分类。

selective search

此方法是一种产生候选区域的方法,输出可以用于分割和检测。

特点
  • 基于图像中物体的层级关系,从小region融合产生更大的region;
  • 基于多种颜色空间,不同颜色空间面对亮度等图片特征有不同的不变性;
  • 结合多种相似性度量,实现最相似region的融合;
  • 产生多种起始的小区域;
  • 合并所有的region,并对他们排序,以便使用者能够在数量和质量上进行权衡;
  • 最后的排序主要解决两个问题,防止模型输出过于强调大区域,对于那些多个策略都产生的相同区域应该具有更前的位置。
优点

不需要标签,不需要学习,独立于class。

缺点

个人认为selective search的最后排序的效果并不是很好,在R-CNN的论文中提到了region的缺失和定位的粗糙,最后的排序并没有基于region里面的数据进行判断,而是通过提高小区域位于高rank和重复区域位于高rank的可能性,以此作者认为是具有高的rank的region更可能包含object。

Ref

[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评估方法

mAP评估模型主要是用于估计recall-precision的面积,我们自然希望当recall一定时,precision越大越好,即面积越大模型越好。
假定我已经有了一个训练好的模型,它的输出是一系列的预测框伴随着置信度,现在我要评价这个模型的好坏。不同的benchmark数据集使用的mAP方法有些许不同。
主要有两个量决定了mAP值,分别是recall统计量和precision统计量。

需要用到的统计量
  • recall:反应了检测出来的TP的数量占ground truth的比例,通过指定某一个未知的置信度实现,我们也称这个置信度阈值为rank,我们用rank之上的positive预测结合IoU阈值为0.5(不同数据集IoU策略不一样)计算TP FP,从而得到recall值。
  • precision:计算TP占rank之上的比例,反应了我的模型的效果。对应于一个recall值,在mAP中需要计算大于或等于给定recall值的recall范围中precision最大的值,作为对应于给定的recall值的precision。(PS:这里的precision反应的是要实现给定的recall其对应的精确度,其值必定是反映模型在此recall的最优precision,个人认为既然我能够有更高的recall且precision更大,那我理应选择更大的recall对应的更大的precision,这样的值更加符合模型在这个recall的精确度;第二个原因是因为recall是一系列给定的值,先不说模型的recall值能不能够准确与其匹配,recall对应的precision值存在偶然性,并没有上述方法的precision更能反应模型的能力
计算

在PASCAL VOC,给定一个recall[0,0.1,0.2,…,1]分别计算不同recall的precision,再求平均得到AP,每一个类均计算AP,最后做平均得到mAP。

R-CNN

它是早期的基于深度学习的目标检测算法,以至于在它的方法里面还包含有机器学习的方法。
它包含三个模块(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,它们一定存在重叠部分,也即意味着重复地计算,所以运行时间多,效率低下。

Ref

[1]R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.

Fast R-CNN

这里提出了RoI和RoI池化层的概念,RoI池化层是来源于SPPnets所使用的spatial pyramid pooling layer。

特点
  • 实质上是基于ImageNet中的网络的改变;
  • 作者为了充分利用sharing computation,所以没有像SPPnets那样选择在所有图片的region中采样,而是使用了基于等级的采样,即先采样两张图片,然后从每张图片采样64个region;
  • 使用了RoI max pooling layer来实现region特征size的统一化,并实现了这一层反向传播梯度的计算(部分输入的梯度+累计);
  • class-specific的全连接回归层,预测偏移量refine bounding box;
  • 提出了一个multi-task loss,将分类误差和偏移量误差进行了融合
  • 可以使用两种Scale invariance解决办法;
  • 不必使用具体的某个神经网络,而是将这个神经网络作为主干网络,可以从分类网络中进行选择;
  • SPPnets中使用了 spatial pyramid pooling,它们是由输出尺寸不同的RoI max pooling layer构成,所以作者在spatial pyramid pooling做了简化。
优点

相比于R-CNN,增加了多个全连接层,实现回归预测bounding box偏移量,用于各个类refine bounding box;相比于R-CNN,作者受到了SPPnets的启发,于是实现了sharing computation,减少了重复计算;相比于SPPnets的sample实现,作者的sample更有效率,也并没有影响迭代轮数

缺点

同样使用了selective search产生proposal region;

Ref

[1]K.He,X.Zhang,S.Ren,andJ.Sun.Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV,2014.

Mask R-CNN

  • 低分辨率的feature map(高层)对应的感受野更大,相当于使用更少的像素表达图片,高分辨率的feature map(底层)对应的感受野更小,相当于使用较多的像素表达图片。所以对于大的RoI我们使用低分辨率feature map进行切割得到RoI的特征,对于小的RoI我们使用高分辨率feature map进行切割得到RoI的特征;
  • FPN(Feature Pyramid Network)是一种特征学习网络,正如它的名字一样,它主要应用于多尺寸的目标检测任务。它拥有bottom-up和up-bottom的特征融合,使其具有更强的语义和空间信息。
  • 取消了Faster R-CNN中RoI pooling的两个取整操作,分别是取整RoI的位置和进行RoI pooling时grid位置的取整。但在Mask R-CNN中保留了小数,作者提出了新的池化方法RoI Align,这个方法去掉了两个正数化操作,首先它会将RoI进行均等地划分,然后作者在每个cell中使用了4个采样点(4是超参),这四个采样点的坐标是浮点数,需要使用双线性插值基于这个采样点所在的feature map 的cell,计算这个点的值,然后对这四个点进行max pooling(PS:当采样点数为1时,也能取得相似的效果,这样计算量少了效果提高了,得益于非整数化处理);
  • 在mask分支输出分别对于不同类进行训练其对应一层,这样大大减少了类间竞争,提高了性能;
Ref

[1]https://zhuanlan.zhihu.com/p/37998710

你可能感兴趣的:(计算机视觉)