当前位置: 首页 > news >正文

深度学习------YOLOV1和YOLOV2

目录

一、YOLOv1:用 "网格回归" 重新定义实时检测

1. 核心逻辑:让每个网格 "各司其职"

2. 损失函数:给不同误差 "分权重"

3. 优点与遗憾:速度快但精度有短板

二、YOLOv2:从 "能用" 到 "好用" 的十大改进

1. 锚框 + K-Means:让框预测更精准

2. Batch Normalization:训练稳了,精度高了

3. 细粒度特征 + 多尺度训练:拯救小目标检测

4. Darknet-19:更快的特征提取 backbone

三、新手通关清单:从 v1 到 v2 的核心启示


YOLO 进化史入门:从 v1 到 v2 的核心改进,新手也能看懂的实战拆解

      今天总算把 YOLO 系列的 "开山之作" 和 "进阶版" 捋明白了 —— 从 v1 打破传统检测范式,到 v2 针对性补短板,每一步改进都藏着深度学习落地的思考。结合自己整理的笔记和实操感悟,把这两个版本的核心逻辑拆解开,新手入门应该能少绕些弯路。

一、YOLOv1:用 "网格回归" 重新定义实时检测

      在 YOLOv1 出现前,目标检测大多是 "先找候选框再分类" 的两阶段模式,速度慢得让人着急。而 v1 最颠覆的地方,是把检测变成了端到端的网格回归任务,一张图过一次网络就出结果,这才有了 "实时检测" 的突破。

1. 核心逻辑:让每个网格 "各司其职"

      v1 的思路特别直观:把输入图像缩成 448×448,再均匀切成 7×7=49 个网格。如果某个目标的中心落在哪个网格里,这个网格就 "负责" 预测它的位置和类别。

每个网格要输出两组关键信息:

  • 2 个边界框:每个框包含 (x,y,w,h,c) 5 个参数 ——x、y 是框中心相对于网格左上角的偏移量(0~1 之间,确保中心在网格内),w、h 是框宽高相对于整幅图的比例,c 是置信度(既表示有目标的概率,也反映框和真实目标的重合度)。
  • 20 个类别概率:对应 VOC 数据集的 20 类物体,只有网格内有目标时这组概率才有意义。

      最终输出的是 7×7×30 的张量(30=2 个框 ×5 个参数 + 20 类概率),这个维度设计就是 v1 实现 "单步检测" 的核心载体。我刚开始算这个维度时愣了一下,后来画了张网格图才想通:每个网格的 30 个数值都有明确分工,难怪能一次出结果。

2. 损失函数:给不同误差 "分权重"

v1 用均方误差做损失,但没简单一刀切,而是通过权重平衡了三类误差:

  • 定位误差权重设为 5:毕竟检测的核心是 "找对位置",小目标的位置偏差影响更大,所以对 w 和 h 做了平方根处理 —— 比如大框宽差 10 像素影响不大,小框差 10 像素就全错了,平方根能放大这种差异。
  • 无目标的置信度误差权重设为 0.5:避免背景网格的大量误差掩盖了有目标区域的学习信号。
  • 类别误差权重设为 1:保证分类精度不被其他误差压制。

这种设计让模型知道 "该优先学好什么",但用均方误差做分类还是有局限,这也是 v2 要优化的点之一。

3. 优点与遗憾:速度快但精度有短板

v1 的优势很突出:标准版本能跑 45 FPS,精简版甚至到 155 FPS,完全满足实时需求;而且全局看图的方式减少了背景误检,泛化能力比同期算法强。

但实操中问题也明显:每个网格最多只预测 2 个框,遇到鸟群这类密集小目标就会漏检;定位精度不够,尤其是大目标的边界框容易偏;对不常见长宽比的目标适配性差。这些遗憾刚好成了 v2 的改进方向。

二、YOLOv2:从 "能用" 到 "好用" 的十大改进

      v2 的论文标题直接点明目标 ——"Better, Faster, Stronger",它没有推翻 v1 的框架,而是针对性补短板,把精度和速度的平衡做得更极致。我挑几个最关键的改进点拆解,都是新手必须吃透的核心。

1. 锚框 + K-Means:让框预测更精准

      v1 的框是直接回归出来的,对不同形状目标适配差。v2 借鉴了 Faster R-CNN 的锚框思路,但没手动设尺寸,而是用K-Means 聚类从训练数据的真实框里自动学。

具体来说:

  • 用 "1-IoU" 做距离 metric,避免大框小框的聚类偏差;
  • 在 VOC 数据集聚出 5 种长宽比,COCO 数据集聚出 9 种,刚好覆盖常见目标形状;
  • 每个网格预测 9 个锚框,输出张量变成 13×13×(9×25)(25=5 个框参数 + 20 类概率),预测框数量从 98 个暴涨到 1521 个,召回率直接从 81% 提到 88%。

      我试算过这个提升:同样一张有 3 只猫的图,v1 可能漏检 1 只,v2 因为锚框多,总能有几个框刚好框住目标,这个改进真的直击痛点。

2. Batch Normalization:训练稳了,精度高了

      v1 用 Dropout 防过拟合但会丢特征,v2 在所有卷积层后加了 BN 层,直接解决了梯度消失问题,收敛速度快了 3 倍,还不用 Dropout 也能防过拟合,单这一项就提了 2% 的 mAP。

      这点在实操中感受特明显:之前跑 v1 简化版时,损失曲线总 "上蹿下跳",加了 BN 层后直接变得平滑,训练稳定性肉眼可见地提升。

3. 细粒度特征 + 多尺度训练:拯救小目标检测

v1 对小目标不敏感,因为下采样次数多,细节特征丢了。v2 用了两个办法解决:

  • 加 Passthrough 层:把浅层高分辨率特征(26×26)和深层特征(13×13)拼接,让模型能捕捉到小目标的细节;
  • 多尺度训练:训练时每隔 10 个 epoch 随机换输入尺寸(320×320 到 608×608),模型被迫适应不同大小的目标,泛化能力直接拉满。

      我用 320×320 和 608×608 两种尺寸测过同一张图,608 尺寸下连图角落里的小飞鸟都能检测到,效果差异特别直观。

4. Darknet-19:更快的特征提取 backbone

      v1 的网络借鉴 GoogLeNet,结构有点冗余。v2 专门设计了 Darknet-19 作为骨干网络,用 "1×1 卷积降维 + 3×3 卷积提特征" 的组合,参数量比 GoogLeNet 少 1/3,计算量降 40%,但特征提取能力一点没弱。

简单说就是 "轻量化但高效",在普通笔记本上跑 v2 也能保持 40 FPS 以上,这才有了后续工程落地的可能。

三、新手通关清单:从 v1 到 v2 的核心启示

      今天梳理完才发现,YOLO 的迭代逻辑特别适合入门深度学习 ——v1 搭好框架讲清 "为什么可行",v2 填坑优化讲清 "怎么做得更好"。给同样刚入门的朋友列个重点清单:

  1. 先吃透 v1 的 "网格回归" 核心:7×7 网格的分工、30 维输出的含义、损失函数的权重设计,这是理解所有 YOLO 版本的基础;
  2. 记住 v2 的 "改进逻辑":锚框解决定位不准,K-Means 解决手动调参,BN 解决训练不稳,多尺度解决小目标漏检,每步改进都对应明确的问题;
  3. 动手算一算关键数据:比如 v1 到 v2 的预测框数量变化、Darknet-19 的参数量优势,比光看理论记得牢。

      下一步打算跑一遍 v2 的简化版代码,看看这些改进在实际训练中到底能提多少精度。如果有同样在啃 YOLO 的朋友,欢迎交流代码里踩的坑呀~

http://www.dtcms.com/a/490495.html

相关文章:

  • 最小二乘问题详解5:非线性最小二乘求解实例
  • 算法入门数学基础
  • 错误边界:用componentDidCatch筑起React崩溃防火墙
  • 网站备案提交管局原创软文
  • 成都比较好的网站建设公司视频制作和剪辑软件
  • 如何从电脑上卸载安卓应用程序
  • 每日手撕算法--哈希映射/链表存储数求和
  • k8s的pvc和pv
  • RK3562核心板/开发板RT-Linux系统实时性及硬件中断延迟测试
  • node.js把webp,gif格式图片转换成jpg格式图片
  • 不能识别adb/usb口记录
  • SpringBoot-常用注解
  • 支付商城网站制作软件开发报价表
  • wordpress类似的平台快速优化排名公司推荐
  • Git 基础操作指南
  • 网站给部分文字做遮挡代码wordpress主题仿逛丢
  • 【bug】大模型微调bug:OSError: Failed to load tokenizer.| Lora
  • 视频生成的背后机理:Wan2技术报告分析
  • 有什么做衣服的网站吗天津市建筑信息平台
  • HTB BoardLight writeup(enlightenment 0.23.1 exploit)
  • 唐山网站搭建平台制作计划
  • 智能体面试题:ReAct框架 是什么
  • 泰山派rk3566 wifi基础知识
  • 【无标题】大模型-AIGC技术在文本生成与音频生成领域的应用
  • 渗透测试(2):不安全配置、敏感明文传输、未授权访问
  • 有记事本做简易网站深圳网站设计x程序
  • AI教育开启新篇章
  • 使用bert-base-chinese中文预训练模型,使用 lansinuote/ChnSentiCorp 中文网购评价数据集进行情感分类微调和训练。
  • 国内做设计的网站做视频素材哪个网站好
  • WebGIS包括哪些技术栈?