RCNN(三):Fast R-CNN

摘要及引言

SPP-NET大幅度提高了RCNN的训练速度,但是仍然一些问题,本文从以下问题出发提出了Fast R-CNN,进一步提高了速度和精度。

  1. SPP-NET和RCNN的训练都是多阶段的过程:首先训练CNN网络用以提取特征,然后训练SVM用作检测器,然后训练bounding-box回归精细化目标具体位置。
  2. 训练耗时且耗费大量空间:对于SVM以及bounding-box回归的回归训练首先需要先将提取到的CNN特征写入磁盘。对于深层的网络,通常需要数百G的空间。
  3. 目标检测在测试阶段极为耗时,VGG16需要47s每张(GPU)。

本文的主要贡献如下:

  • 比R-CNN以及SPPnet 更高的检测质量(mAP较高)。
  • 通过使用多任务loss使得训练是个单阶段过程。
  • 训练可以更新所有的网络层(spp-net仅能更新全连接层)。
  • 特征存储不需要额外的空间。


    网络结构

    Fast R-CNN
    Fast R-CNN输入为一张图像以及诸多的region proposals(RoI)。首先通过CNN提取到整幅图像的feature map 然后对于每一个RoI根据映射提取到自己的feature vector。然后输入到全连接层,输出为两个分支,一个为softmax层输出,输出的是K+1个类别的概率(包含一个背景类)。另一个输出是对于每类生成一个求精后的bounding box。


  • ROI pooling 层
    ROI pooling 是SPP仅使用一个pyramid level 的一种特例,是将任意大小的feature map分割成H*W的栅格,然后对于每个栅格进行max pooling。这样无论feature map的尺寸怎么样,都能够生成固定大小的feature vector。

  • 初始化预训练网络
    对于一个给定的深层神经网络需要经过三个步骤更改成Fast R-CNN结构。首先是将最后一个pooling层更换为ROI pooling,其中的H*W需要按照网络的全连接层的输入要求进行更改(例如VGG16的H=W=7)。然后将网络的全连接层和softmax层替换为两层,一层为全连接层加上softmax层输出K个类的概率。另一层为类别相关的bounding box回归。

  • 多任务loss
    Fast RCNN不仅需要对于region proposal的类别进行预测,还需要根据region生成的bounding box与真实值之间的差距学习到他们直接的映射以便于进行bounding box的精细化回归。因此Fast RCNN的目标函数是个多任务函数,需要综合考虑分类的准确度以及定位的准确度,文中提出的目标函数为:
    LOSS
    其中,这里写图片描述 为softmax 产生的K+1类别的概率。u为真实类别,L(cls)使用的是log loss为分类的目标函数。 λ为调节分类与定位之间的权重,本位设置为1。[u>=1]为indicator function。u<1是为0(背景),反之为1(前景)。因为背景没有bounding box。L(loc)为定位的目标函数。
    这里写图片描述

  • Mini-batch 采样
    SPPnet之所以不能够调节SPP层之前的卷积层的权重,是因为在一个batch中,region proposal是随机来自于各个图片的,每一个region proposal的感受野都很大通常是整个图片,因此如果对之前的所有层都进行bp会很没有效率。本文提出分层采样的思想,每个SGD mini-batch处理N=2张随机图片,然后mini-batch size R=128。从每张图片获取64个ROIS。和之前SPPnet做法一致,这128个ROIS中,25%为正样本(和标记bounding box的IoU重叠大于0.5),75%为负样本(重叠为[0.1,0.5))。之所以选择负样本需要大于0.1的阈值是因为使用启发式的hard example mining。由于我们在处理的时候,来自于同一幅图片的所有region proposal共享计算和内存。因此速度很快而且不需要额外的内存空间。

  • ROI池化层的反向传播
    每一个region proposal都是从原图的feature map中进行提取特征向量,因此feature map中每一个位置都可能被很多的region使用,也就是一个输入多个输出,文中采用的是综合的方法求总的bp。
    这里写图片描述

  • SGD 超参数
    全连接层以及回归层使用的都是0-mean 高斯分布,偏差为0.01和0.001。相应的,偏置层初始化为0,所有层的权重学习率为1,偏置学习率为2.全局学习率为0.001。momentum为0.9,权重衰减为0.0005。

  • 尺度不变性
    文中使用的方法是图像金字塔:训练时使用多尺度,然后在测试时,对于每一个region proposal 选择一个尺度使得region大小接近于224*224。

  • SVD加速
    由于对于每一个region proposal都需要通过全连接层的计算,耗时较多,文中提出使用SVD(奇异值分解)来加速全连接层的计算,能提高训练速度30%左右,而且精度下降很少。

结论和总结

Fast R-CNN在SPPnet基础上再刷新了目标检测的state-of-art。而且速度也有多倍的提升,同时将多阶段训练统一为一个网络的但阶段训练,可谓是一大突破。但是仍然存在一些问题,region proposal耗时较为严重,而且与现有的网络严重割裂。
这部分将在Faster R-CNN中进行改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值