读书笔记:Fast R-CNN

读书笔记:Fast R-CNN:

其实我先读的faster rcnn,但是读起来很困难,感觉faster rcnn默认我知道了很多预备知识;因此我先来读一读fast rcnn


Abstract:

背景:region-based神经网络针对目标检测,在这个基础上进行了改进;
对比:fast-rcnn提出了创新,加快了training和testing的时间,同时还提升了精度。
最后吹捧一下自己的网络 fast rcnn厉害!

Introduction:

背景1:深度神经网络提升了分类/目标检测;但是与分类任务相比,目标检测更难,需要更多的步骤,而且训练模型(目标检测)是非常缓慢且复杂的。
背景2(目标检测):充满着复杂性,因为目标检测需要精确的目标类别和精确的位置信息,从而产生了两个挑战;
挑战1:众多的候选区域proposals必须被处理;挑战2:候选的proposals只有一个粗略的位置,需要重新定位一个更加精确的位置。为了解决这些困难和挑战,大多数的解决方法牺牲了速度和精确性;
我们的方法:我们简化了训练的过程,我们设置了单阶段训练算法,共同学习目标分类和重新定义空间位置信息;
背景3:R-CNN和SPPnet(spatial pyramid pooling networks)
这种region-based convolutional networks method(例如R-CNN)可以极大的提高目标检测的进度—通过深度卷积神经网络—不过也有着自己的缺点;
缺点1:训练是多阶段的RCNN先搞一个神经网络,通过一个logloss提出一个object proposals=candidate object detector ,之后将一个SVM作为object detector,最后一个阶段,bounding被用来回归。
缺点2:训练占用了大量的时间/内存,再训练SVM和BBOX回归训练的,feature从each object proposal被提取出来之后被写到disk之中,十分的占用算力和时间
缺点3:object detection is slow
接下来我们接着谈slow RCNN,RCNN缓慢的原因之一是object proposal再神经网络之中正向传递,在这个过程中不需要也不会共享计算。Spatial pyramid pooling network被提出来来加速训练网络,通过共享算力。Sppnet method计算所有输入图像的卷积特征图,然后在共享的特征图提取特征向量,然后再通过特征向量从而进行分类。特征都从proposal中而提取,通过最大池化特征图中有着(proposal的部分)。Sppnet加速了testing的时间,同时也减少了训练时间。Sppnet也有着明显的缺点。缺点与RCNN相同训练也是多步骤,包括:特征提取,微调网络,训练分类SVM和regression ,并且还有着其他的限制:例如网络层数较为固定等。
本文贡献:
提出了新的算法,弥补了RCNN与Sppnet的缺点,还提升了他们的速度和精准度,我们叫他为fast-rcnn,可以快速的训练和测试;
优点:

  1. high mAP;
  2. 训练单阶段,用的mullti-task loss;
  3. 训练可以更新到所有的层;
  4. 提取特征不需要那么多空间;

Fast R-CNN的结构和训练

在这里插入图片描述
A FAST RCNN Network 将整个图像和object proposal(Region of interest)作为input,从而送进卷积神经网络。每一个ROI被池化为一个固定大小的特征图,然后通过一个Fully connected layers转化为一个特征向量,每一个ROI将会有两个output的vectors:softmax的概率和regression的概率。

Architecture
network的第一阶段处理整个图像通过一些卷积和池化产生一个卷积特征图,然后每一个object proposal产生一个ROI,ROI被池化为一个固定大小的特征图,通过一个FC转化为特征向量,最后的分支为两个:softmax/regressor,分别estimate“K”object的类别(class)另一个直接output K object的4个数值(x,y,w,h)

The ROI Pooling Layer
the roi pooling layer用了最大池化将一个(ROI)从特征图中池化为一个固定大小的特征图,ROI是一个矩型的特征图。Each ROI被定义为(r,c,h,w),通过ROI得到输出统一大小的特征区域,一边FC进行其他的操作等:
具体的方法可以参考这个链接:
添加链接描述
初始化预训练网络
我们在Imagenet之中进行预训练网络,在5-13个卷积层中有五个最大池化层,我们初始化预训练的Fast RCNN网络经历了三个改变:

  1. 最后一层的最大池化改为了ROI Pooling层为了得到统一区域的特征区域,便于FC一维化;
  2. 网络的全连接层和softmax被换成了softmax 的概率和bbox regressionor
  3. 网络的输入进行了修改,网络有两个输入a list of image a list of ROI

对detection进行微调/改进
通过反向传播训练得到权重是Fast RCNN的一项重要的能力,在这之前我们先解释一下为什么SPPnet不能更新权重。
主要原因是SPPnet在训练不同图像时反向传播的效率比较低,但这样正是Sppent和RCNN这样所训练的。这种低效率源于每一个ROI有一个较大的接收野——这是什么意思呢,我们的输入经常跨度整个图像;
我们提出了更有侠侣的方式(应用了特征共享的优势)在训练阶段。在Fast-Rcnn,我们使用了随机梯度下降SGDmini batch进行分层采样,先采样N张图片,然后采样R/N的ROIS。还有一个是fast rcnn是一个阶段共同优化sofrmax classifier和bounding-box的regressor,而不是分三个阶段去分别训练softmax分类器、SVM和回归的regressor。接下来我们就介绍

  1. loss

  2. mini-batch sampling stratgy

  3. 反向传播 通过ROI pooling层

  4. SGD

  5. MULTI-TASK loss
    fast-rcnn network 有两个相同级别的输出。第一个输出输出的是概率密度 p=(p1…pk)K+1个类别,和以往一样p通过softmax得到k+!中输出第二个输出的是bbox的回归(tx,ty,tw,th)训练ROI labeled使用groundtruth class u 和groundtruth target。咱们一步到位,每一个ROI的classification和regression我们使用multi-task loss
    这个地方公式不太好输入,我们直接截取原文

在这里插入图片描述
在这里插入图片描述

  1. mini batch 小批量sampling
    每一个SGD的mini batch设定为N=2 images,我们使用的mini-batch的size是 R=128, R/N=64。采样64个ROI从object proposal。同时IOU与groundtruth有交集的部分至少是0.5的ROI及以上。这样的ROI组成了我们images的前景和背景。同时我们还将图片进行了反转,进行了数据增强。
  2. Back-propogation 通过ROI pooling layers
    反向传播通过导数运算通过ROI pooling layers。大概的情况是xi—activation——ROI pooling layers—yi
    在这里插入图片描述
  3. SGD hyper-parameters
    超参数的设定

Fast RCNN:

一旦Fast RCNN被修改了之后,detection可被视为一个前向传递。
在这里插入图片描述
each ROI output 概率P和 bounding box r。

截断的SVD为了faster detection
对于整个检测来说,用在完全连接层上的时间比用在卷积层上的时间多得多。
在这里插入图片描述
所以说,全连接层进行压缩可以有效的加速detection,截断SVD也减少了参数的数量;

Main result

两个主要的追求:
精度
在这里插入图片描述
速度
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值