计算机视觉之目标检测入门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. 算法框架
算法实现流程:
1)选择一个分类模型
2)去掉最后的全连接层,根据数据集类别改为(N+1),对该模型进行微调
3)对selective search选出的候选区域进行特征提取,resize成同样大小,将最后一层池化层输出(候选框中提取的特征)保存到硬盘里
4)训练阶段
使用提取的特征训练SVM分类器来识别物体类别
使用提取的特征训练回归器(dx,dy,dw,dh)
dx表示水平平移,dy表示垂直平移,dw表示宽度缩放,dh表示高度缩放
测试阶段:使用回归器调整候选框位置
SPP-Net(Spatial Pyramid Pooling Net)
SPP-Net的作者为何凯明,R-CNN的最大瓶颈是在所有候选区域内都要进行一次CNN,速度很慢,SPP-Net只需将原图进行一次卷积,就可以得到每个候选区域的特征。
R-CNN
SPP-Net
特征映射
金字塔池化层
Fast-RCNN
RBG借鉴了SPP-Net的思想,在2015年提出Fast-RCNN。
整体框架
ROI Pooling(Region of Interest Pooling)
roi_pooling是SPP-Net中金字塔池化层的简单形式,只使用一种固定大小的max-pooling,将特征图中大小不同的候选区域转为大小相同的数据。
Fast-RCNN将bbox-regression放进了神经网络内部,与分类形成一个多任务模型。
Faster-RCNN
Faster-RCNN为RGB与2015年提出,Faster-RCNN加入一个专门生成候选框的神经网络(Region Proposal Network)RPN,即为RPN+Fast-RCNN。
Faster-RCNN整体框架
RPN
整体框架
每个点对应9个anchor(候选框),候选框有两类输出:一类为分类(是否有目标),一类为回归(候选框的四个参数)。
RPN计算流程
Faster-RCNN代价函数Loss
RPN层的Loss
包含两部分:目标检测部分loss+回归检测的loss
目标检测loss:交叉熵损失函数
回归监测loss
输出层的loss
输出层分类的loss:交叉熵损失函数
输出层回归的loss:和RPN一样
Faster-RCNN的训练