目标检测:R-CNN,Fast R-CNN,Faster R-CNN(详解)

目标检测:R-CNN,Fast R-CNN,Faster R-CNN(详解)

    • 1. R-CNN
    • 2. Fast R-CNN
    • 3. Faster R-CNN
      • RPN结构
      • 损失函数

1. R-CNN

R-CNN主要分为下面四个步骤:

  1. 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法),然后裁剪出每个候选区并说放到227x227大小
  2. 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
  3. 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
  4. 位置精修: 使用回归器精细修正候选框位置

2. Fast R-CNN

Fast R-CNN主要是对R-CNN的后面三个步骤进行改进

Fast R-CNN的主要步骤:

  1. 输入图像:输入一张待检测的图像

  2. 候选区域生成: 使用Selective Search算法,在输入图像上生成1K~2K个候选区域

  3. 特征提取:将整张图像传入CNN提取特征

  4. 候选区域特征:利用RolPooling分别生成每个候选区域的特征

    RolPooling:利用特征采样,将不同大小的特征,变成大小一致的特征

  5. 候选区域分类和回归:利用扣取的特征,对每个候选区域进行分类和回归

3. Faster R-CNN

Faster R-CNN主要是对Fast R-CNN的候选区域生成进行改进,使用Region Proposal Network(RPN)结构进行区域生成,所以,FasterR-CNN可以简单的看做是RPN+Fast R-CNN。
Faster R-CNN可以大致分为三部分,首先是backbone,用来提取特征图,可以使用VGG16,ZF网络等进行特征提取,然后就是RPN,进行候选框生成,最后就是ROlPooling与分类网络,对候选框进行分类和微调。下图是FasterR-CNN的大致流程图
目标检测:R-CNN,Fast R-CNN,Faster R-CNN(详解)_第1张图片

RPN结构

经过backbone后得到的特征图传入RPN,其中backbone中的网络可以使用VGG16,ZF网络等,如果使用VGG16训练得到的特征图,则是特征图的深度是512,如果使用ZF网络,则是256。
然后将特征图padding=1,再对特征图使用3x3的卷积核以步长为1进行卷积,并计算以卷积核中心点对应原始图像上的中心点,并计算出K个anchor boxes,生成的anchor有三种面积,三种比例,也就是每个中心点都会生成3x3=9个anchor boxes
目标检测:R-CNN,Fast R-CNN,Faster R-CNN(详解)_第2张图片
特征图经过一个共同的3x3卷积层,两个独立的1x1深度为2k和4k的卷积层,输出2k个scores,和4k个coordinates
目标检测:R-CNN,Fast R-CNN,Faster R-CNN(详解)_第3张图片
2k个scores2个为一组,分别表示每个anchor为前景和后景的概率,4k个coordinates4个为一组,分别表示每个anchor的中心坐标和宽度高度,
目标检测:R-CNN,Fast R-CNN,Faster R-CNN(详解)_第4张图片
用这些回归参数,将生成的anchor去调成成候选框,此时生成的候选框还存在大量的重叠,再使用cls得分,采用非极大值抑制,去除大量重叠和不是目标的候选框。
最后,从这些候选框中选出正负样本,对于每一个ground truth box ,选择和它重叠度(IoU)最高的一个anchor作为正样本,
对于剩下的anchor,从中选择和任意一个ground truth box重叠度超过0.7的anchor,作为正样本,正样本的数目不超过128个。随机选择和ground truth box重叠度小于0.3的anchor作为负样本。负样本和正样本的总数为256,其余的anchor丢弃。

损失函数

L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\})=\frac{1}{N_{cls}}\sum_i{L_{cls}(p_i,p_i^*)+\lambda\frac{1}{N_{reg}}\sum_i{p_i^*L_{reg}(t_i,t_i^*)}} L({pi},{ti})=Ncls1iLcls(pi,pi)+λNreg1ipiLreg(ti,ti)
其中,
p i p_i pi表示第i个anchor预测为真实标签的概率
p i ∗ p_i^* pi当为正样本时为1,当为负样本时为0
t i t_i ti表示预测第i个anchor的边界框回归参数
t i ∗ t_i^* ti表示第i个anchor对应的ground truth box的边界框回归参数
N c l s N_{cls} Ncls表示一个mini-batch中的所有样本数量256
N r e g N_{reg} Nreg表示anchor位 置的个数(不是anchor个数)约2400

你可能感兴趣的:(目标检测,pytorch,人工智能,目标检测,计算机视觉)