论文源址:https://arxiv.org/abs/1504.08083

参考博客:https://blog.csdn.net/shenxiaolu1984/article/details/51036677

摘要

该文提出了一个快速的基于区域框的卷积网络用于目标检测任务。Fast RCNN使用深度卷积网络对proposals进行分类。相比先前的工作,Fast R-CNN在提高准确率的基础上提高了训练和测试的速度。在VGG19的网络中,Fast R-CNN训练时间比R-CNN快9倍,而测试要快213倍。相比SPP net ,Fast R-CNN训练VGG16要快3倍,测试时快10倍。

介绍

深度卷积网络增强了图像的分类,和物体检测的准确率。相比图像分类,目标检测是一项更具挑战性的工作,需要更加复杂的方法进行解决。由于复杂度,目前的方法采用多阶段的方式进行训练,效率十分低。

复杂性主要来自于需要对物体位置的精确定位,这就造成了两个挑战,首先,大量的proposals需要被处理,其次,proposals只能提供粗略的物体位置,需要对其进行增强得到精细的位置,上述问题的解决需要计算速度,准确率和复杂度。

该文简化了基于卷积网络的目标检测器的训练处理过程。该文提出了单阶段的训练算法,将proposals的分类和位置的增强进行联合训练。

R-CNN与SPPnet:R-CNN基于深度卷积网络对proposals进行分类出色的实现了目标检测,但仍存在一些问题。(1)训练是多阶段的:R-CNN利用proposlas基于log损失对卷积网络进行微调。然后,用卷积网络提取的特征训练SVM。最后第三阶段,是框回归操作。(2)训练占用大量的时间和空间:SVM和框回归训练,每一个proposal提取的特征存入内存中。大量的proposals需要占用大量的内存资源。(3)目标检测的过程十分慢。基于VGG16每张图要花47S的时间。

R-CNN由于卷积网络需要处理每个proposal,没有共享计算,而SPPnet提出通过共享计算来提速R-CNN。SPPnet将整个图片送入卷积网络得到feature map,然后从feature map提取特征向量,对每一个proposal进行分类。通过最大池化操作来提取特征信息,并将proposal内部的部分feature map进行固定尺寸的输出。不同池化后的尺寸参考SPPnet进行拼接。SPPnet也存在缺点:与R-CNN相同都是一个多阶段的处理过程。也是特征提取,基于log损失对网络进行微调,训练SVM,最后对框进行回归操作。特征也是写入内存。不像R-CNN,SPPnet在金字塔池化层之前的卷积网络无法进行微调。进而限制了深度网络准确率的提升。

本文贡献:Fast R-CNN具有以下优点:(1)比R-CNN,SPPnet有更高的检测特性(mAP)(2)通过多任务损失实现单阶段的训练。(3)训练可以更新整个网络层。

Fast R-CNN结构与训练

结构如下,Fast R-CNN将一张图片与多个proposals送入卷积网络中,网络首先通过几个卷积和最大池化层处理整张图片来提取卷积特征。然后,针对每个目标物体,提出了ROI pooling用于从特征中提取固定长度的特征向量。每个特征向量送入一系列的全连接层。最终,产生两个分支:一个分支用于产生K+1个类别的softmax概率,另一个针对K个类别的每一个输出四个值用于编码框的位置信息。

ROI pooling

ROI pooling通过使用最大池化层将每个ROI的有效区域变为具有固定尺寸的小型feature map(HXW,比如7X7),每个ROI通过一个元组(r,c,h,w)进行定义,分别代表框中左上角的坐标(r,c),与框的高和宽(h,w)。

ROI max pooling通过将hxw的ROI窗口分为HxW的网格,每个子窗口的大小为h/H x w/W。对每个子窗口取最大处理,得到相应的输出。独立的将池化操作应用至每个特征通道上。ROI pooling 可以看作是金字塔池化层的特殊情形。只用了金字塔的一层,并利用池化处理后得到的值。

预训练网络的初始化

本文基于三种网络进行预训练,每个包含五层池化层和13层卷积层,将其改造为Fast R-CNN的预训练网络做了三处改动。(1)将最后一个最大池化层替换为RoI pooling层通过设置H,W的值与全连接曾进行匹配。(对于VGG16,设置H=W=7)。(2)网络最后的全连接层和soft max层被替换为两个分支。(3)网络包含两个输入,一个为图片的输入,另一个为图片中ROIs的输入。

微调检测网络

Fast R-CNN基于反向传播算法进行权重的训练。首先,对SPPnet金字塔池化层之前的网络权重无法更新进行了说明。本质原因是SPP层中训练来自不同图片的Rois利用反向传播算法,其效率是低效的。这样,会使每个RoI可能会有一个较大的感受野,一般会跨越整个输入图片。由于,输入需要处理整个感受野的大小,因此,训练的输入是巨大的。

该文利用特征共享提出了一种高效的训练的方法。在Fast R-CNN的训练阶段,使用SGD ,minibBatch进行分层次采样。首先,采样N个图片,然后,从每张图片中采样R/N个RoIs。来自相同图片的ROI在前向和反向传播的过程中共享计算与内存。这种方法并不会造成训练缓慢的收敛。本文采用N=2,R=128使用SGD优化方法迭代的效果优于R-CNN。

Fast R-CNN同时实现单阶段的训练,将Softmax分类器与框回归进行结合训练。

多任务损失

Fast R-CNN网络包含两个分支,第一个分支为每个Roi对应K+1个类别的概率离散值。另一个分支输出输出框回归的偏差。针对每个类别,都会产生一组,k代表类别中对应的某个类(4xk个元组)。t_k确定尺寸不变性和相关目标proposal log空间的变换。每个训练的ROI都存在一个类别为u的ground truth和目标为v的回归框。对每一个ROI,定义一个损失函数,用于联合训练分类和框回归。

对于框回归,定义损失函数如下:

L1对异常值的敏感度要小于R-CNN与SPPnet中的L2损失。对L2进行训练时,要注意学习率,防止梯度消失。

Mini-batch sampling

本文选择batch 为2,每张图采样64个ROIs。从ROIs中筛选出四分之一的框作为object proposals,这些与ground truth的IoU值大于0.5.。筛选出来的框用前景类别进行标记。从剩下的框中选出与ground Truth IOU([0.1,0.5))值最大的候选框作为背景。标记类别为0。IOU值在0.1以下的执行类似于hard example mining 的启发式算法。

RoI pooling 层的反向传播算法

该文嘉定mini-batch 为1,对于多个batch,前向过程单独的处理图片。x_i作为第i个输入RoI pooling的激活值,y_rj代表第r个ROI对应的第j个输出。

对于每一个RoI r及pooling 输出单元y_rj,通过最大池化操作中选择出的i。对y_r,j进行求偏导操作。

SGD隐层参量

全连接层使用0均值的高分布初始化softmax分类器和框回归,偏差分别为0.01 ,0.001,偏差初始化为0,每一层的权重学习率为1,偏差为2,整体学习率为0.001。

尺寸不变性

本文研究两个针对目标检测中的尺寸不变性的方式。(1)暴力方式解决,在训练和测试时,事先将图片调整为网络输入的尺寸大小,网络直接从训练数中学习尺寸不变性(2)使用图像金字塔。通过金字塔为网络提供一种相对较弱的尺寸不变性。测试时,图像金字塔用于规范化目标proposals。

Fast R-CNN检测

输入为一张图片和大量的目标proposals。测试时,proposals的数量大约为2000,针对每个测试的RoI r,前向过程输出一个类别后验概率分布p和一些列有关RoIr的预测框。(K个类别中的每个类别都有一个增强的框)。最后单独的对每个类别进行NMS处理。

基于阶段奇异值分解加速检测

用SVD处理权重矩阵利于简化网络的参数。

实验

Reference

[1] J. Carreira, R. Caseiro, J. Batista, and C. Sminchisescu. Semantic segmentation with second-order pooling. In ECCV, 2012. 5

[2] R. Caruana. Multitask learning. Machine learning, 28(1), 1997.

[3] K. Chatfield, K. Simonyan, A. Vedaldi, and A. Zisserman. Return of the devil in the details: Delving deep into convolutional nets. In BMVC, 2014. 5

论文阅读笔记二十六:Fast R-CNN (ICCV2015)的更多相关文章

  1. 论文阅读笔记三十六:Mask R-CNN(CVPR2017)

    论文源址:https://arxiv.org/pdf/1703.06870.pdf 开源代码:https://github.com/matterport/Mask_RCNN 摘要 Mask R-CNN ...

  2. 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)

    论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...

  3. 论文阅读笔记二十四:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(R-CNN CVPR2014)

    论文源址:http://www.cs.berkeley.edu/~rbg/#girshick2014rcnn 摘要 在PASCAL VOC数据集上,最好的方法的思路是将低级信息与较高层次的上下文信息进 ...

  4. 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1903.00621 摘要 本文提出了基于无anchor机制的特征选择模块,是一个简单高效的单阶段组件,其可以结合特征金字塔嵌入到单阶段检测器中. ...

  5. 论文阅读笔记二十九:SSD: Single Shot MultiBox Detector(ECCV2016)

    论文源址:https://arxiv.org/abs/1512.02325 tensorflow代码:https://github.com/balancap/SSD-Tensorflow 摘要 SSD ...

  6. 论文阅读笔记二十八:You Only Look Once: Unified,Real-Time Object Detection(YOLO v1 CVPR2015)

    论文源址:https://arxiv.org/abs/1506.02640 tensorflow代码:https://github.com/nilboy/tensorflow-yolo 摘要 该文提出 ...

  7. 论文阅读笔记二十二:End-to-End Instance Segmentation with Recurrent Attention(CVPR2017)

    论文源址:https://arxiv.org/abs/1605.09410 tensorflow 代码:https://github.com/renmengye/rec-attend-public 摘 ...

  8. 论文阅读笔记二十:LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation(CVPR2017)

    源文网址:https://arxiv.org/abs/1707.03718 tensorflow代码:https://github.com/luofan18/linknet-tensorflow 基于 ...

  9. 论文阅读笔记五十六:(ExtremeNet)Bottom-up Object Detection by Grouping Extreme and Center Points(CVPR2019)

    论文原址:https://arxiv.org/abs/1901.08043 github: https://github.com/xingyizhou/ExtremeNet 摘要 本文利用一个关键点检 ...

随机推荐

  1. 使用Numpy将数据集中的data和target同时shuffle

    假设现在有图像数据imgs和对应标签targets.数据维度分别如下 imgs.shape = (num, channel, width, height) targets.shape = (num, ...

  2. python,练习乌龟吃鱼

    ''' 1.首先要有一个画布 2.随机乌龟和鱼的位置 3.移动 ''' import random as r list_x = [0,10] list_y = [0,10] class Turtle: ...

  3. ps遇到的技术问题列表

    1.ps矩形选框显示像素 CTRL+K 进入首选项设置就可以了. 2.ps显示辅助线 页面工具栏上的视图按钮,我们在列表上找到标尺,我们也是可以快捷键选择CtrI+R 3.如何将插入photoshop ...

  4. (ScrollViewer或者有滚动条的控件)嵌套一个(ScrollViewer或者有滚动条的控件)禁用里面的滚动条

    转自:http://blog.csdn.net/haylhf/article/details/8351203 后有改动 在C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里 ...

  5. UVA1660 电视网络 Cable TV Network

    题目地址:UVA1660 电视网络 Cable TV Network 枚举两个不直接连通的点 \(S\) 和 \(T\) ,求在剩余的 \(n-2\) 个节点中最少去掉多少个可以使 \(S\) 和 \ ...

  6. 【运维】浪潮服务器一块硬盘显示红色Offline(或者Failed)解决办法

    [写在前面]           最近服务器不知道为什么总是出现故障,以前戴尔服务器硬盘出现故障,也就是说硬盘旁边的灯显示为红色的时候,一般情况下都是表示硬盘坏掉了,直接买一块新的硬盘,将坏掉的硬盘拿 ...

  7. 华为交换机有关BGP的相关配置

    作者:邓聪聪 上图是本人在某公司任职期间的一次割接任务,在原有的路由器上新配置的另一台高性能的路由器,两台设备为并行 割接要求: 1:原有的网络结构无变化,并行新设备 2:原有设备下的所有用户无变化 ...

  8. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  9. VS2017打包C#桌面应用

    原文地址:https://blog.csdn.net/houheshuai/article/details/78518097 在要打包项目的解决方案 右键→添加→ 新建项目 后出现如下选择 如果没有V ...

  10. $Django 模板层(模板导入,继承)、 单表*详(增删改查,基于双下划线的查询)、static之静态文件配置

    0在python脚本中使用django环境 import osif __name__ == '__main__':    os.environ.setdefault("DJANGO_SETT ...