【论文速度】Fast RCNN

https://blog.csdn.net/wopawn/article/details/52463853

https://blog.csdn.net/u011718701/article/details/53748724

 

翻译:https://alvinzhu.xyz/2017/10/10/fast-r-cnn/

 

创新点(相较于R-CNN)

 1)共享计算结果:ROIpooling(前向、后向)——附带好处:对输入图片的大小不限制

ROI层:

a)将原image中的区域映射到convfeature map的对应区域

由image到conv feature map是卷积、下采样的操作,其中卷积主要是步长控制了输出

b)将上述区域对应的conv featuremap中的特征用max-pooling转换成一个固定大小H×W的feature map。

 

为什么?

前向:原先1个图片有2000个候选区域,每个候选区域需要做1次的前向计算(在Alexnet中),得到每个候选区域的特征图——》对输入图片做一次前向计算输出整个图形的特征图,根据每个图形的特征图分别提取2000个候选区的特征图(sppnet解决了)

后向:通过改变了采样策略(提高速度、精度)来解决后向传播问题(sppnet没解决需要重新计算不同图片的proposal卷积值)

2)multi-task:一个模型搞定上述2、3、4(end- end)(提高精度)

SVM:在CNN输出层用softmax函数

LR:在CNN输出层加入了用来输出边界框坐标的线性回归层。


【训练阶段】

A:训练集中所有的图像

(1)selective search提取出图像的2000个边框坐标
B:区域建议(建议框)region proposal(2000个边框坐标)+图片

(2)使用数据【对训练集标记的2000个区域和实际区域做比较,确定为前景(IOU>0.5的建议框)、背景(0.1<IOU<0.5建议框);使用mini-batch=128,25%前景样本75%背景样本(数据增广:50%概率水平翻转)】,用模型finetune,获取整幅图像的特征conv5,得到特征图

(3)对每一个区域建议,使用ROI层,从特征图中提取出区域建议所映射的候选区域的固定长度特征

C:区域建议所映射的候选区域的固定长度特征

(4)fc层

(4.1)使用softmax确认分类结果(k+1)

(4.2)使用lr层修正四个实值【只能产生一个分类结果+一个边框?】

基础模型

3种(Alexnet、VGG16、VGG19)

模型改进

1最后一层max-pooling层变成Rol池化层,H*W设置为第一个FC层要求的大小

2输入变成两种输入(图片+ROI)

3输出变成两种输出(FC+分类softmax/fc+坐标细化)

训练方式

1)使用SGD mini-batch

2)hierarchical sampling(采样N=2个图片,从每个图片采样64(R=128/N=2)个ROI区域,在前向、后向传播中ROI共享计算和内存),ROI pooling layer前后batch size从2到128

3)具体样本分布:

25%(正样本,前景,u>=1)的ROIs从候选框中(与真实图片的某类的IOU>=0.5)选取

75%(负样本,背景,u=0)的ROIs从候选框(0.5>与真实图片的20类的最大IOU>=0.1)选取

图像以0.5的概率水平翻转

输出

(1)discrete probability distribution (per RoI), p = (p0, . . . , pK)

p is computed by a softmax over the K+1 outputs of a fully connected layer.

(2)bounding-box regression offsets,  for each of the K object classes, indexed by k.

 We use the parameterization for tk which specifies a scale-invariant translation and log-space height/width shift relative to an object proposal.

【训练时】

Each training RoI is labeled with a ground-truth class u and a ground-truth bounding-box regression target v.

Loss

Loss:


 [u ≥ 1] evaluates to 1 when u ≥ 1 and 0 otherwise. (catch-all background class is labeled u = 0)

 

【使用L1的原因】

a robust L1 loss that is less sensitive to outliers than the L2 loss used in R-CNN and SPPnet. When the regression targets are unbounded, training with L2 loss can require careful tuning of learning rates in order to prevent exploding gradients. Eq. 3 eliminates this sensitivity.


【λ的选择】

The hyper-parameter λ in Eq. 1 controls the balance between the two task losses. We normalize the ground-truth regression targets vi to have zero mean and unit variance. All experiments use λ = 1.

Back-propagation through

RoI pooling layers

【ROI层】

ROI定义(region of interested):RoI是卷积特征图中的一个矩形窗口,由(r, c, h,w) 表示(左上角坐标 (r, c)高度,宽度(h,w))

【怎么做?】

将ROI区域(h*w)的特征,变成固定大小H*W(例如7*7)的特征图(使用最大池化,每个pooling的大小子窗口大小约为h/H×w/W)RoI Pooling层将每个候选区域均匀分成M×N块,对每块进行max pooling(将feature map上大小不一的候选区域转变为了大小统一的特征向量),然后送入下一层。

【ROI与pooling的区别?

尽管ROI Pooling可以看做是针对ROI区域的feature mapPooling操作,但因为不是固定尺寸的输入,因此每次的pooling网格大小得手动计算。

 

【后向传播】


SGD

Softmax fc

权重

0.01

偏置

0

LR fc

权重

0.001

偏置

0

 

权重:0.001

偏置:0.002

全局:0.001

SGD30k->0.0001*10k

 

解决尺度不变性:

多尺度brute force数据集统一大小(each imageis processed at a pre-definedpixel size during both trainingand testing. Thenetwork must directly learn scale-invariantobject detection from the trainingdata)

 

单尺度image pyramids数据集缩放(providesapproximatescale-invariance tothe network through an imagepyramid:Attest-time, the image pyramid is used to approximatelyscale-normalize each objectproposal.

 

 当ROI较多时,减少svd用来减少全连接层的计算


 

效果

 - 更多候选窗不能提升性能

- 多尺度比单尺度效果略好,时间更长

 

倍增训练数据,能够有2%-3%的准确度提升 
-
网络直接输出各类概率(softmax),比SVM分类器性能略好 

-SVD好

-Finetune(conv3_1及以上(13个卷积层中的9个)的层)

-多任务好


【测试阶段】约等于训练阶段的前向过程

A:输入一张测试集的图像

1) selective search提取出图像的2000个边框坐标

B:区域建议(建议框)regionproposal(2000个边框坐标)+图片(image pyramids

(2)使用训练好的模型,获取整幅图像的特征,得到特征图(fc?)

(3)对每一个区域建议,使用ROI层,从特征图中提取出区域建议所映射的候选区域的固定长度特征

C:区域建议所映射的候选区域的固定长度特征

(4)fc层

(4.1)使用softmax确认分类结果(k+1)

(4.2)使用lr层修正四个实值

D:分类结果+对应的四个实值(边框信息)

(5)检测置信度

(6)使用非极大值抑制,保留最有可能的候选区域(一个区域,可能会有多个框框),可得到该张图片的boundingbox 预测值以及该box对应的类和score







Fast R-CNN是一种基于深度学习的目标检测算法,相比之前的R-CNN和SPP-Net,Fast R-CNN在检测精度和速度上都有明显的提升。以下是Fast R-CNN的实验讲解: 1. 实验数据集 在Fast R-CNN的论文中使用了PASCAL VOC 2007、2010和ILSVRC 2013数据集进行实验。这些数据集是目标检测领域的标准数据集,包含多个类别的图像和对应的标注信息,可以用于训练和测试目标检测算法。 2. 实验结果 在PASCAL VOC 2007测试集上,Fast R-CNN使用VGG-16作为基础网络,检测精度(mAP)达到了66.9%。相比之前的R-CNN和SPP-Net,Fast R-CNN的检测精度提升了近10个百分点。 在ILSVRC 2013检测数据集上,Fast R-CNN使用ZF网络和VGG-16网络进行实验,检测精度分别为31.4%和34.9%,速度也明显快于之前的算法。 3. 实验分析 Fast R-CNN的检测精度和速度都有明显的提升,这主要得益于以下几点: - RoI池化层:Fast R-CNN引入了RoI池化层,可以将不同大小的RoI映射为固定大小的特征图,避免了之前算法中的重复计算和内存浪费。 - 多任务损失函数:Fast R-CNN将分类和回归任务合并为一个多任务损失函数,可以同时优化分类和位置回归两个任务,提高了检测精度。 - 共享卷积特征:Fast R-CNN使用共享的卷积特征,可以避免对每个RoI都进行卷积操作,节省了计算时间和内存。 总的来说,Fast R-CNN算法在目标检测领域取得了很好的效果,为后续的算法研究和应用奠定了基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值