简 介: 目标检测是计算机视觉的一个重要应用方向,深度神经网络的提出极大地帮助基于视觉的目标检测提高了准确度。自2014年以来,深度神经网络在基于视觉的目标检测中被广泛应用,出现了多种算法。本文分别讨论两阶段和一阶段算法的主要思路、发展过程以及实现效果等,最后结合相关领域的一些成果讨论基于视觉的目标检测未来可能的应用模式。

关键词目标检测神经网络R-CNNYOLO































































两阶段法









目 录
Contents









一阶段法









自动驾驶









总结与展望









参考文献







  神经网络解决计算机视觉中的目标检测问题主要有两阶段和一阶段两种主要思路。两阶段法主要以R-CNN[1]及其后续的改进版本等为代表,一阶段法主要以YOLO[2]及其改进版本为代表。

§01 两阶段法


  两阶段算法的输入是一张原始图片,算法从原始图片中提取出若干候选区(Region Proposal),之后对候选区中的图片进行分类和回归。

  两阶段法的首次提出是Girshick R等人在2014年提出了R-CNN[1],他们给出的算法流程如下图。

▲ 图1.1 R-CNN算法流程

  R-CNN的提取候选区阶段采用的是选择性搜索算法,在输入图像上大约产生2000~3000个候选框。在之后的分类和回归阶段又分为三个部分。首先是利用卷积神经网络(CNN)对候选框提取特征,之后利用SVMCNN提取的特征进行分类,最后利用回归网络对目标的选框(bounding box)进行修正。

  R-CNN将深度神经网络引入了目标检测领域,在VOC 2012数据集上的最好mAPmean average precision)达到了53.3%,相比传统方法提高了超过30%;在GPU上运行时间大约13/[1]R-CNN算法的运行所需时间远达不到实时性的要求。R-CNN提取候选区阶段和分类回归阶段相对独立,产生数千个候选框交由CNN分别提取特征,这个过程中会产生大量的计算。

  2015He K等人提出SPP-net[3],在CNN的最后一个卷积层加入空间金字塔池化(spatial pyramid pooling),使得不同尺寸的输入图像可以在池化后具有相同尺寸的特征向量,适应之后的全连接网络分类。引入SPP层后所有图像候选区可以共享卷积神经网络,从而极大地提高了目标检测的速度——相比R-CNN可提升数十倍,而准确率相当[3]。但是SPP-net中的卷积层参数是无法训练的[4]

▲ 图1.2 算法中的数据增强

  Girshick R随后在2015年提出了一个R-CNN的改进版本——Fast R-CNN[4]。作者在Fast R-CNN中引入了SPP的简化版本——RoI Pooling,并提出了网络端到端的训练算法,实现了所有网络参数的优化。另外作者将分类器和回归网络统一合并到了CNNclassifier部分。卷积网络输出的特征向量输入到两个全连接网络中,分别输出目标类别和bounding box。将分类器由SVM改为softmax后网络mAP略微提升。

  Ren S等人提出了RPNRegion Proposal Network),进一步提高了R-CNN的识别速度[5]RPN是用于产生候选区和对应的目标得分的卷积神经网络,与Fast R-CNN共享卷积层,使得候选区产生几乎不增加额外消耗。引入了RPNFaster R-CNN检测速度已经可以达到5fps

  He K等人2017年在Faster-RCNN的基础上在classifier分支外增加了mask分支,实现了实例分割[6]。在Mask R-CNNRoI Align替换了RoI Pooling,使得分割结果更加精确。
  2019Gkioxari G等人基于Mask R-CNN进一步提出了Mesh R-CNN[7],首次实现了2D目标检测和目标三维重构的融合。Lu X等人提出了Grid R-CNN[8],利用网格定位的方式取代了bounding box回归,使得目标的定位更精确。

§02 一阶段法


  一阶段法是端到端的方法,输入一张图片,网络直接输出bounding box和其中各个类别的可能性。

  一阶段法的提出晚于两阶段法。Redmon J等人在2016年首次提出了YOLO[2]。

▲ 图2.1 YOLOv1算法流程

  整个目标检测过程被视为一个回归问题,各个类别的可能性和bounding box由同一个代价函数评估。不同于两阶段中不同部分需要各自训练,YOLO在训练时整个网络可以一次性训练。YOLO将图片分为若干单元格,每个单元格预测若干bounding box和目标概率,此后所有信息被综合考虑和回归。

  YOLO的目标检测速度非常快,可以达到45fps,其快速版甚至可以达到150fps[2]。因为YOLO是对一张图片整体预测,所以不会被局限在某个小区域内,使得算法的背景误检率很低——而相应的,当同一个单元格内或者整张图片中有大量目标或者有很小的目标时,YOLO漏检率较高。

  Redmon J等在2017年提出了YOLO的改进版YOLOv2[9]。作者在YOLOv2中引入Batch Norm机制,高分辨率分类网络和Anchor Boxes,前两者显著提高了网络识别的准确度,后者提高了网络的召回率。作者设计了Darknet-19网络,在提高网络识别准确度的同时保持了YOLOv2的实时性。另外作者提出了一种分类数据集和目标检测数据集的联合训练方法,并训练出了能检测9000种目标的YOLO9000。在YOLOv2的基础上Shafiee M J等人通过优化网络结构和引入动态适应推理方法,提出了可以在嵌入式系统上实时检测视频中的目标的Fast YOLO[10]。根据他们的实验结果,Fast YOLO可以在Nvidia Jetson TX1嵌入式平台上实现18FPS的实时检测[10]

▲ 图2.2 YOLOx算法

  2018Redmon J等对YOLO进行了进一步改进,优化了网络结构、Bounding Box算法,用多标签分类取代了softmax,形成了YOLOv3[11]YOLOv3相比YOLOv2具有更大的网络规模,这使得它有更高的准确度,但同时仍然保持着很好实时性。

  Bochkovskiy AWang C Y等人在2020年和2021年先后提出了YOLOv4[12]Scaled YOLOv4[13]。深度神经网络中的一些通用方法如CBNPANSAM等被引入进了YOLOv4。作者通过上述通用方法等优化了网络,使得YOLOv4的训练和运行对算力的要求降低,并仍保持了很好的检测准确率和实时性。Scaled YOLOv4中作者提出了创新的网络缩放方法,使得YOLOv4有了不同规模的版本,适合在从云端到嵌入式系统的各种平台部署。

§3 自动驾驶


  目标检测的一个重要应用领域是自动驾驶。自动驾驶中通常用激光雷达感知周围环境的深度信息,用摄像头采集环境的纹理和色彩等。基于视觉的目标检测和雷达探测融合后可以得到更丰富的环境的三维信息。

  视觉和激光融合的目标检测的一种思路是将激光数据作为先验,利用激光雷达采集的点云数据对摄像头视野内的目标进行预分类,根据传感器的标定和转换矩阵产生摄像头图像平面内的Region Proposal,之后由神经网络进行分类和回归。其工作流程类似R-CNNZhao X等人在他们2020年的文章[14]中就采用了这种思路。另外他们还指出,将候选框同时应用在最后三个卷积层内,再将它们分别RoI Pooling的结果加权相加输入分类网络,可以提高网络对小目标的检测能力。

  视觉和激光的另一种融合方式是数据层融合,之后用端到端的方式处理融合后的数据,Huang Z等人的工作[15]就应用了这种思想。

※ 总结与展望 ※


  人工神经网络,特别是深度网络显著提高了基于视觉的目标检测的准确度。各种算法都在追求准确度和实时性的平衡,其中R-CNN等两阶段法的算法准确度较高,而YOLO等一阶段法能保证很强的实时性而准确度略低。深度神经网络虽然识别能力强,但是对算力要求高,所以也有很多学者进行了网络压缩等工作,使得应用神经网络的目标检测算法在嵌入式系统中也能运行,为算法的真正落地应用创造可能性。

▲ 图4.1 算法不同的结构

  另外在自动驾驶领域多传感器融合是重要的发展方向,基于视觉的目标检测算法和激光雷达等传感器数据融合是目标检测的一个发展方向。其融合方式可能是两阶段法的第一阶段由其他传感器数据的处理方法替换,也可以是其他传感器数据的处理算法应用基于视觉的目标检测结果,还可以是在数据层融合其他传感器数据,之后采用端到端的方法做目标检测等。

参考文献

[1] Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2014: 580-587.
[2] Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788.
[3] He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE transactions on pattern analysis and machine intelligence, 2015, 37(9): 1904-1916.
[4] Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
[5] Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[J]. Advances in neural information processing systems, 2015, 28: 91-99.
[6] He K, Gkioxari G, Dollár P, et al. Mask r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2017: 2961-2969.
[7] Gkioxari G, Malik J, Johnson J. Mesh r-cnn[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 9785-9795.
[8] Lu X, Li B, Yue Y, et al. Grid r-cnn[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 7363-7372.
[9] Redmon J, Farhadi A. YOLO9000: better, faster, stronger[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 7263-7271.
[10] Shafiee M J, Chywl B, Li F, et al. Fast YOLO: A fast you only look once system for real-time embedded object detection in video[J]. arXiv preprint arXiv:1709.05943, 2017.
[11] Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
[12] Bochkovskiy A, Wang C Y, Liao H Y M. Yolov4: Optimal speed and accuracy of object detection[J]. arXiv preprint arXiv:2004.10934, 2020.
[13] Wang C Y, Bochkovskiy A, Liao H Y M. Scaled-yolov4: Scaling cross stage partial network[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 13029-13038.
[14] Zhao X, Sun P, Xu Z, et al. Fusion of 3D LIDAR and camera data for object detection in autonomous vehicle applications[J]. IEEE Sensors Journal, 2020, 20(9): 4901-4913.
[15] Huang Z, Lv C, Xing Y, et al. Multi-modal sensor fusion-based deep neural network for end-to-end autonomous driving with scene understanding[J]. IEEE Sensors Journal, 2020, 21(10): 11781-11790.


● 相关图表链接:

  • 图1.1 R-CNN算法流程
  • 图1.2 算法中的数据增强
  • 图2.1 YOLOv1算法流程
  • 图2.2 YOLOx算法
  • 图4.1 算法不同的结构

深度神经网络在基于视觉的目标检测中的应用相关推荐

  1. 基于视觉的目标检测与跟踪

    运动目标的检测和跟踪主要用于获取运动目标的位置.姿态.轨迹等基本运动信息,是理解服务对象或对目标进行控制的前提和基础. 目标检测可看作是目标跟踪的组成部分 , 主要用于对目标状态的初始化 , 目标跟踪 ...

  2. 纯视觉3D目标检测新SOTA!STS:基于Camera的深度估计新方法

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[领域综述]获取自动驾驶全栈近80篇综述论文! 论文链接:https ...

  3. 基于深度学习的高分辨率遥感图像目标检测技术目前的研究现状

    参考   基于深度学习的高分辨率遥感图像目标检测技术目前的研究现状 - 云+社区 - 腾讯云 目录 一.概述 二.通用目标检测方法 1.类不平衡问题 2.复杂背景 3.目标的尺度变化 4.特殊视角 5 ...

  4. 深度卷积神经网络在目标检测中的进展

    作者:travelsea 链接:https://zhuanlan.zhihu.com/p/22045213 来源:知乎 近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高.回顾 ...

  5. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...

  6. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<俄罗斯总统普京对沙特王储摊的"友好摊手"瞬间-东道主俄罗斯5-0完胜沙特>视频段实时检测 导读   ...

  7. 自动驾驶系统进阶与项目实战(三)基于全卷积神经网络的点云三维目标检测和ROS实战

    自动驾驶系统进阶与项目实战(三)基于全卷积神经网络的点云三维目标检测和ROS实战 前面入门系列的文章中我介绍了几种点云三维分割/目标检测模型,在做点云预处理上,有通过球面投射(SqueezeNet)得 ...

  8. 目标检测YOLO实战应用案例100讲-基于深度学习的无人机航拍图像目标检测算法研究与应用

    目录 基于深度学习的无人机航拍图像目标检测算法研究与应用 基于深度学习的目标检测相关知识理论

  9. 目标检测YOLO实战应用案例100讲-基于深度学习的光学遥感图像目标检测及价值评估

    目录 基于深度学习的光学遥感图像目标检测方法研究 传统的目标检测方法

最新文章

  1. php 一行代码解决二维数组去重
  2. 每周学算法/读英文/知识点心得分享 2.25 - 3.1
  3. 2016年6月份学习总结,读书《向着光亮那方》
  4. 客户端相关知识学习(五)之什么是webView
  5. 理解JavaScript继承(二)
  6. 计算机软件侵权责任,对计算机软件侵权行为认定标准
  7. Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.4.4 延迟初始化的bean...
  8. SpringCloud与zuul
  9. 软件_搭建rtsp视频推送环境
  10. 小心!智能音箱正在监听你?| 极客头条
  11. arXiv引用格式转换为已发表会议标准引用格式小工具分享
  12. 已测试:网上大神写的快手极速版脚本,autojs版快手极速版自动脚本下载
  13. QR分解-givens旋转与Householder变换
  14. js制作简易班级抽签程序
  15. digester java_java digester
  16. Axure 安装教程
  17. 关于JS按钮倒计时禁用的小Demo
  18. python剪贴板操作_python操作剪贴板
  19. 脱壳--00.aspack.exe
  20. Android音乐播放器读取歌词.lrc文件乱码问题解决方法

热门文章

  1. Android 开发应该掌握的 Proguard 技巧
  2. [译] JavaScript 中的 CSS:基于组件的样式的未来
  3. linq查询语句转mongodb
  4. Java中Scanner的使用方法
  5. hiernate二级缓存区域
  6. 利用Powershell查询AD中账号属性
  7. Throwable是java.lang包中一个专门用来处理异常的类
  8. 动态SQL语句--mybatis
  9. 系统提供的按钮和图标
  10. 【百度分享】以太网卡TSO技术浅析