参考书籍:《21个项目玩转深度学习》
参考文章:https://zhuanlan.zhihu.com/p/34142321
图像识别:输入一张图像,输出该图像对应的类别。
目标检测:输入同样是一张图像,但输出不单单是图像的类别。而是该图像中所含的所有目标物体以及它们的位置。通常使用矩形框来标识物体的位置。
R-CNN:Region-CNN
Fast R-CNN
Faster R_CNN
1. R-CNN
R-CNN将检测抽象为两个过程,一是基于图片提出若干可能包含物体的区域(即图片的局部裁剪,被称为Region Proposal),文中使用的是Selective Search算法;二是在提出的这些区域上运行当时表现最好的分类网络(AlexNet),得到每个区域内物体的类别。
步骤:提取框——对每个框提取特征——图像分类——非极大值抑制
warped region:将区域缩放到统一大小,再使用CNN提取特征。
CNN网络用的是AlexNet
提取出特征后使用SVM分类。
存在的问题:需要训练三个不同的模型(proposal, classification, regression)、重复计算过多导致的性能问题等。
SPPNet:Spatial Pyramid Pooling Convolutional Networks(空间金字塔池化卷积网络)
将CNN的输入从固定尺寸改为任意尺寸。SPPNet在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
2. Fast R-CNN
文章指出R-CNN耗时的原因是CNN是在每一个Proposal上单独进行的,没有共享计算,便提出将基础网络在图片整体上运行完毕后,再传入R-CNN子网络,共享了大部分计算,故有Fast之名。
文章将Proposal, Feature Extractor, Object Classification&Localization统一在一个整体的结构中,并通过共享卷积计算提高特征利用效率,是最有贡献的地方。
3. Faster R-CNN
提出的RPN网络取代Selective Search算法使得检测任务可以由神经网络端到端地完成。
Faster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷积计算的特性使得RPN引入的计算量很小,使得Faster R-CNN可以在单个GPU上以5fps的速度运行,而在精度方面达到SOTA(State of the Art,当前最佳)。
本文的主要贡献是提出Regional Proposal Networks,替代之前的SS算法。RPN网络将Proposal这一任务建模为二分类(是否为物体)的问题。
第一步是在一个滑动窗口上生成不同大小和长宽比例的anchor box(如上图右边部分),取定IoU的阈值,按Ground Truth标定这些anchor box的正负。于是,传入RPN网络的样本数据被整理为anchor box(坐标)和每个anchor box是否有物体(二分类标签)。RPN网络将每个样本映射为一个概率值和四个坐标值,概率值反应这个anchor box有物体的概率,四个坐标值用于回归定义物体的位置。最后将二分类和坐标回归的损失统一起来,作为RPN网络的目标训练。
由RPN得到Region Proposal在根据概率值筛选后经过类似的标记过程,被传入R-CNN子网络,进行多分类和坐标回归,同样用多任务损失将二者的损失联合。