点上方计算机视觉联盟获取更多干货

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨不出名的小金@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/354060133

编辑丨极市平台

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

本文按照目标检测的三个分类:两阶段目标检测算法、多阶段目标检测算法、单阶段目标检测算法,讲解了该方向下各目标检测算法的特点。

整体框架

目标检测算法主要包括:【两阶段】目标检测算法、【多阶段】目标检测算法、【单阶段】目标检测算法

什么是两阶段目标检测算法,与单阶段目标检测有什么区别?

两阶段目标检测算法因需要进行两阶段的处理:1)候选区域的获取,2)候选区域分类和回归,也称为基于区域(Region-based)的方。与单阶段目标检测算法的区别:通过联合解码同时获取候选区域、类别

什么是多阶段目标检测算法?

【两阶段】和【多阶段】目标检测算法统称级联目标检测算法,【多阶段】目标检测算法通过多次重复进行步骤:1)候选区域的获取,2)候选区域分类和回归,反复修正候选区域

根据是否属于锚框分为:

1、Anchor-Free:

  • CornerNet

  • FCOS

  • TTFNet

  • YOLOv1(注意)

2、Anchor-based:

  • RetinaNet

  • YOLOv2-v5

  • PP-YOLO

  • SSD

主要考虑问题

1、准确性

2、实时性

3、多尺度

4、标签方案

5、目标重叠

6、模型训练

7、重复编码

8、数据增强

9、样本不平衡

两阶段目标检测算法

RCNN

1、模型通过【选择性搜索算法】获取潜在的候选区域

2、截取原图每个候选区域并resize输入到模型中进行特征抽取

3、使用SVM进行分类,以及进行bounding box 回归

存在问题:

重复编码:由于候选区域存在重叠,模型需要重复进行重叠区域的特征图提取,计算冗余

模型训练:由于特征抽取模型和区域的分类回归模型分开训练,无法进行端到端的模型训练,训练过程需要提取每个包含重叠区域的候选区域特征并保存用于分类和回归训练

实时性差:重复编码导致实时性不佳,【选择性搜索算法】耗时严重

Fast-RCNN

考虑到RCNN的缺点,Fast-RCNN来了!

1、模型依旧通过【选择性搜索算法】获取潜在的候选区域

2、将原图通过特征抽取模型进行一次的共享特征图提取,避免了重复编码

3、在特征图中找到每一个候选区域对应的区域并截取【区域特征图】,ROI pooling层中将每个【区域特征图】池化到统一大小

4、分别进行softmax分类(使用softmax代替了RCNN里面的多个SVM分类器)和bbox回归

主要优点:

1、可以进行端到端模型训练

2、不需要存储中间特征向量用于SVM分类和回归模型训练

3、使用更高效的SPPnet特征提取网络

存在问题:

实时性差:选择性搜索获取候选区域耗时,主要通过贪婪算法合并低级特征超像素,单张图片耗时接近2s,且无法使用GPU加速

Faster R-CNN

使用RPN网络代替Fast RCNN使用的选择性搜索进行候选区域的提取,相当于Faster R-CNN=RPN+Fast RCNN,且RPN和Fast RCNN共享卷积层。

1、多尺度目标:通过RPN网络候选区域,并使用不同大小和长宽比的anchors来解决多尺度问题

2、通过计算anchors与真实框的交并比IOU,并通过阈值建立正负样本

  • 3、样本不平衡:每批次随机采样256个anchors进行边框回归训练,并尽可能保证正负样本数相同,避免负样本过多导致的梯度统治问题

论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

https://arxiv.org/abs/1506.01497

多阶段目标检测算法

Cascade R-CNN

通过分析Faster RCNN在目标候选区域的位置修正能力, 如下图基于单个检测器的可优化性但优化的程度有限,通过多次将预测区域作为候选区域进行修正,使得输出的预测区域与真实标签区域的IOU逐级递增

主要优点:

1、准确性:碾压各种单双阶段目标检测算法,采用RoIAlign取代RoIPooling

2、多尺度:通过FPN网络集成多尺度特征图,利用归一化尺度偏差方法缓解不同尺度对Loss的影响程度

3、实时性:去除了Fater RCNN的全连接层,取而代之采用FCN网络,相比Fater RCNN,具有更少的模型参数和计算时间

主要不足:

单阶段目标检测算法

编码方式

1、基于中心坐标

方案1

通过计算IOU或者长宽比阈值筛选每个anchor位置对应的target,可能过滤比较极端的target,但缓解目标重叠情况下的编码重叠问题

通过对应anchor找到中心坐标位置(x,y)

方案2

通过iou最大值计算每个target对应的anchor位置,保证每个target至少对应一个,目标少的情况下但容易造成目标稀疏编码,

通过对应target找到中心坐标位置(x,y),YOLOv5中通过中心坐标结合四舍五入进行多中心坐标映射缓解目标稀疏问题

方案3

同时利用方案1和方案2,保证每个target至少对应一个anchor区域

YOLOv1

虽然是单阶段目标检测开山之作,但真正的鼻祖应该是Faster RCNN的RPN

主要优点:

1、快

2、采用全局特征进行推理,由于利用全局上下文信息,相比于滑动窗口和建议框方法,对背景的判断更准确

3、泛化性,训练好的模型在新的领域或者不期望的输入情况下依然具有较好的效果

主要不足:

1、准确性:与Faster RCNN相比,correcct反映了YOLOv1准确率较低,background反映了召回率较高,但总体性能F1较低,虽然loss采用长宽平方根进行回归,试图降低大目标对loss的主导地位,但小目标的微小偏差对IOU的影响更严重,导致小目标定位不准

2、目标重叠:虽然通过每个S*S的网格点设置了2个预测框用于回归训练,但是每个网格点设置了一种类别,无法解决不同类别目标重叠率较大,导致映射到相同网格点上的问题

3、多尺度:由于模型只是简单使用下采样获得的粗糙特征,很难将其推广到具有新的或不同寻常的宽高比或配置的对象

4、实时性:虽然与Faster RCNN相比,速度很快,但还可以更快,主要是由于v1中使用了全连接网络,不是全卷积网络

全连接层参数=7x7x1024x4096+4096X7x7x30=2x10^8

SSD

通过使用FCN全卷积神经网络,并利用不同尺度的特征图进行目标检测,在速度和精度都得到了极大提升

主要优点

1、实时性:相比YOlOv1更快,因为去除了全连接层

2、标签方案:通过预测类别置信度和相对固定尺度集合的先验框的偏差,能够有效均衡不同尺度对loss的影响程度

3、多尺度:通过使用多个特征图和对应不同尺度的锚框进行多尺度目标预测

4、数据增强:通过随机裁剪的方式进行数据增强提高模型的鲁棒性

4、样本不平衡:通过困难样本挖掘,采用负样本中置信度最高的先验框进行训练,并设置正负样本比例为1:3,使得模型训练收敛更快

主要不足

1、通过人工先验设置的不同尺度的锚框无法适应真实的目标框的尺度分布

2、使用的多个特征图由于高分辨率的特征图不能有效地结合高层特征

YOLOv2

针对YOLOv1在解决多尺度和实时性方面的不足,提出了YOLOv2

主要优点:

1、更好,1)Batch Normalization:使得性能极大提升;2)Higher Resolution Classifier:使预训练分类任务分辨率与目标检测的分辨率一致;3)Convolutional With Anchor Boxes:使用全卷积神经网络预测偏差,而非具体的坐标,模型更容易收敛;4)Dimension Clusters:通过聚类算法设置锚框的尺度,获得更好的先验框,缓解了不同尺度对loss的影响变化;5)Fine-Grained Features:通过简单相加融合了低层的图像特征;6)Multi-Scale Training:通过使用全卷积网络使得模型支持多种尺度图像的输入并轮流进行训练

2、更快,构建Darknet-19代替VGG-16作为backbone具有更好的性能

主要不足

1、多尺度:在模型维度只是简单融合底层特征,在输入维度进行多尺度图像分辨率的输入训练,不能克服模型本身感受野导致的多尺度误差

RetinaNet

论文:Focal Loss for Dense Object Detection

主要优点

1、多尺度:借鉴FPN网络通过自下而上、自上而下的特征提取网络,并通过无代价的横向连接构建增强特征提取网络,利用不同尺度的特征图检测不同大小的目标,利用了底层高分率的特征图有效的提高了模型对小尺度目标的检测精度

2、样本不平衡:引入Focal Loss用于候选框的【类别预测】,克服正负样本不平衡的影响及加大困难样本的权重

主要不足

1、实时性:网络使用ResNet-101作为主干特征提取网络,检测效率略微不足

YOLOv3

论文:YOLOv3: An Incremental Improvement

主要优点

1、实时性:相比RetinaNet,YOLOv3通过牺牲检测精度,使用Darknet主干特征提取网络而不是Resnet101,从而获取更快的检测速度

2、多尺度:相比于YOLOv1-v2,与RetinaNet采用相同的FPN网络作为增强特征提取网络得到更高的检测精度

3、目标重叠:通过使用逻辑回归和二分类交叉熵损失函数进行类别预测,将每个候选框进行多标签分类,解决单个检测框可能同时包含多个目标的可能

主要不足

1、准确率:主要因为Darknet的特征提取不够强,未进行精细化结构模型设计

YOLOv4

论文:YOLOv4: Optimal Speed and Accuracy of Object Detection

鉴于YOLOv3的缺点,YOLOv5进行了Darknet53主干特征提取网络等一系列改进

主要优点

1、实时性:借鉴CSPNet网络结构将Darknet53改进为CSPDarknet53使模型参数和计算时间更短

2、多尺度:颈部分别引入PAN和SPP网络结构作为增强特征提取网络,能够有效多尺度特征,相比于引入FPN网络准确度更高

3、数据增强:引入Mosaic数据增强,在使用BN的时候可以有效降低batch_size的影响

4、模型训练,采用IOU:GIoU,DIoU,CIoU作为目标框的回归,与YOLOv3使用的平方差损失相比具有更高的检测精度

YOLOv5

为了进一步提升YOLOv4的检测速度,YOLOv5采用了更轻量的网络结构

主要优点

1、多尺度:使用FPN增强特征提取网络代替PAN,使模型更简单,速度更快

2、目标重叠:使用四舍五入的方法进行临近位置查找,使目标映射到周围的多个中心网格点

主要不足

1、通过长宽比筛选并过滤了大小和长宽比较极端的真实目标框,而这些恰恰在真实检测任务极为重要,和重点解决的检测问题

-------------------

END

--------------------

我是王博Kings,985AI博士,华为云专家、CSDN博客专家(人工智能领域优质作者)。单个AI开源项目现在已经获得了2100+标星。现在在做AI相关内容,欢迎一起交流学习、生活各方面的问题,一起加油进步!

我们微信交流群涵盖以下方向(但并不局限于以下内容):人工智能,计算机视觉,自然语言处理,目标检测,语义分割,自动驾驶,GAN,强化学习,SLAM,人脸检测,最新算法,最新论文,OpenCV,TensorFlow,PyTorch,开源框架,学习方法...

这是我的私人微信,位置有限,一起进步!

王博的公众号,欢迎关注,干货多多

王博Kings的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(上)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(下)

博士笔记 | 周志华《机器学习》手推笔记第九章聚类

博士笔记 | 周志华《机器学习》手推笔记第十章降维与度量学习

博士笔记 | 周志华《机器学习》手推笔记第十一章稀疏学习

博士笔记 | 周志华《机器学习》手推笔记第十二章计算学习理论

博士笔记 | 周志华《机器学习》手推笔记第十三章半监督学习

博士笔记 | 周志华《机器学习》手推笔记第十四章概率图模型

点分享

点收藏

点点赞

点在看

干货|基于深度学习的目标检测算法面试必备(RCNN~YOLOv5)相关推荐

  1. 基于深度学习的目标检测算法综述(从R-CNN到Mask R-CNN)

    深度学习目标检测模型全面综述:Faster R-CNN.R-FCN和SSD 从RCNN到SSD,这应该是最全的一份目标检测算法盘点 基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述 ...

  2. 综述 | 基于深度学习的目标检测算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 导读:目标检测(Object Det ...

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

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

  4. 基于深度学习的目标检测算法综述(一)

    基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述(二) 基于深度学习的目标检测算法综述(三) 本文内容原创,作者:美图云视觉技术部 检测团队,转载请注明出处 目标检测(Object ...

  5. 基于深度学习的目标检测算法综述(二)

    转自:https://zhuanlan.zhihu.com/p/40020809 基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述(二) 基于深度学习的目标检测算法综述(三) 本文 ...

  6. 学习笔记之——基于深度学习的目标检测算法

    国庆假期闲来无事~又正好打算入门基于深度学习的视觉检测领域,就利用这个时间来写一份学习的博文~本博文主要是本人的学习笔记与调研报告(不涉及商业用途),博文的部分来自我团队的几位成员的调研报告(由于隐私 ...

  7. 基于深度学习的目标检测算法思维导图

    在计算机视觉领域,目标检测一直是一种处于非常火热 的状态,尤其是卷积神经网络CNN出现后,出现了各种基于CNN的目标检测算法,在此根据所看到或者所了解的论文进行个人汇总,以思维导图的模式进行记录整理, ...

  8. AI综述专栏 | 基于深度学习的目标检测算法综述

    https://www.toutiao.com/a6685618909275488780/ 2019-04-30 17:35:53 关注微信公众号:人工智能前沿讲习, 重磅干货,第一时间送达 AI综述 ...

  9. 基于深度学习的目标检测算法综述

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 导言 目 ...

最新文章

  1. 16张思维导图+学习路线图,囊括所有Python基础,可打印
  2. group by的查询
  3. python待遇如何-老男孩学Python后就业如何?Python待遇高吗?
  4. c# socket接收字符串_Python高级编程之 Socket 编程
  5. java最好的开发工具_IntelliJ IDEA Ultimate Edition 2018 最好的 Java 开发工具
  6. Git撤销文件的修改(git checkout -- file)(git reset HEAD file)(git reset HEAD~)
  7. 字符串 读取西门子_【必学技能】自己动手——基于C#实现手机APP远程访问西门子PLC...
  8. Uncaught TypeError: Illegal invocation问题解决方法
  9. js判断字符串是否在数组中
  10. 单片机外设篇——SPI协议
  11. 日常搜集的勒索病毒解密工具的汇总
  12. java 以2为底的对数_Java对数函数及Java对数运算
  13. 【SPIE独立出版∣IEEE Fellow特邀主讲】人工智能、网络等多主题征稿
  14. 连接共享服务器显示拒绝访问权限,无权限访问共享打印机,windows无法连接到打印机拒绝访问 怎么办?...
  15. 木马专杀软件测试自学,5款免费杀软“紫狐”木马查杀测试
  16. 装配uwsgi和nginx rabbitMQ
  17. mtk blog --MTK Android 之MT6577驱动笔记
  18. [数独进阶技巧]区块摒除法
  19. 基于python机票预定系统_机票预订系统课程设计.doc
  20. 带你了解跨站请求伪造(CSRF),具体代码实现

热门文章

  1. python安装时没有选path怎么办,环境变量是个啥? 没有勾选Add to Path怎么办?
  2. java混淆工具对比,java-混淆如何在另一个类中键入比较器
  3. python的变量在使用之前是否要进行声明_python – 如何在使用之前测试变量是否已初始化?...
  4. android程序怎么导出数据库,将android程序中的数据库导出到SD卡
  5. git新建空白文件没有生效
  6. Hibernate多表查询重新封装实体
  7. easyswoole事务mysql_easyswoole ORM 事务操作管理
  8. 用计算机转换层次的例子,两类层次分析法的转换及在应用中的比较-计算机工程与应用.PDF...
  9. Git学习(1)-本地版本库的创建
  10. jquery 全选获取值