RCNN Fast-RCNN Faster-RCNN
R-CNN(regions with CNN features)
RCNN是RBG在2014年提出的一种目标检测算法,RCNN借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测。
RCNN采用的特征区域提取的方法为selective search,通过计算区域集中每个相邻区域的相似度,经一系列操作,框出图像上的特征区域,这些
相似度主要考虑的是颜色、纹理、尺寸、交叠四个方面。
算法流程:
1. 选择一个分类模型(VGG-16用的较多、AlexNet等)
2. 去掉最后一个全连接层,将分类数改为N+1,并对模型的参数进行优化
3. 对每一个候选区域进行特征提取:Resize区域大小,然后做一次前向运算,将第五个池化层的输出(即提取到的特征)保存
4. 训练阶段:使用输出的图像特征训练SVM分类器来判断这个候选框里面的物体类别
测试阶段: 每个类别对应一个SVM,判断是不是属于这个类别
5. 训练阶段:使用图像特征训练一个回归器(dx, dy, dw, dh),分别代表在各个方向和尺度的变换调整
测试阶段: 使用回归器调整候选框位置
SPP-Net
RCNN的瓶颈是2000个候选区域都要经过一次CNN,速度慢。SPP-Net改进成仅需将原图进行一次卷积操作即可得到每个区域的特征。
特征映射:原图的特征在conv后也在同一位置
金字塔池化层:
速度比RCNN提升了100倍。
Fast-RCNN
Fast-RCNN吧bbox regression放进了神经网络内部,与region分类合并成了一个multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进,这个结构的优化
极大的提升了模型的训练和预测速度,也为后来的Faster-RCNN做下了铺垫。
Faster-RCNN
是RBG团队于2015年的又一力作,简单网络目标的检测速度达到了17fps,复杂网络达到5fps。Fast-RCNN存在一个比较大的问题,就是selective search,他只能运行在CPU上,所以
加入了一个专门生成候选区域的神经网络,叫做Region Proposal Network(RPN)。
可将Faster-RCNN简单的看成” 区域生成网络 + fast-RCNN “的系统,以代替ss算法。
RPN神经网络的结构:
RPN的计算流程:
1. 最后一个卷积层输出的特征图再进行一次卷积得到新的特征图
2. 新的特征图上每个点都对应到原图上,并给出9个先验框,共约2000个
3. 计算所有候选区的scores
4. 把超出图片的候选区限制在图片区域内,选scores最大的12000个
5. 进行NMS,固定NMS的IoU为0.7,再选出scores最大的前2000个,这2000个若与标定区域的IoU大于0.7,即为正样本,小于0.3为负样本,中间值去掉
6. 训练RPN层分类回归时,随机抽256个区域,正负候选区为1:1,若正样本不够则用负样本补充
7. 训练最后输出时,随机抽取64个与真实区IoU≥0.5的作为前景,256-64个小于0.5且≥0.1的作为背景
k anchors boxes中的k一般取9,即有9个不同大小的先验框,将把每个特征点周围加上anchors boxes
Faster-RCNN的损失函数定义