目标检测要求对目标进行精确定位,这增加了复杂度,会产生两个主要的挑战:

    1.  大量候选的目标定位(proposals)需要被处理

    2.  候选的proposals只提供了大致的目标定位,需要通过优化获得更加精确的定位

论文中,作者提出一种“单级训练算法”(single-stage training algorithm ),proposals分类与重新定位同时进行。

R-CNN的缺点:

    1.  训练是多级的

    2.  训练阶段,时间空间上消耗太大

    3.  测试阶段,目标检测太慢

    原因:R-CNN对每个proposal进行前向卷积,而没有共享计算

SPP nets

    SPP nets通过共享计算对R-CNN进行加速。首先计算一整张输入image的conv feature map,然后通过共享的feature map提取feature vector,并以此对proposal进行分类。

    用max-pooling对feature map提取proposal的feature(一个固定大小的输出),多个输出对应多种尺寸,然后送入SPP net。

缺点:

    1.  训练也是多级的

    2.  训练阶段,特征被写入磁盘,消耗空间

    3.  fine-tuning阶段,不能在SPP之前更新conv layer

Fast R-CNN优点

    1.  更高的mAP

    2.  训练是单级的,使用一种multi-task loss

    3.  训练阶段可以更新所有的network layers

    4.  特征提取不需要磁盘空间

Fast R-CNN结构

1.  输入:

        一张完整图像

        一系列proposals(RoIs)

2.  通过若干个conv和max-pooling,生成一个固定大小的conv feature map

3.  每个feature map通过一个RoI pooling提取一个定长的feature vector

4.  每个feature vector输入到一系列fc layers,最后送入两个子输出层:一个用softmax进行概率估计,另一个为K classes输出四个数值(获得每类更加精确的bounding-box positions)

Initializing from pre-trained networks

三个转换

    1.  最后一层max-pooling替换成RoI-pooling(以便与第一层fully-connected匹配)

    2.  最后一层fully-connected和softmax替换成两个子层(K+1类的fully-connected和softmax以及和bounding-box regressors)

    3.  两个输入:一系列images及其RoIs

Fine-tuning for detection

为什么SPPnet不能更新权重?

    当训练样本来自不同image时,SPP layer的反向传播效率极低。(一个RoI可能有一个很大的receptive field,甚至对应整个image,而前向传播需要处理整个receptive field,因此训练阶段的输入极大)

Fast R-CNN训练

采用SGD minibatches进行分层抽样:

    1.  抽取N幅图像

    2.  从每幅图像抽取R/N个RoIs(同一张图像的RoIs共享前向反向传播的计算和内存)

实际操作显示,并不会因为RoIs来自同一幅图像而降低收敛速度

one fine-tuning stage:优化softmax分类器与bounding-box regressors同时进行

Fast R-CNN结构图示

Fast R-CNN论文笔记

基本结构:

    1.  图像归一化为224×224送入网络

    2.  前五个阶段是基础的conv+relu+pooling形式

    3.  在第五阶段结尾,输入P个候选区域(图像序号×1+几何位置×4)

roi_pooling(forward)

Fast R-CNN论文笔记

    roi_pooling将每个候选区域均匀分成M×N块,然后对每块进行max pooling,将特征图上大小不一的候选区域转变为大小统一的数据送入下一层。

feature输入到两个并行的fc layers中(multi-task):

Fast R-CNN论文笔记

    cls_score:输出K+1维数组,表示属于K类和背景的概率

    bbox_prdict:输出4*K维数组,表示分别属于K类时,应该平移缩放的参数

代价函数:

    loss_cls:评估分类代价,由u类对应的概率决定:

        Fast R-CNN论文笔记

    loss_bbox:评估bounding-box定位代价,比较预测为u类的参数tu和GT平移缩放参数v的差别:

        Fast R-CNN论文笔记

    g:Smooth L1误差

        Fast R-CNN论文笔记 

总代价为两者加权和(背景不考虑定位代价):

        Fast R-CNN论文笔记


相关文章: