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

5月22日复盘-YOLOV5

5月22日复盘

八、YOLOV5

从YOLOV5开始,就进到了工程化阶段了。

项目:

​ https://github.com/ultralytics/yolov5

1. 与YOLOV4对比

  • 大体结构一致
  • 主干网络是C3-Darknet53
  • 网络最开始增加Focus结构
  • Neck也是采用FPN+PAN,但将卷积变成了CSP
  • 预测损失采用GloU损失

2. Focus模块

先分块,后拼接,再卷积

①、640 x 640 x 3的图像输入Focus结构,采用切片操作,先变成320 x 320 x 12的特征图;

②、再经过一次32个卷积核的卷积操作,最终变成320 x 320 x 32的特征图;

③、目的是加速

计算量的计算公式为:
计算量 = 卷积核尺寸 × 输入通道数 × 输出通道数 × 输出尺寸 2 \begin{aligned}&\text{计算量}=\text{卷积核尺寸}\times\text{输入通道数}\times\text{输出通道数}\times\text{输出尺寸}^2\end{aligned} 计算量=卷积核尺寸×输入通道数×输出通道数×输出尺寸2

F L O P s ( c o n v ) = 3 × 3 × 3 × 32 × 320 × 320 = 88473600 F L O P s ( F o c u s ) = 1 × 1 × 12 × 32 × 320 × 320 = 39321600 \mathrm{FLOPs(conv)}=3\times3\times3\times32\times320\times320=88473600 \\ \mathrm{FLOPs(Focus)}=1\times1\times12\times32\times320\times320=39321600 FLOPs(conv)=3×3×3×32×320×320=88473600FLOPs(Focus)=1×1×12×32×320×320=39321600

3. 整体网络结构

整体结构和YOLOV4非常接近。

在这里插入图片描述

3.1 SiLU 激活函数

  • YOLOv5 的 Backbone 和 Neck 模块和 YOLOv4 中大致一样,都采用 CSPDarkNet 和 FPN+PAN 的结构,但是网络中其他部分进行了调整,其中 YOLOv5 使用的激活函数是 SiLU
  • SiLU(x) = x·Sigmoid(x),具备无上界有下届、平滑、非单调的特性

3.2 bottleneck layery

  • Bottleneck 是用于减少参数和计算量的结构,其设计灵感来自于ResNet,结构如下:

    • 1x1卷积:用于减少特征图的通道数
    • 3x3卷积:用于提取特征,后接一个 Batch Normalization 层和 ReLU 激活函数
    • 1x1卷积:用于恢复特征图的通道数,后接一个BN层
    • 跳跃连接(Shortcut):将输入直接加到输出上,以形成残差连接

在这里插入图片描述

3.3 C3代替CSP

​ YOLOv5中的C3模块在CSP上进行了优化,非常相似但略有不同:

不同点:

  1. 具体实现:YOLOv4中的CSP模块通常使用残差块,而YOLOv5中的C3模块通常使用Bottleneck或BottleneckCSP块。
  2. 性能优化:YOLOv5中的C3模块在具体实现上进行了进一步优化,以提高计算效率和模型性能。

3.4 SPPF

  • 将卷积核大小变成相同,然后将并行变成了串行+并行,2个K5池化=1 个K9池化,3个K5池化=1个K13池化,也就是结果相同的基础上,速度更 快,计算量更小

4. 输出头说明

灵活度较高,支持多种尺寸:

  1. 输入图像尺寸:通常为640 x 640(或者其它尺寸,如416 x 416等)
  2. 输出特征图:YOLOv5 使用大、中、小三个尺寸。
  3. 输出尺寸:
    • 大目标: 通常是输入图像尺寸的 1/32
    • 中目标: 通常是输入图像尺寸的 1/16
    • 小目标: 通常是输入图像尺寸的 1/8

假设输入图像尺寸为640×640,具体的特征图尺寸如下:
∙ 大目标: 640 32 × 640 32 = 20 × 20 ∙ 中目标: 640 16 × 640 16 = 40 × 40 ∙ 小目标: 640 8 × 640 8 = 80 × 80 \bullet\quad\text{大目标:}\frac{640}{32}\times\frac{640}{32}=20\times20\\\bullet\quad\text{中目标:}\frac{640}{16}\times\frac{640}{16}=40\times40\\\bullet\quad\text{小目标:}\frac{640}8\times\frac{640}8=80\times80 大目标:32640×32640=20×20中目标:16640×16640=40×40小目标:8640×8640=80×80
如果输入的图像是416尺寸的,那就和YOLOV3、YOLOV4的头机制一致了。

5. 开源项目

YOLOV5并没有学术论文,是一个开源项目,是 Ultralytics 公司于 2020 年6月9 日发布的。

项目可以在Github搜到:https://github.com/ultralytics/yolov5

预训练模型:

Modelsize (pixels)mAPval 50-95mAPval 50Speed CPU b1 (ms)Speed V100 b1 (ms)Speed V100 b32 (ms)params (M)FLOPs @640 (B)
YOLOv5n64028.045.7456.30.61.94.5
YOLOv5s64037.456.8986.40.97.216.5
YOLOv5m64045.464.12248.21.721.249.0
YOLOv5l64049.067.343010.12.746.5109.1
YOLOv5x64050.768.976612.14.886.7205.7
YOLOv5n6128036.054.41538.12.13.24.6
YOLOv5s6128044.863.73858.23.612.616.8
YOLOv5m6128051.369.388711.16.835.750.0
YOLOv5l6128053.771.3178415.810.576.8111.4
YOLOv5x6 + TTA1280 153655.0 55.872.7 72.73136 -26.2 -19.4 -140.7 -209.8 -

​ 这些模型的结构是一样的,区别在于网络的深度和宽度,网络的深度指的就是C3模块中Bottleneck的数量,网络的宽度是指网络每层输出的通道数。

http://www.xdnf.cn/news/590851.html

相关文章:

  • SQLServer与MySQL数据迁移案例解析
  • fscan教程1-存活主机探测与端口扫描
  • Android 添加系统服务的完整流程
  • JavaScript【9】ES语法
  • 阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
  • 新手到资深的Java开发编码规范
  • Python爬虫实战:研究Crawley 框架相关技术
  • 【Java Web】1.Maven
  • Docker常用命令介绍
  • upload-labs靶场通关详解:第14关
  • PyQt学习系列01-框架概述与基础环境搭建
  • 25.5.22学习总结
  • MCP Server Tool 开发学习文档
  • 国产数据库:tidb专题
  • 微信小程序 隐私协议弹窗授权
  • Git分支的强制回滚
  • 辽宁省工程系列信息通信管理专业职称评审标准
  • 国芯思辰| 高精度线性霍尔传感器AH693在角度位置传感器中的应用
  • 【机器学习】欠拟合、过拟合和正则化
  • ARM Linux远程调试
  • day 33简单的神经网络
  • Linux `wc` 命令深度解析与高阶应用指南
  • 计算机网络——Session、Cookie 和 Token
  • Bert预训练任务-MLM/NSP
  • 数仓SQL投影介绍
  • 小米2025年校招笔试真题手撕(一)
  • 基于企业数字化转型战略的数据治理方法论与顶层设计思路
  • 基于B/S架构的质量监督检验报告自动生成管理系统有何亮点?
  • Vue3 打印表格、Element Plus 打印、前端打印、表格导出打印、打印插件封装、JavaScript 打印、打印预览
  • Java使用Collections集合工具类