Yolo系列——动态卷积

news2025/4/6 18:50:38

一、为什么要提出动态卷积?

为了更好的将模型部署在边端设备上,需要设计轻量级网络模型。轻量级卷积网络因其较低的运算而限制了CNN的深度(卷积层层数)和宽度(通道数),限制了模型的表达能力,使得模型性能下降。

如何在不增加网络宽度和深度的情况下增加模型的表达能力,成为待解决的问题。在CVPR2020年,动态卷积的概念被提出,它的设计初衷就是,在不显著增加模型参数量或计算复杂度的前提下,动态卷积可以提升模型在诸如分类、检测等任务上的准确率。

二、参数量、FLOPs的理解以及计算方式

参数量:指的是模型中所有需要学习的参数总和,这包括但不限于卷积层的权重、全连接层的权重以及偏置项等。参数量直接关系到模型的存储需求和训练时的内存消耗。

计算参数量的计算公式如下:
参数量 = ( K h × K w × C i n ) × C o u t + C o u t 参数量=(K_h\times K_w\times C_{in})\times C_{out}+C_{out} 参数量=(Kh×Kw×Cin)×Cout+Cout
其中 C i n C_{in} Cin表示输入通道数, C o u t C_{out} Cout表示输出通道数, K h × K w K_h\times K_w Kh×Kw表示卷积核的大小。 ( K h × K w × C i n ) × C o u t (K_h\times K_w\times C_{in})\times C_{out} (Kh×Kw×Cin)×Cout表示卷积核的权重参数。 C o u t C_{out} Cout表示偏置项的参数。

输入通道、输出通道数以及卷积数之间的关系图如下:
在这里插入图片描述

FLOPs: FLOPs衡量的是模型在进行前向传播时执行的浮点运算次数,包括加法、减法、乘法和除法等。它是评估模型运行时计算成本的一个指标。

FLOPs的计算公式如下:
F L O P s = 2 × ( K h × K w × C i n × H o u t × W o u t × C o u t ) FLOPs = 2\times (K_h\times K_w\times C_{in}\times H_{out}\times W_{out}\times C_{out}) FLOPs=2×(Kh×Kw×Cin×Hout×Wout×Cout)
其中 H o u t 、 W o u t H_{out}、W_{out} HoutWout表示输出特征图的大小。之所以乘上 H o u t 、 W o u t H_{out}、W_{out} HoutWout而不是乘上 H i n 、 W i n H_{in}、W_{in} HinWin是因为并不是每一次卷积都得到和原始图像一样的大小的图像,但是输出特征图大小一定是卷积计算的次数。

三、什么是动态卷积?

动态卷积的基本思路是根据输入数据,自适应地的调整卷积参数。即做采用的卷积核与输入相关,不同的输入有着不同的卷积核。

对于一个卷积神经网络,可被下面的公式进行表示:
y = g ( W T x + b ) y=g(W^Tx+b) y=g(WTx+b)
具有动态卷积的卷积神经网络,可被定义为如下式:
y = g ( W ~ T ( x ) x + b ( x ) ) W ~ ( x ) = ∑ k = 1 K π k ( x ) W ~ k ,   b ~ ( x ) = ∑ k = 1 K π k ( x ) b ~ k s . t .   0 ≤ π k ( x ) ≤ 1 , ∑ k = 1 K π k ( x ) = 1 y=g(\tilde{W}^T(x)x+b(x))\\ \tilde{W}(x)=\sum_{k=1}^{K}\pi_k(x)\tilde{W}_k,\ \tilde{b}(x)=\sum_{k=1}^K\pi_k(x)\tilde{b}_k \\ s.t. \ 0\leq\pi_k(x)\leq1, \sum_{k=1}^{K}\pi_k(x)=1 y=g(W~T(x)x+b(x))W~(x)=k=1Kπk(x)W~k, b~(x)=k=1Kπk(x)b~ks.t. 0πk(x)1,k=1Kπk(x)=1
其中 π k ( x ) \pi_k(x) πk(x)表示第k个线性函数 W ~ k T x + b ~ \tilde{W}^T_kx+\tilde{b} W~kTx+b~的attention的权重,这个权重随着不同的输入x的不同而变化。因此在给定输入的情况下,动态卷积会给出符合该输入的最佳线性组合。
动态卷积的结构为:
在这里插入图片描述
相较于原来的固定卷积核,现在可以变为可以根据输入自适应的改变注意力的卷积核。相较于原来的一个固定卷积核,现在这一个固定卷积是由K个卷积核加权定义。参数量相较于原来的卷积核提升了K倍,提升了模型的表达能力。

四、动态卷积的参数量和FLOPs

从Figure 3中可以看到,相较于普通卷积,动态卷积额外增加两部分计算:(1)注意力权值计算;(2)动态权值融合。

attention部分的计算步骤为:输入 x x x先经过全局平均池化将 H × W × C i n H\times W\times C_{in} H×W×Cin的大小转为 1 × 1 × C i n 1\times 1\times C_{in} 1×1×Cin; 然后通过第一个FC层将维度缩小至原来的4倍,即维度变为 1 × 1 × C i n 4 1\times 1\times \frac{C_{in}}{4} 1×1×4Cin; 然后经过第二个FC将维度变为 1 × 1 × K 1\times 1\times K 1×1×K; 最后经过softmax将这K维数据映射为[0,1]之间的概率分布。
attention部分的计算复杂度(FLOPs): H W C i n + C i n C i n 4 + C i n 4 K HWC_{in}+C_{in}\frac{C_{in}}{4}+\frac{C_{in}}{4}K HWCin+Cin4Cin+4CinK

动态权值融合部分的计算步骤为:每个卷积核的权重与其对应的卷积核参数相乘,然后将所有这些加权后的卷积核参数相加,得到最终的卷积核参数。这个过程可以表示为:
W ~ = ∑ k = 1 K W ~ k × π k \tilde{W} = \sum_{k=1}^{K} \tilde{W}_k \times \pi_k W~=k=1KW~k×πk
其中, W ~ \tilde{W} W~是第k个卷积核的注意力权重, π k \pi_k πk 是第k个卷积核的参数。

动态权重融合部分的计算复杂度:对于每个输出位置,需要对 𝐾个卷积核的对应元素与它们的权重 π k \pi_k πk进行逐元素乘法,然后求和。这个操作的复杂度是 K D K 2 C i n C o u t + K C o u t KD_K^2C_{in}C_{out}+KC_{out} KDK2CinCout+KCout因为每个元素都要参与 𝐾次乘法和 K次加法。

这两部分的计算开销都远小于静态卷积中的计算复杂度( H W C i n C o u t D k 2 HWC_{in}C_{out}D_k^2 HWCinCoutDk2)。

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

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

相关文章

3dmax全景图用什么渲染软件好?渲染100邀请码1a12

全景图是常见的效果图类型,常用于展示大型空间,如展厅、会议室等。全景图的制作需要渲染,下面我介绍几个常用的渲染软件分享给大家。 1、V-Ray:十分流行的渲染引擎,功能强大,它提供了高质量的光线追踪技术…

gitee代码初次上传步骤

ps. 前提是已经下载安装gitee 一、在本地项目目录下空白处右击,选择“Git Bash Here” 二、初始化 git init 三、添加、提交代码(注意add与点之间的空格) git add . git commit -m 添加注释 四、连接、推送到gitee仓库 git remote add …

计算机网络——数据链路层(以太网)

目录 局域网的数据链路层 局域网可按照网络拓扑分类 局域网与共享信道 以太网的两个主要标准 适配器与mac地址 适配器的组成与运作 MAC地址 MAC地址的详细介绍 局域网的mac地址格式 mac地址的发送顺序 单播、多播,广播mac地址 mac帧 如何取用…

C++基石:掌握高效编程的艺术

C 关于命名空间:namespace 上述文档详细介绍了C标准库(Standard C Library)的一些关键约定,这些约定不仅帮助开发者理解如何正确使用库中的功能,也明确了实现者在设计库时的灵活性和限制。下面是对文档中提到的几个要点…

2024-07-05 base SAS programming学习笔记9(variables)

1.在数据集增加累加变量值(SUM) 求和语句(SUM STATEMENT):variableexpression variable是累积求和的变量名,为数值型,默认初始值为0;该variable值则会保留到一个观测 当expression有缺失值,在求…

深度学习Week19——学习残差网络和ResNet50V2算法

文章目录 深度学习Week18——学习残差网络和ResNet50V2算法 一、前言 二、我的环境 三、论文解读 3.1 预激活设计 3.2 残差单元结构 四、模型复现 4.1 Residual Block 4.2 堆叠Residual Block 4.3. ResNet50V2架构复现 一、前言 🍨 本文为🔗365天深度学…

v-html 空格/换行不生效

接口返回的内容如下&#xff1a;有空格有换行&#xff0c;但 使用v-html无效 需加css样式 white-space: pre-wrap; <div class"pretty-html" v-html"Value"></div>.pretty-html {white-space: pre-wrap; /* 保留空格和换行&#xff0c;并允许…

OZON怎么查看竞品数据,OZON怎么找竞品数据

在跨境电商的激烈竞争中&#xff0c;了解和分析竞品数据是每一位卖家优化销售策略、提升市场竞争力的关键步骤。OZON作为俄罗斯领先的电商平台&#xff0c;为卖家提供了丰富的数据分析工具&#xff0c;而萌啦ozon数据作为第三方数据分析平台&#xff0c;更是为卖家提供了更为全…

Linux 进程与计划任务管理

一、程序、进程、线程的概念 1. 程序&#xff1a;是指一组指示计算机或其他具有信息处理能力装置执行动作或做出判断的指令&#xff0c;通常用某种程序设计语言编写&#xff0c;运行于某种目标计算机体系结构上 2. 进程&#xff1a;是计算机中的软件程序关于某数据集合上的一次…

某yi逆向sign值

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未经…

pdf可以删除其中一页吗?6个软件教你快速进行pdf编辑

pdf可以删除其中一页吗&#xff1f;6个软件教你快速进行pdf编辑 编辑PDF文件并删除特定页面是处理文档时常见的需求&#xff0c;特别是在需要定制或精简文件内容时。以下是几款广受欢迎的PDF编辑软件&#xff0c;它们提供了强大的页面删除功能&#xff0c;帮助用户轻松管理和修…

重新定义 AI 部署效率与性能!ZOLOZ 如何借助 AC2 实现低成本高性能的提优?| AI 案例推荐

AI 容器镜像——面向云上全容器场景 王坚院士提到&#xff0c;算力是人工智能发展的三要素之一&#xff0c;而云计算是最好的提供算力的技术手段&#xff0c;英伟达的黄仁勋也表达过类似的观点。可以说&#xff0c;大模型时代下的 AI&#xff0c;天然就是在云场景里的。 容器…

SpringBoot-第一天学习

SpringBoot介绍-约定大于配置 SpringBoot是在Spring4.0基础上开发的&#xff0c;不是替代Spring的解决方案&#xff0c;而是和Spring框架结合并进一步简化Spring搭建和开发过程的。 如何简化&#xff1f;就是通过提供默认配置等方式让我们更容易&#xff0c;集成了大量常用的…

景区智能厕所系统,打造智能化,人性化公共空间

在智慧旅游的大潮中&#xff0c;景区智能厕所系统正逐渐成为提升公共空间智能化、人性化水平的关键载体。作为智慧城市建设的重要组成部分&#xff0c;智能厕所系统不仅解决了传统公厕存在的诸多问题&#xff0c;更通过科技的力量&#xff0c;为游客创造了更加舒适、便捷的如厕…

StreamSets: 数据采集工具详解

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 欢迎关注微信公众号&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

c/c++ 程序运行的过程分析

c/c编译基础知识 GNU GNU&#xff08;GNU’s Not Unix!&#xff09;是一个由理查德斯托曼&#xff08;Richard Stallman&#xff09;在1983年发起的自由软件项目&#xff0c;旨在创建一个完全自由的操作系统&#xff0c;包括操作系统的内核、编译器、工具、库、文本编辑器、邮…

渲染农场渲染真的很贵吗?如何正确使用云渲染农场?

作为渲染行业主流的技术服务“渲染农场"&#xff0c;一直都是备受大家关注&#xff0c;渲染农场最核心的在于充足的计算机算力&#xff0c;结合3D软件支持多台机器渲染的特点&#xff0c;租用渲染农场的机器帮助你快速的解决你的渲染项目。 虽然说渲染农场需要支付一定的…

Astro新前端框架首次体验

Astro新前端框架首次体验 1、什么是Astro Astro是一个静态网站生成器的前端框架&#xff0c;它提供了一种新的开发方式和更好的性能体验&#xff0c;帮助开发者更快速地构建现代化的网站和应用程序。 简单来说就是&#xff1a;Astro这个是一个网站生成器&#xff0c;可以直接…

MinIO:开源对象存储解决方案的领先者

MinIO:开源对象存储解决方案的领先者 MinIO 是一款开源的对象存储系统&#xff0c;致力于提供高性能、可伸缩、安全的数据存储解决方案。 官方解释&#xff1a;MinIO 是一个基于Apache License v2。0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适…

因版本冲突导致logback的debug日志不打印

因框架调整&#xff0c;降级了logback的版本号&#xff0c;由1.3.12降级为1.2.11&#xff08;因框架限制&#xff0c;只能采用1.2版本&#xff09;&#xff0c;降级后发现debug日志无法打印出来&#xff0c;logback.xml配置文件不生效。后排查发现是与slf4j的版本兼容问题 依赖…