object detection[content]
近些年,随着DL的不断兴起,计算机视觉中的对象检测领域也随着CNN的广泛使用而大放异彩,其中Girshick等人的《R-CNN》是第一篇基于CNN进行对象检测的文献。本文欲通过自己的理解来记录这几大模型的发展。(自己挖坑,自己待填)
0. overfeat
0.1. MultiBox
1. R-CNN
R-CNN是第一篇将CNN用在目标检测领域中的,是开山之作,不过其中的原理结构也较为简单,如下图:

图1.1 R-CNN结构
步骤
- 通过selective search方法在一张图片上获取很多的候选区域框(在真实目标上框出了大致粗糙的结果框,可是有三个问题:1 - 多;2-一些框置信度不够;3 - 框的边界不够精细);
- 用CNN对每个框提取特征;
- 用SVM做对象分类;
- 用回归器修正候选框位置。
特点:作者基于之前dl在图像分类上的准确度,想通过cnn提取图片的特征来实现特征提取这步操作
2. SPPnet

图2.1 传统CNN和SPP
如上图所示,因为常用的CNN网络都需要事先crop和warp,这样造成的问题就是要么图像内目标没包含完整、要么就是图像必须一定的拉伸导致几何失真。
所以作者在最后一层卷积层和全连接层之间加了一个SPP池化。因为传统的CNN是需要全连接层的,对于前面的卷积层来说,图片输入多大,对应的输出也会有对应变化,可是仍然能够很好的处理。而全连接层却需要固定维度的输入;所以传统的CNN可以将前面的卷积层看成是特征提取器,然后将提取到的特征通过传统的神经网络(也就是全连接层)做分类预测。
具体的SPP操作如下图:

图2.2 SPP操作
如上图所示,在最后一层卷积层和第一层全连接层之间加一层空间金字塔池化层。上图中256表示之前特征图的通道数(也就是之前的特征图是一个M*N*D的张量,而每个特征图size为M*N,一共D个通道)。这里采取了3种不同的池化方式,第一个是固定每个特征图输出一个16维的向量;第二个固定输出一个4维的向量;第三个是个全局池化,即每个特征图固定输出一个值。
步骤如下
- 照常输入图片;
- 在最后一层卷积层的输出部分获取当前特征图的size;
- 通过对全连接层的输入的维度固定,反推当前的SPP层每个特征图上需要的池化窗口大小和滑动步长大小;
- 对当前特征图进行SPP池化
3. fast R-CNN
特点: 引入了ROI池化:所谓ROI就是基于当前图片中感兴趣区域,是CV中的常见术语,而池化是DL常见术语。ROI池化就是基于当前特征图的感兴趣区域(选定的部分区域)进行池化操作。

图3.1 fast-rcnn网络结构图
- 因为RCNN是分阶段处理的,所以训练还是测试都是比较繁琐的;
所以,在fast RCNN中,除了最开始的对象候选框还是采用了SS的方法,后续的都是基于cnn的方式,从而能够实现end-to-end。- rcnn相对来说,慢是因为每个候选框上都需要过一次cnn;
所以,fast rcnn就想,能不能在一个图片上过一次,然后在后面的feature map上直接提取每个候选框对应的区域(即一个ROI区域对应一个由SS方法提到的候选框);- 可是得到的每个ROI都是不固定的size,如何能统一成一致的大小,从而完成后续的层训练;
所以,提出了ROI-pooling的方法,从SPP-net得到的灵感,直接将每个得到的ROI区域划分成固定size的网格,每个格子中进行max-pooling,从而输出统一的数据向量- 那么这时候怎么反向BP这些不同size的ROI呢;
所以,我们以ROI-pooling层作为分界线,后面是正常的基于整个图片提取特征的过程;到了ROI-pooling层,向前分隔成2个并列的全连接层;a)用来做当前ROI的分类,是一个softmax层结果;b)用来对当前ROI进行坐标精确微调,是一个基于全连接层的作者自定义的目标函数;
而从后往前当残差传到ROI层的时候,将当前残差对应回完整的那个feature map,其中如果某个神经元参与了不同的ROI区域,那么该神经元的残差是接收其涉及的ROI残差的和,如下图所示:

图3.2 ROI池化层前向传播,该图来自这里

图3.3 ROI池化层后向传播,该图来自这里
在图3.3中,先将不同的ROI映射回原来完整的feature map,然后重叠区域的残差是2个ROI传到这里的残差之和,其中绿点是因为采用的max-pooling,然后恰好这两个ROI池化时候网格的块中结果都是这个神经元。
几个有干货,而不是简单的翻译的博客:博客1;博客2
4. faster R-CNN
从上面几个网络的发展来看,有种顺风顺水的感觉,就是当前暴露了哪个问题,那么就解决那个问题,接下来暴露下一个问题,那么就接着解决暴露的问题。通过fast-rcnn之后,发现下一个要解决的问题就是SS方法提取的太耗时了,所以faster RCNN就着重解决区域提取方法,即让cnn网络自己提出所谓的图片ROI区域。这里叫做区域候选网络(region proposal network,RPN)。
而且faster rcnn,个人人为是目标检测的一个高潮,因为后续的ssd,yolo,rfcn都是基于这个网络进行对比的,而faster rcnn的准确度是最高的,所以后续的几个网络都是在其他方面有所优势,比如照顾小目标,比如实时性等等。
看这里,faster rcnn
5. YOLO
这里我们来说YOLO架构:
yolo相较于之前几个模型就比较暴力,直接将最后的feature map硬编码成7*7的网格,每个神经元就是一个如faster rcnn中RPN的划框,先验的将faster rcnn的RPN的工作硬编码到网络中。假设每个神经元就是原图中对象的中心,通过直接对目标函数进行改进,很好的将原来RPN的工作和fast rcnn的工作融合到目标函数中去了,这样做的好处是快,在预测的时候也不需要经过RPN去先得到所谓的对象候选框,直接一次过整个网络就行了;当然,也存在最后目标预测准确度下降的问题,因为从模型的设计上就可以看出,如果每个神经元只预测一个对象,那么就存在丢失目标的可能,而且作者通过实验也发现,对小目标的识别不如faster rcnn。
6. SSD
7. RFCN
8. FPN
9. PVANET
参考文献:
- [overfeat] Sermanet P, Eigen D, Zhang X, et al. Overfeat: Integrated recognition, localization and detection using convolutional networks[J]. arXiv preprint arXiv:1312.6229, 2013.
- [r-cnn] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 580–587,2014
- [spp] He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[C]//European Conference on Computer Vision. Springer, Cham, 2014: 346-361.
- [fast r-cnn] Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
- [faster r-cnn] Ren S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015: 91-99.
- [yolo] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. You only look once: Unified, real-time object detection. arXiv preprint arXiv:1506.02640, 2015
- [yolo 9000] J. Redmon and A. Farhadi. Yolo9000: Better, faster, stronger. arXiv preprint arXiv:1612.08242, 2016
- [ssd] Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
- [fpn] Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[J]. arXiv preprint arXiv:1612.03144, 2016.
- [rfcn] Dai J, Li Y, He K, et al. R-fcn: Object detection via region-based fully convolutional networks[C]//Advances in neural information processing systems. 2016: 379-387.
- [模型比较] Huang J, Rathod V, Sun C, et al. Speed/accuracy trade-offs for modern convolutional object detectors[J]. arXiv preprint arXiv:1611.10012, 2016.
- [pvanet] Kim K H, Hong S, Roh B, et al. PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection[J]. arXiv preprint arXiv:1608.08021, 2016.
- [multibox] Erhan D, Szegedy C, Toshev A, et al. Scalable object detection using deep neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2014: 2147-2154.
- [SqueezeDet] Wu B, Iandola F, Jin P H, et al. SqueezeDet: Unified, small, low power fully convolutional neural networks for real-time object detection for autonomous driving[J]. arXiv preprint arXiv:1612.01051, 2016.
object detection[content]的更多相关文章
- 关于目标检测 Object detection
NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置. NO2.目标检测的发展 R-CNN是最早基于C ...
- 关于目标检测(Object Detection)的文献整理
本文对CV中目标检测子方向的研究,整理了如下的相关笔记(持续更新中): 1. Cascade R-CNN: Delving into High Quality Object Detection 年份: ...
- tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)
今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...
- 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)
Chenyi Chen--[ACCV2016]R-CNN for Small Object Detection 目录 作者和相关链接 方法概括 创新点和贡献 方法细节 实验结果 总结与收获点 参考文献 ...
- deep learning on object detection
回归工作一周,忙的头晕,看了两三篇文章,主要在写各种文档和走各种办事流程了-- 这次来写写object detection最近看的三篇文章吧.都不是最近的文章,但是是今年的文章,我也想借此让自己赶快熟 ...
- 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation
DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation Xia ...
- 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)
Rich feature hierarchies for accurate object detection and semantic segmentation 作者: Ross Girshick J ...
- object detection技术演进:RCNN、Fast RCNN、Faster RCNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- TensorFlow Object Detection API(Windows下测试)
"Speed/accuracy trade-offs for modern convolutional object detectors." Huang J, Rathod V, ...
随机推荐
- Salesforce 的 package.xml 文件
package.xml文件 在部署元数据(Metadata)的时候,package.xml是很关键的一个文件.此文件中定义了一个XML格式的列表,其中包含了各个元数据组件的定义. Metadata A ...
- 实战 | Android中文图混排时文图的居中对齐 FontMetrics以及自定义ImageSpan实现
这个标题有点长,乍一看这么个标题你可能没明白啥意思,且听我慢慢道来. 公司的项目中新增了一个“心动” 的功能,用户初次使用时需要给一个引导页,就是下面图中的这个样子(这就是做完之后的效果了). 在上图 ...
- redis中各种数据类型的常用操作方法汇总
在spring中使用jedisTemplate操作,详见https://www.cnblogs.com/EasonJim/p/7803067.html 一.Redis的五大数据类型 1.String( ...
- Ne10编译安装
介绍 NEON,即"ARM Advanced SIMD",是ARM从ARMv7开始提供的高级单指令多数据(SIMD)扩展.它是一种64/128位混合SIMD体系结构.NEON在网上 ...
- Visualization of Detail Point Set by Local Algebraic Sphere Fitting
Refers to Dynamic Sampling and Rendering of Algebraic Point Set Surfaces Growing Least Squares for t ...
- 使用VSTS的Git进行版本控制(七)——管理仓库
使用VSTS的Git进行版本控制(七)--管理仓库 在团队项目中创建Git repo管理项目的源代码.每个Git repo都有自己的权限和分支,可以与项目中的其他工作隔离开来. 任务1:从web门户创 ...
- 单纯linux系统下hadoop2.7.3 eclipse,记一次成功的运行wordcount的注意事项
hadoop要正确安装好 hadoop eclipse plugin要对应相应的eclipse版本 define hadoop location mr master:9000 另一个9001 下面的 ...
- 洗礼灵魂,修炼python(63)--爬虫篇—re模块/正则表达式(1)
爬虫篇前面的某一章了,我们要爬取网站页面源代码的数据,要从中获取到我们想要的数据,是不是感觉很费力,确实费力对吧?那么有没有什么有利的工具来解决这个问题呢?那就是这一篇博文的主题—— 正则表达式简介 ...
- IDLE提供的常用快捷键
IDLE提供的常用快捷键 快捷键 说明 适用于 F1 打开Python帮助文档 Python文件窗口和shell窗口均可用 Alt+P 浏览历史命令(上一条) 仅Python Shell窗口可用 Al ...
- Windows 计划任务
打开计划任务 windows 7及以下:在开始菜单中,搜索“计划任务” windwos 10:按下Win键+S,搜索“计划任务” 使用情景 在平时工作中,可以在计算机空闲时执行一些操作. 服务器机器: ...