一.诞生背景
在 YOLOv1 出现之前,目标检测领域主要采用基于 R-CNN、Fast R-CNN 等的两阶段检测算法,这些算法虽然精度较高,但计算复杂、速度慢,难以满足实时检测的需求。
二.核心思想:
将目标检测任务视为一个回归问题,直接在输入图像上划分网格,每个网格单元预测边界框和类别概率,实现端到端的目标检测。可以参考一下图片
三.具体实现方法:
网格划分:将输入图像划分为 S×S 的网格(grid),如果目标的中心落入某个网格单元,则该网格单元负责检测该目标。例如,最初的 YOLOv1 通常将图像划分为 7×7 的网格。
边界框预测:每个网格单元预测 B 个边界框(bounding box)以及这些框的置信度得分。置信度反映了这个框包含物体的概率以及预测框的位置准确性,其定义为预测框与真实框(ground truth)之间的交并比(IoU)。每个边界框需要预测 5 个值,即 x、y、w、h 和 confidence。其中,(x,y) 是框中心相对于网格单元的坐标,w 和 h 是框相对于整幅图的宽和高。
类别预测:每个网格单元还预测物体的条件概率(该物体属于某一类的概率),这些概率以包含对象的网格单元为条件。最终,每个网格单元输出一个概率集合。
四.网络结构:
YOLOv1 的网络结构基于 GoogLeNet 的架构,是与最大池化层交错的级联卷积层,最后以两个全连接层作为输出。它的输入图像分辨率为 448×448,网络主要部分的预训练则是将图像分辨率调整为 224×224 的分类器
五.优点:
速度快:将检测问题转化为回归问题,避免了复杂的候选区域生成和分类器训练过程,大大提高了检测速度,能够实现实时检测。
全局视野:能够基于整幅图像进行预测,看到图像的全貌,因此可以更好地利用图像的上下文信息,减少背景误报,并且在面对新领域或不同类型的数据集时具有较好的泛化能力。