R-CNN、SPPNet、Fast RCNN论文阅读记录

Deep Neural Networks for Object Detection

In this paper, we exploit the power of DNNs for the problem of object detection, where we not only classify but also try to precisely localize objects.

The problem we are address here is challenging, since we want to detect a potentially large number object instances with varying sizes in the same image using a limited amount of computing resources.

Rich feature hierarchies for accurate object detection and semantic segmentation

两个关键的insight:

1. 将高容量的CNN应用于自底向上的region proposal,即region proposal是classical tool,将经典工具与CNN结合是重要的。

2. 带标签的数据不够的时候,用辅助任务进行预训练,然后进行微调,这种范式能用于许多数据稀缺的视觉任务。

模型有三个模块

第一个模块用于得到与类无关的region proposal

第二个模块使用CNN将每个region proposal 转换成fixed-size feature vector

第三个模块使用class-specific linear SVM进行分类

Region proposal 使用selective search方法

Feature extract 使用五个卷积两个全连接生成4096维向量 ,输入CNN之前有个dilate操作

测试:

在测试的时候,使用selective search拿到2K个region,进行前向传播之后,对每个类,进行greedy NMS(对于IOU大于阈值的,并且存在与它有重叠的region的score比它大的,则去掉该region)

测试效率比较高,两个原因:一是参数在不同的类之间共享,二是CNN获取的vector维数低。由于参数的共享,计算proposal region和 feature的计算量被平摊了。

与类相关的计算就只有SVM中的点积和greedy NMS了。

训练:

使用了带监督的ILSVRC预训练,然后对分类层进行了变动用于特定的数据集。其中iou>=0.5视作正例,否则视作反例。训练时候learning rate比较小,这样不会推翻原来的训练结果。每次SGD时,正负样本1:3,这样减缓了样本不平衡问题,同时,由于正样本极少,这样能够保留一定量的样例。

由于数据量太大,使用了hard negative mining ,对于那些负例,优先选择容易被分错的,以提高分类能力。

分类使用的是histogram intersection kernel SVM.

可视化:

之前有deconvolution的方法来做可视化,本文使用了新的方法。将学到的units应用于原图,将激活值视作score,进行NMS。

 

消融研究:

在不进行fine-tuning 的前提下,去掉后两层的FC,效果甚至会变好。说明很大一部分表达能力来自于卷积层,而不是全连接层。这个实验说明只使用卷积层来计算密集的特征图是很有潜力的。在进行fine-tuning的前提下,微调后面的层提高更多。结合以上,说明前面的层学到的是泛化的特征,后面的层学到的是class-specific的特征。

检测错例分析:

结果表明,错例中由于弱定位造成的错例占最大比重。使用了bounding box regression以后,解决了很多定位错例。

 

Spatial Pyramid Pooling in DeeConvolutional Networks for Visual Recognition

摘要

传统的CNN要求有固定的输入,但是这种人为的限制可能会减少的识别的准确率,本文中为网络配备了spatial pyramid pooling来消除这一限制,该网络叫做SPPNet,能够对任意大小的图片生成固定大小的representation。同时,pyramid池化对目标的形变也是鲁棒的。在检测任务中,首先从图像计算一次特征图,唯一的一次。然后在任意的子区域内进行池化,得到固定大小的表示,进而训练检测器。测试时,比R-CNN快几十到上百倍,同时达到相差不大或者更好地准确率。

引言

具体的,网络由卷积层和全连接层组成,在最后一个卷积层之后加上一个SPP layer。这样做,使得不必一开始就限制数据具有同一的大小,而是在网络的深层要分类时才进行大小的限制。

Spatial pyramid pooling(matching)是Bag-of-words模型的一个扩展,是计算机视觉中最成功的的方法之一。在CNN流行之前,SPP就已经是一个重要的部分了在一些主流系统中。

SPP有几个明显的特点:一,能够将任意大小的图片生成一个固定大小的输出,之前的deep networks 做不到;二,SPP使用了多个级别的bins,而之前的sliding windows pooling使用的是固定的大小。而这种多级别bins对于目标形变具有鲁棒性。

使用不用大小的图片进行训练增强了规模不变性,减小了过拟合。

R-CNN中运算量太大,SPPNet中首先计算整个图的feature map,然后才进行特征获取。有近百倍的加速。

使用了当时最新的fast proposal method of EdgeBoxes ,达到了每张图0.5s,能用于实际。

带SPP的DNN

通过CNN得到的特征类似于传统方法得到的特征,In those methods, SIFT vectors [29] or image patches [28] are densely extracted and then encoded, e.g., by vector quantization [16], [15], [30], sparse coding [17], [18], or Fisher kernels [19]. These encoded features consist of the feature maps, and are then pooled by Bag-of-Words (BoW) [16] or spatial pyramids [14], [15]. Analogously, the deep convolutional features can be pooled in a similar way.

SPP

训练

训练分为single-size training和multi-size training。前者中,在每一level的pooling中,采用最大pooling,feature map是a*a,要生成n*n个bin,则sliding window大小为a/n向上取整,stride为a/n向下取整。后者中,在实现时,采用了两个具有不同输入要求的网络,它们共享参数,只是输入大小不同,相当于实现了对不同输入有相同大小的输出的功能。每个网络中固定大小是为了GPU运算方便。之后又进行了随机实验,即每个epoch中从180到224随机选取图片大小。以上只是训练时候的配置,测试时直接输入任意大小的图片。

分类任务

产生很大提升,原因不仅仅是参数量增加了,还因为SPP对边形和空间布局具有鲁棒性。

结果能说明,multi-size比single-size好,full view比crop view好。

与其他操作scale/size的方法相比,其他方法都是在test阶段进行操作,如Overfeat和howward’s method。但SPPNet是在训练时进行scale/size上的操作。

ImageNet 2012

ImageNet 2012中,单模型第一,多模型第三。

检测任务

相比R-CNN,只进行一次feature extract,大大减少了计算量。

首先使用SS生成2K个region,然后在整个image上进行一次feature extract,之后,将ground-truth作为正例,与ground-truth的IOU<=30的作为反例,对于反例来说,如果两个反例的overflap IOU超过70,则去除其中一个。(类似NMS)

考虑到分类任务中multi-scale对性能有提高,一个比较好的策略,对于一个candidate window来说,为它选择一个scale,使得window所含的像素数量接近224*224,如果scales的大小足够密集并且window接近方形,这种方法就等价于resize到224然后再extract feature。

总结

1. 可以用于不同scale、size、aspect ratio的图片

2. 加速

Fast R-CNN

摘要

相比之前的R-CNN,本网络训练要快9倍,并且测试时快213倍,并且在VOC 2012取得了更高的mAP。相比SPPNet,训练快3倍,测试快10倍,并且accurate更高。

引言

由于检测任务的复杂性,之前的方法用multi-stage的方式,这样比较慢而且不优美。本文提出一种one-stage的方法,同时进行目标的分类和定位的微调。

先来回忆下R-CNN和SPPNet。R-CNN有以下缺点,1.R-CNN首先通过log  loss对Net进行fine-tune ,然后将Net获取的特征喂给SVM,第三步进行bounding-box-regression.是一个multi-stage的过程。2.抽取的feature要保存下来,这个比较消耗内存和时间。3.测试时47s/image,很慢。R-CNN没有进行共享计算,而SPPNet进行了共享计算,训练时间减少了3倍,测试时间减少了10-100倍。和R-CNN一样,SPPNet也有很多缺点,也是multi-stage的。也要经过特征提取、网络fine-tune、SVM训练、bounding-box-regression等。但有一点不同,SPPNet没有fine-tune SPP之前的卷积层。

Fast R-CNN有几个优点,1.mAP更高2.single-stage,使用multi-task loss3.所有的层都能更新4.不用对特征进行缓存

网络结构和训练

 

ROI pooling

将ROI转换成H*W的feature map,H、W是超参数,池化单独作用于每个channel。ROI pooling相当于是SPP的special-case,此时level为1.

使用预训练网络进行初始化

将预训练网络初始化成Fast RCNN需要三个转变。1.最后一个max pooling要使用ROI pooling来代替,以生成固定的向量。2.最后的全连接层和softmax层要用两个姐妹层代替。3。网络的输入修改成两部分,一部分是图片本身,一部分是ROI。

Fine-tuning

提出了一种高效的训练方法。N是mini-batch大小,R是每次mini-batch要的总的region。每张图里采样N/R个region。这种采样叫做hierarchical在R不变的前提下,N越小,能够减少计算量。

 

多任务损失

对于每个ROI,

p是softmax得到的向量,u是第u类,t^u是预测的位置,v是真实的位置。

这种损失函数能够避免梯度爆炸。

Scale-invariance

两种方法,1.暴力法,在训练和测试时都将图片转换成固定的大小,让网络学习scale-invariance,2.金字塔方法

目标检测

分类任务中,卷积计算量远大于全连接。但是目标检测时,ROI的数量非常多,此时全连接 的计算量占几乎一半。此时可以使用truncated SVD来进行压缩。

u*v=u*t*t*t*t*v,其中U是W的t个左奇异向量构成的,V是t个右奇异向量构成的,Σ是一个由W的t个奇异值构成的对角矩阵。参数量从u*v变为t(u+v)。此时,可以将原来的单层全连接换成两层全连接,中间没有非线性激活。

主要成果

1. 实现了SOTA mAP在VOC07,10,12

2. 相比R-CNN,SPPNet更快

3. Fine-tune了VGG16的卷积层提高了mAP

一些总结

前人的实验中,对于DPM,增加数据的量会出现饱和。本实验中,通过增强数据,提高了mAP。

分类器使用了softmax,而之前的SPPNet和R-CNN都是SVM。Softmax是不是比SVM更好,做了一个实验,

结果表明,差距不明显。但至少说明,相比SVM的multi-stage,softmax已经够用了。同时,softmax引进了SVM没有的竞争机制。

检测器可以大致分为两种,一种是具有稀疏proposal,比如selective。一种具有密集proposal,比如DPM。前者是一种级联的方法,首先去掉大量的候选框,然后再对剩下的少量候选框进行评估。实验表明,这种方法应用于DPM时提高了准确度。

实验表明,增加proposal的数量,AR先增加后轻微下降 (蓝色实线)。

当一幅图中proposal的数量固定时,在R-CNN中使用的几种proposal方法表明,mAP和AR是相关的。但是,本图中,当proposal的数量变化时,表现出不相关。所以使用使用AR这个指标时要慎重,因为随着proposal数量增加时,AR可能会增加,但是mAP并不会。

实验表明,在selective search box固定时,增加一些dense box,mAP会下降很多。当进一步使用SVM时,mAP会进一步下降。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mask R-CNNFast R-CNNR-CNN 是计算机视觉领域中的目标检测算法。 首先,R-CNN代表Region-based Convolutional Neural Network,是目标检测领域的里程碑之一。R-CNN的基本思想是将图片分割为许多候选区域,然后对每个区域进行卷积操作,并在每个区域上运行一个支持向量机(SVM)来判断是否包含目标物体。虽然R-CNN在准确性上表现良好,但是其训练和推理速度很慢。 为了克服R-CNN的缺点,Fast R-CNN被提出。Fast R-CNN将整个图像输入到卷积神经网络中,并提取出共享特征图。然后,对于每个候选框,Fast R-CNN通过RoI池化层将候选框映射到特征图上,并利用这些特征进行目标分类和边界框回归。相比R-CNNFast R-CNN的训练和推理速度有了大幅提升。 在Fast R-CNN的基础上,Mask R-CNN进一步引入了目标实例的分割。Mask R-CNN通过在每个候选框上添加一个额外的分割头部来实现实例分割。该分割头部是一个全卷积网络,用于为每个像素点预测其属于目标物体的概率,从而生成目标的精确掩码。Mask R-CNN在目标检测和实例分割任务中表现出色,成为当前最先进的模型之一。 综上所述,Mask R-CNNFast R-CNNR-CNN都是计算机视觉领域中常用的目标检测算法。R-CNN是第一个将深度学习应用于目标检测的算法,Fast R-CNN在其基础上加入了RoI池化层,提升了检测速度,而Mask R-CNN则在Fast R-CNN的基础上进一步引入了目标实例的分割能力,获得了更精确的分割结果。 ### 回答2: mask rcnnfast rcnnrcnn都是计算机视觉领域中常用的目标检测算法。下面我分别介绍一下它们的特点和原理。 首先是rcnn(Region-based Convolutional Neural Networks)。rcnn是目标检测领域的一个重要里程碑,它通过将图像划分为一系列区域(region proposal),然后对每个区域进行单独的卷积神经网络(CNN)特征提取和分类,从而实现目标检测。rcnn的主要特点是每个区域独立处理,计算量较大,但检测精度较高。 接下来是fast rcnnFaster Region-based Convolutional Neural Networks)。fast rcnnrcnn进行了改进,主要改进了两个地方:一是将整个图像作为输入,而不是将图像中的每个区域分别作为输入;二是引入了ROI pooling层,将区域映射为固定大小的特征图,从而减少了计算量。fast rcnn的主要优点是在保持高检测精度的同时,大大提高了检测速度。 最后是mask rcnn,它是在fast rcnn的基础上进一步发展而来。mask rcnn在目标检测的基础上增加了对目标实例分割的支持。具体来说,mask rcnnfast rcnn的基础上引入了一个额外的分支网络,用于生成目标实例的精确分割掩码。mask rcnn的主要优点是在准确检测目标的同时,可以得到每个目标实例的精确分割结果。 综上所述,mask rcnnfast rcnnrcnn都是目标检测算法,它们在计算量和检测精度之间做了不同的权衡和改进,从rcnnfast rcnn再到mask rcnn,不仅提高了检测速度,还增加了目标实例分割的能力。这些算法的不断发展推动了计算机视觉领域的进步。 ### 回答3: Mask R-CNN是一种高级的目标检测算法,它是在Faster R-CNN基础上进行改进的。它不仅可以检测出图像中的目标,还可以为每个目标生成一个精确的遮罩(mask)来表示目标的轮廓和形状。 与Faster R-CNN相比,Mask R-CNN引入了一个额外的分支网络,称为全卷积网络(FCN),用于生成目标的遮罩。在提取出候选区域的基础上,Mask R-CNN通过ROI Align对每个候选区域进行精确的特征对齐,并将这些特征送入FCN网络进行遮罩生成。这样一来,Mask R-CNN不仅可以准确地定位目标,还能够提供更精确的目标遮罩。 Fast R-CNN是另一种目标检测算法,它是R-CNN的改进版本。Fast R-CNN通过引入RoI池化层,可以对整个图像进行一次前向传播,而不是像R-CNN那样对每个候选框都进行前向传播。这样可以大大提高模型的计算效率。 R-CNN是目标检测算法的开山之作,它将目标检测任务转化为一系列的二分类问题。首先,R-CNN通过选择性搜索(selective search)等方法从图像中提取候选区域。然后,每个候选区域被调整为固定大小,并送入预训练的卷积神经网络(CNN)中抽取特征。最后,这些特征被输入到线性SVM分类器中进行目标分类,并使用边界框回归来得到精确的目标边界框。 总结来说,R-CNNFast R-CNN和Mask R-CNN都是目标检测算法,它们通过引入不同的改进来提高检测的准确性和效率。R-CNN是最早的版本,Fast R-CNN在其基础上减少了计算量,而Mask R-CNN则进一步加入了遮罩生成,提供了更精确的目标检测和分割结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值