YOLOv5 模型原理及代码解析

举报
嵌入式视觉 发表于 2023/02/23 15:54:05 2023/02/23
【摘要】 YOLOv5 仅在 YOLOv4 发表一个月之后就公布了,这导致很多人对 YOLOv5 的命名有所质疑,因为相比于它的前代 YOLOv4,它在理论上并没有明显的差异,虽然集成了最近的很多新的创新,但是这些集成点又和 YOLOv4 类似。我个人觉得之所以出现这种命名冲突应该是发布的时候出现了 “撞车”,毕竟 YOLOv4 珠玉在前(早一个月),YOLOv5 也只能命名为 5 了。

五,YOLOv5

YOLOv5 仅在 YOLOv4 发表一个月之后就公布了,这导致很多人对 YOLOv5 的命名有所质疑,因为相比于它的前代 YOLOv4,它在理论上并没有明显的差异,虽然集成了最近的很多新的创新,但是这些集成点又和 YOLOv4 类似。我个人觉得之所以出现这种命名冲突应该是发布的时候出现了 “撞车”,毕竟 YOLOv4 珠玉在前(早一个月),YOLOv5 也只能命名为 5 了。但是,我依然认为 YOLOv5YOLOv4 是不同的,至少在工程上是不同的,它的代码是用 Python(Pytorch) 写的,与 YOLOv4C代码 (基于 darknet 框架)有所不同,所以代码更简单、易懂,也更容易传播。

另外,值得一提的是,YOLOv4 中提出的关键的 Mosaic 数据增强方法,作者之一就是 YOLOv5 的作者 Glenn Jocher。同时,YOLOv5 没有发表任何论文,只是在 github 上开源了代码

5.1,网络架构

通过解析代码仓库中的 .yaml 文件中的结构代码,YOLOv5 模型可以概括为以下几个部分:

  • Backbone: Focus structure, CSP network
  • Neck: SPP block, PANet
  • Head: YOLOv3 head using GIoU-loss

5.2,创新点

5.2.1,自适应anchor

在训练模型时,YOLOv5 会自己学习数据集中的最佳 anchor boxes,而不再需要先离线运行 K-means 算法聚类得到 kanchor box 并修改 head 网络参数。总的来说,YOLOv5 流程简单且自动化了。

5.2.2, 自适应图片缩放

在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。

5.2.3,Focus结构

Focus 结构可以简单理解为将 W × H W\times H 大小的输入图片 4 个像素分别取 1 个(类似于邻近下采样)形成新的图片,这样 1 个通道的输入图片会被划分成 4 个通道,每个通道对应的 WH 尺寸大小都为原来的 1/2,并将这些通道组合在一起。这样就实现了像素信息不丢失的情况下,提高通道数(通道数对计算量影响更小),减少输入图像尺寸,从而大大减少模型计算量。

以 Yolov5s 的结构为例,原始 640x640x3 的图像输入 Focus 结构,采用切片操作,先变成 320×320×12 的特征图,再经过一次 32 个卷积核的卷积操作,最终变成 320×320×32 的特征图。

focus结构示例

5.3,四种网络结构

YOLOv5 通过在网络结构问价 yaml 中设置不同的 depth_multiplewidth_multiple 参数,来创建大小不同的四种 YOLOv5 模型:Yolv5s、Yolv5m、Yolv5l、Yolv5x。

5.4,实验结果

各个版本的 YOLOv5COCO 数据集上和 V100 GPU 平台上的模型精度和速度实验结果曲线如下所示。

yolov5实验结果

参考资料

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。