详述⽬标检测最常⽤的三个模型:FasterR-CNN、SSD和
YOLO
最近做⼀些关于Faster R-CNN、SSD和YOLO模型选择和优化的项⽬,之前只了解Faster R-CNN系列⽬标检测⽅法,于是抽空梳理⼀下这⼏个检测模型。先上两张简单的精确度和运算量的对⽐图,有个粗略的了解,虽然图中缺了YOLO,参考价值仍然很⼤:
下⾯开始分别详述吧~
Faster R-CNN架构
传统⽬标检测⽅法⼤致分为如下三步:
深度学习特别是CNN的出现使得上述第⼆三步可以合并在⼀起做。Faster R-CNN步骤:
(1)由输⼊图⽚产⽣的区域候选
(2)最后⼀层卷积输出的所有通道
(2)最后⼀层卷积输出的所有通道
pooling=>
+
伊兰特二手车(3)ROI pooling
柏林之声音响价格候选区的产⽣
RPN的核⼼思想是使⽤卷积神经⽹络直接产⽣region proposal,使⽤的⽅法本质上就是滑动窗⼝。RPN的设计⽐较巧妙,RPN只需在最后的卷积层上滑动⼀遍,因为anchor机制和边框回归可以得到多尺度、多长宽⽐的region proposal,3*3滑窗对应的每个特征区域同时预测输⼊图像3种尺度(128,256,512),3种长宽⽐(1:1,1:2,2:1)的region proposal,这种映射的机制称为anchor:
RPN利⽤基⽹络对图像⽤⼀系列的卷积和池化操作进⾏特征提取,得到原始的feature maps(灰⾊区域),然后在原始的feature maps 后⾯再接⼀个con+relu层,得到将要⽤于⽣成region proposal的feature maps。将feature maps中的每个点映射回原图回原图中⼼,得到⼀个基准点。根据设置好的尺度⼤⼩和长宽⽐,并围绕基准点,⽣成k个anchors。Feature maps的每个点都有关于k个anchors的输出,包括是否有⽬标,以及回归k个region proposal的坐标值。
平移不变anchors:在feature maps上的每个点都可以预测得到k个region proposal。具体操作:将feature maps上的每个点映射到原图,得到⼀个基准点,然后围绕该基准点,通过设置好的固定的尺度⼤⼩和长宽⽐,⽣成k个anchors。在论⽂中,使⽤了3种尺度和3种长宽⽐的anchors,所以k=3*3=9,对于⼀个⼤⼩为W*H的feature map,将会产⽣W*H*k个anchors。⽽通过这种不同尺度和不同长宽⽐的设置,同样实现了anchors的平移不变性。
RPN的损失函数:在训练RPN的时候,先需要对得到的W*H*k个anchors进⾏正负样本的划分。将与gt box具有最⼤IOU的anchor以及与任何⼀个gt box的IOU⼤于0.7的anchor作为正样本,将剩余的与gt box的IOU⼩于0.3的anchor作为负样本,其余anchors均被忽略。对于每个anchor,后⾯会再接上⼀个⽤于⼆分类的softmax与⽤于bbox回归器。⼆分类softmax⽤于判断anchor是否为⽬标概率,bbox回归器⽤于调整anchor的4个坐标值。因此RPN的损失函数可定义为:
不带*为预测值,带*为真实值,其中,
其中x,y,h,w分别表⽰box的中⼼坐标,⾼度与宽度。
日本汽车工业协会ROI 池化:因为 Fast R-CNN 使⽤全连接层,所以我们应⽤ ROI 池化将不同⼤⼩的 ROI 转换为固定⼤⼩。简洁⽰例,我们先将8×8特征图转换为预定义的 2×2 ⼤⼩。
下图左上⾓:特征图。
天津汽车牌照查询>大傻二手车
右上⾓:将 ROI(蓝⾊区域)与特征图重叠。
左下⾓:将 ROI 拆分为⽬标维度。例如,对于 2×2 ⽬标,我们将 ROI 分割为 4 个⼤⼩相似或相等的部分。
右下⾓:到每个部分的最⼤值,得到变换后的特征图。
按上述步骤得到⼀个 2×2 的特征图块,可以馈送⾄分类器和边界框回归器中。
Train
整个Faster RCNN训练过程可分为4步:
第⼀步:⽤在ImageNet数据集上训练好的model初始化模型,训练⼀个RPN⽹络;废机油
第⼆步:⽤在ImageNet数据集上训练好的model初始化模型,同时⽤第⼀步中训练好的RPN⽹络⽣成的region proposal作为输⼊,训练⼀个Fast RCNN;
第三步:⽤第⼆步训练好的Fast RCNN的⽹络参数初始化RPN⽹络,但是将RPN与Fast RCNN共享的⽹络层的learning rate设置为0,仅微调RPN独有的⽹络层。
第四步:固定共享的⽹络层,仅微调Fast RCNN所独有的fc层。
发布评论