cascade rcnn 论文笔记

论文地址:https://arxiv.org/abs/1712.00726

论文核心点

  1. 采用级联的rcnn结构达到优化检测器的目的
  2. 每一阶检测器都是基于不同的IOU训练得到的,这样训练出来的网络能够适应不同IOU的proposal,在回归和分类性能上都有较大提升

IOU的重要性

IOU无论是在网络的训练还是推理都十分重要,在训练过程中,需要根据设定的IOU值来对RPN网络输出的proposal进行判断,从而划分正负样本,进行训练,在推理过程,需要通过设定的IOU来过滤掉低confident的负样本,如下图所示:

单一IOU训练的网络存在的问题在于,当IOU设置的过低,那么很多包含背景的proposal会被划分为正例参与训练,导致最终网络精度不够,存在较多误检,当IOU设置的过高,虽然可以获得更高精度的网络,但是由于符合要求的proposal过少,导致正负样本失衡,最终容易造成网络过拟合

  • (a)图 u=0.5,存在较多的误检
  • (b)图 u=0.7,训练容易过拟合
  • (c)图 bbox回归性能–固定IOU训练的网络只有在与输入的proposal的IOU接近的情况下,回归的性能最好
    横轴表示输入proposal的IOU,纵轴表示输出的bbox的IOU,曲线为不同固定IOU训练的检测器,从图中可以看出,输入proposal在经过网络回归后能获得更高精度的位置信息,也就是在输入的IOU为0.5情况下,在经过IOU为0.5的网络后得到的输入IOU可能为0.6-0.7,这一结论在cascade rcnn网络结构中得到合理的体现
  • (d)图 Detector的性能–固定IOU训练的网络只有在与输入的proposal的IOU接近的情况下,检测器的性能最好

网络结构

在这里插入图片描述
(a)是标准的Faster rcnn结构
(b)采用了级联的结构,前一阶的输出作为后一阶的输入,但是由于三个检测器的网络结构完全一致,都是基于相同IOU进行训练,不可避免会遇到前面所说的MisMatch问题,也就是当我们输入proposal的IOU跨度较大时,网络很难取得较好的效果
(c)采用不同IOU训练的级联结构,但是很明显,后面两个检测器没有参与到bbox回归上,且三个检测器都是独立训练的,没有refine的思想,本质上没有解决IOU的MisMatch问题
(d)cascade rcnn结构,与(b)不同的是cascade rcnn中的检测模型是基于前面一个阶段的输出进行训练,而不是像(b)一样3个检测模型都是基于最初始的数据进行训练,而且(b)是在验证阶段采用的方式,而cascade rcnn是在训练和验证阶段采用的方式,和(c)的差别也比较明显,cascade rcnn中每个stage的输入bbox是前一个stage的bbox输出。

实验结果

在这里插入图片描述
与主流检测方法实验对比
在这里插入图片描述

问题与思考

  1. cascade rcnn 的主要创新点
    cascade rcnn是由一系列的检测模型组成,每个检测模型都基于不同IOU阈值的正负样本训练得到,前一个检测模型的输出作为后一个检测模型的输入,因此是stage by stage的训练方式,在预测时,由于每一阶网络的输出bbox的IOU往往比输入要高,因此上一阶的输出作为下一阶更高IOU网络的输入,能保证IOU的match质量,使得网络发挥最好的检测性能
  2. 既然高IOU的单个检测器容易过拟合,cascade rcnn的结构是否会存在同样的问题
    单阶固定高IOU的情况下,符合条件的proposal过少,导正正负样本失衡,因此容易产生过拟合的问题,但是在cascade rcnn结构下,第一阶高于0.5IOU的proposal到第二阶输出时,得到的IOU值可能就在0.8附近,作为第三阶的输入则会被划分到正例样本中,因此不会造成正例样本的大幅减少,反而更高质量的proposal能训练出更高精度的检测网络
  3. 是否级联的层数越多效果越好
    针对这个问题,论文也做了验证,实验证明4阶网络并不会提高整体检测器的性能,反而有所下降,但是AP90是最高的,也就是检测精度是有所提升,而整体性能的下降初步猜测是recall下降所导致,论文中也提到,3阶是折中的选择。 The three-stage cascade achieves the brest trade-off
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cascade RCNN是一种基于深度学习的目标检测算法,它是RCNN系列算法的一种改进版本。Cascade RCNN通过级联多个RCNN模型来提高检测精度,每个级联模型都会对前一个模型的误检样本进行筛选,从而逐步提高检测精度。PyTorch是一种深度学习框架,可以用来实现Cascade RCNN算法。 ### 回答2: Cascade RCNN是一种基于深度学习的目标检测算法,用于在像中定位和识别感兴趣的目标。该算法结合了级联和RCNN的思想,能够在保持高准确率的同时提高处理速度。 Cascade RCNN的算法结构包括三个级联步骤:RPN(Region Proposal Network)、Fast RCNNCascade。在第一步中,RPN通过在像上生成一系列候选框,筛选出较可能包含目标的区域。在第二步中,Fast RCNN对这些候选框进行特征提取和分类,以识别目标。在第三步中,Cascade通过级联多个Fast RCNN来进一步提高目标检测的准确性。 PyTorch是一种基于Python的深度学习框架,为实现Cascade RCNN提供了便捷的开发工具。PyTorch具有灵活的张量计算和自动微分功能,能够轻松定义、训练和部署深度学习模型。 利用PyTorch实现Cascade RCNN,可以使用现有的PyTorch中已经实现的各种模块,如卷积神经网络(CNN)和RNN等。通过定义并组合这些模块,可以构建出Cascade RCNN网络结构。然后,使用PyTorch提供的优化器和损失函数,结合真实标注数据进行模型训练。训练完成后,可以使用该模型在新的像上进行目标检测。 总结来说,Cascade RCNN是一种高效准确的目标检测算法,而PyTorch是一种便捷的深度学习框架,可以用来实现Cascade RCNN,并通过训练和推理来完成目标检测的任务。 ### 回答3: Cascade RCNN是一种用于目标检测的神经网络模型,它结合了级联思想和Faster RCNN的方法。它使用了一系列级连级联的检测器,每个级联检测器都有一个不同的IoU(交并比)阈值,用于筛选出具有不同难度的目标。 Cascade RCNN的训练过程与Faster RCNN类似,首先使用候选区域提取网络(RPN)生成候选框,然后对这些候选框进行ROI池化,提取固定大小的特征。之后,级连过程开始,每个级连器都进行训练,用于用不同的IoU阈值对候选框进行筛选。级连器的训练是一个级联过程,第一个级连器负责筛选出容易检测的目标,然后将这些目标的特征再次传递给下一个级连器,以进一步筛选出难以检测的目标。 在测试阶段,级连RCNN首先使用第一个级连器对候选框进行筛选,然后将筛选出的候选框传递给下一个级连器进行进一步的筛选。最后,级连RCNN会生成最终的目标检测结果。 Cascade RCNN的优点在于它的级连思想能够逐步筛选出具有不同难度的目标,从而提高检测的精度和召回率。另外,它在Faster RCNN的基础上进行了改进,引入了级连过程,使得检测结果更加准确。在Pytorch中,可以使用已经实现好的Cascade RCNN的开源代码进行模型的构建和训练。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值