YOLOv1 核心知识点笔记

核心概述

  1. 论文名称:You Only Look Once: Unified, Real-Time Object Detection
  2. 核心创新:将目标检测重构为单阶段回归问题,单一卷积网络直接输出边界框坐标+类概率,端到端训练,实时性拉满
  3. 核心优势:速度快(基础版45FPS、Fast YOLO155FPS)、背景假阳性低、泛化能力强;不足:小目标检测差、定位误差较高
  4. 适用数据集:PASCAL VOC2007/2012(20类),输入尺寸固定为448×448

一、核心网络设计(论文2.1节)

1. 核心参数(固定)

S=7S=7S=7(图像划分为7×7网格)、B=2B=2B=2(每个网格预测2个边界框)、C=20C=20C=20(VOC20类别)

2. 输出张量

7×7×307×7×307×7×30(30=B×5+C30=B×5+C30=B×5+C,5为每个框的x/y/w/h/置信度,20为类概率)

3. 网络结构

  • 基础版:24个卷积层(1×1降维+3×3卷积堆叠)+2个全连接层,基于Darknet框架
  • Fast YOLO:9个卷积层,更少滤波器,速度更快、精度略降
  • 激活函数:除最后一层线性激活 ,其余均为带泄漏ReLU (ϕ(x)=x(x>0),0.1x(x≤0)\phi(x)=x(x>0), 0.1x(x≤0)ϕ(x)=x(x>0),0.1x(x≤0))

4. 训练预处理

先在ImageNet上用224×224预训练前20个卷积层,再微调至448×448,添加4个卷积+2个全连接层

二、边界框坐标映射(核心!推理后处理)

1. 输出值定义(网络输出为相对值,范围0~1)

  • bx/bybx/bybx/by:边界框中心相对于所在网格左上角的偏移量
  • bw/bhbw/bhbw/bh:边界框宽高相对于整张图像的比例
  • 置信度:Pr(Object)∗IOUpredtruthPr(Object)*IOU_{pred}^{truth}Pr(Object)∗IOUpredtruth,无目标为0,有目标为预测框与真实框的IOU

2. 映射公式(转原图绝对像素坐标)

设:原图宽imgwimg_wimgw、高imghimg_himgh;网格宽gridw=imgw/Sgrid_w=img_w/Sgridw=imgw/S、网格高gridh=imgh/Sgrid_h=img_h/Sgridh=imgh/S;目标网格为第iii行、第jjj列

  1. 框中心绝对坐标:centerx=(j+bx)∗gridwcenter_x=(j+bx)*grid_wcenterx=(j+bx)∗gridw、centery=(i+by)∗gridhcenter_y=(i+by)*grid_hcentery=(i+by)∗gridh
  2. 框宽高绝对像素:width=bw∗imgwwidth=bw*img_wwidth=bw∗imgw、height=bh∗imghheight=bh*img_hheight=bh∗imgh
  3. 可视化坐标转换:x1=centerx−width/2x1=center_x-width/2x1=centerx−width/2、y1=centery−height/2y1=center_y-height/2y1=centery−height/2、x2=centerx+width/2x2=center_x+width/2x2=centerx+width/2、y2=centery+height/2y2=center_y+height/2y2=centery+height/2(需限制0~img_w/img_h)

3. 关键后处理

非极大值抑制(NMS):IOU阈值0.3,消除同一目标的重复检测框,可提升23% mAP

三、损失函数(论文2.2节,多部分加权损失)

1. 设计痛点解决

  • 类别不平衡:用λcoord=5\lambda_{coord}=5λcoord=5(提升坐标损失权重)、λnoobj=0.5\lambda_{noobj}=0.5λnoobj=0.5(降低无目标置信度损失权重)
  • 尺度敏感性:预测w/h\sqrt{w}/\sqrt{h}w /h 而非w/h,缓解小框误差对IOU的影响
  • 多框分配:每个网格仅让与真实框IOU最高的边界框负责检测,实现框的专门化

2. 损失函数公式(核心五部分)

Loss=λcoord∑∑1ijobj[(x−x^)2+(y−y^)2]+λcoord∑∑1ijobj[(w−w^)2+(h−h^)2]+∑∑1ijobj(C−C^)2+λnoobj∑∑1ijnoobj(C−C^)2+∑1iobj∑c(p(c)−p^(c))2 \begin{aligned} Loss&= \lambda_{coord} \sum\sum \mathbb{1}{ij}^{obj}[(x-\hat{x})^2+(y-\hat{y})^2] \\ &+ \lambda{coord} \sum\sum \mathbb{1}{ij}^{obj}[(\sqrt{w}-\sqrt{\hat{w}})^2+(\sqrt{h}-\sqrt{\hat{h}})^2] \\ &+ \sum\sum \mathbb{1}{ij}^{obj}(C-\hat{C})^2 \\ &+ \lambda_{noobj} \sum\sum \mathbb{1}_{ij}^{noobj}(C-\hat{C})^2 \\ &+ \sum \mathbb{1}i^{obj} \sum{c}(p(c)-\hat{p}(c))^2 \end{aligned} Loss=λcoord∑∑1ijobj[(x−x^)2+(y−y^)2]+λcoord∑∑1ijobj[(w −w^ )2+(h −h^ )2]+∑∑1ijobj(C−C^)2+λnoobj∑∑1ijnoobj(C−C^)2+∑1iobjc∑(p(c)−p^(c))2

  • 1ijobj\mathbb{1}_{ij}^{obj}1ijobj:网格i的第j个框是否负责检测目标(是为1,否为0)
  • 1ijnoobj\mathbb{1}_{ij}^{noobj}1ijnoobj:网格i的第j个框是否无目标(是为1,否为0)
  • 仅对有目标的网格 计算类概率损失,仅对负责的框计算坐标损失

四、mAP计算(论文核心评估指标,VOC2007标准)

1. 核心前提

  • IOU阈值:0.5(检测框与真实框IOU≥0.5为有效匹配)
  • 评估逻辑:先算单个类别AP ,再对20类AP取算术平均得mAP
  • 排序规则:同一类别检测框按置信度从高到低排序

2. 基础指标定义(目标检测仅统计TP/FP)

  • TP(真阳性):类别正确+IOU≥0.5+匹配未被匹配过的真实框
  • FP(假阳性):类别错误/IOU<0.5/匹配已被匹配的真实框/无对应真实框
  • 召回率:Recall=TP/GTtotalRecall=TP/GT_{total}Recall=TP/GTtotal(真实框中被检测出的比例,单调不减)
  • 精确率:Precision=TP/(TP+FP)Precision=TP/(TP+FP)Precision=TP/(TP+FP)(检测结果中正确的比例,单调不增)

3. 11点插值法计算AP(YOLOv1采用,VOC经典方法)

  1. 对排序后的检测框统计累计TP/FP,计算Recall、Precision数组
  2. 取召回率11个等距阈值:t∈[0,0.1,0.2,...,1.0]t∈[0,0.1,0.2,...,1.0]t∈[0,0.1,0.2,...,1.0]
  3. 对每个t,取Recall≥t时的最大Precision作为该点插值值
  4. AP=1/11×∑AP=1/11 × \sumAP=1/11×∑ 11个插值值

4. 最终mAP

mAP=(∑i=120APi)/20mAP=(\sum_{i=1}^{20}AP_i)/20mAP=(∑i=120APi)/20(YOLOv1在VOC2007上mAP=63.4%,Fast YOLO=52.7%)

五、关键实验结果(论文4节)

1. 速度&精度对比(VOC2007,Titan X GPU)

模型 mAP FPS
YOLOv1 63.4% 45
Fast YOLO 52.7% 155
Faster R-CNN VGG16 73.2% 7

2. 误差分析(与Fast R-CNN对比)

  • YOLOv1:主要误差为**定位误差(19%)**,背景假阳性低(4.75%)
  • Fast R-CNN:定位误差低(8.6%),背景假阳性高(13.6%)

3. 模型融合

YOLOv1+Fast R-CNN可将Fast R-CNN的mAP从71.8%提升至75.0%,利用YOLO低背景假阳性优势优化

4. 泛化能力

在艺术作品(毕加索数据集/People-Art)的行人检测中,性能衰减远小于R-CNN/DPM,因学习了目标的尺寸/形状/空间关系通用特征

六、代码资源&关键文件

1. 官方代码(Darknet框架,C/CUDA)

仓库地址:https://github.com/pjreddie/darknet

关键文件:

  • cfg/yolo.cfg:YOLOv1网络配置(7×7×30输出)
  • src/yolo_layer.c:边界框解码/坐标映射
  • src/loss.c:多部分损失函数实现
  • scripts/voc_label.py:VOC数据集格式转换
  • 预训练权重:yolo-voc.weights(VOC2007+2012)、fast-yolo-voc.weights

2. Python复现(易调试,PyTorch)

仓库地址:https://github.com/ayooshkathuria/pytorch-yolo-v1

包含完整的网络实现、mAP计算、VOC数据集加载,直接适配论文实验

七、核心局限性(论文2.4节)

  1. 空间约束:7×7网格+每个网格1个类别,无法检测密集小目标(如鸟群)
  2. 尺度泛化差:难以适应未见过的目标宽高比/形态
  3. 特征粒度粗:多次下采样,依赖低粒度特征,定位精度有限
  4. 损失函数:平方和误差对大小框误差同等加权,小框微小偏差影响更大
相关推荐
半壶清水3 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
tq10863 小时前
先探索,后设计
笔记
hnult3 小时前
2026 在线培训考试系统选型指南:核心功能拆解与选型逻辑
人工智能·笔记·课程设计
AI视觉网奇4 小时前
ue 角色驱动衣服 绑定衣服
笔记·学习·ue5
三水不滴4 小时前
计网ping原理
经验分享·笔记·计算机网络
prog_61034 小时前
【笔记】思路分享:各种大模型免费当agent后台
笔记·大语言模型·agent·cursor
凯尔萨厮5 小时前
Maven(Windows下载安装)
笔记·maven
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
菩提小狗6 小时前
小迪安全2023-2024|第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记|web安全|渗透测试|
笔记·安全·web安全