目标检测论文阶段性总结——R-CNN系列

目录

R-CNN

要点

1. 多阶段目标检测模型

2. 训练流程

缺陷

Fast R-CNN

改进(针对R-CNN)

1. 使用 multi-task loss

2. 样本选择

3. ROI pooling

4. "image-specific" sampling strategy

5. 使用truncated SVD加快检测

缺陷

Faster R-CNN

Faster R-CNN = RPN + Fast R-CNN

1. Region Proposal Network (RPN)

2. RPN 与 Fast R-CNN 共享网络

Mask R-CNN(实例分割)

要点

1. 引入FPN

2. RoIAlign

3. mask branch


R-CNN

要点

大样本下有监督预训练+小样本微调(现实任务中,带标签的检测数据较少)

1. 多阶段目标检测模型

预训练(transfer learning,用softmax regression去finetune分类网络) + selective search提取候选框 + CNN提取图像特征(AlexNet作为主干网络) + SVM分类 / regression回归调整预测框。

2. 训练流程

前提:将每个候选框分配给与其IOU最大的ground truth(GT)。

1)Pre-training + Finetuning

预训练数据集是ILSVRC2012,只使用 image-level annotations (没有bbox标签)。之后根据任务,将输出层改为N+1:N个类别,1个背景,微调CNN。

候选框中IOU>0.5的为正样本,其余为负样本(由于正负样本不均衡,所以会bias towads 正例)。

2)SVM分类

单独训练SVM,且每个类别都训练一个SVM。

GT为正样本,候选框中IOU值<0.3的为负样本,并使用难例挖掘。

3)预测框回归

候选框中IOU>阈值的为正样本,其余丢弃。

对每个object class 都这么做,从而训练出 class-specific 的 bounding box regression

缺陷

1. 为使候选框与CNN网络兼容,输入前需要先将其变为固定尺寸;

2. R-CNN 比较耗时:

    1)使用 selective search 产生候选框的步骤消耗大量时间;

    2)使用CNN逐一分别提取所有候选框的特征,存在大量重复计算;

    3)非端到端,各组件需要单独训练,并需要写回内存。

Fast R-CNN

改进(针对R-CNN)

1. 使用 multi-task loss

其中,分类损失采用 log loss(对应softmax regression);定位使用 smoothL1 损失,背景类不计入定位损失。

另外,论文中也提到了采用 multi-task training 的优越性。

2. 样本选择

1)正样本:与GT的IOU≥0.5的ROIs,占全部采样ROI的25%;

2)负样本:与GT的IOU∈[0.1,0.5)的ROIs。

3. ROI pooling

先将整张图片输入CNN,产生 feature map。selective search 方法产生的候选框经过 feature map 投影得到相应的ROI后,通过 ROI pooling 层,生成固定长度的特征向量。

4. "image-specific" sampling strategy

Fast R-CNN 可以更新整个网络(对比SPPnet)。

SPPnet 的训练样本(如每次采样R=128个样本)都来自于不同的图像,使得反向传播算法非常低效,无法更新SPP layer之前的网络。

Fast R-CNN采用分层采样策略。同样采集R=128个样本,Fast R-CNN 会先采样N=2张图像,再从每张图像中采集 R/N=64个 ROIs。同一张图像的ROIs可以共享计算和内存,从而能够加快计算。

5. 使用truncated SVD加快检测

缺陷

1. Fast R-CNN 本身并不能生成候选框,仍需使用 selective search 提取ROI,十分耗时。

2. 使用 ROI pooling 时,需要进行两次取整操作,使得 RoI 与所提取的特征之间存在错位(Mask R-CNN 就此进行了改进)。

Faster R-CNN

Faster R-CNN = RPN + Fast R-CNN

1. Region Proposal Network (RPN)

1)RPN为全卷积网络,取代selective search,生成候选框

假设CNN进行了N倍下采样,则feature map 上的一个点(location)可能对应原始输入图片上一个N×N的区域,该区域的中心即为锚点(anchor boxes的中心点)。在feature map上对一个点进行信息抽取时,对应了原图上anchor boxes的特征信息。

2)引入多尺度的 anchor box 机制

设特征图每个位置对应k个anchors,则W×H大小的特征图,共有 WHk 个anchors。每个anchor/proposal输出 4个回归参数,以及2个分类score(只关注是否为目标,不关注具体类别)。

3)损失函数

分类损失采用二分类的 softmax regression (log loss over two classes)。

正例:与GT的IOU最大的anchor/anchors;或者与GT的IOU>0.7的anchor。一个GT可能分配给多个anchor。

负例:与GT的IOU<0.3的anchors。

【注】学习k个回归器,每个回归器对应于一个不同的尺寸和宽高比。

2. RPN 与 Fast R-CNN 共享网络

RPN 与 Fast R-CNN 可以交替训练,共用CNN网络。

Mask R-CNN(实例分割)

要点

1. 引入FPN

通过backbone和FPN产生多个尺度的feature map,随后经过RPN网络产生proposals,再将生成的proposals输入RoIAlign,在对应的特征层(通过公式计算)进行裁剪,得到固定大小的特征。

图片来源:Faster rcnn/Mask rcnn/FPN_哔哩哔哩_bilibili

2. RoIAlign

改进 RoIPool 因量化(取整)操作而造成的misalignment。

在每个子区域(图中黑色框格)中采用双线性插值的方法计算四个采样点的值,随后输出四个采样点的最大值或均值作为子区域的值。

【注】Fast R-CNN分支与mask分支feature map尺寸不同,不共用RoIAlign,mask分支需要更细粒度的特征信息。

3. mask branch

1)在Faster R-CNN的基础上,对每一个ROI输出一个用于实例分割的mask蒙版,classification分支与mask分支并行。

2)mask预测与分类预测解耦

mask分支会针对各个类别预测一个蒙版,避免了类间竞争。每个RoI都会有一个Km²维的输出,其中K为类别数,m×m为RoI的像素值。

由专门的分类分支进行类别的预测,mask分支凭此选取RoI所属类别的mask,并对每个像素进行sigmoid激活。mask损失为BCE,只取RoI所属类别的mask与GT的mask进行损失计算。

图片来源:Mask R-CNN网络详解_哔哩哔哩_bilibili

【注】训练时输入mask分支的目标由RPN网络提供(即proposals,只选取正样本),此时的训练样本不很准确,但一定包含部分GT,可能可以达到随机裁剪的数据增强的效果;而预测时输入mask分支的目标由Fast R-CNN提供。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值