编者按

由于Alex-Net和VGG等深度网络在分类任务领域的成功应用,更多的深度网络被应用于检测任务中。今天小编为大家准备的两篇文章分别是CVPR2014中R-CNN在目标检测中的应用以及CVPR2015中SPP-Net针对R-CNN进行的改进。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

文章作者:TeddyZhang

责任编辑:晋杰

文章发表于微信公众号【运筹OR帷幄】:【OM】走进“基础经济舱”背后的故事

欢迎原链接转发,转载请私信 @运筹OR帷幄 获取信息,盗版必究。

敬请关注和扩散本专栏及同名公众号,会邀请全球知名学者发布运筹学、人工智能中优化理论等相关干货、知乎Live及行业动态:『运筹OR帷幄』大数据人工智能时代的运筹学

文章摘要:本文对CVPR2014和CVPR2015中两篇文章进行解读,首先分析了R-CNN网络结构、算法流程及优缺点;针对R-CNN缺点介绍了其改进方法:SSP-Net的网络结构、算法以及其对R-CNN改进的详细介绍。

R-CNN(使用CNN提取特征)

这是一篇CVPR2014的文章,由于Alex-Net和VGG等深度网络在分类任务的成功应用,大家逐渐发现,深度网络自主提取的特征要比传统的手工方式提取的特征更加丰富,于是开始尝试在检测任务中使用深度网络来提取特征。其中R-CNN(Regions with CNN feature)就是一个比较好的例子。众所周知,检测任务不仅仅是分类问题,还包括边框区域确定。因此,对目标所在框的位置进行确定是一个需要研究的问题。

1. 算法总览

Region proposals : 候选区域,也就是预先找到的目标可能存在的区域。

  1. 输入测试图片
  2. 利用selective search算法从图像中提取2k左右个region proposals
  3. 将每一个region proposals缩放成227x227的大小并输入CNN网络,在最后一层全连接输出图像特征
  4. 把每个region proposal的CNN特征输入到SVM进行分类处理
  5. 对SVM分类好的region proposal进行边框回归处理,使得预测框和真实框更加吻合

2. 网络结构

我们可以看到,每个region proposal在输入CNN网络之前都会缩放至227x227,这是因为R-CNN的网络结构中存在有全连接层(fc),需要输入图像的尺寸保持一致。

3. 类别判断

类别判断过程中使用SVM分类器进行分类,一个region proposal经过CNN网络输出4096维的特征,然后用SVM进行二分类,判断是否属于此类。其中SVM存在的缺点是:只能分阶段来进行,不能进行端到端的训练。

在提取候选框的过程中,传统算法一般都会使用滑框的方式来处理,但存在缺点,如滑框信息的大量重复以及无法处理多尺寸的目标。而R-CNN采用了更加高效的方式来生成候选框,具体算法如下:

  1. 生成原始的区域集R(利用felzenszwalb算法)
  2. 计算R中每个区域与相邻区域的相似度S={s1, s2, ...}
  3. 找出相似度最高的两个区域,将其合并成新集并添加到R中
  4. 从s中删除与步骤3中的两个子集有关的所有相似度
  5. 计算新集与所有子集的相似度St
  6. 跳至步骤3,不断循环,直到S为空

其中相似度的计算,作者对颜色,纹理,尺度,填充这四个相似度进行加权处理,然后得到最终的相似度。

4. BoundingBox Regression(边框回归)

虽然已经使用了selective search来最大限度地提取目标的候选框,但有些候选框与真实框依旧有很大差距,因此使用一个线性方程来实现位置的精确定位,其中真实框为

,而这四个元素的位移量为

,根据参数间的关系建立方程关组:

然后通过真实框的标签与预测输出的loss去优化网络的可学习权重:

其中*代表x, y, w, h, 而w为网络的可训练权重。t* 的计算公式为:

5. 算法总结

优点:

  • 精度显著提高,PASCAL VOC2010从35.1%到53.7%
  • 将CNN网络应用于目标检测领域并实现了图像特征自动提取

缺点:

  • 训练分阶段,步骤繁琐:微调网络+训练SVM+边框回归
  • 每个region proposal都需要经过CNN网络进行提取特征,产生大量特征文件,占用过多物理内存
  • 由于每个region proposal都需要需要经过CNN网络进行提取特征,导致运行速度慢(GPU条件下,测试一张图片需要47s)
  • 由于使用SVM进行分类,无法实现端到端的训练

SPP-Net(改进R-CNN)

既然我们已经清楚了R-CNN的缺点,那么如何去改进它呢?SPP-Net给出了它的解决方案,接下来我们就来看看凯明大佬的SPP-Net。因为R-CNN的网络结构中有全连接层,造成CNN网络输入时图像尺寸一致,但是region proposal的尺寸是不一致的,这是作者文章想要解决的一个问题;另外由于每个region proposal都需要进行正向传播,导致R-CNN的运行速度慢,这也是作者想要解决的一个问题。

1. 算法总览

SPP-Net解决尺度统一的问题如上图所示。

尺度问题:由于CNN网络中存在全连接层,所以在输入全连接层前要进行裁剪或缩放处理,这是由既定的全连接层结构决定的;这样处理的缺点是会丢失一些信息。所以作者在全连接层前面,加入一个空间金字塔结构,如下图:

可以看到,不同尺寸的region proposal经过前面卷积层生成feature map的大小也不相同,假设大小为W * H * C,而在SPP结构中,我们以不同大小的块来提取特征,分别是4*4, 2*2, 1*1, 然后把这三个网格对应到feature map中,就可以得到16+4+1=21个不同的spatial bin,其中每一块都提取一个特征,可以得到固定的21 * C的特征向量,而与feature map的尺寸无关了,这样可以从多尺度的图像中提取固定的特征向量。如最大池化时,就可以在每一个小网格的区域里面提取一个最大的特征来代表整个小网格,或者取平均等其他策略。

速度问题:R-CNN速度慢的原因是有很多region proposals要经过CNN网络计算特征,消耗过多时间,并且特征文件的储存也需要大量存储空间,于是作者考虑共享特征信息。在特征提取阶段,SPP-Net直接对一整张图片进行特征提取,得到feature map,然后在feature map中找到region proposals的区域,并通过空间金字塔池化提取固定的特征向量,使运算速度大大提升,并且特征文件的储存空间大大减少!

2. 网络结构

作者使用的ZF-5包含5个卷积层,经过空间金字塔池化层后变成固定特征,然后连接两个全连接层。作者使用SPP结构在ImageNet上做了对比实验,实验结果表明准确率有了一定的提高!

3. 映射问题

在SPP-Net中,作者将整张图片输入到CNN网络中进行提取特征,但是如何在最后的feature map中对应region proposals的区域呢?论文的Appendix A中给出了解释,作者在对这个网络进行实验时,为了简化映射问题,对每一层的feature map都进行了

的padding,其中 P是卷积核大小,这样可以得到映射关系:

其中 x,y对应的是输入原图,而 S 代表网络中所有的stride的乘积。作者文章中, ZF-5网络中的S=16,Overfeat-5/7中 S=12。然后在映射的时候,投影左(上)边界时

(向下取整),而投影到右(下)边界时

(向上取整)。

4.算法总结

总结来说,SPP-Net对R-CNN做了速度和精度上的改进,在达到R-CNN精度的同时,其速度是R-CNN的24-102倍,在运算速度方面有了很大提高,但仍满足不了实时的需求。

优点:

引入了空间金字塔,适应各种不同尺寸的特征图

对整张图进行一次特征提取,加速运算速度,并提出了权重共享的策略

缺点:

分类器使用SVM,不能端到端训练

进行分阶段训练,训练步骤复杂

总结与分析

通过这篇文章,了解R-CNN相对于传统视觉算法的优点和不足,而SPP-Net通过共享卷积运算提高了整个网络的速度,一定程度弥补了R-CNN的不足,但是仍然有自己的缺点,关于这些问题的解决方法,我们下篇文章再接着分析~~

参考文献:

https://arxiv.org/abs/1311.2524v3

https://arxiv.org/abs/1406.4729

文章来源声明:文章由作者授权『运筹OR帷幄』原创发布

可以在 本公众号后台 回复关键词:“目标检测”获取代码链接,如果觉得有用, 请勿吝啬你的留言和赞哦!~

pbewithmd5anddes算法 对应.net_「AI」目标检测第一话:R-CNN和SPP-Net相关推荐

  1. 「AI」我喜欢的几个人工智能方面的头条号

    「AI」我喜欢的几个人工智能方面的头条号 笔者对于人工智能领域比较感兴趣,因它是代表世界高科技未来发展方向,是第四次工业革命的核心技术领域. 世界各国政府都对人工智能行业高度重视,各大国都制定了比较前 ...

  2. 聚观早报 | 英伟达推「AI」超算;中国2030年前载人登月

    今日要闻:英伟达推「AI」超算:中国2030年前载人登月:AI大热,游戏股全线大涨:ofo创始人二次创业项目陷入困境:微信视频号原创标记已对外显示 英伟达推「AI」超算 5 月 29 日,NVIDIA ...

  3. 病虫害模型算法_基于深度学习的目标检测算法综述

    sigai 基于深度学习的目标检测算法综述 导言 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是机器视觉领域的核心问题之一.由于各类物体有不同的外观,形状,姿态,加上成像 ...

  4. CLAHE算法实现图像增强「AI工程论」

    关注:决策智能与机器学习,深耕AI脱水干货 作者 |  机器学习炼丹术 来源 |  机器学习炼丹术 1 基本概述 CLAHE是一个比较有意思的图像增强的方法,主要用在医学图像上面.之前的比赛中,用到了 ...

  5. Ai关于目标检测类算法比赛的经验总结

    内容来源于 宅码,作者Ai. 附一张作者签名--艾宏峰! 导读: 本文为作者自己参加的三个目标检测类算法比赛的经验总结,分为五个部分:数据研究和准备.参数调节.模型验证以及模型融合,作者还给出了一些关 ...

  6. cvpr2020 人脸检测与识别_CVPR2020 论文分类下载 「人脸识别+目标检测」

    近日,CVPR官方终于放出了所有的论文列表,并开放下载. 图灵君为大家整理并下载了[人脸检测/识别/重建]和[目标检测/分割/跟踪]的相关论文,关注本公众号,回复 "CVPR1" ...

  7. AI 快车道目标检测专场, PaddlePaddle “深度干货”

    从图像分类到3D姿势识别,计算机视觉领域涉及的技术应用非常广泛,而在工业应用领域最广泛,场景最丰富的就是目标检测技术.图像的分类.定位.分割等应用都离不开目标检测的前置动作.面部检测.人流统计.图像搜 ...

  8. [AI开发]目标检测之素材标注

    算力和数据是影响深度学习应用效果的两个关键因素,在算力满足条件的情况下,为了到达更好的效果,我们需要将海量.高质量的素材数据喂给神经网络,训练出高精度的网络模型.吴恩达在深度学习公开课中提到,在算力满 ...

  9. 阿里巴巴提出Auto-Context R-CNN算法,刷出Faster RCNN目标检测新高度

    基于区域的CNN(R-CNN),在目标检测领域具有统治地位,在兴趣区域(RoI)上的操作比如RoIPooling和RoIAlign扮演了重要角色,但是它们只利用了兴趣区域内的信息,而兴趣区域附近的上下 ...

  10. 小目标检测算法SNIPER—— SNIP的实战版本 (目标检测)(two-stage)(深度学习)(Arvix 2018)

    论文名称:< SNIPER: Efficient Multi-Scale Training > 论文下载:https://arxiv.org/abs/1805.09300 论文代码:htt ...

最新文章

  1. 九州云陈沙克:OpenStack的成功源于自身的开放
  2. iphone屏幕录制_如何将iPhone投屏到Mac上?iphone投屏到苹果电脑方法
  3. 推荐几本对创业者很有用的书籍
  4. 欢乐纪中B组周六赛【2019.3.9】
  5. 飞鸽传书不能用?这里列出所有解决方法!
  6. windows删文件:找不到该项目,该项目不在xx中,请确认位置,然后重试 的解决方案
  7. POJ1088(dp)
  8. OSPF不规则区域,远离Area 0的区域连通性解决方案
  9. Mybatis中传参包There is no getter for property named 'XXX' in 'c
  10. django开发_七牛云图片管理
  11. Java Web学习视频
  12. 实现国标GB/T28181流媒体服务解决方案EasyGBS之GB35114和GB28181的注册信令流程简介
  13. Spring中的ref和depends-on区别
  14. FPGA按键消抖—两种按键消抖形式的对比
  15. 程序人生|从网瘾少年到微软、BAT、字节offer收割机逆袭之路
  16. Ajax的回调函数(callback)
  17. Word自动目录字体过大,如何全选并修改样式
  18. 如何在没有安装安卓环境的mac os上装adb环境.
  19. Pytorch kaggle 房价预测实战
  20. Pinbox使用感受

热门文章

  1. UIAlertView用法
  2. poj 1823 Hotel 线段树,注意懒惰标记,不标记就会超时滴
  3. JetBrains AppCode:用于 iOS/macOS 开发的智能 IDE
  4. 忘记 Apple Watch PIN 码,如何解锁 Apple Watch?
  5. Mac 开机没声音了?只需 2 招关闭/恢复
  6. 如何在Mac电脑上的聚焦搜索中隐藏内容?
  7. Fantastical 2如何编辑事件?
  8. Docker 命令总结
  9. 实践解决跨域问题的三种方式剖析
  10. 怎么取消百度右侧栏的搜索热点