以下是我在2018年7月份找工作时,根据个人所学总结出的目标检测 (Detection) 算法综述。
其中,仅仅挑出我认为比较重要的一系列算法,按照时间顺序进行简要概述。

如有阐述不对的地方,恳请指出。

R-CNN

时间

2013

意义

  1. 鼻祖级CNN detector;
  2. 真正实现了“将检测任务转换为分类任务”;
  3. 检测算法的主流由传统模型转为CNN模型;
  4. CVPR2014。

创新点

解决了两大问题:

  1. 如何定位;
  2. 如何在缺少检测专用数据集的情况下实现检测任务。

解决方案

  1. 采用对region proposal进行定位回归,并设计了encode/decode机制;
  2. 在ImageNet上预训练,移到VOC上进行fine-tune。2. 在ImageNet上预训练,移到VOC上进行fine-tune。

缺点

  1. 对每个RP均走了一遍特征抽取,太低效。

基础网络

AlexNet。

思考

  1. 尽管R-CNN是划时代的,但在它身上也能看到很多前人(如OverFeat)的智慧。

SPPNet

时间

2014

意义

  1. 共享特征抽取,SPP layer;
  2. ECCV2014。

创新点

  1. 共享特征抽取:使得特征抽取不再成为时间瓶颈,几个月后的Fast R-CNN正是吸收了这部分的核心精华并进行了进一步分改进;
  2. SPP layer:对proposal进行pooling,使得检测网络可以输入任意size的图片。因为从输入图片到fc之间契入了对proposal的pooling,使得fc的存在也无法写死输入图片的size。

缺点

  1. pooling后得到的一根根tensor并没有按先前的位置关系排成阵列,而是直接头尾相接,丢弃了重要的位置信息,不利于对proposal的分类(Fast R-CNN提出的RoIPooling改进了这点)。

基础网络

  1. AlexNet。

思考

  1. SPPNet是一个被人忽视的杰出贡献。

Fast R-CNN

时间

2015

意义

  1. 4-stage -> 2-stage;
  2. RoIPooling;
  3. ICCV2015。

创新点

  1. 通过将三个任务(特征抽取、分类、回归)整合到一个CNN里,检测算法从4-stage进入了2-stage时代;
  2. RoIPooling:简化和修正了SPP layer的设计,更好地保留了位置信息;
  3. 提出了mini-batch=2的认知,成为共识;
  4. 回归loss:L2 -> Smooth L1。

结构

后半段:2个共享的fc,接着两个平行的单fc,分别负责分类和回归。

基础网络

VGG-16。

Faster R-CNN

时间

2015

意义

  1. SS -> RPN+anchor机制,第一个end-to-end detector;
  2. NIPS2015;
  3. COCO2015 1st。

创新点

  1. RPN+anchor机制:用RPN替换下SS,使得“生成RP”这个task也能享受到GPU的利好。每张图片生成的RP数量不变,但效率从0.5fps跃升到了100fps。RPN本质是“基于滑窗的二分类检测器”,额外开销只有一个两层的网络。
  2. 新的target机制。

缺点

  1. 只用到了顶层的feature map (在FPN中被修正)。

基础网络

ZFNet或VGGNet。

细节

  1. 一共四个loss,RPN占两个、detector子网络占两个。

思考

  1. Faster R-CNN将Fast R-CNN中的“网络化”趋势做到了极致,实现了“All in one network”。此后所有two-stage方法无不为其变种。

YOLOv1

时间

2015

意义

  1. 第一个1-stage detector;
  2. 第一个real-time detector;
  3. CVPR2016。

创新点

  1. 不需要一个额外的stage来生成RP,而是直接分类回归出output;
  2. 每个grid只负责预测一个物体,这样自然将候选框数量大幅缩减到了S×S×B,有效缓解了类别不平衡。

优点

  1. 超级快:YOLOv1 45fps;Fast YOLOv1 155fps。

基础网络

GoogleNet。

思考

  1. 每个grid只负责一个物体,这种设计非常简单粗暴,明显带有先验信息。因为数据集中大部分图片都是常规图片,分布有秩,大小合理。但是对于小部分非常规图片(如两个以上物体的中心位置落入同一个grid)就只能漏检了。
  2. 由于YOLOv1只针对最后的7*7的特征图进行分析,使得它对小目标的检测效果不佳。
  3. YOLOv1在检测速度和检测精度的两难抉择中选择了短平快的方式,突破了2-stage的格局限制,创造出1-stage。虽然精度不高,但使得real-time detector成为了现实,也指明了real-time detector的大方向。
  4. YOLO系精度普遍不高,因此实际落地中,基本不使用YOLO系。甚至连对实时性要求极高的自动驾驶,用的也是FPN(+Faster R-CNN)那一套。

SSD

时间

2015

意义

  1. multi-scale feature map;
  2. ECCV2016。

创新点

  1. 第一个挖掘和利用了不同scale的feature map。从此,在多个scale的feature map上进行检测成为了共识。
  2. Anchor是Faster R-CNN先提出的,却是SSD第一个进行了深入研究(包括anchor的数量、尺寸、长宽比),后续的YOLOv2便是在此基础上更进一步。

基础网络

VGGNet。

思考

  1. 自称是第一个高精度的real-time detector,其实精度也没有多高;
  2. 后人在SSD的基础上加上了FPN,进化成了DSSD。

R-FCN

时间

2016

意义

  1. 第一个共享头部的子网络;
  2. NIPS2016。

创新点

  1. 针对“不共享的proposal处理过程(即尾部的subnet)”,提出了位置敏感得分图,丢弃RoIPooling,检测网络的前半段和后半段被完整地连到了一起,形成一个全卷积网络。

优点

  1. 精度和Faster R-CNN相差无几,inference speed快了2~20倍。

缺点

  1. 头部太厚重,有 k×k×(C+1) 之厚,为Light-head R-CNN埋下伏笔。

YOLOv2

时间

2016

意义

  1. 第一个large-scale detector;
  2. CVPR2017 Best Paper Mention。

创新点

  1. 一大堆的trick,并设计了自己的basemodel——DarkNet-19。
  2. Large-scale:Softmax嵌套softmax,从而实现分级语法树。带有分级语法树的YOLOv2称为YOLO-9000。

缺点

  1. 虽然贵为第一个large-scale detector,但是由于精度不高,并不实用。后续的R-FCN-3000继承其思想并继续拓荒,在large-scale上取得了较高的精度。

FPN(+Faster R-CNN)

时间

2016

意义

  1. 解决小物体漏检;
  2. CVPR2017。

创新点

  1. 设计出包含”top-down路径”和“横向连接”的module,来融合“缺少细节信息但多语义信息的顶层feature map”和”多细节信息但缺少语义信息的底层feature map”。

优点

FPN开销小,又能检测出小物体,因此成为了检测算法的标准组件。

缺点

顶层的feature map并没有享受到多少FPN的利好,依然是多语义信息但缺少位置信息,依然对检测大物体不利。(该问题为PAN的出现埋下了伏笔)

DSSD

时间

2017

意义

SSD+FPN。

思考

水文一篇。

Mask R-CNN

时间

2017

意义

  1. RoIPooling -> RoIAlign;
  2. 加上第三个pipe-line用于实例分割;
  3. ICCV2017 Best Paper。

DCN

时间

2017

意义

  1. Deformable module(可形变模块)。

创新点

  1. 在传统的方正的卷积、RoIPooling的输出后面加上一层2-D offset,使得输出能够“自动形变”。逐层叠加“形变”,CNN就能更精准地读取目标的语义。

优点

  1. 设计简单、增加的参数量少、支持end-to-end训练、对各种复杂的视觉task都能general。

思考

  1. 一般只用于最后几层,因为后面的细节信息丢失较多,才需要形变操作来更好地刻画目标。
  2. 当大家趋之若鹜地压榨fm、head、proposal的剩余价值的时候,DCN另辟蹊径,对最基础的卷积计算方式开刀,insight很棒。

RetinaNet

时间

2017

意义

  1. CE -> FL;
  2. ICCV2017 Best Student Paper。

创新点

  1. 发现了1-stage系的精度输给2-stage系的根本原因是在anchor中占绝对大头bg导致了“类别不平衡”。而1-stage有RPN罩着,不受影响,1-stage却没有人罩着。于是设计了focal loss来罩着1-stage。

缺点

  1. fp多。

思考

  1. 发现问题根源的意义远大于解决问题;
  2. RetinaNet十分强大,成为了当下最佳的detector之一,也被广泛落地使用。

MegDet

时间

2017

意义

  1. large-mini batch;
  2. COCO2017 1st;
  3. CVPR2018。

创新点

  1. 工程上的创新,真正实现了large-mini batch。

缺点

  1. 难以复现,除非你有128块GPU。

Light-head R-CNN

时间

2017

意义

  1. 投CVPR被拒。

创新点

  1. 将R-FCN的厚重头部压缩得非常薄,因此极大地提速。

思考

  1. 这么剧烈地压缩模型,性能居然不降反升,很反直觉。作者有没有给出一个很好的解释,所以投CVPR被拒。

SNIP

时间

2017

意义

  1. Image Pyramid;
  2. CVPR2018。

创新点

  1. 重新挖掘Image Pyramid的价值,并在此基础上加入了每层scale的有效生成范围。得益于此,三个pipe-line可以各司其事,扬长避短。

缺点

  1. 模型太大,1080ti的11G显存根本带不动,不实用。

思考

  1. 通过分配任务,大大降低了每个pipe-line的检测难度,从而“作弊式”地实现了“尺度不变性”。

Cascade R-CNN

时间

2017

意义

  1. 第一个级联detector的做法,2-stage -> 4-stage;
  2. CVPR2018。

创新点

  1. 作者受人脸检测的启发,采用“级联引导”的方式,通过一轮轮的级联来提升box的定位质量。

思考

  1. Faster R-CNN将检测算法从4-stage进化到了2-stage,而Cascade R-CNN又将2-stage发展回了4-stage,可以算是一种螺旋式上升吧;
  2. 第一个将级联思想引入目标检测。

R-FCN-3000

时间

2017

意义

  1. 第一个有效的large-scale detector。

创新点

  1. 按子类别进行回归 -> 按大类别进行回归。

PAN

时间

2018

意义

  1. FPN -> PAN;
  2. COCO2017 2nd。

YOLOv3

时间

2018

创新点

  1. 改善了YOLO系的一大痛病:小物体漏检。

DetNet

时间

2018

意义

  1. 第一个专为Detection定制的backbone;
  2. ECCV2018。

创新点

  1. 将原本32倍的下采样,用两个16倍的卷积来替换,号称既可以通过叠加卷积实现感受野的扩张,又可以避免因为下采样所导致的位置信息的丢失。

思考

  1. 16年的YOLOv1早就这么做了,只不过没有拿出来大书特书。

目标检测 (Detection) 算法综述相关推荐

  1. 目标检测相关算法综述

    目标检测相关算法综述 1. R-CNN[1] 2. SPP-Net[2] 3.Fast Rcnn[3] 4.Faster Rcnn[4] 5.Cascade Rcnn[5] 6.FPN[6] 7.YO ...

  2. 检测到目标服务器启用了trace方法_CVPR2019目标检测方法进展综述

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  3. CVPR2019目标检测方法进展综述

    CVPR2019目标检测方法进展综述 文章目录: 一.二维目标检测的优化方向 1.基于目标检测的backbone和特征提取 2.基于优化的算法 3. 基于优化损失函数的方法 4.基于优化NMS的方法 ...

  4. 2021年小目标检测最新研究综述 很全面值得收藏

    摘要 小目标检测长期以来是计算机视觉中的一个难点和研究热点.在深度学习的驱动下,小目标检测已取得了重大突破,并成功应用于国防安全.智能交通和工业自动化等领域.为了进一步促进小目标检测的发展,本文对小目 ...

  5. 目标检测20年综述之(一)

    目标检测20年综述 本文是一篇综述的阅读笔记:<Object Detection in 20 Years: A Survey> 介绍历史上的里程碑检测器.检测数据集.评价指标.检测系统的基 ...

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

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

  7. CVPR2020论文介绍: 3D 目标检测高效算法

    CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...

  8. 3d 自动生成物体_CVPR2020论文介绍: 3D 目标检测高效算法

    CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...

  9. 目标检测——传统算法

    目标检测是计算机视觉中的重要任务之一.本系列博客将总结目标检测的各类算法,包括传统方法.基于CNN的算法(One stage.Two stage).本文主要对传统方法进行概述,大部分思想源自网上的博客 ...

  10. 计算机视觉多目标检测整合算法

    计算机视觉多目标检测整合算法 输入输出接口 Input:image/video Output:(1)BandingBox左上右下的坐标位置 (2)Type类型:人,车,-,-(3) 执行度:是指判别目 ...

最新文章

  1. ICRA 2022 | 基于多模态变分自编码器的任意时刻三维物体重建
  2. java jar 和 war 包的区别
  3. 前端rem单位的正确使用姿势(转)
  4. 自己写一个图片按钮(XAML)
  5. 数据中心行业在能源转型中将发挥重要作用
  6. Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目
  7. 如何对手机使用adb
  8. Oracle 10g新特性——正则表达式(转)
  9. es文件浏览器怎么用_谷歌出品的文件管理APP,比ES文件浏览器更简约
  10. Google Earth Browser Plugin (谷歌 地球 浏览器 插件) 下载地址 5.0
  11. 阳历和阴历的互转函数
  12. 昨天见到了原来飘渺水云间(浙江大学BBS站)的FLASH版主小兵甲
  13. 云原生2.0时代,保险企业为何要迎智而上?
  14. OpenGL 和 DirextX
  15. 安卓车机root改流浪地球_你想知道的《流浪地球》的问题,都在这里了
  16. Velocity+IText+Flying-saucer生成pdf文件
  17. 保留指定小数位数js函数封装
  18. 哈工大2021集合论与图论期末
  19. 数据库之关系数据库之超码,候选码,主码,主属性,非主属性(非码属性)之间的关系
  20. Selenium怒怼知乎IDF教主

热门文章

  1. Jmeter遇到打不开的问题
  2. 机器人视觉系统分为哪几种,主要包括哪些关键技术?
  3. Longest Continuous Increasing Subsequence(最长递增连续子序列)
  4. PS怎样扣图片和压缩图片工具推荐
  5. c语言中while(a)、if(a)、while(!a)、if(!a)、if(%a)是什么意思?
  6. 条款30:透彻了解inlining的里里外外
  7. 几种聚类算法的对比实验
  8. Words Accumlation - Day 4
  9. XDOJ最长单词的长度
  10. mysql远程过程调用失败怎么办_远程过程调用失败且未执行是什么意思