YOLOv9改进,YOLOv9主干网络替换为GhostNetV2(华为提出的轻量化架构)


在这里插入图片描述

摘要

在这里插入图片描述

摘要:轻量级卷积神经网络(CNN)专为移动设备上的应用而设计,具有更快的推理速度。卷积操作只能在窗口区域内捕捉局部信息,这限制了性能的进一步提升。将自注意力引入卷积可以很好地捕捉全局信息,但会极大地拖累实际速度。本文提出了一种硬件友好的注意力机制(称为 DFC 注意力),并展示了一种用于移动应用的新 GhostNetV2 架构。提出的 DFC 注意力基于全连接层构建,不仅能在常见硬件上快速执行,还能捕捉远距离像素之间的依赖关系。作者进一步重新审视了之前 GhostNet 中的表达瓶颈,并提出通过 DFC 注意力增强由廉价操作生成的扩展特征,使得 GhostNetV2 块能够同时聚合局部和远距离信息。

理论介绍

GhostNetV2 提供了以下几种常见的模型权重,不同宽度缩放因子(Width Scaling):

  • 1.0x: 标准模型。
  • 1.3x: 模型深度比1.0x更深。
  • 1.6x: 更大的模型版本,适用于计算资源较多的设备。

大家可以根据不同场景选择合适的模型宽度缩放因子,本文选择 1.0,具体可见第二章的代码。

GhostNet、GhostNetV2、GhostNetV3 模型在 参数量(M)、FLOPs(M)及 ImageNet 的 top1 结果对比情况如下:
在这里插入图片描述

GhostNetV1 和 GhostNetV2 架构示意图如下图所示。Ghost 块是一个反向残差瓶颈,包含两个 Ghost 模块,其中 DFC 注意力增强了扩展特征以提高表达能力。
在这里插入图片描述
GhostNetV1 是一种轻量化模型,通过“Ghost 模块”减少冗余计算。Ghost 模块将 1×1 卷积和深度卷积结合在一起,生成一部分特征图后,通过廉价的操作生成剩余的特征图。这一设计虽然大幅减少了计算成本,但也削弱了模型捕捉空间信息的能力。
GhostNetV2 架构通过引入 DFC 注意力,提升了网络的表达能力,同时保持了在移动设备上的高效性。DFC 注意力机制使用两个解耦的全连接层来处理特征图的水平和垂直方向。通过将输入特征图沿水平方向和垂直方向进行特征聚合,DFC注意力机制能够捕捉到全局信息,并提升模型的表达能力。DFC注意力的计算过程如下:

  • 将输入特征图 Z 视为多个 token,并通过全连接层生成注意力图。
  • DFC 将计算过程分解为两个步骤:首先沿水平方向进行特征聚合,然后沿垂直方向进行聚合,最终生成注意力图。
  • 将 Ghost 模块输出的特征与 DFC 注意力图进行点乘,生成最终的输出特征。

DFC 注意力的信息流,如下图所示&#x

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

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

相关文章

前端文件上传全过程

特别说明:ui框架使用的是蚂蚁的antd 这里主要是学习前端上传接口的传递参数包括前端上传之前对于代码的整理 一、第一步将前端页面画出来 源代码: /** 费用管理 - IT费用管理 - 费用数据上传 */ import { useState } from "react"; import {…

Prometheus篇之利用promtool工具校验配置正确性

promtool工具 promtool是Prometheus的一个命令行工具,它提供了一些功能来帮助用户进行Prometheus配置文件(如prometheus.yml)的检查、规则检查和调试。 解释 promtool check config: 验证Prometheus配置文件的语法和设置。 promtool命令&…

【最基础最直观的排序 —— 选择排序算法】

最基础最直观的排序 —— 选择排序算法 选择排序算法是一种简单直观的排序算法。其基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小&a…

WebPage-Bootstrap框架(container类,container-fluid类,栅格系统)

1.Bootstrap Bootstrap为页面内容和栅格系统包裹了一个.container容器,框架预先定义类 1.1container类 响应式布局容器的宽度 手机-小于768px 宽度设置100%; 平板-大于等于768px 设置宽度为750px 桌面显示器-大于等于992px 设置宽度 970px 大屏幕显…

【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)

情形如下:第一次启动运行一些正常,非正常关闭虚拟机,第二次启动虚拟机查看容器状态如下: docker nacos容器一切正常启动,但是就是无法访问web控制面板,访问无法连接。 首先:执行命令查看日志 …

ClickHouse 与 Quickwit 集成实现高效查询

1. 概述 在当今大数据分析领域,ClickHouse 作为一款高性能的列式数据库,以其出色的查询速度和对大规模数据的处理能力,广泛应用于在线分析处理 (OLAP) 场景。ClickHouse 的列式存储和并行计算能力使得它在处理结构化数据查询时极具优势&…

初探shell与bash使用指南

文章目录 一、shell二、bash第一步、新建脚本第二步、添加权限第三步、执行bash脚本 在日常开发中,经常使用到Linux服务器相关知识,输入命令获取想要的结果,本篇介绍shell 与 bash的相关知识。 一、shell 是命令行解释器,接收用户…

深入解析网络通信关键要素:IP 协议、DNS 及相关技术

我的主页:2的n次方_ 1. IP 协议报头结构 4 位版本:表示 IPv4 / IPv6 4 位首部长度:表示 IP 报头的长度,以 4 字节为单位 8 位服务类型:包括 3 位优先权字段(已弃用),4 位 TOS 字…

电路 - 笔记2

1 555 芯片 2 类比 - pU*I 与 Fm*a 是不是可以与牛顿定律类比 - Fm*a 人的力量(F)有限。 当推大箱子(m)时,加速度(a)就不会很大 当推小箱子(m)时,加速度…

分布式框架 - ZooKeeper

一、什么是微服务架构 1、单体架构 顾名思义一个软件系统只部署在一台服务器上。 ​ 在高并发场景中,比如电商项目,单台服务器往往难以支撑短时间内的大量请求,聪明的架构师想出了一个办法提高并发量:一台服务器不够就加一台&am…

球体检测系统源码分享

球体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

springboot实战学习笔记(5)(用户登录接口的主逻辑)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次,点赞7…

Agile Modbus STM32裸机移植 从机使用

本教程手把手教你实现Agile Modbus,照抄就能成。 并且会解读函数功能含义。 1. 引言 Agile Modbus 是一个轻量级的 Modbus 协议栈,可以满足用户在任何场景下的需求。 功能 支持 rtu 和 tcp 协议,使用纯 C 语言开发,不涉及任何硬件接口,可以直接在任何形式的硬件上使用。由…

Fyne ( go跨平台GUI )中文文档-小部件 (五)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

任意长度并行前缀和 扫描算法 《PMPP》笔记

下面的算法针对于任意长度输入 对于大数据集,首先将输入分为几段,每一段放进共享内存并用一个线程块处理,比如一个线程块使用1024个线程的话,每个块最多能处理2048个元素。 在前面代码中,一个块最后的执行结果保存到了…

C\C++内存管理详解

本次内容大纲: 1.C/C内存分布 大家看看下面的代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";char* pChar3 "abcd";int…

echarts图表刷新

图表制作完成&#xff0c;点击刷新图标&#xff0c;可以刷新。 <div class"full"><div id"funnel" class"normal"></div><div class"refreshs"><div class"titles_pic"><img src"./…

nginx+keepalived健康检查案例详解(解决nginx出现故障却不能快速切换到备份服务器的问题)

文章目录 简介配置过程前置环境请看创建健康检查脚本结果测试 简介 在我们通过nginxkeepalived实现高可用后&#xff0c;会发现nginx出现故障的时候keepalived并不会将虚拟ip切换到备份服务器上其原理就是nginx和keepalived是两个独立的服务&#xff0c;Nginx的故障状态不会触…

微信小程序-分包加载

文章目录 微信小程序-分包加载概述基本使用打包和引用原则独立分包分包预下载 微信小程序-分包加载 概述 小程序的代码通常是由许多页面、组件以及资源等组成&#xff0c;随着小程序功能的增加&#xff0c;代码量也会逐渐增加&#xff0c;体积过大就会导致用户打开速度变慢&a…

数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)

注&#xff1a; 资料都是基于网上一些博客分享和自己学习整理而成的 Verilog 1. 数据类型 Verilog一共有19种数据类型 基础四种数据类型&#xff1a;reg型&#xff0c;wire型&#xff0c;integer型&#xff0c;parameter型 reg型   reg类型是寄存器数据类型的关键字。寄存…