• 回答数

    2

  • 浏览数

    98

戆戆的囡囡
首页 > 论文发表 > rcnn发表的论文

2个回答 默认排序
  • 默认排序
  • 按时间排序

Bulabula789

已采纳

论文: 《Rich feature hierarchies for accurate object detection and semantic segmentation》 发表年份:2013 RCNN(Regions with CNN features)是将CNN用到目标检测的一个里程碑,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。 Region proposal是一类传统的候选区域生成方法,论文使用 selective search  生成大约2k个候选区域(先用分割手段将图片完全分割成小图,再通过一些合并规则,将小图均匀的合并,经过若干次合并,直到合并成整张原图),然后将proposal的图片进行归一化(大小为217*217)用于CNN的输入。 对每个Region proposal使用CNN提取出一个4096维的特征向量 3.1 CNN提取的特征输入到SVM分类器中,对region proposal进行分类,与 ground-truth box的IoU大于0.5的为正样本,其余为负样本。论文中每个图片正样本个数为32负样本个数为96。得到所有region proposals的对于每一类的分数,再使用贪心的非极大值抑制方法对每一个SVM分类器类去除相交的多余的框。 3.2 使用一个线性回归器对bounding box进行修正,proposal bounding box的大小位置与真实框的转换关系如下: 综上,整个网络结构如下:R-CNN在当年无论是在学术界还是工业界都是具有创造性的,但是现在来看RCNN主要存在下面三个问题: 1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间; 2)针对传统CNN需要固定尺寸(217*217)的输入图像,crop/warp(归一化)产生物体截断或拉伸,丧失或者改变了图片本身的信息; 3)每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的CNN特征提取导致巨大的计算浪费。论文: 《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》 发表年份:2015 既然CNN特征提取如此耗时,为什么还要对每个Region proposal进行特征提取,而不是整体进行特征提取,然后在分类之前做一次Region的截取呢,于是就诞生了SPP-Net。 1.解决了CNN需要固定大小输入的变换后导致图片信息丢失或者变化的问题 2.对于一张图,只需要进行一次的特征提取运算,避免了R-CNN中特征重复计算的问题 CNN为什么需要固定大小的输入? R-CNN中会对图片缩放成217*217的固定大小,从而导致物体发生形变(如下图的上部分所示)。与前面不同,SPP-Net是加在最后一个卷积层的输出的后面,使得不同输入尺寸的图像在经过前面的卷积池化过程后,再经过SPP-net,得到相同大小的feature map,最后再经过全连接层进行分类 以AlexNet为例,经CNN得到conv5输出的任意尺寸的feature map,图中256-d是conv5卷积核的数量。将最后一个池化层pool5替换成SPP layer,将feature map划分成不同大小的网格,分别是`4x4`,`2x2`,`1x1`,每个网格中经过max pooling,从而得到4x4+2x2+1x1=21个特征值,最后将这21个特征值平铺成一个特征向量作为全连接层的输入,这种方式就是 空间金字塔池化 。 与R-CNN不同,SPP-Net中是将整张图片进行一次特征提取,得到整张图片的feature map,然后对feature map中的候选区域(RoIs)经过空间金字塔池化,提取出固定长度的特征向量进入全连接层。 原图候选区域与特征图上的RoIs的转换流程:综上,整个网络结构如下图。SPP-Net相比R-CNN做了很多优化,但现在来看依然存在一些问题,主要如下:论文: 《Fast R-CNN》 发表年份:2015 Fast R-CNN是对R-CNN的一个提升版本,相比R-CNN,训练速度提升9倍,测试速度提升213倍,mAP由66%提升到66.9%主要改进点如下:多任务损失函数(Multi-task Loss):         Fast R-CNN将分类和边框回归合并,通过多任务Loss层进一步整合深度网络,统一了训练过程。分为两个损失函数:分类损失和回归损失。分类采用softmax代替SVM进行分类,共输出N(类别)+1(背景)类。softmax由于引入了类间竞争,所以分类效果优于SVM,SVM在R-CNN中用于二分类。回归损失输出的是4*N(类别),4表示的是(x,y,w,h分别表示候选框的中心坐标和宽、高)。 SVD对全连接层进行分解:         由于一张图像约产生2000个RoIs,将近一半多的时间用在全连接层计算,为了提高运算速度,使用 SVD(奇异值分解) 对全连接层进行变换来提高运算速度。一个大的矩阵可以近似分解为三个小矩阵的乘积,分解后的矩阵的元素数目远小于原始矩阵的元素数目,从而达到减少计算量的目的。通过对全连接层的权值矩阵进行SVD分解,使得处理一张图像的速度明显提升。 论文: 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》 发表年份:2016         SPP-Net和Fast R-CNN都有一个非常耗时的候选框选取的过程,提取候选框最常用的SelectiveSearch方法,提取一副图像大概需要2s的时间,改进的EdgeBoxes算法将效率提高到了0.2s,但是还是比较耗时。         Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search,同时引入anchor box应对目标形状的变化问题(anchor就是位置和大小固定的box,可以理解成事先设置好的固定的proposal) Region Proposal Network:         RPN的核心思想是候选框的提取不在原图上做,而是在feature map上做,这意味着相比原图更少的计算量。在Faster R-CNN中,RPN是单独的分支,通过RPN提取候选框并合并到深度网络中。多尺度先验框: RPN网络的特点在于通过滑动窗口的方式实现候选框的提取,每个滑动窗口位置生成9个候选窗口(不同尺度、不同宽高),提取对应9个候选窗口(anchor)的特征,用于目标分类和边框回归,与FastRCNN类似。anchor的生成规则有两个:调整宽高比和放大。如下图所示,假设base_size为16,按照1:2,1:1,2:1三种比例进行变换生成下图上部分三种anchor;第二种是将宽高进行三种倍数放大,2^3=8,2^4=16,2^5=32倍的放大,如16x16的区域变成(16*8)*(16*8)=128*128的区域,(16*16)*(16*16)=256*256的区域,(16*32)*(16*32)=512*512的区域。训练过程中,涉及到的候选框选取,选取依据如下: 从模型训练的角度来看,通过使用共享特征交替训练的方式,达到接近实时的性能,交替训练方式为: Faster R-CNN实现了端到端的检测,并且几乎达到了效果上的最优,有些基于Faster R-CNN的变种准确度已经刷到了87%以上。速度方面还有优化的余地,比如Yolo系列(Yolo v1/v2/v3/v4)。对于目标检测,仍处于一个探索和高度发展的阶段,还不断有更优的模型产生。

86 评论

Joy9999999

对于目标检测方向并不是特别熟悉,本文记录一下RCNN, fast-RCNN, faster-RCNN, mask-RCNN这4篇有关目标检测的论文笔记和学习心得。

R-CNN的意思就是Region based,主要思路就是根据一张图像,提取多个region,再将每个Region输入CNN来进行特征的提取。因此RCNN就可以分为 Region proposals , Feature extraction 两个主要部分,提取的特征就可以输入任意一个分类器来进行分类。 模型的流程图如下:

在训练的时候,首先使用的是已经训练好的CNN网络作为特征提取器,但是由于预训练是在分类数据集上,因此在应用到检测之前要做finetune。也就是说,为了将用ImageNet数据集训练的网络应用到新的任务(检测),新的数据集(region)上,作者将原来的CNN最后的1000类的fc层,更改为了 层, 代表待检测的物体的类别数。然后,对于所有的region,如果它和ground truth的重叠率大于0.5,就认为是正类。 对于分类器的训练,作者发现选择多大的IoU来区分正类和负类非常关键。并且,对于每一类,都会训练一个分类器。

框的回归非常重要,在对每一个region proposal使用分类器进行打分评价之后,作者使用一个回归器来预测一个新的框作为结果。这个回归器使用的特征是从CNN中提取的特征。回归器的训练中,输入是 region proposal 的 和ground truth的 ,目标是学习一种变换,使得region proposal通过该变换能够接近ground truth。同时,希望这种变换拥有尺度不变性,也就是说尺度变化的话,变换不会改变。 如下图所示,每一个regressor会学习一组参数,特征输入是pool 5的特征输出,拟合的目标是 。

Fast-RCNN 主要解决的问题是在RCNN中对于每一个region proposal都进行特征提取,会产生非常多的冗余计算,因此可以先对一张图像进行特征提取,再根据region proposal在相应的特征上进行划分得到对应region的特征(映射关系)。 这样便可以实现共享计算提高速度,但是与SPPnets不同,SPPnets在一副图像得到对应的特征后,从这张图像的特征上proposal对应的部分,采用空间金字塔池化,如下图:

RoI pooling的方法很简单,类似于空间金字塔pooling,它将proposal部分对应卷积层输出的特征(称之为RoI,因为用于做pooling的特征是 region of interest,也就是我们感兴趣的区域)划分成 块,然后对每一块求最大值,最终得到了一个 的特征图。可以看出,它只是空间金字塔pooling的一部分。 但是SPP-nets的空间金字塔也是可以求导的,那么它到底不好在哪里呢?因为当每一个RoI都可能来源于不同的图像的时候(R-CNN和SPPnets的训练策略是从一个batch的不同图像中,分别挑选一个proposal region),SPPNets的训练非常地低效,这种低效来源于在SPPnets的训练中,每个RoI的感受野都非常地大,很可能对应了原图的整个图像,因此,得到的特征也几乎对应了整张图像,所以输入的图像也就很大。 为了提高效率,Fast-RCNN首先选取 个图像,再从每个图像上选择 个RoI,这样的效率就比从每个图像提取一个RoI提高了 倍。

为了将分类和框回归结合起来,作者采用了多任务的loss,来进行联合的训练。具体来说就是将分类的loss和框回归的loss结合起来。网络的设计上非常直接,就是将RoI得到的特征接几个FC层后,分别接不同的输出层。对应于分类部分,特征会接一个softmax输出,用于分类,对于框回归部分,会接一个输出4维特征的输出层,然后分别计算loss,用于反向传播。loss的公式如下:

回归的target可以参考前面的R-CNN部分。

notes

为什么比fast还fast呢?主要原因是在这篇论文中提出了一个新的层:RPN(region proposal networks)用于替代之前的selective search。这个层还可以在GPU上运算来提高速度。 RPN的目的:

为了能够进行region proposal,作者使用了一个小的网络,在基础的卷积层输出的特征上进行滑动,这个网络输入大小为 ,输入后会映射(用 的卷积)为一个固定长度的特征向量,然后接两个并联的fc层(用 的卷积层代替),这两个fc层,一个为box-regressoin,一个为box-classification。如下图:

在每一个滑动窗口(可以参考 ),为了考虑到尽可能多的框的情况,作者设计了anchors来作为region proposal。anchors就是对于每一个滑动窗口的中心位置,在该位置对应的原图位置的基础上,按照不同的尺度,长宽比例框出 个不同的区域。然后根据这些anchors对应的原始图像位置以及区域,和ground truth,就可以给每一个滑动窗口的每一个anchor进行标记,也就是赋予label,满足一定条件标记为正类(比如和ground truth重叠大于一个值),一定条件为负类。对于正类,就可以根据ground truth和该anchor对应的原图的区域之间的变换关系(参考前面的R-CNN的框回归),得到回归器中的目标,用于训练。也就是论文中的loss function部分:

自然地,也就要求RPN的两个并联的FC层一个输出2k个值用于表示这k个anchor对应的区域的正类,负类的概率,另一个输出4k个值,用于表示框回归的变换的预测值。

对于整个网络的训练,作者采用了一种叫做 4-step Alternating Training 的方法。具体可以参考论文

与之前的检测任务稍有不同,mask r-cnn的任务是做instance segmentation。因此,它需要对每一个像素点进行分类。 与Faster R-CNN不同,Faster R-CNN对每一个候选框产生两个输出,一个是类别,一个是bounding box的offset。Mask R-CNN新增加了一个输出,作为物体的mask。这个mask类似于ps中的蒙版。

与Faster R-CNN类似的是,Mask R-CNN同样采用RPN来进行Region Proposal。但是在之后,对于每一个RoI,mask r-cnn还输出了一个二值化的mask。

不像类别,框回归,输出都可以是一个向量,mask必须保持一定的空间信息。因此,作者采用FCN来从每个RoI中预测一个 的mask。

由于属于像素级别的预测问题,就需要RoI能够在进行特征提取的时候保持住空间信息,至少在像素级别上能够对应起来。因此,传统的取最大值的方法就显得不合适。 RoI Pooling,经历了两个量化的过程: 第一个:从roi proposal到feature map的映射过程。 第二个:从feature map划分成7*7的bin,每个bin使用max pooling。

为此,作者使用了RoIAlign。如下图

为了避免上面提到的量化过程

可以参考

作者使用ResNet作为基础的特征提取的网络。 对于预测类别,回归框,mask的网络使用如下图结构:

整体看完这几篇大佬的论文,虽说没有弄清楚每一个实现细节,但是大体上了解了算法的思路。可以看出,出发点都源于深度神经网络在特征提取上的卓越能力,因此一众大神试图将这种能力应用在检测问题中。从R-CNN中简单地用于特征提取,到为了提高速度减少计算的Fast R-CNN,再到为了将region proposal集成进入整个模型中,并且利用GPU加速的RPN,也就是Faster R-CNN。再到为了应用于instance segmentation任务中,设计的RoIAlign和mask。包括bounding box regression,pooling层的设计,训练方法的选择,loss的设计等等细节,无一不体现了大师们的思考和创造力。 可能在我们这些“拿来”者的眼中,这些方法都显得“理所应当”和巧妙,好用,但是,它们背后隐藏的选择和这些选择的思考却更值得我们学习。 以及,对待每一个问题,如何设计出合理的解决方案,以及方案的效率,通用性,更是应该我们努力的方向。

353 评论

相关问答

  • 发表的论文的封面

    毕业论文封面格式要求页面设置:页边距上2.8cm,下2.5cm、左3.0cm(装订线:2.5cm)、右2.5cm、页脚1.5cm;封面格式设置字体:四号宋体、居

    秋月羽羽 2人参与回答 2023-12-11
  • 论文的发表的意义

    链接: 30天论文写作发表进阶训练营。完结版,里面包含辅导课、直播课、音频课、视频课、PDF文档。 课程目录: 尔雅老师对四篇论文的解构修改辅导答疑 尔雅老师快

    我是小鱼儿呀 6人参与回答 2023-12-11
  • 发表的论文的特点

    学术论文的特点是:学术性、科学性、创造性、理论性。 一、学术性:学术论文要求作者在立论上不能带有个人偏见,也不能主观臆造,在撰写论文时要从客观和实际出发,这样才

    幸福家居 3人参与回答 2023-12-12
  • epub的论文算发表的

    议论文是对某个问题或某件事进行分析、评论,表明自己的观点、立场、态度、看法和主张的一种文体。议论文有三要素,即论点、论据和论证。阐述作者的立场和观点的一种文体。

    lalack1987 3人参与回答 2023-12-11
  • 发表论文的目的

    做科研必须要发表论文来作为自己的科研成果,作为自己评定职称的一个依据了,这也是很多科研从业者必须要走的一条路了

    蝴蝶圆舞曲 6人参与回答 2023-12-09