2)单阶段目标检测
如上图所示,R-CNN这个物体检查系统可以大致分为四步进行:
1).获取输入图像
2).使用selective search的提取约2000个候选区域
3).将候选区域调整为统一尺寸227x227,分别输入CNN网络 AlexNet中,提取特征
4).将CNN的输出输入SVM中进行类别的判定
5).使用区域特征训练线性回归器,对区域未知进行调整。
CNN的输出由1000个神经元分类层–> 随机初始化N+1个神经元分类层。N–类别个数,1–背景。论文中N=20
减小目标定位误差。一个线性回归模型预测一个新的目标边界框的位置。
众所周知,CNN的全连接层需要固定大小的输入;所以当输入数据的尺寸不满足需求时,就需要对输入数据进行特殊处理,比如Cropping或者Warping方法。
然而,这两种方法也有缺点。cropped region 有可能包含不了整个目标;warped内容可能导致不想要的几何扭曲。
对此,SPP-Net作者提出在卷积层和全连接层间,加入某种结构,使其这种结构的输出符合全连接层的需求大小尺寸。而这种结构就是SPP-Net。其中SPP是Spatial Pyramid Pooling空间金字塔池化的简称。
与R-CNN形成明显对比,为了高效;SPP Net
1)只对原图进行一次卷积计算,得到整幅图像的特征图
2)在特征图的对应区域找到每个候选边界框的映射区域
3)将此区域作为每个候选边界框的卷积特征输入到SPP层和后面的层
从图中看,SPP Net结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,但是输出不变,保持一个固定维数的向量。
在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出则是固定维数的向量,然后输入给全连接层。
作者基于R-CNN和SPP-Net,为了简化R-CNN的计算复杂度,提出了Fast R-CNN:
1)使用与SPP Net的SPP层类似的ROI Pooling layer
文章中,感兴趣区域池化层是SPP空间金字塔池化层的简化版,只有一层。使用最大池化的方法将ROI转换成固定大小的HW的特征图(比如77)。
2)目标分类和边界框回归合并
目标分类和边界框回归合并成一个多任务模型放到神经网络内部;同时,可以共享CNN卷积特征。用softmax+regression 代替svm+regression。
以下是Faster R-CNN和Fast R-CNN的异同之处,盗用百度,见谅!!!
Fast R-CNN虽然在速度和精度上有了显著的提升,但是需要额外消耗时间使用外部算法来找出所有的候选框。
因此,Shaoqing Ren和Kaiming He等人,又提出了Faster R-CNN,将提取目标候选框的工作整合到神经网络中。
文章引入Region Proposal Network(RPN)替代Selective Search,并且引入anchor box应对目标形状的变化问题(anchor就是位置和大小固定的box,可以理解成事先设置好的固定的proposal)。
作为Fast R-CNN的升级版,可将Faster R-CNN看成是RPN+Fast R-CNN,并且RPN和Fast R-CNN共享一部分卷积。基本步骤:将图像送入Faster R-CNN检测;图像经过卷积层conv layer,得到特征图;特征图送入RPN中,得到候选框;候选框和特征图一起进入感兴趣区域池化层;最后得出分类结果。
双阶段的各种经典模型,检测速度越来越快;但是仍然不能满足实时检测的需求。于是各种单阶段目标检测方法应运而生。
YOLO是最早出现的单阶段目标检测方法,也是第一个实现了实时目标检测方法。
1)主题思想
整张图作为网络的输入,直接在图像的多个位置上回归出这个位置的边界框,以及目标所属的类别。
2)流程图
For evaluating YOLO on PASCAL VOC, we use S = 7, B = 2. PASCAL VOC has 20 labelled classes so C = 20.
Our final prediction is a 7 × 7 × 30 tensor.
4) 网络结构
24个卷积层和2个全连接层;使用基于GoogleNet架构的自定义网络DarkNet作为基础网络。
基于YOLO-v1的一些缺点(大量定位误差和较低的召回率Error analysis of YOLO compared to Fast R-CNN shows that YOLO makes a significant number of localization errors. Furthermore, YOLO has relatively low recall compared to region proposal-based methods),YOLO作者又提出了v2版本。
有如下特点:
1)提高召回率和改进定位,同时保持分类准确性。( Thus we focus mainly on improving recall and
localization while maintaining classification accuracy.)
2)批标准化Batch Normalization操作;移除dropout。(By adding batch normalization on all of the convolutional layers in YOLO we get more than 2% improvement in mAP. Batch normalization also helps regularize the model. With batch normalization we can remove dropout from the model without overfitting)。全卷积网络结构 Conv+Batch Norm
3)引入anchor boxes预测边界框,去掉全连接层。(We remove the fully connected layers from YOLO and use anchor boxes to predict bounding boxes)。K-Means聚类Anchor
加入新的策略后,有如下表现:
1)Batch Normalization。mAP提高了2%
2)anchor boxes。预测边界框数量超过1000个;尽管mAP略有下降,但是召回率上升了。
使用DarkNet-19分类网络:19个卷积层和5个最大池化层。
速度快;320*320 28.2mAP情况下,22ms,即1秒50帧左右。
学习到这里,明天继续