YOLOv1网络结构
YOLOv1(You Only Look Once v1)是一种经典的One-Stage目标检测模型,由Joseph Redmon等人在2016年提出。YOLOv1的核心思想是将目标检测视为单次回归问题:给定一张输入图片,网络直接预测目标的类别和边界框的位置。
网络结构概览
1. 基本网络结构
YOLOv1 的主干网络借鉴了经典的GoogLeNet(Inception v1)结构,但为了减少复杂度,去除了Inception模块,变成了一种精简版的卷积神经网络。
结构:24个卷积层 + 2个全连接层
- 前20层:用于特征提取(卷积和池化层交替)。
- 最后4层:主要是卷积层和两个全连接层,负责回归边界框和预测类别。
2. 网络结构表
| 层数 | 层类型 | 滤波器数量 | 滤波器大小/步长 | 输入大小 | 输出大小 |
|---|---|---|---|---|---|
| 1 | 卷积 | 64 | 7 × 7 / 2 | 448 × 448 × 3 | 224 × 224 × 64 |
| 2 | 最大池化 | - | 2 × 2 / 2 | 224 × 224 × 64 | 112 × 112 × 64 |
| 3 | 卷积 | 192 | 3 × 3 / 1 | 112 × 112 × 64 | 112 × 112 × 192 |
| 4 | 最大池化 | - | 2 × 2 / 2 | 112 × 112 × 192 | 56 × 56 × 192 |
| 5-8 | 卷积 | 128 / 256 / 256 / 512 | 3 × 3 / 1 | 56 × 56 × 192 | 56 × 56 × 512 |
| 9 | 最大池化 | - | 2 × 2 / 2 | 56 × 56 × 512 | 28 × 28 × 512 |
| 10-16 | 卷积 | 多通道 (512-1024) | 3 × 3 / 1 | 28 × 28 × 512 | 14 × 14 × 1024 |
| 17 | 最大池化 | - | 2 × 2 / 2 | 14 × 14 × 1024 | 7 × 7 × 1024 |
| 18-20 | 卷积 | 1024 | 3 × 3 / 1 | 7 × 7 × 1024 | 7 × 7 × 1024 |
| 21 | 全连接 | - | - | 7 × 7 × 1024 | 4096 |
| 22 | 全连接 | - | - | 4096 | 1470 (7×7×30) |
3. YOLOv1的输出设计
- 图片网格划分:YOLOv1将输入图片划分为S × S个网格(S = 7)。
- 每个网格:
- 预测2个边界框(每个框包含5个参数:
(x, y, w, h, confidence))。 - 预测C个类别的概率分布。
- 预测2个边界框(每个框包含5个参数:
输出向量大小:
- 对于一个输入图片:网络会输出一个大小为
(S × S × (B * 5 + C))的张量,其中:- S:7(即7 × 7网格)
- B:2(每个网格预测2个边界框)
- C:20(COCO数据集的20个类别)
最终输出张量大小:7 × 7 × 30。
- 30 = 2 * 5(边界框) + 20(类别概率)
4. YOLOv1的损失函数
YOLOv1使用一个多任务损失函数,包括三部分:
- 边界框回归损失:用于预测框的坐标
(x, y, w, h)。 - 置信度损失:用于衡量预测框内是否有物体。
- 分类损失:用于预测目标的类别。
损失公式:

5. YOLOv1的优势与不足
优势:
- 速度快:YOLOv1的检测速度极高,可以实现实时检测(45 FPS)。
- 端到端检测:不需要像R-CNN那样的候选框生成步骤。
不足:
- 小目标检测效果不佳:因为每个网格只能预测有限的目标,导致小目标可能被忽略。
- 定位精度偏低:由于每个网格只能预测固定数量的框,容易导致框重叠或位置偏差。
6. 总结
YOLOv1的创新在于将目标检测简化为一个单阶段的回归任务,极大地提升了检测速度。然而,由于它的结构设计存在局限性(如对小目标的检测性能较差),后续版本(YOLOv2、YOLOv3等)对其做了很多改进,比如更好的网络结构和损失函数设计。
1487

被折叠的 条评论
为什么被折叠?



