1.目标检测的基本思路:同时解决定位(localization) 识别(Recognition)。 
  多任务学习,带有两个输出分支。一个分支用于做图像分类,即全连接+softmax判断目标类别,和单纯图像分类区别在于这里还另外需要一个“背景”类。另一个分支用于判断目标位置,即完成回归任务输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽),该分支输出结果只有在分类分支判断不为“背景”时才使用。详细结构如下图3所示:
 
目标检测基础知识目标检测基础知识

 

传统的目标检测框架,主要包括三个步骤:
  (1)利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域;
  (2)提取候选区域相关的视觉特征。
            比如人脸检测常用的Harr特征;行人检测和普通目标检测常用的HOG特征等;
  (3)利用分类器进行识别,比如常用的SVM模型。

 

目前目标检测领域的深度学习方法主要分为两类:两阶段(Two Stages的目标检测算法;一阶段(One Stage)目标检测算法。
两阶段(Two Stages)首先由算法(algorithm)生成一系列作为样本的候选框,再通过卷积神经网络进行样本(Sample)分类。
常见的算法有R-CNN、Fast R-CNN、Faster R-CNN等等。
一阶段(One Stage )不需要产生候选框,直接将目标框定位的问题转化为回归(Regression)问题处理(Process)。
常见的算法有YOLO、SSD等等。

 

基于候选区域(Region Proposal的,如R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN;
基于端到端(End-to-End),无需候选区域(Region Proposal)的,如YOLO、SSD。

 

  对于上述两种方式,基于候选区域(Region Proposal)的方法在检测准确率和定位精度上占优,基于端到端(End-to-End)的算法速度占优。相对于R-CNN系列的“看两眼”(候选框提取和分类),YOLO只需要“看一眼”。总之,目前来说,基于候选区域(Region Proposal)的方法依然占据上风,但端到端的方法速度上优势明显,至于后续的发展让我们拭目以待。
 
 3、目标检测的候选框是如何产生的?
   如今深度学习发展如日中天,RCNN/SPP-Net/Fast-RCNN等文章都会谈及候选边界框(Bounding boxes)的生成与筛选策略。那么候选框是如何产生的?又是如何进行筛选的呢?其实物体候选框获取当前主要使用图像分割区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。
   根据目标候选区域的提取方式不同,传统目标检测算法可以分为基于滑动窗口的目标检测算法和基于选择性搜索的目标检测算法。滑窗法(Sliding Window)作为一种经典的物体检测方法,个人认为不同大小的窗口在图像上进行滑动时候,进行卷积运算后的结果与已经训练好的分类器判别存在物体的概率。选择性搜索(Selective Search)是主要运用图像分割技术来进行物体检测。
   (1)滑动窗口(Sliding Window)
    采用滑动窗口的目标检测算法思路非常简单,它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了。但是这个方法有致命的缺点,就是你并不知道要检测的目标大小是什么规模,所以你要设置不同大小和比例的窗口去滑动,而且还要选取合适的步长。但是这样会产生很多的子区域,并且都要经过分类器去做预测,这需要很大的计算量,所以你的分类器不能太复杂,因为要保证速度。接下来,我们看一下滑窗法的物体检测流程图如图4所示:
目标检测基础知识
  通过滑窗法流程图分析具体步骤:首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。
  滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。
   (2)选择性搜索(Selective Search)
   滑窗法类似穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的。学者们自然而然想到只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。选择搜索方法是当下最为熟知的图像bouding boxes提取算法,其目标检测的流程图如下图5所示。
目标检测基础知识
  选择搜索算法的主要观点:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法进行提取候选边界框(bounding boxes)。首先,对输入图像进行分割算法产生许多小的子区域(大约2000个子区域)。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做外切矩形(bounding boxes),这些子区域外切矩形就是通常所说的候选框。

 

  选择搜索优点: 
    (a)计算效率优于滑窗法。 
    (b)由于采用子区域合并策略,所以可以包含各种大小的疑似物体框。 
    (c)合并区域相似的指标多样性,提高了检测物体的概率。

 

 
4、什么是预测框和人工标注框的重合度IOU(Intersection Over Union)?
  为了评价Bounding-box Regression模型对目标物体的标注效果,我们提出了预测框和人工标注框重合度IOU的概念。下面简单介绍一下这个定义:物体检测需要定位出物体的Bounding-box,就像下面的图6所示一样,我们不仅要定位出车辆的Bounding-box 我们还要识别出Bounding-box 里面的物体就是车辆。对于Bounding-box的定位精度,有一个很重要的概念,因为我们算法不可能百分百跟人工标注的数据完全匹配,因此就存在一个定位精度评价公式:IOU(也叫作交并比)。IOU定义了两个Bounding-box的重叠度,如下图7所示:
   目标检测基础知识
图6:标注边界框的汽车
                                                                               目标检测基础知识    
图7:IOU定义展示图 
矩形框A、B的一个重合度IOU计算公式为:
                    IOU=(A∩B)/(A∪B)
就是矩形框A、B的重叠面积占A、B并集的面积比例:
                    IOU=SI/(SA+SB-SI)
 
5、什么是NMS—非极大值抑制(Non-Maximun Suppression)?
  学习R-CNN算法必然要了解一个重要的概念——非极大值抑制(NMS)。比如,我们会从一张图片中找出N多个可能包含物体的Bounding-box,然后为每个矩形框计算其所属类别的概率。可以参看下图8所示。
目标检测基础知识
  正如上面的图片所示,假如我们想定位一个车辆,最后算法就找出了一堆的方框,每个方框都对应一个属于汽车类别的概率。我们需要判别哪些矩形框是没用的。采用的方法是非极大值抑制:先假设有6个矩形框,根据分类器类别分类概率做排序,从小到大分别属于车辆的概率分别为A、B、C、D、E、F。
  (1)从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
  (2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
  (3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。

 

  如此循环往复知道没有剩余的矩形框,然后找到所有被保留下来的矩形框,就是我们认为最可能包含汽车的矩形框。
 

 

R-CNN算法中NMS的具体做法:

 

  假设有20类,2000个建议框,最后输出向量维数2000*20,则每列对应一类,一行是各个建议框的得分,NMS算法步骤如下:
    ① 对2000×20维矩阵中每列按从大到小进行排序;
    ② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IOU计算,              
                   若IOU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
    ③ 从每列次大的得分建议框开始,重复步骤②;
    ④ 重复步骤③直到遍历完该列所有建议框;
    ⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
    ⑥ 最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框。
 

 

 
 6、Region Proposal建议框的Crop/Wrap具体做法?
  R-CNN论文中采用的是各向异性缩放,padding=16的精度最高。作者使用了最简单的一种变换,即无论候选区域是什么尺寸,先在每个建议框周围context(图像中context指RoI周边像素)加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小。  

 

(1)各向异性缩放(非等比缩放)
  这种方法很简单,就是不管图片的长宽比例,管它是否扭曲,进行缩放就是了,全部缩放到CNN输入的大小227*227;有比例上的形变扭曲。

 

 

(2)各向同性缩放
  因为图片扭曲后,会对后续CNN的训练精度有影响,于是作者也测试了“各向同性缩放”方案。这个有两种办法。

 

  ①  直接在原始图片中,把bounding box的边界进行扩展延伸成正方形,然后再进行裁剪;如果已经延伸到了原始图片的外边界,那么就用bounding box中的颜色均值填充;

 

  ② 先把bounding box图片裁剪出来,然后用固定的背景颜色填充成正方形图片(背景颜色也是采用bounding box的像素颜色均值);
 

 

 7、Bounding-box Regression方法
  回归器是线性的,输入为Alexnet pool5的输出。Bounding-box回归认为候选区域和Ground-tTruth之间是线性关系(因为在最后从SVM内确定出来的区域比较接近Ground-Truth,这里近似认为可以线性关系),训练回归器的输入为N对值,目标检测基础知识,分别为候选区域的框坐标和真实的框坐标,下面在不必要时省略i。这里选用的Proposal必须和Ground Truth的IOU>0.6才算是正样本。Bounding-box对以及输入特征如下图9所示:
目标检测基础知识
  从候选框P到预测框目标检测基础知识的基本思路如下:
  因为我们在分类之后得到候选框P 目标检测基础知识,其中目标检测基础知识目标检测基础知识为候选框的中心点,目标检测基础知识为候选框的宽高,下面介绍中所有框的定位都用这种定义,即x和y表示中心点坐标,w和h表示框的宽高。我们知道了候选框的表示,那么只要估计出候选框与真实框的平移量和尺度缩放比例,就可以得到我们的估计框了。
  回归模型的训练阶段表示为图10所示:
目标检测基础知识
  根据上述的损失函数模型,求解出最优解权重W,权重乘以pool5的特征得到平移参数和缩放参数。
  在边界回归的测试阶段:
    测试阶段权重参数已经训练出来了,目标检测基础知识上式中目标检测基础知识为Alexnet pool5输出的特征,所以可以求出目标检测基础知识这四个变换。然后,利用下图11的公式求出预测出来包含物体的边界框。