【目标检测】RCNN (Rich feature hierarchies for accurate object detection and semantic segmentation)
Girshick, Ross, et al. mention substantive hierarchical features for accurate object detection as well as semantic segmentation in their study published in the IEEE conference on computer vision and pattern recognition in 2014.
Region CNN (RCNN)被视为深度学习在目标检测领域的开创性里程碑。作者 Ross Girshick 以其卓越的表现多次在PASCAL VOC目标检测竞赛中夺冠,并于2010年荣获该领域终身成就奖;如今他任职于Facebook旗下的人工智能研究机构FAIR实验室。
思想
本文解决了目标检测中的两个关键问题。
问题一:速度
经典的 目标检测算法通过滑动窗口的方式依次扫描所有可能的区域。本文首先筛选出一组很可能包含物体的候选区域 ,接着,在这些筛选出的候选区域内进行特征检测。
问题二:训练集
经典的区域目标检测算法通过预设的方法从区域中识别特定特征(如Haar特征和HOG特征)。而本文则采用了对深度网络进行自动化的特征提取方法。为此可选的数据集主要有两类:
一种是规模较大的ImageNet ILSVC 2012数据库(约为一百万个图像),它包含了约一千个不同的分类。
另一种是相对较小但功能更为全面的PASCAL VOC 2007数据库(约一万幅图像),它涵盖了二十个主要类别。
本文采用了ImageNet ILSVC 2012数据集作为基础阶段的数据来源,并在此基础上利用PASCAL VOC 2007数据集对模型参数进行了优化配置。
最终模型则将在PASCAL VOC 2007数据集上完成性能评估。
流程
RCNN算法分为4个步骤
该方法用于从一张图像中生成约1千到2千个候选区域(Selective Search方法)。随后将每个候选区域包裹至固定尺寸,并通过深度学习模型提取其特征。这些特征将输入至每类对应的SVM 分类器中进行识别以判断其归属类别。最后通过回归模型对候选框的位置进行微调以实现更为精确的定位。

(注意: 以上框架图是测试的流程图)
候选区生成(Region proposals)
该系统采用Selective Search方法从一张图像中生成约2,000至3,000个候选区域。整体工作流程如下:首先通过一种过分割技术将原始图像划分为小块;接着评估现有小块区域,在所有可能的配对中选择并结合可能性最高的一对;不断重复上述步骤直至整个图像被整合为一个整体区域;最后收集并输出所有曾经存在的区域作为候选区域regin proposal
候选区域生成和后续步骤相对独立,实际可以使用任意算法进行。
合并规则
应优先将色调相近及梯度直方图相似的区域进行融合;对于面积较小的区域以及在BBOX中占比较高的部分,则需特别注意。
第三条旨在确保合并操作的尺度分布较为均衡,并防止一个大区域逐步吞噬其他小区域
例:设有区域范围a-b-c-d-e-f-g-h。合理的合并策略包括:将相邻区域逐步结合为更大的复合区域。
具体实施步骤如下:
- 首先将ab与cd结合形成abcd;
- 然后将ef与gh结合形成efgh;
- 最终将abcd与efgh组合得到完整的abcdefgh。
相反的做法会导致较大的空间分割: - 首先分别处理ab、cd、ef、gh等独立单元;
- 之后逐步将其连接为abcd-e-f-g-h;
- 再进一步整合为abcdef-gh;
- 最终得到abcdefgh这一单一连续的空间体。
第四条,保证合并后形状规则。
例:左图适于合并,右图不适于合并。

上述四条规则仅涵盖区域的颜色直方图、纹理直方图、面积和位置。合并后的区域特征可以直接从子区域特征推导得出,并且具有较高的计算效率。
多样化与后处理
为了尽量不遗漏候选区域,在同一时间分别在RGB、HSV、Lab等不同颜色空间中执行上述操作
作者给出了Selective Search[1]的源码链接https://koen.me/research/selectivesearch/(此处应保留原始链接格式),其中包含了大量以.caffemodel形式存在的.Python文件以及依赖于Mex API构建的应用程序.MEX文件(注意:MEX通常指Matlab扩展),使得深入解析其具体实现较为困难。
特征提取(Feature extraction)
预处理
作者采用了caffe框架,并在Imagenet数据集上应用了Alexnet模型进行研究。由于卷积神经网络对输入图像尺寸有严格要求,在提取特征前需将selective search算法获得的矩形候选区域标准化至统一尺寸为227×227。其中一些细节值得探讨:外扩区域的具体尺寸设置、变形操作时是否应保持原始比例、对框外区域截取还是进行补灰处理等操作均可能对性能产生一定影响。(作者在论文附录A中有详细说明相关技术细节)
训练(Training)
预训练(Supervised pre-trainging)
先使用ImageNet数据集ILVCR 2012,Alexnet网络,训练一个分类的模型.
主要参考了Hinton 2012年在Image Net上的分类网络,并对其实现进行了一定程度的简化。

此网络提取的特征为4096维,之后送入一个4096->1000的全连接(fc)层进行分类。
学习率0.01。
基于ILVCR 2012全数量化的数据集进行模型训练,并对输入的一组图片作为输入样本进行处理后输出结果
调优训练(Domain-specific fine-tuning)
接着利用一个已经训练好的模型,并基于PASCAL VOC 2007数据集对其进行微调优化
网络结构(Alexnet修改)
同样采用上述Alexnet网络架构,在最后一层全连接层中将其神经元数量由4096替换为21个神经元以适应分类任务需求。
实验参数设置学习率为固定值0.001,并采用批量大小为每批次32个正样本(来自20个类别)与96个背景样本相结合的方式进行数据加载。
基于PASCAL VOC 2007的数据集
类别判断
分类器
对每一类目标来说,在深度网络中提取出4096维特征作为输入后,在线性模型中进行分类器训练。具体而言,在每一个类别下都需要单独建立一个SVM分类器,并根据区域建议框(region proposals)与标准框之间的关系进行分类判断。其中,在每一步训练中都需要明确区分正样本和负样本的数据集划分标准。具体来说,在区域建议框与标准框之间计算IoU(交并比)指标作为度量标准,在这一过程中我们采用了**IoU阈值设为0.3的方法来进行分类器的筛选工作。为了提高训练效率并减少计算开销,在负样本筛选过程中采用了标准困难负采样方法**来进行优化处理。作者在补充材料中详细探讨了为何在微调阶段与SVM训练时所采用的标准不同(分别为iou=0.5和iou=0.3),以及为何不直接利用卷积神经网络输出结果而需单独进行SVM分类器训练的原因
正样本 本类的参考标注框 负样本 对每一个候选框进行评估:计算与该类别所有参考标注框的交并比(IoU)均低于0.3,则将其归类为负样本。
位置精修
目标检测问题的评估准则为重叠面积:许多看似具有较高准确性的检测结果,在实际应用中往往由于候选框定位不够精确而导致重叠区域较小。因此有必要实施位置校准优化步骤
回归器(Bounding-box regression)
对每一类目标,使用一个线性回归器进行精修。正则项 λ=10000
- 输入为深度网络pool5层的4096维特征
- 输出为xy方向的缩放和平移。
训练样本
判定为本类的候选框中,和真值重叠面积 IoU大于0.6 的候选框。
测试阶段的检测(Test-time detection)
在测试阶段中,在测试图片上通过selective search方法获取了2000个region proposals,并对该区域进行标准化处理至统一大小(即为227x227像素)。随后,在预设好的CNN模型中进行了前向传播操作以提取特征向量。对于每一个类别标签,在该类别对应的训练数据基础上建立了一个独立的SVM分类器来进行特征向量打分评估。基于此评估结果得到了测试图片中所有区域proposals在各个类别标签上的分数值集合。随后采用贪心算法结合非极大值抑制策略对候选区域proposals进行筛选:首先计算每一个bounding box所占据的区域面积;接着按照分数值从高到低排序选出分数最高的bounding box作为候选框;然后计算其余所有候选框与当前选定 bounding box之间的交并比值(IoU),并去除IoU大于预设阈值的所有候选框;重复上述过程直至候选 bounding box集合为空集为止;最后删除所有分数低于设定阈值的 bounding box以获得最终结果集。实验表明该方法所需时间约为13秒/张(GPU)及53秒/张(CPU),这表明其耗时较长难以达到实时性需求
结果
论文发表于2014年时,DPM已步入瓶颈阶段,在采用复杂特征和结构的情况下所能获得的提升也十分有限。本文引入深度学习至检测领域,在PASCAL VOC数据集上实现了检测率从35.1%大幅提升至53.7%。
该方法的前两个步骤(候选区域提取与特征提取)均与待检测类别无关,在不同类别的模型中可共享相同的计算资源。这两部分运算均在GPU上完成约需13秒。
当同时处理多类别问题时,仅有后两个步骤(判别器设计与结果精修)需要倍增计算开销——这两部分运算均为简单的线性计算——因此处理10万类问题所需时间仅为约10秒。
以上述论文为研究基础,在完成上述工作后提出了Fast R-CNN算法,并同时参考了Faster R-CNN的相关内容。该算法在速度方面实现了质的飞跃,并基本实现了PASCAL VOC目标检测任务的需求
相关知识
1、有监督预训练与无监督预训练
(1)无监督预训练(Unsupervised pre-training)
我们对"无监督预训练"这一术语较为熟悉。值得注意的是,在深度学习领域中,并非所有的模型都依赖于有标签数据进行微调 Fine-Tuning,默认情况下它们都会经过某种形式的微调过程。具体而言,在迁移学习 Transfer Learning过程中通常会使用到一种称为"蒸馏 Distillation"的技术来辅助模型优化。此外,在模型构建 Model Construction的过程中,默认情况下也会涉及到参数初始化 Parameter Initialization这一步骤。
(2)有监督预训练(Supervised pre-training)
在监督条件下进行的预训练任务也可被视为一种迁移学习的过程。例如,在你拥有一批标注完成的人脸年龄分类图像数据集并构建了一个基于卷积神经网络(CNN)的人脸年龄识别模型后,在遇到新的项目目标——人脸识别性别识别时,则可以通过将已有的年龄识别CNN模型作为基础,并去除其最后一层结构从而继承其余网络层的参数,并在此基础上继续优化模型以实现目标任务的学习效果。这也正是迁移学习的核心思想:将前一任务获得的有效参数作为后一任务神经网络初始状态的基础,并通过进一步优化提升其性能水平。
经过标准化处理后的图像分类标注数据量非常庞大;相比之下,在物体检测领域所获得的标注数据相对稀缺;在这种情况下,在仅凭有限标记信息构建高效准确模型方面仍面临着巨大挑战;这也是本研究的核心创新点所在;具体而言,在方法论层面采用了经典的迁移学习框架作为研究基础;该研究首先采用了ILSVRC 2012作为基础训练集;在此基础上开展网络在图像分类任务上的预训练学习;该集合包含了丰富的图像类别信息;涵盖着多达一千个不同的物体类别;相应地,在预 training 过程中CNN将生成一千维的空间表征
2、IOU的定义
由于缺乏对物体检测的经验以及对IOU概念的不了解,在此简要介绍。在进行物体检测时需要准确识别并确定各目标对象的Bounding Box位置。例如如下的图片所示,请注意以下几点:(1)不仅要实现目标对象(如车辆)的位置确定这一基本功能;(2)还能够识别其所属类别及其对应的Bounding Box区域。在Bounding Box定位评估方面存在一个关键指标:Intersection over Union(IoU),即计算两个区域交叠部分与并集的比例来衡量预测框与真实框之间的相似程度。其中IoU即为该评估指标的具体表现形式。

IOU定义了两个bounding box的重叠度,如下图所示:

矩形框A、B的一个重合度IOU计算公式为:
IOU=(A∩B)/(A∪B)
就是矩形框A、B的重叠面积占A、B并集的面积比例:
IOU=SI/(SA+SB-SI)
3、非极大值抑制
在讲解RCNN算法时,在讲解过程中会涉及从一张图片中找出n多个可能是物体的矩形框。随后会对这些矩形框进行类别概率计算:

如上图所示,在图像中我们首先进行了车辆检测定位操作,在此过程中系统成功识别出多个边界框(boundary boxes)。随后根据非极大值抑制算法原理进行筛选,在此过程中系统将候选边界框按照各分类器对目标车辆的概率预测结果进行排序(Sort),并按照从小到大的顺序依次对应各概率值A到F(A, B, C, D, E, F)
以最大概率矩形框F为基础,逐一比较A至E与F之间的**交并比(IoU)**是否超过预先设定的标准;
如果B、D与F的重叠度超出预设的界限,则决定移除B、D,并对第一个矩形框F进行标注。
从剩余的候选区域A、C、E中选出概率最高的E选项后,在计算其覆盖区域与其它候选区域(A和C)之间的交集比例时发现该比例高于设定的标准,则将其移除;同时将该区域标记为我们筛选出的第二个候选区域。
就这样一直重复,找到所有被保留下来的矩形框。
非极大值抑制(NMS)再次理解:
非极大值抑制其实是指那些不属于极值点的元素,在特定区域中寻找极值点的过程即为此方法的核心原理。在这一过程中所涉及的概念是一个领域(Field),它由两个可变参数定义:一个是领域维数(Field Dimension),另一个是领域大小(Field Size)。
这里不涉及通用的NMS算法讨论,而是聚焦于其在目标检测中的应用:即通过滑动窗口的方式依次提取特征,并经过分类器进行识别后赋予每个窗口一个得分。然而由于滑动窗口可能导致多个区域存在包含或大部分重叠的情况,在这种情况下就需要引入非极大值抑制(NMS)来选择得分最高的区域作为最终结果。
2).canny detection(canny NMS):
对梯度幅值进行非极大值抑制
图像梯度幅值矩阵中的各元素数值大小表明该位置处的梯度强度较高。需要注意的是,并不能由此断定该位置一定是边缘(这仅仅属于图像增强这一过程)。在Canny算法框架中,在进行边缘检测时会采用非极大值抑制这一关键步骤:从技术层面讲,则是通过比较每个像素与其邻域的最大灰度值得出,并将这些非极大像素的亮度设置为零以实现去噪效果(这是本人的理解)。
图1 非极大值抑制原理
如图1所示,在进行非极大值抑制操作时首先要判定像素点C在其8邻域内的灰度值是否为最大值。图1中蓝色线条指示了C点的梯度方向依据这一特性可知,在该梯度方向上必定存在局部的最大值也就是说除了C点之外位于该梯度方向上的两个交点dTmp1和dTmp2这两个点的灰度值也有可能成为局部最大值因此只需比较C点与这两个交点的灰度大小即可确定C是否为其所在区域内的局部最大灰度点如果经比较发现C的灰度小于其中任何一个则可排除其作为边缘的可能性这就是非极大值抑制的基本原理
作者认为,在理解的过程中需要注意以下两点:
非最大抑制用于回答下面这个问题:判断当前位置的梯度值是否为沿梯度方向上的局部最大值。具体来说,在该区域中需要比较当前点及其邻域点沿梯度方向上的导数变化情况。
2)梯度方向垂直于边缘方向。
实际上,在Canny算法中我们仅能获取C点邻域内的8个采样点的灰度值。然而dTmp1和dTmp2这两个采样点并不位于这个邻域内。为了能够计算出这两个未知点处的灰度值,则必须基于该两点相邻区域内的已知灰度信息进行线性插值运算。具体而言就是根据g1和g2来计算dTmp1处的插值结果;同样地依据g3和g4则可获得dTmp2处的插值结果;这一步骤需要用到这些未知点梯度方向的信息;这也是为什么上文中我们需要求解梯度方向矩阵Thita的原因所在
在完成非极大值抑制之后,在经过该过程后会生成一个二值图像;其中,在所有非边缘区域的所有像素中都设置了它们的高度(灰度)数值均为零;而那些可能成为边缘候选点的部分,则在其局部区域内找到最大强度,并将其高度数值设定为128;通过下文提供的具体测试图像可以看出,在这些情况下这样的检测结果仍然存在较多由噪声和其他因素导致的虚假边界;因此仍需进行后续处理步骤以进一步优化结果。
4、Selective Search
5、VOC物体检测任务
这类似于一个挑战,在其中包含着二十种不同的物体类别:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/examples/index.html 再加上一个背景类别。总计共有二十一类分类目标,在进行细粒度调优CNN模型时,我们采用Softmax分类层,并设置其输出维度为二十一。
附录(Appendix)
A. Object proposal transformations
作者试验了两种不同的处理方式:
(1)各向异性缩放
该方法相对简便,在处理图像时与图片的比例无关,并无需关心图像是否变形即可直接将其缩放至目标尺寸227\times 227处,请参考图(D)
(2)各向同性缩放
鉴于图片在扭曲后可能会对后续CNN训练的精度产生影响预期的效果,在此基础上作者尝试采用了各向同性缩放方案的具体步骤。
- 在原始图片上,在 bounding box 的基础上向外扩展至形成正方形后进行裁剪;如果超出原图范围,则以 bounding box 内的颜色均值填充外部区域;如图 (B) 所示。
- 从 bounding box 中提取并裁剪出目标区域,并以固定背景色填充至形成正方形,并使背景色与 bounding box 像素均值一致;如图 (C) 所示。

针对异性和同性缩放方案的研究表明,在文献中采用了相应的填充处理。如图所示,在第1和3行中采用了填充值为0的方式;而第2和4行则选择了填充值为16的情况进行了分析比较。通过一系列实验测试后发现,在所有测试用例中均采用了各向异性缩放策略,并设置填充值为16取得了最佳效果。
Reference:
这篇文章主要探讨了基于改进型遗传算法的多目标优化问题求解方法。
此外, 该文还提出了基于改进型遗传算法的多目标优化问题求解方法。
另外, 此文详细阐述了基于改进型遗传算法的多目标优化问题求解方法。
最后, 此文章深入分析了基于改进型遗传算法的多目标优化问题求解方法。
