计算机视觉之目标检测入门2

目标检测算法

  • R-CNN
  • fast R-CNN
  • faster R-CNN
    三个模型由Ross B. Girshick完成,毕业于加州大学伯克利分校。

R-CNN(regions with CNN features)

R-CNN由RGB与2014年提出的目标检测算法,将CNN用于目标检测的里程碑,借助于CNN特征提取和分类性能,通过RegionProposal(基于区域)方法实现目标检测。
1. 基于区域的方法selective search
step1:计算区域集中每个相邻区域的相似度S={s1, s2…}
while S非空:
step2:找出相似度最高的两个区域,将其合并为新集Rt,添加进R
step3:从S中移除所有与step2中有关的子集
step4:重新计算新集Rt与所有子集的相似度

相似度主要看颜色、纹理、尺寸、交叠四个方面。

2. 算法框架
计算机视觉之目标检测入门2
算法实现流程:

1)选择一个分类模型
计算机视觉之目标检测入门2

2)去掉最后的全连接层,根据数据集类别改为(N+1),对该模型进行微调
计算机视觉之目标检测入门2

3)对selective search选出的候选区域进行特征提取,resize成同样大小,将最后一层池化层输出(候选框中提取的特征)保存到硬盘里
计算机视觉之目标检测入门2

4)训练阶段
使用提取的特征训练SVM分类器来识别物体类别
使用提取的特征训练回归器(dx,dy,dw,dh)
dx表示水平平移,dy表示垂直平移,dw表示宽度缩放,dh表示高度缩放
测试阶段:使用回归器调整候选框位置
计算机视觉之目标检测入门2
计算机视觉之目标检测入门2

SPP-Net(Spatial Pyramid Pooling Net)

SPP-Net的作者为何凯明,R-CNN的最大瓶颈是在所有候选区域内都要进行一次CNN,速度很慢,SPP-Net只需将原图进行一次卷积,就可以得到每个候选区域的特征。
R-CNN
计算机视觉之目标检测入门2
SPP-Net
计算机视觉之目标检测入门2
特征映射
计算机视觉之目标检测入门2
金字塔池化层
计算机视觉之目标检测入门2

Fast-RCNN

RBG借鉴了SPP-Net的思想,在2015年提出Fast-RCNN。
整体框架
计算机视觉之目标检测入门2
ROI Pooling(Region of Interest Pooling)
roi_pooling是SPP-Net中金字塔池化层的简单形式,只使用一种固定大小的max-pooling,将特征图中大小不同的候选区域转为大小相同的数据。
计算机视觉之目标检测入门2
Fast-RCNN将bbox-regression放进了神经网络内部,与分类形成一个多任务模型。

Faster-RCNN

Faster-RCNN为RGB与2015年提出,Faster-RCNN加入一个专门生成候选框的神经网络(Region Proposal Network)RPN,即为RPN+Fast-RCNN。
Faster-RCNN整体框架
计算机视觉之目标检测入门2

RPN
整体框架
计算机视觉之目标检测入门2
每个点对应9个anchor(候选框),候选框有两类输出:一类为分类(是否有目标),一类为回归(候选框的四个参数)。

RPN计算流程
计算机视觉之目标检测入门2
计算机视觉之目标检测入门2
Faster-RCNN代价函数Loss
RPN层的Loss
计算机视觉之目标检测入门2
包含两部分:目标检测部分loss+回归检测的loss
目标检测loss:交叉熵损失函数
计算机视觉之目标检测入门2
回归监测loss
计算机视觉之目标检测入门2
输出层的loss
输出层分类的loss:交叉熵损失函数
输出层回归的loss:和RPN一样

Faster-RCNN的训练
计算机视觉之目标检测入门2

计算机视觉之目标检测入门2