学习周报 Week 6:目标检测
摘要
本周重点学习了深度学习中的目标检测任务,掌握了它的基础原理和常用核心方法。和只能识别图片物体种类的图像分类不同,目标检测不仅要分辨出图片里有什么东西,还要精准找到这个东西在图片中的位置,是实用性更强、难度更高的计算机视觉任务。
这周的学习内容十分全面,主要包括:图像分类、目标定位和目标检测三者的区别,滑动窗口检测方法的基本思路,目标边界框的预测方式、交并比的作用,以及如何用非极大值抑制去除重复检测框、锚框的使用原理,同时了解了YOLO这款主流的目标检测算法。最后简单接触了图像分割的基础内容,理清了目标检测在视觉学习中的作用和后续学习方向。
Abstract
This week, I mainly learned the basic knowledge and core methods of object detection. Different from image classification that only identifies object categories, object detection can not only recognize objects in images but also locate their specific positions. I have mastered basic theories such as sliding window, bounding box prediction, IoU, non-max suppression and anchor boxes, and understood the core idea of the YOLO algorithm. These basic knowledge lay a solid foundation for learning computer vision and subsequent image segmentation tasks.
1 从图像分类到目标检测的任务升级
图像分类是计算机视觉最基础的任务,它的作用很简单,就是看完一整张图片后,判断出图片的主体是什么物体,只需要回答“图里有什么”这个问题。而目标定位是在分类的基础上多了一步,识别出物体种类后,还要标出物体在图片里的位置。
我们本周学的目标检测,是在前两者的基础上进一步升级。它可以同时处理图片里的多个物体,既能分别识别出每个物体的类别,又能给每个物体单独画出位置框。这也意味着它对模型的要求更高,模型不仅要看得懂图片内容、分清物体种类,还要记住物体的空间位置,区分开多个重叠、相邻的物体,避免识别出错。
在自动驾驶、监控识别、工业产品检测这些实际场景中,只知道画面里有什么是不够的。比如自动驾驶不仅要识别出前方有车,还要知道车的具体位置和距离,才能做出避让决策,这也是目标检测被广泛应用的核心原因。
2 滑动窗口算法原理与卷积优化
滑动窗口是早期最基础的目标检测方法,思路特别直白。简单来说,就是用大小不一样的方框,在整张图片上从头到尾、从上到下滑动遍历,把图片分割成无数个小区域,再逐个判断每个小区域里有没有需要检测的目标物体。
虽然这个方法容易理解,但缺点也很明显,就是运行速度很慢。因为想要不漏掉图片里的任何目标,就需要生成大量的窗口逐一检测,计算量非常大,耗时很久,完全满足不了实时检测的需求。
为了改善这个问题,后续引入了卷积运算来优化。利用卷积的特征共享特性,减少重复计算,有效提升了检测速度。但这个优化只是缓解了速度问题,没有从根本上解决窗口过多、冗余计算的问题。不过滑动窗口的思路为后续各类高效检测算法提供了基础,让我们明确了目标检测的核心:就是对图片局部区域进行识别和定位。
3 边界框预测与IoU评价标准
目标检测想要标出物体位置,主要依靠边界框。我们一般通过物体的中心坐标、框的宽度和高度这四个数值,来确定边界框的大小和位置,精准框出目标物体。模型在训练过程中,会不断调整这四个数值,让预测的方框越来越贴合真实物体的轮廓。
为了判断模型预测的方框准不准,我们引入了交并比(IoU)这个评价标准。简单来说,就是对比模型预测的方框和图片真实标注的方框,计算两者重叠的面积占整体合并面积的比例。IoU的数值在0到1之间,数值越接近1,说明预测的方框越精准;数值越小,代表定位偏差越大。
有了IoU这个量化标准,我们就可以直观、客观地评判检测效果,不再只看分类对不对,同时也能衡量物体位置框选的精准度,方便后续优化模型效果。
4 非极大值抑制与锚框机制
4.1 非极大值抑制(NMS)
模型在检测物体时,经常会对同一个物体输出多个位置相近、可信度不同的方框。如果不做处理,最终的检测结果就会密密麻麻全是重复框,看起来混乱且不准确。而非极大值抑制(NMS)就是专门用来清理这些重复方框的后置处理方法。
它的工作流程很简单:首先选出所有方框中可信度最高的一个保留下来,然后删掉和这个方框重叠度过高的其他方框;接着在剩下的方框里继续挑选可信度最高的,重复筛选、删除的步骤,直到所有重复、冗余的方框都被清理干净,最后只保留每个物体最精准的一个检测框。
4.2 锚框(Anchor Boxes)
如果只用固定大小和比例的方框去检测物体,会有很大的局限性。同一片图片区域里,可能同时存在大小、形状完全不同的多个物体,单一的方框很难适配所有情况。锚框机制就是为了解决这个问题诞生的。
锚框的核心思路就是提前设置好多种不同大小、不同长宽比例的参考方框。在检测时,图片的每一个网格位置,都可以依托这些预设锚框,适配各种形状、尺寸的物体,还能检测同一位置的多个目标。这个机制让模型适配性更强,不管是小目标、遮挡目标还是异形目标,都能更好地识别检测。
5 YOLO算法核心思想与优势
YOLO是目前非常热门、实用性极高的单阶段目标检测算法,它最大的特点就是简单高效、端到端检测。和传统分步检测的算法不同,YOLO不需要分步生成候选框、单独判断,而是一次性完成物体分类、位置框选和可信度判断所有任务。
YOLO的核心亮点是网格划分机制,它会把整张图片均匀分成多个小网格,每个网格只负责检测自己区域内的物体,同时预测物体的类别、位置和置信度。这种并行的检测方式大幅减少了计算时间,极大提升了检测速度。
相比于传统算法,YOLO很好地平衡了检测准确率和检测速度,兼顾了效果和效率。它可以满足自动驾驶、实时监控、移动端设备等需要快速响应的场景,也是目前工业落地中最常用的检测算法之一。
6 从检测走向分割
目标检测只能用矩形方框粗略框出物体的整体位置,无法精准区分物体的具体轮廓。而图像分割是比目标检测更精细的视觉任务,它会对图片的每一个像素进行判断,精准勾勒出物体的轮廓边界,识别精度更高。
虽然两者的精度和任务难度不同,但发展方向是一致的,都是让计算机从简单的识别图片内容,升级为精细化理解整个场景。学好目标检测的核心流程,能够为后续学习图像分割、复杂场景理解等更高阶的视觉任务打好基础。
总结
本周系统学习了目标检测的全套基础知识点,清楚地区分了图像分类、目标定位和目标检测的任务差异。目标检测在分类的基础上增加了位置预测,实现了多目标的精准识别与定位。我熟练掌握了滑动窗口、边界框、IoU、非极大值抑制、锚框等基础核心技术,同时理解了YOLO算法兼顾速度与精度的核心优势。
本次学习不仅让我掌握了基础的目标检测原理,加深了对卷积神经网络实际应用的理解,也为后续深入学习图像分割、场景感知、自动驾驶视觉系统等相关内容,搭建了扎实的知识框架。