资讯专栏INFORMATION COLUMN

Faster R-CNN理解

Lorry_Lu / 1574人阅读

摘要:为了不重新构建后续的网络也没必要重新构建最后的网络,共享卷积层是最好的选择。

一.简介

在R-CNN中的roi都是独自传入到经过与训练的CNN的分类器和box-regression中去造成了对应每个roi都要经过独自的卷积操作十分耗时,Fast-RCNN解决了没有共享卷积层的问题,但是他们共同使用的selective search的边框生成方法过于复杂,成为了计算时间的一个瓶颈,因为Fast-RCNN在确定ROI后可以在GPU上运行,但是selective rearch是不可以的,它只能在cpu上运行,因此这大大制约了系统的时间提升,那么作者提出将roi的选择也置于GPU上就可以大大加快Fast-Rcnn的预测。因此作者又提出了Faster-RCNN使用RPN的边框生成算法而彻底的抛弃了selective的算法。
因此在这篇文章中作者提出了在特征图上对ROI进行选择,这样就可以使用GPU和共享fast-Rcnn的主要结构,在Fast-RCNN的最后一层特征图上我们构造一个RPN,通过添加一个额外的用来同时进行物体识别和边框回归的卷积层,因此这是一个全连接网络,因为我们需要进行边框的回归就必须输出四个偏移量,外加判断是否为背景的边框识别,这都是依靠全连接层的将为操作才能实现的。
同时为了统一Fast-Rcnn和RPN作者提出了一个训练方案,使用fine-tuning在训练区域判断任务和已确定区域的Fast-RCNN中进行交替迭代,这个方法的收敛效果很好,并且产生了卷积层共享的统一结构,置于RPN为何要和Fast-Rcnn要在卷积层保持结构的不变性,主要的原因在于这幅图


在实现的时候,proposals的生成网络需要从最后的卷积层中提取一个256d的特征来确定原始的ROIs同时判断值是否为背景只有在确定了这两项后才能送入到Fast-Rcnn中进行boxing-regression和判断物体的种类。为了不重新构建后续的网络也没必要重新构建最后的网络,共享卷积层是最好的选择。

二.相关工作

1.proposals生成
2物体检测的深度网络
在R-Cnn中我端到端的对物体进行分类来判断它属于物体的哪一类或者背景,同时对于每个类都会生成所对应的边框回归的参数,在判断好哪一类后就可以选择对应的边框回归参数!R-CNN仅仅相当于一种分类器,他的准确率极大的取决于他的边框区域生成模型,在 OverFeat 方法中,一个全连接层被训练来预测边框的坐标,注意是坐标不是回归量,然后被送到一层用来检测类确定的物体的回归。在 MultiBoxs方法中,该连接层在确定原始坐标后,它产生的是多种类不确定的边框回归,也就是说这两个方法中,第一种是在确定了类别后使用特定类的参数来进行边框回归的,但是第二种是将边框回归和物体分类独立起来了,需要产生更多的参数,在作者的模型中采用的是第一种方法

三.Faster-Rcnn


Faster-Rcnn的结构如上,由两个部分组成,一个是深度全卷积网络来产生proposals信息,第二个是使用proposals的Fast-Rcnn detector,RPN来告诉Fast-Rcnn需要看那个区域

1.Region Proposal Networks(RPN)

RPN网络将一整幅图片(大小无所谓)作为输入,输出一些矩形框,且每一个都有非背景得分,为了产生位置区域,我们在输出特征图的最后一层使用n*n的子框从最后一层的卷积特征图上提取特征,之后将特征隐射到256d的区域中(我的理解就好在是颜色的三基色一样,通过映射,就可以判断这是背景与否),然后将这256d的数据送入的两个全连层中分别用来判断这是否为背景的(cls)与边框回归(reg)在本文中我们设置n=3,因为接收域太大了过程如下

2.Anchors

在窗口滑动的过程中,我们同时预测了多个区域 proposals,对于每个边框最大可能的形状有k种,因此CLS有2k个输出(即该形状的参考边框是否是背景),reg有4k个输出(及对该边框如何进行回归),同一个location的k种proposals我们称之为anchor,而它可以通过中心点已经缩放度和长宽比来定义,我们通常使用3种缩放比例和3种长宽比来默认初始化一个anchor,那么整个特征图就有MHK个anchor了

3.Translation-Invariant Anchors

如果一个物体被翻转了,那么我们的proposal也应该能够翻转并且使用相同的函数可以预测它,这样翻转不变性在我们的anchor中可以得到保障对比之下MultiBox方法使用k均值算法来产生800,并不具备翻转不变性,也就是说在一个objection在翻转后我们的方法在相同的参数下都能准确的预测到它的proposal,这就是那4k数量的作用了,如果是在确定了使用某个类型的anchor就会损失这样的性质。同时也减少了我们的输出的数量也就导致了参数的减少。

4.Multi-Scale Anchors as Regression References

对于不同大小的图片输入情况,传统的做法有两种
1.对图像进行多尺度的缩放后独自计算各自的特征图,但是这太耗时间了
2.使用不同的大小的bounding-boxing来对objection进行判别,而所谓的不同大小就是金字塔型的

我们的anchors的方法就参考了金字塔滤波,为什么要这么说尼?因为我们同一个特征图区域对应9种proposals,很明显就是金字塔滤波。正是这种类似于金字塔滤波的设计,我们能够在没有添加其他损失项的情况下解决不同大小的目标问题!

5.Loss Function

在训练RPNs的时候我们对每个anchor指定了一个二值标签,我们对以下两种anchor判定为正的
1.与 ground-truth box有着最高的iou的那些anchor
2.iou高于0.7的那些anchor

那么我们的损失函数如上,其中i是mini-batch中第i个索引pi是i个anchor为物体的概率 p i∗为正标签(1)如果该anchor满足上面的条件1,2,后面一项如Fast-Rcnn的定义相同

2.Training RPNs

RPN可以通过反向传播或者SGD来进行训练每个mini-batch都来源于一幅图且包含了多个正的和负的案例anchors,优化这样的loss是可能的,但是这回会出现一个问题,会趋向于将所有的anchors都训练为负样本,因此我们选择从一幅图中选取出256幅anchors其中正负样本的比例是1:1,如果一幅图中正样本的数量少于128,就使用负样本补上

1.Sharing Features for RPN and Fast R-CNN

到现在为止我们已经说明了RPN是产生区域proposals的,当时还未说明如何使用CNN进行识别,对于其中的目标识别我们采用R-CNN,并且我们使用共享卷积层的由RPN和F-Rcnn组成的联合结构,由于RPN和F-RCNN分开训练会产生不一样的卷积层参数,因此需要一项技术来让这两个网络共享卷积层,而不是独立的训练两个分离的网络,在这里我们有三种训练方法:
1.交替训练
我们首先训练RPN,然后使用这些proposals来训练F-RCNN ,之后再使用参数初始化RPN,如此迭代
2.近似联合训练

在SGD的过程中,在训练的时候先前向传播,产生proposals后就认为proposals是固定的,预训练好的,接着训练FRCNN,损失函数是他们共同的损失函数,这种方法同时迭代两个网络的参数,作者认为效果不是很好

四:总结

faster rcnn 在fast rcnn 的基础上消除了ss的过程,缩短了时间,具体的解释在后续的代码部分解释

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41229.html

相关文章

  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN

    摘要:这个像素级别的图像分割问题被等科学家解决,这个框架被称为。由于图像分割需要做到像素级,这与边框分割不同,所以必然导致不准确。 作者:chen_h微信号 & QQ:862251340微信公众号:coderpai简书地址:https://www.jianshu.com/p/867... 自从 Alex Krizhevsky, Geoff Hinton, and Ilya Sutskeve...

    AJie 评论0 收藏0
  • 用于图像分割的卷积神经网络:从R-CNN到Mark R-CNN

    摘要:自从和在年赢得了的冠军,卷积神经网络就成为了分割图像的黄金准则。事实上,从那时起,卷积神经网络不断获得完善,并已在挑战上超越人类。现在,卷积神经网络在的表现已超越人类。 卷积神经网络(CNN)的作用远不止分类那么简单!在本文中,我们将看到卷积神经网络(CNN)如何在图像实例分割任务中提升其结果。自从 Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever ...

    daydream 评论0 收藏0
  • 像玩乐高一样拆解Faster R-CNN:详解目标检测的实现过程

    摘要:这一切始于年的一篇论文,其使用了称为的算法用来提取感兴趣候选区域,并用一个标准的卷积神经网络去分类和调整这些区域。 本文详细解释了 Faster R-CNN 的网络架构和工作流,一步步带领读者理解目标检测的工作原理,作者本人也提供了 Luminoth 实现,供大家参考。Luminoth 实现:https://github.com/tryolabs/luminoth/tree/master/l...

    taoszu 评论0 收藏0
  • 斯坦福:「目标检测」深度学习全面指南

    摘要:然而,幸运的是,目前更为成功的目标检测方法是图像分类模型的扩展。几个月前,发布了一个用于的新的目标检测。 随着自动驾驶汽车、智能视频监控、人脸检测和各种人员计数应用的兴起,快速和准确的目标检测系统也应运而生。这些系统不仅能够对图像中的每个目标进行识别和分类,而且通过在其周围画出适当的边界来对其进行局部化(localizing)。这使得目标检测相较于传统的计算机视觉前身——图像分类来说更加困难...

    Harpsichord1207 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<