Yolov5 v6.1网络结构

2023-05-16

Yolov5 已经更新到v6.1版本了,与之前的版本有了不少区别,网络结构有了进一步优化。来整理一下。

本文主要参考 https://blog.csdn.net/qq_37541097/article/details/123594351,大佬真了不起。

借用大佬的模型图

在这里插入图片描述

删除Focus层

之前看的资料,网络的第一层都是Focus层,v6.0之后换成了一个kernel=6,stride=2,padding=2大小的卷积层,有人认为两者在理论上是等价的,可能是觉得两者的输出大小相同。

在这里插入图片描述

但是我个人认为从细节的角度Focus确实比卷积或者池化要精致一些,可以减少下采样带来的信息损失。作者改回使用卷积可能是出于工程上的考量,牺牲一点点精度带来速度上的提升,毕竟大多数芯片厂商不一定提供Focus层的优化或者自定义接口。

激活函数改用SiLU

几乎所有的激活函数都使用了SiLU,等同于Swish激活函数( β = 1 \beta=1 β=1),具有无上界有下界、平滑、非单调的特性。可以看做是介于线性函数与ReLU函数之间的平滑函数。
请添加图片描述
请添加图片描述

SPPF

yolov5之前的版本的Neck结构采用了SPP模块。

在SPP模块中,使用 k = 1 ∗ 1 , 5 ∗ 5 , 9 ∗ 9 , 13 ∗ 13 k={1*1, 5*5, 9*9, 13*13} k=11,55,99,1313的最大池化的方式,再将不同尺度的特征图进行Concat操作

在这里插入图片描述

请添加图片描述

而SPPF结构是将输入串行通过多个5x5大小的MaxPool层,简单的说,就是用2个5*5的卷积操作代替一个9*9的卷积操作,3个5*5的卷积操作代替一个13*13的卷积操作。感受野是一样的,但是计算时间快了很多。也是常规操作了。

class SPP(nn.Module):
    # Spatial Pyramid Pooling (SPP) layer https://arxiv.org/abs/1406.4729
    def __init__(self, c1, c2, k=(5, 9, 13)):
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1)
        self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2) for x in k])

    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            return self.cv2(torch.cat([x] + [m(x) for m in self.m], 1))


class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)

    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

网络输出

yolov5 经过5次下采样,最大会放缩32倍,原图的长宽都要求是32的倍数。v6.0版本将图片的输入默认改为640,也就是说输出的结果是20*20*(5+n)40*40*(5+n)80*80*(5+n)。n为分类的总数。

参考

  1. https://blog.csdn.net/qq_37541097/article/details/123594351
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yolov5 v6.1网络结构 的相关文章

  • 启明欣欣STM32开发板 --- 运行LWIP (使用FreeRtos)

    在上篇文章中 xff0c 我们生成了不带RTOS的LWIP工程 xff0c 本篇讲述如何生成带RTOS的LWIP工程 xff0c RTOS选择FreeRtos xff0c CubeMX工程以上篇文章中的工程为基础 文章目录 一 使能Free
  • python http 身份认证简介

    目录 授权方式简介 1 Basic Authentication 2 OAuth 3 Token Authentication 4 Digest Authentication xff08 重点说一下 xff09 代码实现 1 基本身份认证
  • 记录VScode调试过慢的问题

    目录 问题 xff1a 解决方案 xff1a 0806更新报错 问题 xff1a 最近在使用VScode的过程中调试慢到让人接受不了 xff0c 遂寻找解决方案 xff0c 重装VScode 在网上找了好多答案 xff0c 尝试后均无法解决
  • Android APP漏洞自动化静态扫描检测工具-Qark环境搭建与使用

    QARK 1 qark简介 LinkedIn最近开源了他的静态分析工具QARK xff0c 该工具用于分析那些用Java语言开发的Android应用中的潜在安全缺陷 QARK 全称 Quick Android Review Kit 这个工具
  • QT中CMakeLists添加第三方库

    1 新建项目 xff0c 打开CMakeLists txt文件 cmake minimum required VERSION 2 8 project fp test cm 括号内fp test cm为项目名称 add executable
  • Linux下curl模拟带header的Http请求

    格式 xff1a curl H 头部内容 http xxx 123 com curl span class hljs attribute H span span class hljs string 34 Accept text html a
  • 中断与查询方式的比较

    单片机在操作外部设备时 xff0c 常用的有中断和查询两种方式 除了在编程方面的区别外 xff0c 在性能和效率上都是有所区别 中断的性能要比查询强大 xff0c 反应速度快 xff0c 要求相应的ISR不能过于繁琐 xff0c 而且要求电
  • 解决nodejs报错TypeError: ParserIncomingMessage is not a constructor.

    当前最新的 node v8 12 v10 11 在 http模块里有一个bug bug报错如下 xff1a TypeError ParserIncomingMessage is not a constructor at HTTPParser
  • 串口通信基础知识(UART)

    目录 一 串口通信的具体分类 xff1a 二 常见的串行通信接口简介 xff1a 三 具体通信标准的实现 xff1a 1 UART xff08 通用异步收发传输器 xff09 xff1a 一 串口通信的具体分类 xff1a 总结一下 xff
  • ++声明、定义、类的定义、头文件作用、头文件重复引用

    转载至 xff1a 点击打开链接 C 43 43 声明 定义 类的定义 头文件作用 头文件重复引用 xff0c 不具名空间 转自 xff1a http www cnblogs com rocketfan archive 2009 10 02
  • 三维旋转矩阵;东北天坐标系(ENU);地心地固坐标系(ECEF);大地坐标系(Geodetic);经纬度对应圆弧距离

    目录 TOC自动生成 旋转矩阵东北天 站心坐标系地心坐标系参考文献 旋转矩阵 Givens rotation 逆时针 Jacobi rotation 顺时针 箭头朝里朝外 xff0c 顺时针 逆时针 xff0c 61 61 旋转角的正负 6
  • libcurl进行异步并发

    libcurl的easy 接口 xff0c easy接口的使用非常的简单 xff0c curl easy init用来初始化一个easy curl对象 xff0c curl easy setopt对easy curl对象进行相关设置 xff
  • unbuntu运行VINS-MONO实验总结

    ubuntu16 04运行VINS ONO实验总结 初探 简介1 环境配置2 运行Euroc数据集 xff13 小觅摄像头运行vins mono 简介 VINS Mono是香港科技大学沈劭劼团队开源的单目视觉惯导SLAM方案 前端KLT稀疏
  • 电子硬件3.杜邦线

    杜邦线是常用于电路连接的导线 xff0c 能够刚好插在常用的2 54mm间距的排针上 杜邦线的三种类型为 xff1a 公公线 公母线 母母线
  • Android应用安全检测工具简介

    Android应用安全检测工具简介 1 测试工具集 Appie 轻量级的软件包 可以用来进行基于Android的渗透测试 不想使用VM的时候可以尝试一下 Android Tamer 可以实时监控的虚拟环境 可以用来进行一系列的安全测试 恶意
  • C语言浮点型数据存储结构

    1 float类型 float类型占四个字节 xff0c 每个字节占8位 xff0c 总共32位 xff0c 其内存结构如下图 xff1a 31位为符号位 xff1a 0表示正数 xff0c 1表示负数 31 23位 xff1a 共8位表示
  • sockaddr和sockaddr_in详解

    struct sockaddr和struct sockaddr in这两个结构体用来处理网络通信的地址 一 sockaddr sockaddr在头文件 include lt sys socket h gt 中定义 xff0c sockadd
  • python requests模拟登陆带验证码的网站

    作为之前专利爬虫的续篇 xff0c 本篇准备描述如何通过python的requests模块登录专利查询网站 环境准备 python 3 6requests chrome尝试 首先 xff0c 我们使用chrome尝试登录专利网站 xff0c
  • 兔子与兔子(下一篇解释原理:字符串哈希)

    文章目录 兔子与兔子题目描述解题思路 兔子与兔子 题目描述 很久很久以前 xff0c 森林里住着一群兔子 有一天 xff0c 兔子们想要研究自己的 DNA 序列 我们首先选取一个好长好长的 DNA 序列 xff08 小兔子是外星生物 xff
  • 机器学习(二)--- KNN(K-Nearest Neighbors)

    KNN K Nearest Neighbors 简单类比 xff08 Simple Analogy xff09 KNN xff1a 通过你周围的人来判断你是哪一类人 Tell me about your friends who your n

随机推荐

  • 机器学习(三) --- DT(Decision Tree)

    文章目录 Decision TreeIntroductionConstructing Decision Treesexample Pruning决策树 随机森林和Gradient BoostingReference xff1a Decisi
  • 3D点云资料(笔记自用)

    数据集 xff1a Pointnet Pointnet2 pytorch Pointnet语义分割任务S3DIS数据集上的注意点 dataset ShapeNet简介及认识 文件格式 PCD格式 目标检测标注工具 标注工具windows安装
  • 用指针给数组赋值的一个小问题

    问题是这样的 xff0c 我打算输入与元素为数组赋值 xff0c 然后反向输出数组元素 include lt stdio h gt int main void int a 10 p 61 a i for i 61 0 i lt 10 i 4
  • 51之中断

    51单片机的中断系统 选用的单片机型号是 xff1a HC6800 ES V2 0 一 中断的概念 CPU在处理某一事件A时 xff0c 发生了另一事件B请求CPU迅速去处理 xff08 中断发生 xff09 xff1b CPU暂时中断当前
  • 基于51单片机和L298N的小车制作(一)

    到目前为止 xff0c 总算把51单片机过了一遍 xff0c 本来暑假就要完成的任务一直拖到了现在 51学完 xff0c 就想着先做点东西 xff0c 就从小车开始 玩小车最重要的是什么 xff1f 电机 这个就不用多解释了 从今天早上开始
  • 如何把android设备中的固件dump出来

    android固件是在mtdblock中 但是会有很多个block root 64 android cat proc partitions major minor blocks name 31 0 4096 mtdblock0 31 1 1
  • PID控制电机转速

    转一个PID控制电机的小程序 xff0c 被PID困扰好多天了 xff0c 知道它的原理但是一直不明白如何将它运用到电机调速中间去 xff0c 看了这个程序之后感觉茅塞顿开 原来也并不难 转载地址 xff1a 呃 xff0c 刚刚不小心把网
  • vs2017常用快捷键

    VS2017常用快快捷键 目录 43 VS常用快捷键搜集窗口操作快捷键项目快捷键调试快捷键编辑快捷键代码快捷键单元测试 xfeff xfeff 项目相关的快捷键 Ctrl 43 Shift 43 B 61 生成项目 Ctrl 43 Alt
  • phpStudy基本用法

    闲扯正文 更改目录更改首页更改端口号DNS解析 参考资料 闲扯 第一次接触php xff0c 要先安装环境 xff0c 包括Apache mySQL和PHP xff1b 安装就安装呗 xff0c 我先跑到Apache官网上面想下一个Apac
  • 小白学爬虫(三)-- requests库之Cookie

    前言使用超时参数在requests添加Cookie参数 啥是cookie三种Cookie请求方式 第一种 xff1a cookie放在headers中第二种 xff1a cookie字典传给cookies参数第三种 先发送post请求 xf
  • 操作系统(五) -- CPU的调度策略

    文章目录 常见的调度策略以及考虑的内容 CPU调度的直观想法 xff1a FIFOPriority xff08 优先级 xff09 如何评价一个调度算法的好坏 xff1f 上述三个指标之间是不是存在冲突呢 xff1f 前台任务和后台任务的关
  • vscode 前端最佳插件配置

    vscode最佳配置 最近更新时间 xff1a 2023 02 18 xff08 Vscode v1 17 xff09 vscode 配置文件内容在最后 xff0c 可直接copy使用 配置详解 editor是针对 vscode 的风格设置
  • Java序列化与反序列化及serialVersionUID

    Java序列化与反序列化是什么 xff1f 为什么需要序列化与反序列化 xff1f 如何实现Java序列化与反序列化 xff1f 本文围绕这些问题进行了探讨 1 Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程
  • STM32 CAN总线说明

    简介 xff1a CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986年率先提出 此后 xff0c CAN通过I
  • 深度强化学习(DRL)一:入门篇

    目录 前言一 强化学习 xff08 RL xff09 的基本概念二 主要强化学习算法2 1 Qlearning2 2 Deep Qlearning2 3 Double DQN2 4 Sarsa2 5 Sarsa lambda2 6 A3C
  • 深度强化学习(DRL)四:DQN的实战(DQN, Double DQN, Dueling DQN)

    目录 一 环境二 DQN三 Double DQN四 Dueling DQN D3QN 五 小结 全部代码 https github com ColinFred Reinforce Learning Pytorch tree main RL
  • Android APK实现WIFI协议包抓取(上)-实现思路

    一次偶然的机会听到一个需求 xff0c 甲方希望能在手机上实现一个APK xff0c 这个APK能够记录附近WIFI的站点信息 xff0c 然后由强到弱抓取WIFI协议包 xff0c 转送到云端进行WIFI破解 大致调研了几天 xff0c
  • Yolov5 口罩识别

    自定义口罩数据集进行目标检测 目录 自定义口罩数据集进行目标检测Yolov5 代码地址数据集一 手动收集标记数据集二 使用公开数据集 改动源码训练结果迁移学习制作自定义数据集的注意事项 Yolov5 代码地址 https github co
  • Yolov5 网络结构

    yolov5 的网络结构 yolov5 的网络结构的配置文件在models文件夹下 xff0c 有yolov5n yaml yolov5s yaml yolov5m yaml等等 几个网络结构其实都一样 xff0c 通过depth mult
  • Yolov5 v6.1网络结构

    Yolov5 已经更新到v6 1版本了 xff0c 与之前的版本有了不少区别 xff0c 网络结构有了进一步优化 来整理一下 本文主要参考 https blog csdn net qq 37541097 article details 12