开山之作:RCNN

RCNN算法由Ross Girshick等人发表在CVPR 2014,将卷积神经网络应用于特征提取,并借助于CNN良好的特征提取性能,一举将PASCAL VOC数据集的检测率从35.1%提升到了53.7%
RCNN算法流程图如下图所示,RCNN仍然延续传统物体检测思想,将物体检测当做分类任务处理,即先提取一系列的候选区域,然后对候选区域进行分类
具体过程主要包含四步:

  • 候选区域生成。采用Region Proposal提取候选区域,例如Selective Search算法,先将图像分割成小区域,然后合并包含同一物体可能性最高的区域,并输出,在这一步提取约2000个候选区域。在提取完后,还需要将每一个区域进行归一化处理,得到固定大小的图像
  • CNN特征提取。将上述固定大小的图像,利用CNN网络得到固定维度的特征输出
  • SVM分类器。使用线性二分类器对输出的特征进行分类,得到是否属于此类的结果,并采用难样本挖掘来平衡正负样本的不平衡
  • 位置精修。通过一个回归器,对特征进行边界回归以得到更为精确的目标区域

    RCNN虽然显著提升了物体检测效果,但仍然存在3个角度问题
  • RCNN需要多步训练,步骤繁琐且训练速度较慢
  • 由于实际分类中的全连接网络,因此输入尺寸是固定的,造成了精度的降低
  • 候选区域是需要提前提取并保存,占用空间较大

端到端:Fast RCNN

在RCNN之后,SPPNet算法解决了重复卷积计算与固定输出尺度两个问题,但仍然存在RCNN的其他弊端。在2015年,Ross Girshick独自提出了更快、更强的Fast RCNN算法,不仅训练的步骤可以实现端到端,而且算法基于VGG16网络,在训练速度上比RCNN快了近9倍多,在测试速度上快了213倍,并在VOC 2012数据集上达到了68.4%的检测率
Fast RCNN算法框架如下图所示,相比RCNN,主要有3点改进

  • 共享卷积:将整幅图送到卷积网络中进行区域生成,而不是像RCNN那样一个个的候选区域,虽然仍采用Selective Search方法,但共享卷积的优点使得计算量大大减少
  • RoI Pooling:利用特征池化(RoI Pooling)的方法进行特征尺度变换,这种方法可以有任意大小图片的输入,使得训练过程更加灵活、准确
  • 多任务损失:将分类与回归网络放到一起训练,并且为了避免SVM分类器带来的单独训练与速度慢的缺点,使用了softmax函数进行分类

    Fast RCNN算法虽然取得了显著的成果,但在该算法中,Selective Search需要消耗2~3秒,而特征提取仅需要0.2秒,因此这种区域生成发方限制了Fast RCNN算法的发挥空间,这也为后来的Faster RCNN算法提供了改进方向

走向实时:Faster RCNN

Faster RCNN算法发表于NIPS 2015,该算法最大的创新点在于提出了RPN(Region Proposal Network)网络,利用Anchor机制将区域生成与卷积网络联系到一起,将检测速度一举提升到了14 FPS(Frames Per Second),并在VOC 2012测试集上实现了70.4%的检测结果
Anchor可以看做是图像上很多固定大小与宽高的方框,由于需要检测的物体本身也是一个个大小宽高不同的方框,因此Faster RCNN将Anchor当做强先验的知识,接下来只需要将Anchor与真实物体进行匹配,进行分类与位置的微调即可。相比起没有Anchor的物体检测算法,这样的先验无疑降低了网络的收敛速度,再加上一系列的工程优化,使得Faster RCNN达到了物体检测侧中的一个高峰

RCNN系列发展历程相关推荐

  1. R-CNN系列算法的发展历程

    目录 上一次分析了YOLO系列的算法: R-CNN 论文链接 概述 R-CNN流程 谈一下R-CNN的pre-training 谈一下R-CNN不同阶段正负样本的IOU阈值 谈一下R-CNN的fine ...

  2. Comunion 区块链深度学习系列|区块链的发展历程

    打开一切科学的钥匙都毫无异议地是问号,我们大部分的伟大发现都应当归功于如何?而生活的智慧大概就在于逢事都问个为什么? -- 巴尔扎克 之前写过一篇区块链新手学习要有系统性的文章,也有读者获取到了学习视 ...

  3. .NET 6 平台系列1 .NET Framework发展历程

    自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.NET平台 .NET Framewrok 1.0.借助于自 ...

  4. 我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:JVM的发展历程

    温馨提示:本篇文章能面世真的是太不容易了,我真的是写了好久好久,从2022年9月7日(首次发布)一直写到了今天,即2022年9月21日,每天写一点,再写一点,直至今天才终于写完,我可以保证这里面的每一 ...

  5. 知识图谱系列-2-知识图谱发展历程及其分类

    1. 知识图谱发展历程 知识图谱的发展可以从人工智能和语义网(注意语义网和语义网络是不同的)这两个领域进行追溯.在人工智能方面,人类致力于使计算机更智能,能够进行推理.分析.预测等高级思维活动.而知识 ...

  6. 【百度飞浆】RCNN系列目标检测算法详解

    RCNN系列目标检测算法详解 目录 两阶段目标检测算法发展历程 R-CNN R-CNN网络结构 R-CNN网络效果 Fast R-CNN Fast R-CNN网络效果 Faster R-CNN Fas ...

  7. 计算机视觉:目标检测的发展历程与基础概念

    计算机视觉:目标检测的发展历程与基础概念 目标检测发展历程 目标检测基础概念 边界框(bounding box) 锚框(Anchor box) 交并比 对计算机而言,能够"看到"的 ...

  8. 【技术综述】一文道尽R-CNN系列目标检测

    文章首发于微信公众号<有三学AI> [技术综述]一文道尽R-CNN系列目标检测 目标检测任务关注的是图片中特定目标物体的位置.一个检测任务包含两个子任务,其一是输出这一目标的类别信息,属于 ...

  9. 你需要了解操作系统发展历程

    本文我们大概回顾计算机操作系统发展历程,这里不会记录关于操作系统的完整历史记录,只是记录那些里程碑事件,看看各位接触计算机时,操作系统发展正处于哪个年代 起初 没有操作系统,没有编程语言或编译器,甚至 ...

最新文章

  1. 以太坊去中心化_开发以太坊去中心化投票应用程序的指南
  2. python 错误--UnboundLocalError: local variable '**' referenced before assignment
  3. FastDFS安装、配置、部署(三)-Storage配置具体解释
  4. 健身品牌Shape获得数千万元Pre-A轮融资,清流资本领投
  5. es6--set数组去重,Map数据结构
  6. python中将四元数转换为旋转矩阵
  7. vue 结合swiper插件实现广告公告上下滚动的效果
  8. Starling 性能优化方案
  9. mybatis--面向接口编程
  10. poj 3261 Milk Patterns
  11. python主线程执行_python主线程与子线程的结束顺序实例解析
  12. Thunder团队第六周 - Scrum会议6
  13. 用异常处理改编猜数游戏程序
  14. 找不到方向?10大热门大数据应用领域总有一款适合你
  15. win10联想软件商店壁纸的保存目录在哪
  16. Type-C边充电边OTG芯片LDR6028A
  17. 数据可视化ECharts:饼形图2 地区分布模块制作(南丁格尔玫瑰图)
  18. 亳州市发明专利申请费用多少钱,权利要求书要怎么写?
  19. Python爬虫——新浪微博(网页版)
  20. 视频教程-React 全家桶从入门到实战到源码-其他

热门文章

  1. 服务注册中心:Eureka
  2. snmp 统计网络流量
  3. 腾讯区块链首次发声:将做深做透场景
  4. 网易考拉海购Java开发面经(已拿offer)
  5. Word无法找到宏或宏被禁用如何解决
  6. python 卡方分布值_卡方新动力2020高校算法建模挑战赛
  7. 吕海楠201552216
  8. EDA技术与应用上机任务 电子信息类 Quartus II或Quartus Prime D触发器、半减器、全减器、可加减控制的50进制加减计数器。
  9. 《自控力》第六章读书笔记
  10. 蓝牙连接的sco问题