
1.目标检测目标检测Object Detection的任务是找出图像中所有感兴趣的目标并确定它们的类别和位置。目标检测中能检测出来的物体取决于当前任务数据集需要检测的物体有哪些。假设我们的目标检测模型定位是检测动物牛、羊、猪、狗、猫五种结果那么模型对任何一张图片输出结果不会输出鸭子、书籍等其它类型结果。目标检测的位置信息一般由两种格式以图片左上角为原点(0,0)极坐标表示(xmin, ymin, xmax, ymax)中心点坐标(x_center, y_center, w, h)1.1常用的开源数据集PASCAL VOC数据集MS COCO数据集MS COCO的全称是Microsoft Common Objects in Context微软于2014年出资标注的MicrosoftCOCO数据集与ImageNet竞赛一样被视为是计算机视觉领域最受关注和最权威的比赛之一。COCO数据集是一个大型的、丰富的物体检测分割和字幕数据集。这个数据集以场景理解为目标主要从复杂的日常场景中截取图像中的目标通过精确的分割进行位置的标定。图像包括91类目标328,000影像和2,500,000个label。目前为止目标检测的最大数据集提供的类别有80类有超过33 万张图片其中20 万张有标注整个数据集中个体的数目超过150 万个。1.2 目标检测常用的评价指标1.2.1 IOU在目标检测算法中IoUintersection over union交并比是目标检测算法中用来评价2个矩形框之间相似度的指标IoU 两个矩形框相交的面积 / 两个矩形框相并的面积。IOU越大越好。如下图所示那我们就可以通过预测结果与真实结果之间的交并比来衡量两者之间的相似度。一般情况下对于检测框的判定都会存在一个阈值也就是 IoU 的阈值一般可以设置当 IoU 的值大于 0.5 的时候则可认为检测到目标物体。1.2.2 MAPMean Average Precision目标检测问题中的每个图片都可能包含一些不同类别的物体需要评估模型的物体分类和定位性能。因此用于图像分类问题的标准指标precision不能直接应用于此。 在目标检测中mAP是主要的衡量指标。mAP是多个分类任务的AP的平均值而APaverage precision是PR曲线下的面积1.2.3 NMS(非极大值抑制)非极大值抑制Non-Maximum SuppressionNMS顾名思义就是抑制不是极大值的元素。例如在行人检测中滑动窗口经提取特征经分类器分类识别后每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高是行人的概率最大并且抑制那些分数低的窗口。 NMS在计算机视觉领域有着非常重要的应用如视频目标跟踪、数据挖掘、3D重建、目标识别以及纹理分析等 。NMS的原理是对于预测框的列表B及其对应的置信度S,选择具有最大score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的IoU大于阈值Nt的框从B中移除.重复这个过程,直到B为空。使用流程如下图所示首先是检测出一系列的检测框将检测框按照类别进行分类对同一类别的检测框应用NMS获取最终的检测结果通过一个例子看些NMS的使用方法假设定位车辆算法就找出了一系列的矩形框我们需要判别哪些矩形框是没用的需要使用NMS的方法来实现。假设现在检测窗口有A、B、C、D、E 5个候选框接下来进行迭代计算第一轮因为B是得分最高的与B的IoU0.5删除。ACDE中现在与B计算IoUDE结果0.5剔除DEB作为一个预测结果有个检测框留下B放入集合第二轮A的得分最高与A计算IoUC的结果0.5剔除CA作为一个结果最终结果为在这个5个中检测出了两个目标为A和B。1.2.4 目标检测分类方法目标检测算法主要分为two-stage两阶段和one-stage单阶段两类two-stage先由算法生成一系列作为样本的候选框再通过卷积神经网络进行样本分类。如下图所示主要通过一个卷积神经网络来完成目标检测过程其提取的是CNN卷积特征进行候选区域的筛选和目标检测两部分。网络的准确度高、速度相对较慢one-stage:直接通过主干网络给出目标的类别和位置信息没有使用候选区域的筛选网路这种算法速度快但是精度相对Two-stage目标检测网络降低了很多。2.RCNNOverfeat模型最原始的检测方法2014年提出R-CNN⽹络该⽹络不再使⽤暴⼒穷举的⽅法⽽是使⽤候选区域⽅法regionproposal method创建⽬标检测的区域来完成⽬标检测的任务R-CNN是以深度神经⽹络为基础的⽬标检测的模型 以R-CNN为基点后续的Fast R-CNN、Faster R-CNN模型都延续了这种⽬标检测思路。2.1 算法流程和步骤候选区域⽣成使⽤选择性搜索Selective Search的⽅法找出图⽚中可能存在⽬标的侯选区域CNN⽹络提取特征选取预训练卷积神经⽹⽹络AlexNet或VGG⽤于进⾏特征提取⽬标分类训练⽀持向量机SVM来辨别⽬标物体和背景对每个类别都要训练⼀个⼆元SVM⽬标定位训练⼀个线性回归模型为每个辨识到的物体⽣成更精确的边界框2.1.1 候选区域生成在选择性搜索SelectiveSearchSS中使⽤语义分割的⽅法它将颜⾊、边界、纹理等信息作为合并条件采⽤多尺度的综合⽅法将图像在像素级上划分出⼀系列的区域这些区域要远远少于传统的滑动窗⼝的穷举法产⽣的候选区域。SelectiveSearch在⼀张图⽚上提取出来约2000个侯选区域需要注意的是这些候选区域的⻓宽不固定。⽽使⽤CNN提取候选区域的特征向量需要接受固定⻓度的输⼊所以需要对候选区域做⼀些尺⼨上的修改。2.1.2 CNN网络提取特征采⽤预训练模型(AlexNet或VGG)在⽣成的候选区域上进⾏特征提取将提取好的特征保存在磁盘中⽤于后续步骤的分类和回归。1.全连接层的输⼊数据的尺⼨是固定的因此在将候选区域送⼊CNN⽹络中时需进⾏裁剪或变形为固定的尺⼨在进⾏特征提取。2.预训练模型在ImageNet数据集上获得最后的全连接层是1000在这⾥我们需要将其改为N1(N为⽬标类别的数⽬例如VOC数据集中N20coco数据集中N801是加⼀个背景)后进⾏微调即可。3.利⽤微调后的CNN⽹络提取每⼀个候选区域的特征获取⼀个4096维的特征⼀幅图像就是2000x4096维特征存储到磁盘中。2.1.3 目标分类SVM假设我们要检测猫狗两个类别那我们需要训练猫和狗两个不同类别的SVM分类器然后使⽤训练好的分类器对⼀幅图像中2000个候选区域的特征向量分别判断⼀次这样得出[2000, 2]的得分矩阵如下图所⽰对于N个类别的检测任务需要训练N⽬标类别数⽬个SVM分类器对候选区域的特征向量4096维进⾏⼆分类判断其是某⼀类别的⽬标还是背景来完成⽬标分类。2.1.4 目标定位通过选择性搜索获取的⽬标位置不是⾮常的准确实验证明训练⼀个线性回归模型在给定的候选区域的结果上去预测⼀个新的检测窗⼝能够获得更精确的位置。修正过程如下图所⽰通过训练⼀个回归器来对候选区域的范围进⾏⼀个调整这些候选区域最开始只是⽤选择性搜索的⽅法粗略得到的通过调整之后得到更精确的位置如下所⽰2.1.5 总结预测过程使⽤选择性搜索的⽅法从⼀张图⽚中提取2000个候选区域将每个区域送⼊CNN⽹络中进⾏特征提取然后送⼊到SVM中进⾏分类并使⽤候选框回归器计算出每个候选区域的位置。 候选区域较多有2000个需要剔除掉部分检测结果。 针对每个类通过计算IOU,采取⾮最⼤值抑制NMS的⽅法保留⽐较好的检测结果。算法总结训练阶段多训练耗时 微调CNN⽹络训练SVM训练边框回归器。预测速度慢: 使⽤GPU, VGG16模型处理⼀张图像需要47s占⽤磁盘空间⼤5000张图像产⽣⼏百G的特征⽂件数据的形状变化候选区域要经过缩放来固定⼤⼩⽆法保证⽬标的不变形3. Fast-RCNNfastRCNN的⼯作流程描述如下图像被送⼊到卷积⽹络进⾏特征提取将通过选择性搜索获取的候选区域映射到特征图中在特征图上Rol中应⽤RoIPooling获取尺⼨相同的特征向量将这些区域传递到全连接的⽹络中进⾏分类和回归得到⽬标检测的结果Fast-RCNN模型总结Fast R-CNN是对R-CNN模型的⼀种改进CNN⽹络不再对每个候选区域进⾏特征提取⽽是直接对整张图像进⾏出路这样减少了很多重复计算⽤ROI pooling进⾏特征的尺⼨变换来满⾜FC全连接层对输⼊数据尺度的要求将⽬标的回归和分类统⼀在⼀个⽹络中使⽤FCsoftmax进⾏⽬标分类使⽤FC Layer进⾏⽬标框的回归4.Faster-RCNN在R-CNN和Fast RCNN的基础上在2016年提出了Faster RCNN⽹络模型在结构上FasterRCNN已经将候选区域的⽣成特征提取⽬标分类及⽬标框的回归都整合在了⼀个⽹络中综合性能有较⼤提⾼在检测速度⽅⾯尤为明显。接下来我们给⼤家详细介绍fasterRCNN⽹络模型。⽹络基本结构如下图所⽰Faster RCNN可以看成是区域⽣成⽹络(RPN)与Fast RCNN的组合其中区域⽣成⽹络(RPN)替代选择性搜索来⽣成候选区域Fast RCNN⽤来进⾏⽬标检测。4.1 网络的工作流程特征提取将整个图像缩放⾄固定的⼤⼩输⼊到CNN⽹络中进⾏特征提取得到特征图。候选区域提取输⼊特征图使⽤区域⽣成⽹络RPN产⽣⼀些列的候选区域ROIPooling: 与Fast RCNN⽹络中⼀样使⽤最⼤池化固定候选区域的尺⼨送⼊后续⽹络中进⾏处理⽬标分类和回归与Fast RCNN⽹络中⼀样使⽤两个同级层:K1个类别的SoftMax分类层和边框的回归层来完成⽬标的分类和回归Faster R-CNN的流程与Fast R-CNN的区别不是很⼤重要的改进是使⽤RPN⽹络来替代选择性搜索获取候选区域所以我们可以将Faster R-CNN⽹络看做RPN和Fast R-CNN⽹络的结合。4.2 模型结构详解Faster RCNN的⽹络结构如下图所⽰我们依然将⽹络分为四部分BackboneBackbone由CNN卷积神经⽹络构成常⽤的是VGG和resnet, ⽤来提取图像中的特征获取图像的特征图。该特征图被共享⽤于后续RPN层⽣成候选区域和ROIPooling层中RPN⽹络RPN⽹络⽤于⽣成候选区域⽤于后续的⽬标检测。Roi Pooling: 该部分收集图像的特征图和RPN⽹络提取的候选区域位置综合信息后获取固定尺⼨的特征送⼊后续全连接层判定⽬标类别和确定⽬标位置⽬标分类与回归: 该部分利⽤ROIpooling输出特征向量计算候选区域的类别并通过回归获得检测框最终的精确位置。4.2.1 backbonebackbone⼀般为VGGResNet等⽹络构成主要进⾏特征提取将最后的全连接层舍弃得到特征图送⼊后续⽹络中进⾏处理。在源码中使⽤ResNet FPN 结构来提取特征。与普通的 FasterRCNN 只需要将⼀个特征图输⼊到后续⽹络中不同由于加⼊ FPN结构需要将多个特征图逐个送⼊到后续⽹络中如下图所⽰Resnet进⾏特征提取FPN结构作⽤是当前层的特征图会融合未来层的特征进⾏上采样并加以利⽤。因为有了这样⼀个结构当前的特征图就可以获取未来层的信息也就将低阶特征与⾼阶特征就有机融合起来了提升检测精度。如下图所⽰在这⾥ResNet和FPN的完整结构如下图所⽰:Resnet进⾏特征提取FPN⽹络进⾏特征融合获取多个特征图后输⼊到RPN⽹络中的特征图是[p2,p3,p4,p5,p6] ⽽作为后续⽬标检测⽹络FastRCNN的输⼊则是 [p2,p3,p4,p5] 。在FPN多层的图片中底层较大的图片中可以用来提取较小的特征因为在不断的卷积中较小的特征可能就会被卷没了。4.2.2 RPN网络经典的检测⽅法⽣成检测框都⾮常耗时如overfeat中使⽤滑动窗⼝⽣成检测框或如R-CNN使⽤选择性搜索⽅法⽣成检测框。⽽Faster RCNN则抛弃了传统的滑动窗⼝和选择性搜索的⽅法直接使⽤RPN⽣成候选区域能极⼤提升检测速度。RPN⽹络的主要流程是⽣成⼀系列的固定参考框anchors,覆盖图像的任意位置然后送⼊后续⽹络中进⾏分类和回归分类分⽀通过softmax分类判断anchor中是否包含⽬标回归分⽀计算⽬标框对于anchors的偏移量以获得精确的候选区域最后的Proposal层则负责综合含有⽬标的anchors和对应bbox回归偏移量获取候选区域同时剔除太⼩和超出边界的候选区域anchors是做什么的anchor在⽬标检测中表⽰ 固定的参考框 ⾸先预设⼀组不同尺度不同⻓宽⽐的固定参考框覆盖⼏乎所有位置 每个参考框负责检测与其交并⽐⼤于阈值 (训练预设值常⽤0.5或0.7) 的⽬标 anchor技术将候选区域⽣成问题转换为 “这个固定参考框中有没有⽬标⽬标框偏离参考框多远” 不再需要多尺度遍历滑窗真正实现了⼜好⼜快。在FastRCNN中框出多尺度、多种⻓宽⽐的anchors,如下图所⽰下图中分别是尺度为3264128⻓宽⽐为111:221的⼀组anchors,我们利⽤这组anchor在特征图上进⾏滑动并对应到原图上即可获取⼀系列的固定参考框。由于有 FPN ⽹络所以会在多个不同尺度特征图中⽣成anchor假设某⼀个特征图⼤⼩为hxw⾸先会计算这个特征相对于输⼊图像的下采样倍数 stride得到⼀系列的anchors后就可送⼊后续⽹络中进⾏分类和回归。RPN的分类与回归⼀副MxN⼤⼩的矩阵送⼊Faster RCNN⽹络后经过backbone特征提取到RPN⽹络变为HxW⼤⼩的特征图。如下图所⽰是RPN进⾏分类的⽹络结构(k9)先做⼀个1x1的卷积得到[batchsize,H,W,18]的特征图然后进⾏变形,将特征图转换为[batchsize,9xH,W,2]的特征图后送⼊softmax中进⾏分类得到分类结果后再进⾏reshape最终得到[batchsize,H,W,18]⼤⼩的结果,18表⽰k9个anchor是否包含⽬标的概率值。RPN回归的结构如下图所⽰(k9)我们获取⼀些分类置信度较⾼的结果将这些anchor绘制在图像上4.2.3 proposal层Proposal层负责综合RPN⽹络对anchors分类和回归的结果利⽤回归的结果对包含⽬标的anchors进⾏修正计算出候选区域送⼊后续RoI Pooling层中。Proposal层有3个输⼊RPN分类和回归结果以及图像的元信息。4.2.4 ROIPoolingRoI Pooling层则负责收集RPN⽹络⽣成的候选区域并将其映射到特征图中并固定维度送⼊后续⽹络中进⾏分类和回归。RoIpooling使⽤最⼤池化将任何有效的RoI区域内的特征转换成具有pool_H×pool_W的固定空间范围的⼩的特征图其中pool_H和pool_W是超参数⽐如设置为7x7, 它们独⽴于任何特定的RoI,如下图所⽰在实现过程中FPN⽹络产⽣了多个尺度特征图那候选区域要映射到哪个特征图中呢在这⾥不同尺度的ROI使⽤不同特征层作为ROI pooling层的输⼊⼤尺度ROI就⽤后⾯⼀些的⾦字塔层⽐如P5⼩尺度ROI就⽤前⾯⼀点的特征层⽐如P34.2.5 目标分类与回归该部分利⽤获得的候选区域的特征图通过全连接层与softmax计算每个候选区域具体属于的类别如⼈⻋电视等输出概率值同时再次利⽤回归⽅法获得每个候选区域的位置偏移量⽤于回归更加精确的⽬标检测框。该部分⽹络结构如下所⽰从RoI Pooling层获取到固定⼤⼩的特征图后送⼊后续⽹络可以看到做了如下2件事通过全连接和softmax对候选区域进⾏分类再次对候选区域进⾏回归修正获取更⾼精度的检测框在此过程中softmax分类的重要性要大于回归因为分类是辨别物体如果将人识别成狗问题就很大但是画框偏移一些是可以接受的。