Yolo系列——动态卷积

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

为了更好的将模型部署在边端设备上,需要设计轻量级网络模型。轻量级卷积网络因其较低的运算而限制了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)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第10天|使用静态图加速》

文章目录 今日所学:一、背景介绍1. 动态图模式2. 静态图模式 三、静态图模式的使用场景四、静态图模式开启方式1. 基于装饰器的开启方式2. 基于context的开启方式 总结: 今日所学: 在上一集中,我学习了保存与加载的方法&#xff…

【全网最全ABC三题完整版】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

金属3D打印如何精准选材

随着3D打印技术的飞跃发展,模具制造领域迎来了前所未有的创新机遇。在众多3D打印技术中,SLM金属3D打印以其精度高、复杂结构成型能力,成为众多行业的优选。然而,金属打印材料,如何精准选择,以最大化满足项目…

MySQL的并发控制、事务、日志

目录 一.并发控制 1.锁机制 2.加锁与释放锁 二.事务(transactions) 1.事物的概念 2.ACID特性 3.事务隔离级别 三.日志 1.事务日志 2.错误日志 3.通用日志 4.慢查询日志 5.二进制日志 备份 一.并发控制 在 MySQL 中,并发控制是确…

Build a Large Language Model (From Scratch)附录B(gpt-4o翻译版)

来源:https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch

模拟,CF 570C - Replacement

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 570C - Replacement 二、解题报告 1、思路分析 1、长为cnt的连续串的最小操作次数为cnt - 1 2、每次将一个非. 替换为. f要么增加1要么增加2 只有前后都是 . 的时候会增加2 同理,当我们将一…

【漏洞复现】飞企互联-FE企业运营管理平台——SQL注入

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据…

针对某客户报表系统数据库跑批慢进行性能分析及优化

某客户报表系统数据库跑批时间过长,超出源主库较多,故对其进行了分析调优,目前状态如下: 1、业务连接的rac的scanip,因为负载均衡将跑批的连接连接到了多个计算节点导致节点间通讯成本较高,故速率缓慢&…

2024年7月6日 十二生肖 今日运势

小运播报:2024年7月6日,星期六,农历六月初一 (甲辰年庚午月辛未日),法定节假日。 红榜生肖:猪、马、兔 需要注意:狗、鼠、牛 喜神方位:西南方 财神方位:正…

Android - 模拟器

Android SDK 包括一个在您的计算机上运行的虚拟移动设备模拟器。 该模拟器可让您在不使用物理设备的情况下对 Android 应用程序进行原型设计、开发和测试。 在本章中,我们将探索真实安卓设备中存在的模拟器中的不同功能。 创建 AVD 如果您想模拟真实设备&#xff0c…

机器人典型的交互任务、阻抗控制的示意图、内涵、意义、存在的交互控制科学问题

机器人典型的交互任务 机器人在实际应用中经常需要完成与环境的交互任务,这些任务包括但不限于: 装配任务:在制造业中,机器人需要准确地操控和组装各种零部件,包括不同形状、大小和材质的物体。搬运任务:…

docker-compose搭建prometheus、grafana

一、安装prometheus 1、安装 version: 3.1services:prometheus:image: prom/prometheus:v2.48.0container_name: prometheushostname: prometheusrestart: alwaysvolumes:- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus/:/etc/prometheus/port…

strcpy,srtcmp,strlen函数漏洞利用

strcpy,srtcmp,strlen函数漏洞利用 strcpy strcpy函数用于将字符串复制到另一个指针指向的空间中,遇到空字符 **b’x\00’**时停止,: 所以可以利用 strcpy不检查缓冲区 的漏洞(构造的字符串要以\0结尾),…

Ubuntu / Debian安装FTP服务

本章教程,记录在Ubuntu中安装FTP服务的具体步骤。FTP默认端口:21 1、安装 pure-ftpd sudo apt-get install pure-ftpd2、修改默认配置 # 与 centos 不同,这里需要在 /etc/pure-ftpd/conf 文件夹下执行下列命令,增加对应配置文件: # 创建 /etc/pure-ftpd/conf/PureDB 文件…

半导体制造企业 文件共享存储应用

用户背景:半导体设备(上海)股份有限公司是一家以中国为基地、面向全球的微观加工高端设备公司,为集成电路和泛半导体行业提供具竞争力的高端设备和高质量的服务。 挑战:芯片的行业在国内迅猛发展,用户在上海…

3033.力扣每日一题7/5 Java

博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 思路 首先创建一个与…

Vue3从入门到精通(三)

vue3插槽Slots 在 Vue3 中&#xff0c;插槽&#xff08;Slots&#xff09;的使用方式与 Vue2 中基本相同&#xff0c;但有一些细微的差异。以下是在 Vue3 中使用插槽的示例&#xff1a; // ChildComponent.vue <template><div><h2>Child Component</h2&…

解决前后端同一个端口跨域问题

前端起了一个代理 如果url是api开头的自动代理访问8080端口&#xff08;解决前后端端口不一致要么是前端代理&#xff0c;要么是后端加过滤器&#xff09; proxy:{/api:{target:http://localhost:8080,changeOrigin : true,// 替换去掉路径上的api// rewrite:(path)>path.r…

java集合(1)

目录 一.集合概述 二. 集合体系概述 1. Collection接口 1.1 List接口 1.2 Set接口 2. Map接口 三. ArrayList 1.ArrayList常用方法 2.ArrayList遍历 2.1 for循环 2.2 增强for循环 2.3 迭代器遍历 一.集合概述 我们经常需要存储一些数据类型相同的元素,之前我们学过…

(2024)KAN: Kolmogorov–Arnold Networks:评论

KAN: Kolmogorov–Arnold Networks: A review 公和众与号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. MLP 也有可学习的激活函数 2. 标题的意义 3. KAN 是具有样条基激活函数的 M…