【DeepLearning-9】YOLOv5模型网络结构中加入MobileViT模块

一、神经网络的前中后期

在神经网络中,特别是在深度卷积神经网络(CNN)中,“网络早期(低层)”、“网络中期(中层)”和“网络后期(高层)”通常指的是网络结构中不同层级的部分,每个部分在特征提取和信息处理方面有其特定的作用和特性。

1. 网络早期(低层)

  • 在网络的早期阶段插入 MobileViTBv3 可能会对原始图像进行较深层次的处理,有助于捕捉更丰富的空间特征。但同时,Transformer可能无法充分利用其处理高级语义特征的能力。

2. 网络中期(中层)

  • 在网络的中间层插入 MobileViTBv3 可能是一个平衡点,可以在提取一定级别的特征后利用Transformer的长程依赖捕捉能力。

3. 网络后期(高层)

  • 在网络的后期阶段插入 MobileViTBv3 会使其处理更抽象的特征,有助于捕捉复杂的上下文信息,但可能会丢失一些细节信息。

二、插入 MobileViTBv3 模块

在YOLOv5配置中插入 MobileViTBv3 模块需要考虑到模块的功能和网络的整体架构。MobileViTBv3 结合了卷积神经网络(CNN)和Transformer的特点,适合于复杂特征的提取和长程依赖的捕捉。基于这些考虑,以下是几个较为合适的的插入位置:

  1. 主干网络中的中期阶段

    • 例如,在 [-1, 1, Conv, [256, 3, 2]][-1, 6, C3, [256]] 之间。
    • 这里,MobileViTBv3 可以处理相对抽象的特征,并利用其Transformer部分捕捉更复杂的依赖关系。
  2. 主干网络后期

    • 在更深的层次,例如在 [-1, 1, Conv, [512, 3, 2]][-1, 9, C3, [512]] 之间。
    • 在这个位置,MobileViTBv3 将处理高级特征,并可能更好地利用Transformer结构处理复杂的场景。
  3. 检测头前期

    • 在检测头的初始阶段,例如在 [[17, 20, 23], 1, Detect, [nc, anchors]] 之前。
    • 这可以使 MobileViTBv3 直接对用于检测的特征进行最后的优化。

 三、各类型YOLOv5模型的前中后期划分

 以yolov5l.yaml为例

网络前期(低层)
  • 定位:主干网络(backbone)的开始部分。
  • 包含的层
    • [-1, 1, Conv, [64, 6, 2, 2]] # 0-P1/2
    • [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  • 作用:这些层主要负责捕获基础视觉特征,如边缘、纹理等。特征相对简单,更多关注细节。
网络中期(中层)
  • 定位:主干网络中的中间部分。
  • 包含的层
    • [-1, 3, C3, [128]]
    • [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
    • [-1, 6, C3, [256]]
  • 作用:这些层处理更复杂的特征,例如特定的形状和模式。开始从细节特征过渡到更抽象的特征表示。
网络后期(高层)
  • 定位:主干网络的末尾以及检测头(head)。
  • 包含的层
    • [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
    • [-1, 9, C3, [512]]
    • [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
    • [-1, 3, C3, [1024]]
    • [-1, 1, SPPF, [1024, 5]] # 9
    • 检测头(head)中的所有层
  • 作用:这些层负责处理高级别的特征,通常与目标检测任务直接相关。在这里,特征更加抽象,与目标的类别、位置等信息密切相关。

代码实现 MobileViTBv3 模块插入:

# YOLOv5 🚀 by Ultralytics, AGPL-3.0 license# Parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 6, MobileViTBv3, [256]],[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 6, MobileViTBv3, [256]],[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 6], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 4], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 3, MobileViTBv3, [512, False]],[-1, 1, Conv, [512, 3, 2]],[[-1, 10], 1, Concat, [1]],  # cat head P5 [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】初识Docker,安装以及了解操作命令

一、为什么要使用容器? 背景:以前开发、测试、生产为不同的环境,痛点是发现开发测试以后没问题,但是在生产环境无法运行。给测试、开发、运维人员造成了大量的工作。最终结果是发版更新速度也跟不上,效率低 我认为使…

翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一 GPT-4 Vision 的 7 个实际用例 Pre-requisites:先决条件: 订阅 ChatGPT Plus 以访问 GPT-4 Vision。如果您不熟悉 Streamlit,请按照安装步骤操作。 1. 绘制您的应…

尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码

特色功能: 不同助教服务类型选择 助教申请,接单,陪练师入住,赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈:前端uniapp后端thinkphp 独立全开源

.NET高级面试指南专题一【委托和事件】

在C#中,委托(Delegate)和事件(Event)是两个重要的概念,它们通常用于实现事件驱动编程和回调机制。 委托定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个…

HarmonyOS鸿蒙ArkTS,封装http网络请求

HarmonyOS鸿蒙ArkTS,封装http网络请求 前提: 要想使用http请求,系统必须要具备ohos.permission.INTERNET权限,在model.json5文件中的module模块下添加如下请求权限: 在module.json5文件中 配置 "requestPermi…

LeetCode 热题 100 | 矩阵

目录 1 73. 矩阵置零 2 54. 螺旋矩阵 3 48. 旋转图像 4 240. 搜索二维矩阵 II 菜鸟做题第二周,语言是 C 1 73. 矩阵置零 解题思路: 遍历矩阵,寻找等于 0 的元素,记录对应的行和列将被记录的行的元素全部置 0将被记录的…

k8s 进阶实战笔记 | Scheduler 调度策略总结

文章目录 Scheduler 调度策略总结调度原理和过程调度策略nodeSelect亲和性和反亲和性NodeAffinify亲和验证PodAffinity 亲和验证PodAntiAffinity 反亲和验证污点与容忍跳过 Scheduler 调度策略 调度策略场景总结 Scheduler 调度策略总结 调度原理和过程 Scheduler 一直监听着…

【心得】java JNDI配合RMI实现注入个人笔记

目录 JNDI RMI 基本概念 RMI 基本逻辑 恶意利用 JNDI注入RMI实现攻击 JNDI Java Naming and Directory Interface Java 命令和目录接口 让配置参数 和 代码 解耦的规范或者思想 低耦合 高内聚 Name 命名 java对象 通过 命名 绑定到 容器环境 java对象和一个特定的…

REVIT二次开发万能刷

将这两个参数赋予其他参数 步骤2 将来做个可以调控的版本 using System; using System.Collections.Generic; using System.Lin

华为机考入门python3--(4)牛客4-字符串分隔

分类:字符串 知识点: 复制符号* 复制3个0 0*3 000 字符串截取 截取第i位到j-1位 str[i:j] 题目来自【牛客】 input_str input().strip()# 先补齐 if len(input_str) % 8 ! 0: input_str 0 * (8 - len(input_str) % 8) # 每8个分 out…

uniapp微信小程序-请求二次封装(直接可用)

一、请求封装优点 代码重用性:通过封装请求,你可以在整个项目中重用相同的请求逻辑。这样一来,如果 API 发生变化或者需要进行优化,你只需在一个地方修改代码,而不是在每个使用这个请求的地方都进行修改。 可维护性&a…

JAVA学习笔记三

1.java执行流程分析 2.什么是编译 javac Hello.java 1.有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件 2.在该源文件目录下,通过javac编译工具对Hello.java文件进行编译 3.如果程序没有错误,没有任何提示,但在…

Linux下的进程操作

进程概念 ps -elf:查看操作系统的所有进程(Linux命令) ctrl z:把进程切换到后台 crtl c:结束进程 fg:把进程切换到前台 获取进程进程号和父进程号 函数原型: pid_t getpid(void); //pid_t…

文件上传之大文件分块上传进度控制处理

在分块上传内容结束以后的事件监听,我们会实现 unlinkSync 删除临时文件操作,那么试想一下,在这个事件监听中,我们是否可以通过totalChunks以及currentChunk获取当前上传的进度情况呢? 后端 upload上传接口&#xff…

【GitHub项目推荐--十六进制编辑器】【转载】

一款名为 ImHex 的十六进制编辑器获得了 15.3k 的 Star。十六进制编辑器可以让你以十六进制的形式查看或编辑文件的二进制数据,并用较为友好的界面来编辑二进制数据,和常见的十六进制编辑器 GNOME Hex Editor 等不一样,ImHex 功能非常强大&am…

Unity 光照

光照烘培 光照模式切换为 Baked 或 Mixed,Baked 模式完全使用光照贴图模拟光照,运行时修改光照颜色不生效,Mixed 模式也使用光照贴图,并且进行一些实时运算,运行时修改光照颜色会生效 受光照影响的物体勾选 Contribute…

02-opencv-上

机器视觉概述 机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统&…

Cortex-M4外设

关于Cortex-M4外设 专用外设总线(PPB)的地址映射为: 软件可以读取MPU类型寄存器0xE000ED90,以测试是否存在内存保护单元(MPU)。 Privileged:只有特权软件才能访问寄存器。Unprivileged&#…

Spring Cloud + Vue前后端分离-第13章 网站开发

源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 Spring Cloud Vue前后端分离-第13章 网站开发 13-1 网站模块的搭建 新建web模板 1.网站开发,增加web模块,使用命令:vue create web vue版本4.2.3 大家拿到一个v…

浪花 - 后端接口完善

一、队伍已加入用户数量 1. 封装的响应对象 UserTeamVO 新增字段 hasJoinNum 2. 查询队伍 id 列表 3. 分组过滤,将 team_id 相同的 userTeam 分到同一组 4. 获取每一组的 userTeam 数量,即一个 team_id 对应几个userTeam(用户数量&#x…