CNN pedestrian detection target detection method (RCNN, Fast-RCNN, Faster-RCNN, Mask-RCNN, YOLO, SSD) based on

First, the significance of convolutional neural network (CNN) due to its strong feature extraction capabilities, in recent years, is widely used in the field of computer vision. LeNet-5 in 1998 Yann LeCun network structure proposed by the convolutional neural network can be structure so that the end of the training, and applied to document recognition. LeNet-5 structure is the most classic CNN network structure, convolution neural network development are then derived by this version. In the past six years, due to the development and progress of convolution depth learning and network-based object detection and classification capabilities of the image has been greatly improved. The target detection is an important field of computer vision research is an essential prerequisite for many high-level tasks, including understanding the scene, event recognition. Currently, object detection is also widely used in security monitoring, autopilot, human-computer interaction, and enhance many areas of reality. Target detection for computer vision and industry are of great practical significance. However, because of the perspective, occlusion, posture and other factors cause the target to deform, resulting in target detection has become a challenging task. The design of high efficiency and high accuracy of object detection algorithm is still of great significance. Second, the research status Today, object detection convolution neural network has gone beyond the traditional target detection method, become the mainstream method of target detection. Based on the use convolution neural networks, it will be divided into two major categories of target detection based on neural network convolution: Convolution object detection neural network classification and regression-based convolution neural network-based object detection. 1. The convolutional neural network-based classification of the classification-based object detection CNN may be two-stage detection algorithm, traditional target detection method comprising pretreatment, sliding window, feature extraction, feature selection, feature classification, and post-processing step, and convolutional neural network itself has a feature extraction, feature selection and feature classification function. Then, using a direct binary convolutional neural network for each of the candidate regions generated by the sliding window, which is to be determined whether a detection target. Such methods will be referred to herein, a convolutional neural network classification based target detection. Six steps compared to conventional target detection, target detection based on convolution neural network classification only: Sliding window, generating candidate region (region proposals), the candidate area image classification, three step process, and the sliding window is fixed and the post-processing method. Therefore, the study focused on how to improve such methods is that the convolution neural network feature extraction capabilities, capabilities, and feature classification feature selection capabilities to improve the accuracy of image recognition. A typical representative of such an algorithm is based on the region proposal of R-CNN-based algorithm, such as the R-CNN, Fast R-CNN, Faster R-CNN and the like; 1.1 R-CNN R-CNN region proposal is a method of target detection algorithm based on the series Foundational work, its first regional search, and then classifies the candidate areas. In the R-CNN, Selective search method to generate a selected candidate region, which is a heuristic search algorithm. It is first divided by a simple algorithm divide the picture area into many small areas, and then combine them in a certain similarity by hierarchical grouping method, is the last remaining candidate region (region proposals), they may contain an object. Diagram is as follows:

For a picture, R-CNN generating selective search based on approximately 2000 candidate regions, and resize each candidate region is a fixed size (227 × 227) and fed to a CNN model, using the extracted image feature AlexNet, and finally 4096 to obtain a feature vector dimension. This feature vector is then fed to a multi-class SVM classifier, the predicted probability values ​​belonging to each class of objects contained in the candidate region. Each category a trained SVM classifier, the size of its inference probability belonging to the class from the feature vector. In order to improve the positioning accuracy, R-CNN finally trained a bounding box regression model. Training samples (P, G), where P = (Px, Py, Pw, Ph) as a candidate region, and G = (Gx, Gy, Gw, Gh) of the real position and size of the frame. P G is selected with the largest real IoU block, the target value is defined as the return:

In doing prediction, the predicted position can be corrected to obtain the anti-block using the above formula. R-CNN are training for each category separate return, the use of minimum mean squared error loss function for training. R-CNN is very intuitive, the detection problem is the classification problem for conversion, however, due to the complexity of using the R-CNN highly selective search calculation extraction candidate region, and the SVM for classification, not a training end model. R-CNN model to feature extraction and feature classification after the size of the unified candidate area. And extracts the candidate block will be repeated when the calculated feature extraction.

1.2 Fast-RCNN Fast-RCNN feature extraction in order to solve the problem of double counting birth, and Fast-RCNN clever target identification and location on the same model constituting Multi-task in a CNN. Fast-RCNN obtained after first find candidate block with Selective Search, 'followed by the entire FIG once CNN, then RoI Pooling, part of the candidate block corresponding to the sample made to obtain the same characteristic length, and after two fully connected layers the final feature. Then generates two branches, a branch to this feature classification, another branch of the return of this feature candidate frame offset. Fast-RCNN classification and regression tasks will be integrated in a model.

首先介绍Fast-RCNN核心算法模块,即RoI Pooling。基于图像分类任务的卷积神经网络首先将图片重新缩放并才裁剪到固定大小,如AlexNet和ResNet将图片缩放到256尺度并裁剪至224×224大小,然后将裁剪后的图像输入至网络训练。但对于检测任务,图像大小对检测性能有重要的影响。假设输入224×224大小的图像,则很有可能目标对象会因为分辨率过低而无法检测。Fast-RCNN的图像输入并不对图像大小限制,而实现这一点的关键所在,就是RoI Pooling网络层。RoIPooling层在任意尺度的卷及网络特征层,针对每一个候选框在特征层的映射区域提取固定尺度的特征,通过设置不同尺度的RoI Pooling可以提取多尺度特征。RoIPooling实现原理简单而言就是通过设定固定尺度计算出每一次采样的网格大小,然后最大值采样即可。RoI Pooling使用最大池化将任何有效的感兴趣区域内的特征转换为具有H×W(例如,7×7)的固定空间范围的小特征图,其中H和W是RoI Pooling层超参数,独立于任何特定的ROI。Fast-RCNN定义RoI是一个矩形窗口。每个ROI由定义其左上角(r,c)及其高度和宽度

(h,w)的四元组(r,c,h,w)定义。RoI Max Pooling通过将h×w的ROI窗口转换成大小为h/H×w/W的子窗口的HxW网格,然后将每个子窗口中的值最大存储到相应的输出网格单元中。RoI Pooling是SPP-Net中使用的空间金字塔层的特殊情况,其中只有一个金字塔层。然后RoI pooling层得到的特征图送入几个全连接层中,并产生新的特征向量,这些特征向量分别用于一个softmax分类器(预测类别)和一个线性回归器上(用于调整边界框位置)来进行检测。在实现上是使用两个不同的全连接层,第一个全连接层有N+1个输出(N是类别总数,1是背景),表示各个类别的概率值;第二个全连接层有4N个输出,表示坐标回归值(tx,ty,tw,th),这个与R-CNN是一样的,每个类别都预测4个位置坐标值。

Fast R-CNN与R-CNN的另外的一个主要区别点是采用了softmax分类器而不是SVM分类器,而且训练过程是单管道的,因为Fast R-CNN将分类误差和定位误差合并在一起训练,定位误差采用smooth L1 而不是R-CNN中的L2。因此,整个网络可以端到端的训练。 Fast-RCNN提出之后,基于深度学习的目标检测框架问题已经非常清晰,就是能不能把潜在候选区域的提取纳入CNN框架内。Faster-RCNN就是基于此点并提出Region Proposal Net将潜在候选区域提取纳入CNN框架内。

1.3 Faster-RCNN Faster-RCNN模型引入了RPN(Region Proposal Network)直接产生候选区域。Faster-RCNN可以看成是RPN和Fast RCNN模型的组合体,即Faster-RCNN = RPN + Fast-RCNN。 对于RPN网络,先采用一个CNN模型(一般称为特征提取器)接收整张图片并提取特征图。然后在这个特征图上采用一个N×N(文中是3×3)的滑动窗口,对于每个滑窗位置都映射一个低维度的特征(如256-d)。然后这个特征分别送入两个全连接层,一个用于分类预测,另外一个用于回归。对于每个窗口位置一般设置k个不同大小或比例的先验框(anchors,default bounding boxes),这意味着每个位置预测k个候选区域(region proposals)。对于分类层,其输出大小是2k,表示各个候选区域包含物体或者是背景的概率值,而回归层输出4k个坐标值,表示各个候选区域的位置(相对各个先验框)。对于每个滑窗位置,这两个全连接层是共享的。因此,RPN可以采用卷积层来实现:首先是一个n×n卷积得到低维特征,然后是两个1×1的卷积,分别用于分类与回归。

RPN采用的是二分类,仅区分背景与物体,但是不预测物体的类别,即class-agnostic。由于要同时预测坐标值,在训练时,要先将先验框与ground-truth box进行匹配,原则为:(1)与某个ground-truth box的IoU最高的先验框;(2)与某个ground-truth box的IoU值大于0.7的先验框,只要满足一个,先验框就可以匹配一个ground-truth,这样该先验框就是正样本(属于物体),并以这个ground-truth为回归目标。对于那些与任何一个ground-truth box的IoU值都低于0.3的先验框,其认为是负样本。RPN网络是可以单独训练的,并且单独训练出来的RPN模型给出很多region proposals。由于先验框数量庞大,RPN预测的候选区域很多是重叠的,要先进行NMS(non-maximum suppression,IoU阈值设为0.7)操作来减少候选区域的数量,然后按照置信度降序排列,选择top-N个region proposals来用于训练Fast R-CNN模型。RPN的作用就是代替了Selective search的作用,但是速度更快,因此Faster R-CNN无论是训练还是预测都可以加速。

Faster-RCNN遵循如下训练过程: 第一步:使用ImageNe上预训练的模型初始化特征提取网络并训练RPN网络; 第二步:使用在ImageNet上预训练的模型初始化Fast-RCNN特征特征提取网络,使用步骤一中训练好的RPN网络产生的候选框作为输入,训练一个Fast-RCNN网络,至此,两个网络每一层的参数完全不共享; 第三步:使用步骤二的Fast-RCNN网络参数初始化一个新的RPN网络,但是把RPN,Fast-RCNN共享的特征提取网络参数的学习率设为0,即使学习RPN网络所特有的参数,固定特征提取网络。到此步,两个网络已经共享了所有的公共的卷积层; 第四步:仍然固定共享的那些网络层,把Fast-RCNN特有的网络层也加入进来,继续训练,微调Fast-RCNN特有的网络层,到此为止,RPN与Fast-RCNN网络完全共享参数,使用Fast-RCNN即可同时完成候选框提取和目标检测功能。 其问题主要在于对小尺度目标检测性能较差,不能有效的将候选区域的特征在深度CNN提取之后,有效保留小尺度的特征。分辨率有一定限制,同样检测速度还是较慢。

1.4 Mask RCNN 把原有的Faster-RCNN进行扩展,添加一个分支使用现有的检测对目标进行并行预测。同时,这个网络结构比较容易实现和训练,速度为5fps,可以很方便的应用到其他的领域,像目标检测,分割,和人物关键点检测等,并且比现有的算法效果都要好。

实例分割的难度在于要先对一张图片所有的目标进行正确的检测同时还要对每个示例进行分割。检测的目的是把每一个单个目标分类然后用bounding box标定出来,而实例分割的目的是区分每一个像素为不同的分类而不用区别不同的目标。Mask R-CNN使用了全连接卷积网络(FCN)来完成这个预测。这需要训练数据必须有像素级别的标注,而不是简单的边框。

Faster R-CNN:包含两个部分,提出RPN区域,找到目标框,对ROI进行分类。核心思想就是把图片区域内容送给深度网络,然后提取出深度网络某层的特征,并用这个特征来判断是什么物体,把背景也当成一种类别,故如果是判断是不是20个物体时,实际上在实现是判断21个类。最后再对是物体的区域进行微微调整。 Mask Representation:mask 对输入目标的空间布局进行编码。使用m*m的矩阵对每一个ROI进行预测而不是使用向量去进行预测,这样可以保证ROI当中的空间信息不会损失。 ROI Align:RoI Pooling就是实现从原图区域映射到卷积区域最后pooling到固定大小的功能,把该区域的尺寸归一化成卷积网络输入的尺寸。在归一化的过程当中,会存在ROI和提取的特征不重合现象出现,作者提出了ROI Align,使用ROI Align层对提取的特征和输入之间进行校准。 避免对每一个ROI边界或者块进行数字化。使用双线性内插法计算在ROI 块当中固定的四个采样位置得到的输入特征值并对结果进行融合。 因为FCN会精确预测每个像素的类别,就是输入图片中的每个像素都会在标注中对应一个类别。对于输入图片中的一个锚框,我们可以精确的匹配到像素标注中对应的区域。但是RoI池化是作用在卷积之后的特征上,其默认是将锚框做了定点化。例如假设选择的锚框是(x,y,w,h),且特征抽取将图片变小了16倍,就是如果原始图片是256×256,那么特征大小就是16×16。这时候在特征上对应的锚框就是变成了(x/16,y/16,h/16,w/16)。如果x,y,w,h中有任何一个不被16整除,那么就可能发生错位。同样,如果锚框的长宽不被池化大小整除,那么同样会定点化,从而带来错位。 通常这样的错位只是在几个像素之间,对于分类和边框预测影响不大。但对于像素级别的预测,这样的错位可能会带来大问题。RoI Align层类似于RoI池化层,但是去除掉了定点化步骤,就是移除了所有 。如果计算得到的锚框不是刚好在像素之间,那么我们就用四周的像素来线性插值得到这个点上的值。 对于一维情况,假设我们要计算x点的值f(x),那么我们可以用x左右的整点的值来插值:

我们实际要使用的是二维差值来估计f(x,y),我们首先x轴上差值得到f(x,y)和f(x,y+1),然后根据这两个值来差值得到f(x,y)。

Network Architecture : 分成三个部分,第一个是主干网络用来进行特征提取,第二个是头结构用来做边界框识别(分类和回归),第三个就是mask预测用来对每一个ROI进行区分。主干网络使用的是50层的深度残差网络ResNet50。

以上方法由于使用了特定的方法提取候选区,替代以滑动窗口方法遍历搜索的方式,需要候选区的数量较少,使基于卷积神经网络的目标检测在准确度和速度上都得到了较大提升。然而这些方法非常依赖候选区提取方法的准确度,如果检测场景复杂且目标不明显,候选区提取方法很难捕获到目标附近的区域,导致检测不到目标。 2 基于回归的卷积神经网络目标检测 针对目标检测重新设计卷积神经网络的结构,提出了将卷积神经网络作为回归器,把整幅待检测图像看成一个候选区,直接输入卷积神经网络,回归目标在待检测图像中的位置信息。其中最具有代表性的是YOLO算法和SSD算法。

2.1 YOLO算法 Yolo算法,其全称是You Only Look Once: Unified, Real-TimeObject Detection。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,整个系统如图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。

YOLO的CNN网络将输入的图片分割成S×S网格,然后每个单元格负责去检测那些中心点落在该格子内的目标。每个单元格会预测B个边界框(bounding box)以及边界框的置信度(confidence score)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为Pr(object),当该边界框是背景时(即不包含目标),此时Pr(object)=0。而当该边界框包含目标时,Pr(object)=1。边界框的准确度可以用预测框与实际框(ground truth)的IOU(intersection over union,交并比)来表征,记为IOU(truth/pred) 。因此置信度可以定义为Pr(object)*IOU(truth/pred) 。YOLO的置信度是两个因子的乘积,预测框的准确度也反映在里面。边界框的大小与位置可以用4个值来表征:

(x,y,w,h),其中(x,y)是边界框的中心坐标,而w和h是边界框的宽与高。中心坐标的预测值(x,y)是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的。而边界框的w和h预测值是相对于整个图片的宽与高的比例,这样理论上4个元素的大小应该在[0,1]范围。这样,每个边界框的预测值实际上包含5个元素:(x,y,w,h,c),其中前4个表征边界框的大小与位置,而最后一个值是置信度。 对于分类问题,对每一个单元格其还要给出预测出C个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率。但是这些概率值其实是在各个边界框置信度下的条件概率,即 Pr(class|object)。不管一个单元格预测多少个边界框,其只预测一组类别概率值,这是YOLO算法的一个缺点,在后来的改进版本中,YOLO9000是把类别概率预测值与边界框是绑定在一起的。同时,我们可以计算出各个边界框类别置信度(class-specific confidence scores):

边界框类别置信度表征的是该边界框中目标属于各个类别的可能性大小以及边界框匹配目标的好坏,一般会根据类别置信度来过滤网络的预测框。

YOLO的优点,Yolo采用一个CNN网络来实现检测,是单管道策略,其训练与预测都是end-to-end,所以Yolo算法比较简洁且速度快。第二点由于Yolo是对整张图片做卷积,所以其在检测目标有更大的视野,它不容易对背景误判。另外,Yolo的泛化能力强,在做迁移时,模型鲁棒性高。 YOLO的缺点,首先Yolo各个单元格仅仅预测两个边界框,而且属于一个类别。对于小物体,Yolo的表现会不如人意。Yolo对于在物体的宽高比方面泛化率低,就是无法定位不寻常比例的物体。Yolo的定位不准确也是很大的问题。

2.2 SSD算法 SSD全称 :Single Shot MultiBox Detector。在R-CNN系列模型里。Region Proposal和分类是分作两块来进行的。SSD则将其统一成一个步骤来使得模型更加简单并且速度更快。YOLO与SSD可以一步到位完成检测。相比YOLO,SSD采用CNN来直接进行检测,而不是像Yolo那样在全连接层之后做检测。它跟Faster R-CNN主要有两点不一样,1,对于锚框,不再首先判断它是不是含有感兴趣物体,再将正类锚框放入真正物体分类。SSD里我们直接使用一个C+1类分类器来判断它对应的是哪类物体,还是只是背景。我们不再有额外的回归器对边框再进一步预测,而是直接使用单个回归器来预测真实边框。2,SSD不只是对卷积神经网络输出的特征做预测,它会进一步将特征通过卷积和池化层变小来做预测。这样达到多尺度预测的效果。 (1)采用多尺度特征图用于检测 多尺度采用大小不同的特征图,CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,一个比较大的特征图和一个比较小的特征图,它们都用来做检测。这样做的好处是比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标,如图下图所示,8x8的特征图可以划分更多的单元,但是其每个单元的先验框尺度比较小。

(2)采用卷积进行检测 与Yolo最后采用全连接层不同,SSD直接采用卷积对不同的特征图来进行提取检测结果。对于形状为m×n×p的特征图,只需要采用3×3×p这样比较小的卷积核得到检测值。 (3)设置先验框 在Yolo中,每个单元预测多个边界框,但是其都是相对这个单元本身(正方块),但是真实目标的形状是多变的,Yolo需要在训练过程中自适应目标的形状。而SSD借鉴了Faster R-CNN中anchor的理念,每个单元设置尺度或者长宽比不同的先验框,预测的边界框(bounding boxes)是以这些先验框为基准的,在一定程度上减少训练难度。一般情况下,每个单元会设置多个先验框,其尺度和长宽比存在差异,如下图所示,可以看到每个单元使用了5个不同的先验框,图片中不同物体采用最适合它们形状的先验框来进行训练。

(4)预测物体类别 对每一个锚框我们需要预测它是不是包含了我们感兴趣的物体,还是只是背景。使用一个3×3的卷积层来做预测,加上pad=1使用它的输出和输入一样。同时输出的通道数是num_anchors*(num_classes+1),每个通道对应一个锚框对某个类的置信度。假设输出是Y,那么对应输入中第n个样本的第(i,j)像素的置信值是在Y[n,:,i,j]里。具体来说,对于以(i,j)为中心的第a个锚框。通道 a*(num_class+1) 是其只包含背景的分数,通道 a*(num_class+1)+1+b 是其包含第b个物体的分数。 (5)预测边界框 因为真实的边界框可以是任意形状,我们需要预测如何从一个锚框变换成真正的边界框。这个变换可以由一个长为4的向量来描述。同上一样,我们用一个有num_anchors * 4通道的卷积。假设输出是Y,那么对应输入中第 n 个样本的第 (i,j) 像素为中心的锚框的转换在Y[n,:,i,j]里。具体来说,对于第a个锚框,它的变换在a*4到a*4+3通道里。

目标函数和常见的 Object Detection 的方法目标函数相同,分为两部分:计算相应的 default box 与目标类别的置信度以及相应的bounding box回归结果。

三、存在的问题 诸如R-CNN一类的依赖于候选的方法,由于使用了特定的方法提取候选区,替代以滑动窗口方法遍历搜索的方式,需要候选区的数量较少,使基于卷积神经网络的目标检测在准确度和速度上都得到了较大提升。然而这些方法非常依赖候选区提取方法的准确度,如检测场景复杂且目标不明显,候选区提取方法很难捕获到目标附近的区域,导致检测不到目标。目前都是通过实验来证明卷积神经网络的有效性,训练参数的设置大多依靠经验和实践,缺乏理论指导和量化分析; 另一方面,需要针对目标检测设计更加合理的网络结构,结合回复式神经网络提升检测效率,实现多尺度多类别的目标检测。R-CNN,Fast-RCNN,Faster-RCNN等,目标检测的准确度和精度具有优势,但是很耗时,速度较慢。而类似于SSD好YOLO等算法,其速度快,但是精度性能相对较差。 主要挑战存在如下几点: 1.小尺度目标检测。对于基于深度卷积神经网络的目标检测,由于深度网络顶层神经元感受野较大,对于小尺度目标信息保存较不完整,故而小尺度目标检测性能不高。 2.计算复杂度。目标检测算法计算复杂度取决于特征提取网络的前向传播计算时间。网络特征表达能力与网络深度存在较强关系,一般而言,在一定深度范围内,网络越深,表达能力越强,目标检测算法性能越好,但计算开销随之增大。 除此之外,深度卷积神经网络需要大量的人工标注数据进行训练,训练数据的获得对于目标检测算法同样至关重要。

Guess you like

Origin www.cnblogs.com/cloudrivers/p/11863580.html