两阶段检测算法
两阶段检测算法

在2012年深度学习开始兴起之后,发现用深度学习来解决图像分类的问题有显著的优势,于是在2014年以后希望将该种算法运用到目标检测的任务中来
R-CNN

举例:检测一个苹果,可以检测一个区域内红色区域的占比,若红色的占比越大就可以理解为是苹果的概率越大
R-CNN
- 是最早将深度学习和目标检测算法结合起来的方案
R-CNN网络结构


- Selective Search通过一些传统的特征如颜色,纹理,相似度来提取候选区域
- 计算出来的特征可以理解为该候选区域的特征,即一个区域对应一个特征
- svm是机器学习中比较经典的算法
R-CNN面临的问题

为了解决这个问题,Fast R-CNN应运而生

输入一张图片然后将该图片直接输入到卷积神经网络当中,得到一个特征图,再在这个特征图上用Selective Search中选出若干个候选区域,它们会共享这一个特征图(使计算量大幅度下降)
注意:这里提取出来的候选区域的大小和形状是不一样的,而在R-CNN中会将其缩放到相同尺寸,但这样可能会面临数据损失的一个问题,那么在Fast R-CNN中就将warp的方式转化为Rol-Pooling的方式,这样我们就的到了每个候选区域的特征,这些可以分为回归和分类两个分支,在Fast R-CNN中会将分类分支从svm替换到softmax,实现了分类分支和联合分支的联合训练
Fast R-CNN的效果

为了解决Fast R-CNN中的问题,Faster R-CNN应运而生
Faster R-CNN

虚线框出来的部分就是Faster R-CNN提出来的RPN概念
- 会把特征图的每一个点都作为中心点,生成大小比例不同的框(锚框Anchor),对每一个Anchor都会分为两个分支
1.分类分支:判断这个图上有没有东西,不关心框出来的东西是狗还是猫
2.回归分支:判断锚框与真实框有多远
接下来会将RPN输出的候选框做一定的处理,进入到Rol Pooling去提取候选框所对应的一个特征(进入第二阶段的计算),在第二个阶段的分类分支中就要判断所框起来的物体属于哪个类别,回归分支就要对候选框进行进一步的额微调,整体上实现了端到端的训练
锚框

RPN网络结构

- 输入(conv feature map)(作为整体RPN的输入)
1.首先先形成一个3X3的卷积再形成两个分支即分类分支和回归分支
2.在上方讲到Anchor为9,所以K可以取9,那么在分类分支中需要两维来判断Anchor是否包含物体,在回归分支中需要四维来判断Anchor与真实框的相对位置
3.最后将RPN部分的输出和Anchor结合得到RPN网络的输出得到Proposal - 对右半部分的讲解
1.有一张图片有512个特征图,每个特征图的大小是60X40
2.经过3X3的卷积得到1X256X60X40的特征图,然后在该特征图上去生成Anchor,所以总共生成21600个Anchor,然后就会分成两个分支(18理解为2x9,36理解为4x9)
3.最后根据RPN的输出和两万多个Anchor,得到N个proposals,作为最终RPN网络的输出
RPN网络训练策略

还需要对这些样本分配一个监督信息,告诉这些Anchor到底包不包含信息
RPN网络监督信息

偏移量就是那四个黄色的箭头,如果偏移量足够好的时候就可以结合Anchor生成预测框,这样的话预测框和真实框就可以足够接近
RPN网络Loss


浙公网安备 33010602011771号