Slim-neck by GSConv 论文学习

news2024/11/25 16:53:41

1. 解决了什么问题?

目标检测是计算机视觉中一个重要任务。在边缘设备上,大模型很难取得实时的效果。而使用大量深度可分离卷积的模型则很难取得高准确率。如下图,深度可分离卷积的缺点就是:输入图像的通道信息在计算时被分隔开了。这使得深度可分离卷积(DSC)的特征提取能力和融合能力要比标准卷积(SC)差不少。
在这里插入图片描述

MobileNets 使用大量的 1 × 1 1\times 1 1×1卷积,融合单独计算出的通道信息。ShuffleNets 使用 channel shuffle 让通道信息相互交流。GhostNet 则使用一半的标准卷积操作,保持通道间的信息交流。但是, 1 × 1 1\times 1 1×1卷积的计算量很高,channel shuffle 没有触及标准卷积的结果,GhostNet 则退回到了标准卷积。

2. 提出了什么方法?

为了让深度可分离卷积的结果尽可能地近似标准卷积,作者认为,标准卷积和深度可分离卷积可以合作使用。于是将 SC、DSC、shuffle 混合起来,得到 GSConv。GSConv 平衡了模型的准确率和速度,既能轻量化模型,也能保持准确率。如下图,使用 shuffle 操作将 SC 输出的信息充满 DSC 输出的信息。该 shuffle 是一个均匀混合的策略。这样 SC 的信息就能完全混入 DSC 的输出,在不同的通道上均匀地交换局部的特征信息。
在这里插入图片描述

如下图,GSConv 的特征图要比 DSC 更接近 SC 的特征图。用 GSConv 构造的 slim-neck 能够将 DSC 的缺陷降至最低,充分发挥 DSC 的优势。
在这里插入图片描述

2.1 Why GSConv?

为了加速推理预测,输入图像在主干网络都要经历相似的变换过程:空间信息逐步迁移到通道上。特征图的空间维度缩小、通道变大,会造成语义信息的丢失。通道密集的卷积(SC)计算会最大限度地保留各通道间的隐藏联系,但通道稀疏的卷积(DSC)会完全割断这些联系。

SC、DSC 和 GSConv 的时间复杂度是:

T i m e s c ∼ O ( W × H × K 1 × K 2 × C 1 × C 2 ) Time_{sc}\sim O(W\times H\times K_1\times K_2\times C_1\times C_2) TimescO(W×H×K1×K2×C1×C2)
T i m e D S C ∼ O ( W × H × K 1 × K 2 × 1 × C 2 ) Time_{DSC}\sim O(W\times H\times K_1\times K_2\times 1\times C_2) TimeDSCO(W×H×K1×K2×1×C2)
T i m e G S C o n v ∼ O [ W × H × K 1 × K 2 × C 2 2 ( C 1 + 1 ) ] Time_{GSConv}\sim O\left[W\times H\times K_1\times K_2\times \frac{C_2}{2}(C_1+1)\right] TimeGSConvO[W×H×K1×K2×2C2(C1+1)]

W , H W,H W,H是输出特征图的宽度和高度。 K 1 × K 2 K_1\times K_2 K1×K2是卷积核的大小。 C 1 C_1 C1是每个卷积核的通道数,也是输入特征图的通道数。 C 2 C_2 C2是输出特征图的通道数。

GSConv 对于轻量级模型效果更明显,将 DSC 层和 shuffle 结合能增强非线性表示能力。但如果 GSConv 贯穿模型使用,模型层数会变得很深,深网络层会阻碍数据流动,增加推理时间。于是作者只在 neck 里面使用 GSConv,neck 接收的特征图通道数最大、空间维度最小。这时的特征图包含的冗余信息较少,无需压缩,注意力模块更能发挥作用。

2.2 Slim-neck

2.2.1 Element Modules

GSConv 的计算复杂度约是 SC 的一半,但它的学习能力却与后者相近。作者提出了 GS bottleneck,如下图 (a) 所示。然后作者使用单阶段聚合方法设计了跨阶段局部网络(GSCSP)模块,VoV-GSCSP。下图 (b) 结构简单、直接,对硬件友好,推理速度快。图 © 和 (d) 则有着更高的特征复用率。
在这里插入图片描述

2.3 Improvement tricks for free

作者使用了一些局部特征增强方法,结构简单、计算量低。这些增强方法(注意力机制)能极大地提高模型准确率,但计算成本远低于 neck。这些方法要么在通道信息上计算,要么在空间信息上计算。SPP 关注在空间信息,将 4 个并行分支的结果 concat:3 个最大池化(池化核大小是 5 × 5 , 9 × 9 5\times 5,9\times 9 5×5,9×9 13 × 13 13\times 13 13×13)以及 1 个从输入过来的短路连接。它通过融合输入的局部和全局特征,解决目标尺度变化的问题。YOLOv5 的 SPPF 大幅提升了计算效率,计算效率 η c \eta_c ηc增长了 277.8 % 277.8\% 277.8% η c = [ ( k 1 2 + k 2 2 + k 3 2 + . . . + k i 2 − i ) − ( k 1 2 − 1 ) × i ] × 100 % \eta_c=\left[(k_1^2+k_2^2+k_3^2+...+k_i^2-i)-(k_1^2-1)\times i\right]\times 100\% ηc=[(k12+k22+k32+...+ki2i)(k121)×i]×100% k i k_i ki是 SPPF 模块中最大池化的第 i i i个分支的核大小。下图展示了 SPP 和 SPPF 的结构。
在这里插入图片描述

SE 是一个通道注意力模块,包括 2 个操作:squeeze 和 excitation。该模块使网络更多关注在信息丰富的特征通道上。CBAM 是一个空间-通道注意力模块。CA 模块避免了由全局池化操作引起的位置信息损失,将注意力放在输入特征图的宽度和高度维度上,有效地利用特征图的空间坐标信息。下图展示了 SE、CBAM 和 CA 模块的结构。注意力模块通常放在主干网络的末尾,取得更好的效果。SPPF 模块可直接放在 head 的开始位置。
在这里插入图片描述

2.4 Loss 函数和激活函数

L i o u = 1 − I o U , I o U = A ∩ B A ∪ B L_{iou}=1-IoU, IoU=\frac{A\cap B}{A\cup B} Liou=1IoU,IoU=ABAB
L c i o u = 1 − I o U + ρ 2 ( b , b g t ) d 2 + α v , α = v 1 − I o U + v , v = 4 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) 2 L_{ciou}=1-IoU+\frac{\rho^2(b,b^{gt})}{d^2}+\alpha v,\quad \alpha=\frac{v}{1-IoU+v},\quad v=\frac{4}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}}-\arctan \frac{w}{h})^2 Lciou=1IoU+d2ρ2(b,bgt)+αv,α=1IoU+vv,v=π24(arctanhgtwgtarctanhw)2
L e i o u = 1 − I o U + ρ 2 ( b , b g t ) d 2 + ρ 2 ( w , w g t ) C w 2 + ρ 2 ( h , h g t ) C h 2 L_{eiou}=1-IoU+\frac{\rho^2(b,b^{gt})}{d^2}+\frac{\rho^2(w,w^{gt})}{C_w^2}+\frac{\rho^2(h,h^{gt})}{C^2_h} Leiou=1IoU+d2ρ2(b,bgt)+Cw2ρ2(w,wgt)+Ch2ρ2(h,hgt)

A A A B B B 表示 ground truth 框和预测框的像素区域。 C C C是这俩框的最小包围框。 d d d是最小包围框的对角线的欧式距离。 ρ \rho ρ表示 ground truth 框和预测框中心点的欧式距离。 v v v用于评价 ground truth 框和预测框的宽高比是否一致。CIoU 具有一些问题:

∂ v ∂ w = 8 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) × h w 2 + h 2 , ∂ v ∂ h = − 8 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) × w w 2 + h 2 \frac{\partial v}{\partial w}=\frac{8}{\pi^2}(\arctan \frac{w^{gt}}{h^{gt}}-\arctan \frac{w}{h})\times \frac{h}{w^2+h^2},\\\frac{\partial v}{\partial h}=-\frac{8}{\pi^2}(\arctan \frac{w^{gt}}{h^{gt}}-\arctan \frac{w}{h})\times \frac{w}{w^2+h^2} wv=π28(arctanhgtwgtarctanhw)×w2+h2h,hv=π28(arctanhgtwgtarctanhw)×w2+h2w

根据 CIoU 损失的定义,如果 { ( w = k ⋅ w g t , h = k ⋅ h g t ) ∣ k ∈ R + } \lbrace(w=k\cdot w^{gt}, h=k\cdot h^{gt})| k\in \mathcal{R}^+\rbrace {(w=kwgt,h=khgt)kR+},CIoU 就退化为了 DIoU 损失, α v \alpha v αv就失效了。此外, ∂ v / ∂ w \partial v / \partial w v/w ∂ v / ∂ h \partial v / \partial h v/h符号相反, ∂ v / ∂ w = − ( h / w ) × ( ∂ v / ∂ h ) \partial v / \partial w=-(h/w)\times (\partial v/\partial h) v/w=(h/w)×(v/h)。因此, w w w h h h中一个增长,另一个就会下降。当 w < w g t w<w^{gt} w<wgt并且 h < h g t h<h^{gt} h<hgt,或者 w > w g t w>w^{gt} w>wgt并且 h > h g t h>h^{gt} h>hgt时就不合理了。

EIoU 就不会有这样的问题,它直接用预测框的 w w w h h h作为惩罚项。

Swish 和 Mish 激活函数要比 ReLU 好,它们具有无上界、有下界、平滑、非单调的特性。
swish ( x ) = x ⋅ sigmoid ( β ⋅ x ) , mish ( x ) = x ⋅ tanh ⁡ ( log ⁡ ( 1 + e x ) ) \text{swish}(x)=x\cdot \text{sigmoid}(\beta\cdot x), \quad \text{mish}(x)=x\cdot \tanh(\log(1+e^x)) swish(x)=xsigmoid(βx),mish(x)=xtanh(log(1+ex))

在深度网络,Mish 函数要比 Swish 函数略好一些,Mish 计算量大了,故而需要更多的训练时长。

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

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

相关文章

RocketMQ 5.0本地源码启动3Nameserve+2broker集群

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 由于RocketMQ 5.x主从同步的方式改动非常大&#xff0c;集群部署的方式也改动很大&#xff0c;所以打算本地启动一个小集群&#xff0c;进行debug研究源码学…

PCB反复评审难题,终极解决办法有了?

随着电子产品的高速发展&#xff0c;PCB生产中大量使用BGA、QFP、PGA和CSP等高集成度器件&#xff0c;PCB的复杂程度也大大增加&#xff0c;随之而来的PCB的设计和制造难、测试困难、焊接不良、器件不匹配和维修困难等生产问题&#xff0c;导致整个产品工期延误&#xff0c;产品…

整合 JXLS模版导出excel表格

1、引入 包 - <!--easypoi --> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>3.3.0</version> <…

Day57|647. 回文子串 、516.最长回文子序列

647. 回文子串 1.题目&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是…

学生宿舍智能电表限电原理

学生宿舍智能电表限电石家庄光大远通电气有限公司生产销售系列学生公寓智能管理模块、学生公寓智能控电水电联控系统及相关公寓安全用电产品&#xff0c;产品销往全国各地&#xff0c;广泛应用于各种学校公寓物业及商业地产公司&#xff0c;为企事业单位物业管理提供便捷的水电…

性能优化:如何彻底解决SharedPreferences造成的卡顿

背景 在上线 ANR 监控平台后&#xff0c;线上收集到了较多的ANR日志 &#xff0c;从火焰图信息上看&#xff0c;函数阻塞在了QueuedWork 相关函数上 &#xff0c;本文主要介绍的这一现象的原因以及如何解决这一问题。 本文介绍的解决方案&#xff0c;已放到github 上https://g…

[Android] Android Studio 找不到一些包,编辑器显示红色

起因 此前写了一个项目里面用了 org.apache.commons.cli 这个库&#xff0c;在本地一段时间&#xff0c;因为其他业务影响就没有编写。今天突发奇想加点东西&#xff0c;发现—— 原本完好的项目&#xff0c;通过Android studio打开之后&#xff0c;org.apache.commons引入…

FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

2019 级 电子科学与技术 专业FPGA课程设计 报 告 2022 年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化&#xff08;EDA&#xff09;是一种实现电子系统或电子产品自动化设计的技术&#xff0c;使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证&#xff0c;…

k8s基础概念:port ,targetport,nodeport

在Kubernetes中&#xff0c;有三种类型的端口与Service相关&#xff1a;port、targetPort和NodePort。它们分别用于不同的用途&#xff1a; port&#xff1a;port字段定义了Service暴露给集群内部和外部的端口号。当你创建一个Service时&#xff0c;其他应用或服务可以通过该端…

配置右键点击文件夹通过IDEA打开项目

0、 前言 你是不是每次打开idea项目时&#xff0c;都需要走一遍这样的流程&#xff1a; 1、先启动idea 2、然后手动选择项目路径 3、打开项目 于是在打开项目的路上就耗费了大量的时间。 这篇文章会教你通过配置&#xff0c;让项目可以直接通过右键打开&#xff0c;大大提升项…

[新人向]MySQL和Navicat下载、安装及使用详细教程

MySQL和Navicat下载和安装及使用详细教程 因为这些软件的安装很多都是纯英文&#xff0c;作为新手安装真的需要摸索好久&#xff0c;包括我自己&#xff0c;所以Pipi酱就把自己的经验分享给大家~ MySQL的安装教程 一、下载安装包链接&#xff1a; 1.下载MySQL&#xff1a;ht…

aidl的学习(1)aidl中java.lang.RuntimeException: Didn‘t create service “XXX“

1、build中版本号为30及以上时&#xff0c;aidl无效&#xff0c;解决方案 ①在客户端的manifest.xml中添加一下代码&#xff0c;其中代码中的包名为服务端的包名 <manifest> ... <application> ....</application> <queries ><package android:na…

【Docker】了解和使用Docker

文章底部有投票活动&#xff0c;赶快参与进来吧&#x1f603; 相信大家在开发过程中都听说过 Docker 一词&#xff0c;至于 Docker 在开发中扮演的角色&#xff0c;估计好多人都说不上来&#xff0c;今天就让阿Q带大家一起揭开它神秘的面纱&#xff01; 文章目录 什么是容器&a…

SQL对决MySQL全面对比:差异、相似性、用途和优点!

SQL和MySQL被用于编程和管理关系型数据库。了解SQL和MySQL之间的主要区别&#xff0c;以及在使用这些数据库管理工具的工作中所需的技能。 SQL和MySQL是与数据库相关的语言。SQL是一种用于与关系型数据库中的数据交互的编程语言&#xff0c;而MySQL是一种实现SQL标准的开源数…

Android平台下的cpu利用率优化实现

背景 为了进一步优化APP性能&#xff0c;最近针对如何提高应用对CPU的资源使用、以及在多线程环境下如何提高关键线程的执行优先级做了技术调研。本文是对技术调研过程的阶段性总结&#xff0c;将分别介绍普通应用如何调控App频率、如何将指定线程绑定到特定CPU、如何通过提升…

迅为龙芯2K0500开发板-资料目录

基础资料 01 开发板硬件资料 02_开发及烧写工具 开发资料 03开发所需软件及驱动 04_pmon&Linux内核源码 05_内核镜像 06_pmon镜像 07_buildroot文件系统源码&镜像 08_测试文件 使用手册 01[北京迅为]iTOP-LS2K0500开发板快速启动手册_v1.0 02[北京迅为]iTOP-LS2K0500开…

抖音小程序开发常见问题

抖音小程序 问题1 抖音小程序调试预留白屏 解决 &#xff0c;连接wifi出现无法打开&#xff0c;用手机流量可以正常访问 抖音小程序 web-view 上传后白屏 抖音小程序使用 webview 白屏&#xff0c;使用web-vew打开h5页面白屏 解决&#xff1a;配置web-view域名 服务器域名配…

mysql获取上月月份

查看上个月数据 SELECT * FROM table WHERE date_format(time, %Y %m) date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),%Y %m)查询上个月 select date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH), %m)行转列 – 行转列&#xff1a;方法① SELECT id, name, GROU…

申请阿里云服务器并搭建公网可支持数据上传下载的HTTP服务器

1. 前言 拥有一台自己的云服务器可以做很多事情。阿里云服务器毫无疑问是国内最好的。 阿里云服务器可以用于各种互联网应用的搭建和运行&#xff0c;提供稳定、高性能的服务。 阿里云服务器的用途&#xff0c;包括但不限于以下几个方面&#xff1a; 网站托管&#xff1a;可以将…

比较好用的洗地机品牌有哪些?家用洗地机推荐

近两年洗地机可谓是大热门清洁家电&#xff0c;源于它在清洁使用上面&#xff0c;不仅效率高过于传统清洁工具&#xff0c;同时在清洁地面的时候&#xff0c;干湿垃圾同步清洁&#xff0c;完全不需要手动清洁&#xff0c;使用体验非常棒&#xff01;那关于洗地机该如何挑选才能…