RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比

一.RCNN

问题一:速度

经典的目标检测算法使用滑动窗法依次判断所有可能的区域。本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上提取特征,进行判断。

问题二:训练集

经典的目标检测算法在区域中提取人工设定的特征(Haar,HOG)。本文则需要训练深度网络进行特征提取。可供使用的有两个数据库:

一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。

一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置。一万图像,20类。

保证合并后形状规则。

网络分为四个部分:区域划分、特征提取、区域分类、边框回归

区域划分:使用selective search算法画出2k个左右候选框,送入CNN

特征提取:使用imagenet上训练好的模型,进行finetune

区域分类:从头训练一个SVM分类器,对CNN出来的特征向量进行分类

边框回归:使用线性回归,对边框坐标进行精修

优点:

ss算法比滑窗得到候选框高效一些;使用了神经网络的结构,准确率比传统检测提高了。

缺点:

1、ss算法太耗时,每张图片都分成2k,并全部送入CNN,计算量很大,训练和inference时间长。

2、四个模块基本是单独训练的,CNN使用预训练模型finetune、SVM重头训练、边框回归重头训练。微调困难,可能有些有利于边框回归的特征并没有被CNN保留。

二.Fast-RCNN

Fast RCNN方法解决了RCNN方法三个问题:

问题一:测试时速度慢

RCNN一张图像内候选框之间大量重叠,提取特征操作冗余。

本文将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。

问题二:训练时速度慢

原因同上。

在训练时,本文先将一张图像送入网络,紧接着送入从这幅图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。

问题三:训练所需空间大

RCNN中独立的分类器和回归器需要大量特征作为训练样本。

本文把类别判断和位置精调统一用深度网络实现,不再需要额外存储。

相对RCNN,准确率和速度都提高了,具体做了以下改进:

1、依旧使用了selective search算法对原始图片进行候选区域划分,但送入CNN的是整张原始图片,相当于对一张图片只做一次特征提取,计算量明显降低

2、在原图上selective search算法画出的候选区域对应到CNN后面输出的feature map上,得到2k个左右的大小长宽比不一的候选区域,然后使用RoI pooling将这些候选区域resize到统一尺寸,继续后续的运算

3、将边框回归融入到卷积网络中,相当于CNN网络出来后,接上两个并行的全连接网络,一个用于分类,一个用于边框回归,变成多任务卷积网络训练。这一改进,相当于除了selective search外,剩余的属于端到端,网络一起训练可以更好的使对于分类和回归有利的特征被保留下来

4、分类器从SVM改为softmax,回归使用平滑L1损失。

缺点:因为有selective search,所以还是太慢了,一张图片inference需要3s左右,其中2s多耗费在ss上,且整个网络不是端到端。

三.Faster-RCNN

从RCNN到fast RCNN,再到本文的faster RCNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。

引入RPN,Faster-RCNN相当于Fast-RCNN+RPN,准确率和速度进一步提高,主要做了以下改进:

1、移除selective search算法,还是整张原始图片输入CNN进行特征提取,在CNN后面的卷积不再使用ss算法映射过来的候选区域,而是采用新的网络RPN,使用神经网络自动进行候选区域划分。

2、RPN通过生成锚点,以每个锚点为中心,画出9个不同长宽比的框,作为候选区域,然后对这些候选区域进行初步判断和筛选,看里面是否包含物体(与groundtruth对比IoU,大于0.7的为前景,小于0.3的为背景,中间的丢弃),若没有就删除,减少了不必要的计算。

3、有效的候选区域(置信度排序后选取大概前300个左右)进行RoI pooling后送入分类和边框回归网络。

优点:端到端网络,整体进行优化训练;使用神经网络自动生成的候选区域对结果更有利,比ss算法好;过滤了一些无效候选区,较少了冗余计算,提升了速度。

RPN训练:

1、加载预训练模型,训练RPN。

2、训练fast-rcnn,使用的候选区域是RPN的输出结果,然后进行后续的bb的回归和分类。

3、再训练RPN,但固定网络公共的参数,只更新RPN自己的参数。

4、根据RPN,对fast-rcnn进行微调训练。

四.R-FCN

一个base的conv网络如ResNet101, 一个RPN(Faster RCNN来的),一个position sensitive的prediction层,最后的ROI pooling+投票的决策层。

分类需要特征具有平移不变性,检测则要求对目标的平移做出准确响应。现在的大部分CNN在分类上可以做的很好,但用在检测上效果不佳。SPP,Faster R-CNN类的方法在ROI pooling前都是卷积,是具备平移不变性的,但一旦插入ROI pooling之后,后面的网络结构就不再具备平移不变性了。因此,本文想提出来的position sensitive score map这个概念是能把目标的位置信息融合进ROI pooling。

对于region-based的检测方法,以Faster R-CNN为例,实际上是分成了几个subnetwork,第一个用来在整张图上做比较耗时的conv,这些操作与region无关,是计算共享的。第二个subnetwork是用来产生候选的boundingbox(如RPN),第三个subnetwork用来分类或进一步对box进行regression(如Fast RCNN),这个subnetwork和region是有关系的,必须每个region单独跑网络,衔接在这个subnetwork和前两个subnetwork中间的就是ROI pooling。我们希望的是,耗时的卷积都尽量移到前面共享的subnetwork上。因此,和Faster RCNN中用的ResNet(前91层共享,插入ROI pooling,后10层不共享)策略不同,本文把所有的101层都放在了前面共享的subnetwork。最后用来prediction的卷积只有1层,大大减少了计算量。

在Faster-RCNN基础上,进一步提高了准确率,主要以下改进
1、使用全卷积层代替CNN basenet里面的全连接层。
2、CNN得到的feature map在RoI pooling之后变成3x3大小,把groundtruth也变成3x3大小,对9宫格每个区域分别比较和投票。

faster rcnn resnet_RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比相关推荐

  1. RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比

    RCNN系列.Fast-RCNN.Faster-RCNN.R-FCN检测模型对比 一.RCNN 问题一:速度 经典的目标检测算法使用滑动窗法依次判断所有可能的区域.本文则预先提取一系列较可能是物体的候 ...

  2. faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

    RCNN 这个网络也是目标检测的鼻祖了.其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式.在RCNN中 ...

  3. 人工智能目标检测模型总结(一)——R-CNN、Fast R-CNN、Faster R-CNN

    前言 目标检测是人工智能的一个重要应用,就是在图片中要将里面的物体识别出来,并标出物体的位置,一般需要经过两个步骤: 1.分类,识别物体是什么 2.定位,找出物体在哪里 除了对单个物体进行检测,还要能 ...

  4. 【Faster R-CNN论文精度系列】从Faster R-CNN源码中,我们“学习”到了什么?

    [Faster R-CNN论文精度系列] (如下为建议阅读顺序) 1[Faster R-CNN论文精度系列]从Faster R-CNN源码中,我们"学习"到了什么? 2[Faste ...

  5. 深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD

    为什么80%的码农都做不了架构师?>>>    Faster R-CNN.R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与这三者类似.本文介绍了 ...

  6. faster rcnn论文_52 个深度学习目标检测模型汇总,论文、源码一应俱全!(附链接)...

    来源:AI有道 本文约2000字,建议阅读5分钟 本文给你总结52个深度学习检测模型. 标签:计算机视觉目标检测作为计算机视觉中的一个重要分支,近些年来随着神经网络理论研究的深入和硬件 GPU 算力的 ...

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

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

  8. 目标检测经典论文——Faster R-CNN论文翻译(纯中文版):Faster R-CNN:通过Region Proposal网络实现实时目标检测

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[Faster R-CNN中英文对照版] Faster R-CNN:通过Region Pr ...

  9. Faster RCNN 训练自己的检测模型

    Faster RCNN 训练自己的检测模型 一.准备自己的训练数据 根据pascal VOC 2007的训练数据集基本架构,第一步,当然是要准备自己的训练图片集,本文直接将自己的准备的图片集(.jpg ...

最新文章

  1. 贪心 双指针----Codeforces Round #727 (Div.2) D. PriceFixed
  2. webpack.config.js====插件purifycss-webpack,提炼css文件
  3. 【数理知识】《矩阵论》方保镕老师-第1章-矩阵的几何理论
  4. 关于本地mysql客户端如何连接阿里云服务器上的MySQL数据库
  5. 【译】Consortium Chain Development
  6. 模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范...
  7. Arturia Analog Lab V for Mac - 超强键盘模拟合成器
  8. ef mysql 分页查询语句_MySQL、Oracle和SQL Server的分页查询语句
  9. MyBatis源码阅读(二) --- 执行流程分析
  10. 黑盒测试与白盒测试的区别
  11. 单节点Elasticsearch健康状态为 yellow
  12. Unity学习简易单人FPS开发——AI实现(部分)
  13. 计算机截图工具无法运行,重装win7系统后打开截图工具显示“截图工具当前未在计算机上运行”如何解决...
  14. python将多个列表合并_Python将多个list合并为1个list的方法
  15. v90绝对值编码器回零_由“V90使用绝对值编码器掉电后位置丢失”所想到的
  16. Parallels Desktop 18.0.1 53056
  17. 仿腾讯QQ竖直滑动导航菜单
  18. suse11sp3上面配置zypper源
  19. 毕业设计-基于机器学习的短期负荷预测算法
  20. Python 下载视频出错 you-get: [error] oops, something went wrong.

热门文章

  1. Android应用开发—Intent组件详解
  2. 18--两数之和 II - 输入有序数组
  3. java中的多线程有什么意义_Java多线程与并发面试题(小结)
  4. 使用 gunicorn 部署flask项目
  5. element table 怎么知道点击的是第几行_el-data-table, 让CRUD更简单??
  6. Linux格式化异常,Linux下DateFormat的parse方法出现”ParseException”异常
  7. python深入_Python深入(上)
  8. 链表创建、逆置、删除详解
  9. mysql接口可以重载吗_php 到底可不可以重载
  10. 简单的web框架(python)