目标检测是计算机视觉中的一个研究热点,在很多领域都有应用需求,例如监控安全、自动驾驶、交通监控和机器人视觉等场景。目标检测一般是检测一些预定义类别的目标实例(例如人和车等)。
传统目标检测依赖精巧的手工特征设计与提取,例如方向梯度直方图(Histogram of Oriented Gradient, HOG)。2012年,基于深度卷积神经网络(Convolutional Neural Network, CNN)的AlexNet以显著优势夺得ImageNet图像识别比赛冠军,从此深度学习开始受到广泛的关注。目标检测也逐步进入深度学习时代。
基于深度学习的目标检测依据检测方式被分为两类:两阶段检测和单阶段检测,前者是一个“从粗到细”的过程;而后者端到端“一步完成”。通常,两阶段检测的定位和目标识别精度较高,单阶段检测速度较快。
通常,单阶段检测尝试直接将每个感兴趣区域分类为背景或目标对象。即只通过一个阶段便可直接给出物体的类别概率和位置坐标值。典型代表有YOLO(You Only Look Once)等。
2015年的YOLOv1直接将图像划分为若干区域,并同时预测每个区域的边界框和概率,检测速度得到极大提高。但与当时的两阶段检测器相比,定位精度有所欠缺,特别是对小目标。
YOLO是一种先进的单阶段目标检测框架,经历了v1~v4的演变,到目前为止已发展到结合传统压缩感知的YOLOR(You Only Learn One Representation)和不依赖锚框的YOLOX。
YOLOv1的基本框架如图1所示,首先调整输入图片大小到448×448,送入CNN提取特征,然后处理网络预测结果,实现端到端的目标检测。
YOLOv1放弃传统的滑动窗口技术,其CNN将输入图片划分成 网格,然后每个单元格负责去检测那些中心点落在该网格内的目标,每个单元格会预测 个边界框及边界框的置信度。置信度包含该边界框含有目标的可能性大小和该边界框的准确度。每个边界框预测5个元素:(x,y,w,h,c),分别表示边界框的位置、大小与置信度。每个单元格预测(B*5+C)个值,其中C为类别数。之后利用非极大值抑制(Non-Maximum Suppression, NMS)算法进行网络预测。
基于深度学习的YOLO车辆目标检测结果如下图所示。
[1] 邵延华, 张铎, 楚红雨, et al. 基于深度学习的YOLO目标检测综述 [J]. 电子与信息学报, 2022, 44(10): 3697-708.
上述结果由Matlab代码实现,可私信博主获取。
博主简介:研究方向涉及智能图像处理、深度学习、卷积神经网络等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法、程序、科研方面的问题,均可私信交流讨论。