Fast R-CNN解读:单阶段,多任务完成检测
Title: Fast R-CNN(2015)
Link: paper , code
Tips:
- R-CNN and SPPnet 的缺点以及 Fast R-CNN 的优点(1.1)
- Fast R-CNN 的框架及检测流程(2,3)
- RoI 的含义(2.1)
- 使用预训练网络初始化的思想,如何把已有网络改成需要的网络(2.2)
- 尺度不变的检测(2.4)
- 如何分析实验结果(4)
- 如何设计对比实验(5)
Summary:
R-CNN 问题:
- R-CNN 的训练是多阶段的(multi-stage):预训练 CNN→针对检测微调→训练分类器→训练边界框回归器
- 时间空间消耗大:为了训练 SVM 分类器和边界框回归器,每个区域的特征都要提取出来,并且存到磁盘上
- 检测慢:检测时需要提取每个区域的特征,但生成的区域有重叠,所以计算也有重叠。
Fast R-CNN 创新点:
- 与 R-CNN、SPPnet 相比有更高的检测精度(mAP)
- 训练是单阶段的(single-stage),损失是多任务的(multi-task),指把预训练的 CNN 针对检测任务微调后,分类和回归任务能一起完成
- 训练可以更新所有网络层
- 特征缓存不需要磁盘存储
相比 R-CNN 模块的改变:
- 网络输入:图片组以及每幅图片的一组 RoI
- CNN 模块:最后一个最大池化层由 RoI 池化层代替
- 分类模块:Fast R-CNN 使用 softmax classifier,R-CNN 和 SPPnet 使用 one-vs-rest linear SVMs。
- 分类和定位:CNN 网络的最后一个全连接层和 softmax 替换为两个同级层,R-CNN 是独立的两个模块,需要单独训练
Fast R-CNN 检测流程的改变:
- R-CNN 先用 SS 从图片生成 proposal(然后图片就不用了),把 proposal 输入CNN 提取特征,因为生成的区域有重叠,所以计算重复;Fast R-CNN 先用 SS 从图片生成 proposal,兵分两路,先把整幅图输入 CNN 一次性提取特征生成 feature map,对于每个 object proposal,用一个 RoI 池化层从上一层的 feature map 中提取定长的特征向量。
- R-CNN 对分类和回归模块分别训练,Fast R-CNN 网络末尾采用并行的两个全连接层,可同时输出分类结果和窗口回归结果,实现了 end-to-end 的多任务训练
Fast R-CNN 训练流程:
- 有监督的预训练,得到 CNN
- 特定领域的微调:首先改变模型,就是上面提到的输入改变,CNN 的 ROI 池化引入,还有分类回归模块的改变;
- 接着,输入图片和区域后,就能实现端到端的多任务训练,不需要单独训练分类和回归模块。
Fast R-CNN 检测流程:
- 输入一张多目标图像
- 采用 selective search 得到的预选区域
- 用卷积层和池化层处理 whole image,生成 feature map;
- 对于每个 object proposal,用一个region of interest (RoI) 池化层从上一层的 feature map 中提取定长的特征向量;
- 同时完成分类回归任务:每个 feature vector 送入一系列全连接层,这些全连接层最后会分支成 two sibling output layers: 一个可以在K个对象类以及一个笼统的“背景”类上生成 softmax 概率估计;另一层为 K 个对象类中的每一个输出四个实数值(编码精确的边界框位置)。
文章目录
- Abstract
- 1. Introduction
- 1.1. R-CNN and SPPnet
- 1.2. Contributions
- 2. Fast R-CNN architecture and training
- 2.1. The RoI pooling layer
- 2.2. Initializing from pre-trained networks
- 2.3. Fine-tuning for detection Training
- 2.4. Scale invariance
- 3. Fast R-CNN detection
- 3.1. Truncated SVD for faster detection
- 4. Main results
- 4.1. Experimental setup
- 4.2. VOC 2010 and 2012 results
- 4.3. VOC 2007 results
- 4.4. Training and testing time
- 4.5. Which layers to fine-tune?
- 5. Design evaluation
- 5.1. Does multi-task training help?
- 5.2. Scale invariance: to brute force or finesse?
- 5.3. Do we need more training data?
- 5.4. Do SVMs outperform softmax?
- 5.5. Are more proposals always better?
- 6. Conclusion
Abstract
这篇文章提出了一种基于快速区域的卷积用于物体检测的网络方法(Fast R-CNN)。Fast R-CNN以先前的工作为基础,使用深度卷积网络对目标提议进行有效分类。与以前的工作相比,Fast R-CNN采用了多项创新技术来提高训练和测试速度,同时还提高了检测精度。
1. Introduction
与图像分类相比,对象检测是一项更具挑战性的任务,需要更多复杂的方法来解决。
检测的复杂性来源于精确定位,产生的挑战有:必须处理多个候选对象位置(通常称为“proposals”)。其次,这些候选对象仅提供粗略的 localization,必须对其进行细化以实现精确的localization 。这些问题的解决方案通常会损害速度,准确性或简便性。
我们提出了一种 single-stage 训练算法,该算法可共同学习以对 object proposal 进行分类并优化其空间位置。
1.1. R-CNN and SPPnet
R-CNN(Region-based Convolutional Network method) 通过使用深度卷积网络给对象 proposal 分类得到了不错的检测准确率,但是它也有 drawbacks:
- 训练是多阶段的流程;
- 时间空间消耗大;
- 检测慢(网络为每个 proposal 传递,而不是共享计算)。
SPPnets(Spatial pyramid pooling networks) 通过共享计算加速 RNN,但是它也有 drawbacks:
- 训练是多阶段的流程;
- 特征需要写回磁盘,时间空间花费大;
- 无法更新空间金字塔池之前的卷积层,此限制(固定的卷积层)限制了网络的准确性。
1.2. Contributions
这篇文章提出了一个新算法—— Fast R-CNN,修正了 R-CNN 和 SPPnet 的缺点,还提高了速度和准确性。
Advantages:
- 与 R-CNN、SPPnet 相比有更高的检测精度(mAP)
- 训练是单阶段的(single-stage),损失是多任务的(multi-task)
- 训练可以更新所有网络层
- 特征缓存不需要磁盘存储
2. Fast R-CNN architecture and training
图1 是网络框架,整个网络流程如下:
- 输入 whole image和一些 object proposals (红框,selective search 得到的预选区域);
- 用卷积层和池化层处理 whole image,生成 feature map;
- 对于每个 object proposal,用一个region of interest (RoI) 池化层从上一层的 feature map 中提取定长的 feature vector;
- 每个 feature vector 送入一系列全连接层(fc layer);
- 这些全连接层最后会分支成 two sibling output layers: 一个可以在K个对象类以及一个笼统的“背景”类上生成softmax概率估计;另一层为 K 个对象类中的每一个输出四个实数值(编码精确的边界框位置)。
2.1. The RoI pooling layer
RoI池化层使用 max pooling 把 feature map 变成具有固定空间范围 H×W 的小特征图。
在本文中,RoI是进入转换特征图的矩形窗口。每个RoI由一个四元组(r,c,h,w)定义,该四元组指定其左上角(r,c)以及其高度和宽度(h,w)。
RoI 层只是 SPPnet 中使用的空间金字塔池化层的特殊情况,其中仅一个金字塔层。
2.2. Initializing from pre-trained networks
使用三个经过预训练的ImageNet 网络进行实验,每个网络具有五个最大池化层以及五个到十三个卷积层。
当预训练的网络初始化Fast R-CNN网络时,它将经历三个转换:
- 最后一个最大池化层由RoI池化层代替
- 网络的最后一个全连接层和softmax替换为前面描述的两个同级层
- 修改网络输入:图片组以及每幅图片的一组 RoI。
2.3. Fine-tuning for detection Training
在Fast R- CNN训练中,对随机梯度下降(SGD)小批次进行分层采样。
除分层采样外,Fast R-CNN使用简化的训练过程和一个微调阶段,可共同优化 softmax分类器和 bounding-box 回归器,而不是分三个阶段训练 softmax 分类器,SVM和回归器。
具体细节如下:
Multi-task loss
Fast R-CNN网络具有两个同级输出层。一个判断类别 ,一个输出位置(四元组)。
每个 RoI 都有 ground-truth 标签(class u 和 bounding-box regression target v), multi-task loss L 把分类和 bounding-box 的回归任务结合起来(参数 λ 设为 1,当 RoI 为背景时参数μ为0):
其中定位任务的损失如下:
Mini-batch sampling
图片采取 N=2 的随机采样。训练时图片以0.5的概率水平翻转,除此之外,没有用到数据增强策略。
RoI 采取 R = 128 的采样,每张图片选择 64个 RoI:
25% 的 RoI 从与边界框的 ground-truth 至少有 0.5 Iou 的 object proposals 选取(因为重叠部分多,所以包含前景,即 μ ≥ 1),其余的 RoI 从那些和 GT 重叠少(Iou<0.5)的 object proposals 选取(这些就是背景,μ = 0)
Back-propagation through RoI pooling layers
反向传播通过RoI池层传递导数。
backwards function:
2.4. Scale invariance
我们探索了两种实现尺度不变物体检测的方法:
(1)通过“蛮力”学习和(2)通过使用图像金字塔。
在蛮力方法中,在训练和测试期间,每个图像均以预定义的像素大小进行处理。网络必须直接从训练数据中学习尺度不变对象检测。
相比之下,多尺度方法通过图像金字塔为网络提供近似的尺度不变性。在测试时,图像金字塔用于近似缩放每个 object proposal 的尺寸。
3. Fast R-CNN detection
一旦把 R-CNN 调好,检测就相当于“拿到通行证”。
检测过程:
- 将图像(或图像金字塔,编码为图像列表)和 R 个object proposals 列表作为输入进行评分;
- 对于每个测试RoI r,网络都会输出一个类别后验概率分布 p 和相对于 r 的一组预测边界框偏移量;
- 使用估计的概率将检测置信度分配给每个对象类别 k 的RoI 。然后,使用R-CNN的算法和设置为每个类别独立执行非最大抑制。
3.1. Truncated SVD for faster detection
对于全图像分类,与卷积层相比,计算完全连接的层所花费的时间少。
相反,用于检测的RoI数量很大,并且前向通过时间的近一半花费在计算全连接的层上。
通过使用截断的SVD压缩,可以轻松地加速大型全连接层。
因式分解:使用SVD将由u×v权重矩阵W参数化的图层近似分解
当RoI数量很大时,这种简单的压缩方法可以提供良好的加速效果。
4. Main results
三个主要结果支持了文章的贡献:
- State-of-the-art mAP on VOC07, 2010, and 2012
- Fast training and testing compared to R-CNN, SPPnet
- Fine-tuning conv layers in VGG16 improves mAP
4.1. Experimental setup
使用了网上的三个预训练的 ImageNet 模型 (Link),根据网络规模分别命名为S,M,L。
4.2. VOC 2010 and 2012 results
实验结果如下,Fast R-CNN 简称为 FRCN。
Fast R-CNN 以 65.7% 的 mAP 在 VOC12 上取胜。
VOC10 上,与Fast R-CNN相比,SegDeepM实现了更高的mAP(67.2%对66.1%),SegDeepM接受了VOC12训练和分段注释的训练。
当使用扩大的07 ++ 12训练集时,Fast R-CNN的 mAP 增加到 68.8%,超过SegDeepM。
4.3. VOC 2007 results
在VOC07上,我们将Fast R-CNN与R-CNN和SPPnet进行了比较。
与SPPnet相比,Fast R-CNN的改进表明,即使Fast R-CNN使用单尺寸的训练和测试,对conv层进行微调也可以在mAP方面实现较大的改进(从63.1%到66.9%)
4.4. Training and testing time
快速的训练和测试时间是第二个主要结果。
对于VGG16(L),快速R-CNN处理图像的速度比不带SVD截断的R-CNN快146倍,使用SVD则快213倍。
截断的SVD可以将检测时间减少30%以上,而且mAP的下降很少(0.3个百分点),并且在模型压缩后无需执行其他微调。
4.5. Which layers to fine-tune?
通过实验验证 RoI 池化层的训练对于 very deep 网络非常重要,而不是 SPPnet 论文中说的 “微调全连接层就足够了”。
但不是每个卷积层都需要fine-tune。对于小网络 S 和 L,conv1 的学习对 mAP 影响不大,对于大型网络 VGG16,只需要更新第三层以上的卷积层(13层中的9层)。
5. Design evaluation
5.1. Does multi-task training help?
对于三个规模的网络,第一列只有 classification loss,第二列是在第一列的基础上加 multi-task loss。
比较第一二列可得,在所有三个网络中,多任务与仅针对分类的训练相比,可提高准确性。
比较第三四列可得,多任务训练比分段训练的 mAP 高。
5.2. Scale invariance: to brute force or finesse?
我们比较了实现尺度不变的物体检测的两种策略:蛮力学习(单尺度)和图像金字塔(多尺度)。无论哪种情况,我们都将图像的比例尺s定义为其最短边的长度。
从图中可以看出,单尺度处理提供了速度和精度之间的最佳折衷,特别是对于非常深的模型。
5.3. Do we need more training data?
为了验证训练数据是否有必要增加,我们用VOC12训练集来扩充VOC07训练集,从表1可以看出,扩大训练范围可使VOC07测试的mAP从66.9%提高到70.0%。
同理,在VOC10和VOC12上也做了类似的实验(表2 3),都发现 mAP 提高。
说明训练数据的增强是有必要的。
5.4. Do SVMs outperform softmax?
Fast R-CNN 使用 softmax classifier,R-CNN 和 SPPnet 使用 one-vs-rest linear SVMs。
为比较哪个分类器表现更好,做了如下实验:
表8显示了所有三个网络的softmax略胜于SVM,当然影响不大。
5.5. Are more proposals always better?
有两种类型的对象检测器:使用稀疏 object proposal set(例如选择性搜索)和使用密集object proposal set(例如DPM)。
我们发现,随着 proposal 数量的增加,mAP上升,然后略有下降(图3,蓝色实线)。该实验表明,添加更多的 proposal 对深度分类器的准确性无济于事,甚至有一点损害。
6. Conclusion
这篇文章提出了Fast R-CNN,它是一种 R-CNN 的快速版本。
除了报告最新的检测结果外,文章还提供了详细的实验,希望能提供新的见解。
Fast R-CNN解读:单阶段,多任务完成检测相关推荐
- 深度学习中的单阶段小目标检测方法综述
随着深度学习的不断发展,目标检测技术逐步从基于传统的手工检测方法向基于深度神经网络的检测方法转变.在众多基于深度学习的目标检测方法中,基于深度学习的单阶段目标检测方法因其网络结构较简单.运行速度较快以 ...
- NeurIPS 2022 | FCOS-LiDAR:全卷积单阶段3D目标检测(沈春华团队)
编辑 | CVer 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[3D目标检测]技术交流群 后台回复[3D检测综述]获取最新基于点云 ...
- SSHFD:IBM提出的单阶段人体跌倒检测网络
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 这篇文章是由IBM研究院发表的有关于老人跌倒识别的文章.整体网络比 ...
- 基于深度学习的目标检测综述(单阶段、多阶段、FPN变体、旋转目标检测等)
随着深度学习的发展,基于深度学习的目标检测方法因其优异的性能已经得到广泛的使用.目前经典的目标检测方法主要包括单阶段(YOLO.SSD.RetinaNet,还有基于关键点的检测方法等)和多阶段方法(F ...
- 目标检测综述——单阶段检测器
文章目录 一.SSD((Single Shot MultiBox Detector)) 1.Default box 2.训练过程 3.数据增强 4.其他变体 (1)DSSD (2)DSOD (3)FS ...
- 日本东北大学改进单阶段人脸检测—兼具速度与精度优势
点击我爱计算机视觉标星,更快获取CVML新技术 近日来自日本东北大学与Laboro.AI公司的研究人员公开一篇改进的单阶段人脸检测算法论文,其不仅保持了速度的优势而且在主流的人脸数据集上达到与双阶段人 ...
- 【单目3D目标检测】FCOS3D + PGD论文解析与代码复现
文章目录 前言 FCOS3D 概述 主要创新点 主要框架结构 回归目标 损失函数 推理过程 2D引导的多层3D预测 2D高斯分布的3D中心度 实验设置 源码复现 PGD 概述 主要创新点 深度估计 主 ...
- 单阶段目标检测重要论文总结
文章目录 一.Yolov1 1.论文简介 2.检测原理 3.结构设计 4.疑难问题 5.论文总结 二.Yolov2 1.论文简介 2.更好.更快.更强 1)为什么更好? 2)为什么更快? 3)为什么更 ...
- (4)Fast R-CNN:简化 SPP 层 + 多任务联合训练 它快起来了~
Fast R-CNN 2015 年 文章目录 Abstract Introduction R-CNN and SPP-Net Contributions Fast R-CNN architecture ...
最新文章
- 怎样在swift中创建CocoaPods
- 关于2021年及未来,人工智能的5大趋势预测
- 生活永远这样,在自己放松自己的时候,会让你摔个跟头,忍耐生老练,老练生盼望...
- UA MATH577 逻辑与可计算性1 递归函数
- trait功能 php,PHP之Trait功能与用法实例分析
- fstab自动挂载_玩客云刷机系统之armbian挂载U盘增加空间
- 《Java 核心技术卷1 第10版》学习笔记------ 接口(Interface)
- Linux 服务器程序规范、服务器日志、用户、进程间的关系
- html字体阴影怎么设置6,css怎么设置字体阴影
- 程序员必须知道的15件事(转)
- Python批量导入图片生成能治疗颈椎病的HTML5版课件
- 第八届开源操作系统年度技术会议(OS2ATC)在京召开, 百位科技菁英到场共鉴“开源协作”
- 点云处理软件开发进度
- poj 1719 Shooting Contest 二分匹配
- 协助数据库完成大数据实时查询
- c++EasyX极乐净土的实现及音乐头文件的使用
- 星际争霸2Beta测试版单机模式已经破解
- Android 使用图片缓存,避免OOM(实现照片墙)
- GridView分页 记录总数:15 总页数:2 当前页:1 首页 上一页 下一页 尾页 GO
- 无状态编程, lambda 表达式中传入的局部变量,为什么需要是不可变的(final)