AI论文精读之CSPNet—— 一种加强CNN模型学习能力的主干网络

目录

一、论文摘要部分

二、提出背景

三、本文的方法

3.1 DenseNet 

 3.2 Cross Stage Partial DenseNet

3.3 引入 partial dense block及partial transition layer的目的

 3.3.1 partial dense block

3.3.2 partial transition layer

3.4 将CSPNet应用到其他结构中

 3.5 Exact Fusion Model


 本文解决的是减少推理计算的问题。

一、论文摘要部分

        神经网络已经使得在计算机视觉任务如目标检测方面实现了令人难以置信的成果。然而,这样的成功在很大程度上依赖于昂贵的计算资源,这使得拥有廉价设备的人们无法享受到这一先进技术的好处。在本文中,我们提出了交叉阶段部分网络(CSPNet),以从网络架构的角度缓解之前的工作需要进行大量推断计算的问题。我们将问题归因于网络优化中的重复梯度信息。所提出的网络通过在网络阶段的开始和结束集成特征图来注重梯度的变化,经过我们的实验证明,这样可以将计算量减少20%,并且在ImageNet数据集上达到了等效甚至更高的准确率,而在MS COCO目标检测数据集上,以AP50指标来衡量,显著优于最先进的方法。CSPNet易于实现,并且足够通用,可以处理基于ResNet、ResNeXt和DenseNet的架构。源代码位于https://github.com/WongKinYiu/CrossStagePartialNetworks。

二、提出背景

        CSPNet的提出背景主要源自对现有计算机视觉模型的分析和挑战。在计算资源受限的情况下,轻量级神经网络模型越来越受到关注,但是在轻量化的同时,往往会牺牲模型的准确性。此外,现有的模型在推断过程中存在计算瓶颈和内存开销较大的问题,这导致了在嵌入式设备和边缘计算平台上的应用受到限制。

因此,CSPNet的提出旨在解决以下几个问题:

1. **模型准确性和轻量化之间的平衡:** 现有轻量级模型在准确性上往往表现不佳,CSPNet旨在提高轻量级模型的学习能力,以在保持较高准确性的同时实现轻量化。

2. **计算瓶颈和内存开销:** 现有模型在推断过程中存在计算瓶颈和大量的内存开销,影响了模型的推断速度和应用范围。CSPNet通过优化网络结构和计算流程,以降低计算和内存开销为目标。

3. **适应不同的硬件平台:** CSPNet被设计为通用的轻量级网络结构,可以适应不同的硬件平台,包括嵌入式设备和边缘计算平台,从而扩展了模型的应用范围。

总的来说,CSPNet的提出是为了在保持模型准确性的前提下,提高模型的计算效率和推断速度,以满足在计算资源受限的环境下对计算机视觉模型的需求。

CSPNet提出解决的问题:【论文中给出】

1) 增强CNN的学习能力

        现有CNN在轻量化后的准确性大大降低,因此我们希望增强CNN的学习能力,使其在轻量化的同时能够保持足够的准确性。所提出的CSPNet可以轻松应用于ResNet、ResNeXt和DenseNet等网络。在将CSPNet应用于上述网络之后,计算量可以减少10%到20%,而且ImageNet上进行图像分类任务时,CSPNet的准确性优于ResNet、ResNeXt、DenseNet、HarDNet、Elastic和Res2Net

2) 移除计算瓶颈

        过高的计算瓶颈会导致完成推断过程需要更多的周期,或者一些算术单元会经常处于空闲状态。因此,我们希望能够在CNN的每一层中均匀分配计算量,以有效提升每个计算单元的利用率,从而减少不必要的能源消耗。值得注意的是,所提出的CSPNet将PeleeNet的计算瓶颈减少了一半。此外,在基于MS COCO数据集的目标检测实验中,我们提出的模型在基于YOLOv3模型的测试时,可以有效减少80%的计算瓶颈。

3) 降低内存成本

        动态随机存取存储器(DRAM)的晶圆制造成本非常昂贵,而且它还占据了大量空间。如果能够有效降低内存成本,就能大大降低ASIC的成本。此外,一个小面积的晶圆可以用于各种边缘计算设备。为了减少内存使用,我们采用交叉通道池化来在特征金字塔生成过程中压缩特征图。通过这种方式,所提出的CSPNet结合所提出的目标检测器在生成特征金字塔时可以将PeleeNet的内存使用量减少75%。

如下图1所示,CSPNet可以大大减少计算量,并提高推断速度和准确性。

图1:所提出的CSPNet可以应用于ResNet [7]、ResNeXt [39]、DenseNet [11]等网络。它不仅减少了这些网络的计算成本和内存使用量,还提高了推断速度和准确性。 

三、本文的方法

图2:(a)DenseNet的示意图和(b)我们提出的跨阶段部分DenseNet(CSPDenseNet)。CSPNet将基础层的特征图分为两部分,一部分经过密集块和过渡层;另一部分则与传递的特征图结合,传递到下一个阶段。 

3.1 DenseNet 

在介绍CSPNet之前,先看看DenseNet结构

DenseNet的每个阶段包含一个dense block和一个transition layers(放在两个Dense Block中间,是因为每个Dense Block结束后的输出channel个数很多,需要用1×1的卷积核来降维),每个dense block由k个dense layer组成。第i个 dense layer 的输出将与第i个 dense layer 的输入串联,串联的结果将成为第(i+1)个dense layer的输入。

对上述段落的总结:

图 2a 展示了 DenseNet 的一个 stage 结构:

  1. 每个 stage 都包括一个 dense block + transition layer
  2. 每个 dense block 由 k 个 dense layer 组成
  3. 每个 dense layer 的输出会作为下一个 dense layer 的输入
  4. transition layer: BN+ 1x1 conv + 2x2 avg pooling             

因此DenseNet的机制可以表示为:

其中表示卷积算子,而[x0,x1,…]表示将x0,x1,…,进行串联,Wi和Xi分别表示第i个dense layer 的权重和输出。
如果使用反向传播算法更新权重,则权重更新方程可以写成:

其中f是权重更新的函数,gi表示传播到第i个dense layer的梯度。我们可以发现大量的梯度信息被重复使用来更新不同dense layer 的权重。这将导致不同dense layer 反复学习重复的梯度信息。

引用自:【网络结构设计】6、CSPNet | 一种加强 CNN 模型学习能力的主干网络-CSDN博客

重点:

Concat 操作后,不同通道的梯度是如何传递的

  • Concat 是将多个通道的特征图进行拼接,互相不影响
  • 所以在梯度反向传播的时候,多个通道拼接的特征,只会找对应通道的特征图进行梯度回传

DenseNet 为什么有大量的梯度重用:

  • 每个 layer 会接收前面所有 layer 的输出,也就是 layer i 的输入是 [layer 1 , layer 2 , layer i-1] concat 起来的
  • 在梯度回传的时候,layer 1 会接收到 layer 2 ~ layer i 层的梯度回传,相当于回传了很多遍

CSPNet 怎么解决这种梯度重用:

  • 将每个 block 的输入分成两部分,一部分经过和 DenseNet 相同的密集连接,然后再经过 transition layer,另一部分经过 transition layer,然后将部分 concat 再经过最后的 transition layer 然后输出
  • 其实这里经过 DenseNet 的密集连接的特征图,还是存在梯度重用,真正实现了“梯度不重用”的是这两个分支(经过密集连接和不经过密集连接的这两个分支),因为这两个分支的梯度是不会被重用的(concat 后各自通道负责各自的梯度回传,没有重复计算梯度)
  • 所以 CSPNet 并没有完全解决了梯度重用,可以看做只解决了一半通道的梯度重用

 3.2 Cross Stage Partial DenseNet

图2(b)展示了所提出的CSPDenseNet的一个阶段的架构。CSPDenseNet的一个阶段由一个partial dense block和一个partial transition layer 组成。在partial dense block中,一个阶段中基础层的特征图被分成两部分通过通道 。在 之间,前者直接连接到阶段的末尾,而后者将经过一个dense block。
partial transition layer涉及的所有步骤如下:首先,密集层的输出将经过一个过渡层。其次,这个过渡层的输出将与 串联,并经过另一个过渡层,然后生成输出

CSPDenseNet的前向传递和权重更新方程式分别如下所示:

我们可以看到,来自dense layer的梯度是分开整合的。另一方面,未穿过dense layer的特征图也单独集成。对于用于更新权重的梯度信息,两边不包含属于另一边的重复梯度信息。

总体而言,本文提出的CSP-DenseNet保留了DenseNet特征重复使用的优点,同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计层次化特征融合策略实现,并应用于部分过渡层。

3.3 引入 partial dense block及partial transition layer的目的

 3.3.1 partial dense block

设计部分密集块的目的是为了:
1.) 增加梯度路径:通过分割和合并策略,梯度路径的数量可以加倍。由于跨阶段策略,可以减轻使用显式特征图复制进行串联所带来的缺点;
2.) 平衡每层的计算量:通常,DenseNet中基础层的通道数远远大于增长率。由于部分密集块中密集层操作涉及的基础层通道数量仅占原始数量的一半,因此可以有效解决近一半的计算瓶颈;
3.) 减少内存流量:假设DenseNet中密集块的基础特征图大小为w×h×c,增长率为d,总共有m个密集层。那么,该密集块的CIO【CIO指的是“Convolutional Input/Output”,是一种近似于动态随机存取存储器(DRAM)流量的度量,与实际DRAM流量成正比。】,部分密集块的CIO为​​​​​​​。由于m和d通常远小于c,部分密集块能够最多节省网络内存流量的一半。

 图3:不同类型的特征融合策略。
(a) 单路径DenseNet,
(b) 提出的CSPDenseNet:过渡串联过渡,
(c)  fusion first:经过 dense block 的特征直接和 part1 的特征进行 concat,然后再输入 Transition,这样梯度是可以重复利用的
(d)  fusion last:经过 dense block 的特征先自己做 transition,然后和 part1 特征 concat,这样梯度是会被截断的,不会重复利用(因为没有融合所以两部分梯度无法共享,造成梯度截断)

3.3.2 partial transition layer

        Partial Transition Layer的设计目的是最大化梯度组合的差异。Partial Transition Layer是一种分层特征融合机制,采用截断梯度流的策略,防止不同层学习重复的梯度信息。在这里,我们设计了两种CSPDenseNet的变体,以展示这种梯度流截断对网络学习能力的影响。图3(c)和3(d)展示了两种不同的融合策略。
        CSP(Fusion First)意味着将由两部分生成的特征图连接起来,然后进行过渡操作。如果采用这种策略,将会重复使用大量的梯度信息。
        至于CSP(Fusion Last)策略,来自密集块的输出将经过过渡层,然后与来自第一部分的特征图进行连接。如果采用CSP(Fusion Last)策略,梯度信息将不会被重复使用,因为梯度流被截断了。如果我们使用图3中展示的四种架构进行图像分类,相应的结果如图4所示。

可以看出,如果采用CSP(Fusion Last)策略进行图像分类,计算成本会显著降低,但top-1准确率仅下降了0.1%。另一方面,CSP(Fusion First)策略确实有助于显著降低计算成本,但top-1准确率显著下降了1.5%。通过跨阶段使用分裂和合并策略,我们能够有效地减少信息整合过程中的重复可能性。从图4中的结果可以明显看出,如果能有效减少重复的梯度信息,网络的学习能力将得到极大的改善。 

3.4 将CSPNet应用到其他结构中

CSPNet也可以轻松地应用于ResNet和ResNeXt,其架构如图5所示。由于只有一半的特征通道通过Res(X)块,因此不再需要引入瓶颈层。这使得在固定浮点操作(FLOPs)时,内存访问成本(MAC)的理论下限更低。

 3.5 Exact Fusion Model

EFM提出了一种准确地预测的方法,通过捕获每个anchor的适当视野(Field of View, FoV),增强了一阶段目标检测器的准确性。对于分割任务,由于像素级标签通常不包含全局信息,通常更倾向于考虑更大的区域以获得更好的信息检索。然而,对于诸如图像分类和目标检测之类的任务,当从图像级别和边界框级别的标签进行观察时,一些关键信息可能会变得模糊。李等人发现,当CNN从图像级别标签学习时,往往会分散注意力,并得出这是两阶段目标检测器优于一阶段目标检测器的主要原因之一。

聚合特征金字塔。提出的EFM能够更好地聚合初始特征金字塔。EFM基于YOLOv3 [29],它为每个真实对象分配了一个先验边界框。每个标注框对应一个超过IoU阈值的anchor框。如果一个anchor框的大小等于网格单元的视野范围,那么对于第s个尺度的网格单元,相应的边界框将被第(s-1)个尺度下界和第(s+1)个尺度上界所限制。因此,EFM会从这三个尺度中汇聚特征。

平衡计算。由于特征金字塔中的拼接特征图非常庞大,会引入大量的内存和计算成本。为了缓解这个问题,我们采用了Maxout技术【类似于droupout】来压缩特征图。

图6:不同的特征金字塔融合策略。
(a)特征金字塔网络(FPN):融合当前尺度和前一尺度的特征。
(b)全局融合模型(GFM):融合所有尺度的特征。
(c)精确融合模型(EFM):根据锚点尺寸融合特征。 

部分参考自:                       
https://blog.csdn.net/haha0825/article/details/106102762
https://blog.csdn.net/jiaoyangwm/article/details/126766270 
深度学习之CSPNet分析_cspnet结构-CSDN博客

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

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

相关文章

100 Explosion Pack

该套装包括100种爆炸效果,包括火灾爆炸、冲击波、风暴、奇异点、特斯拉等效果。 纹理有一个透明的alpha通道,所以你可以在任何背景上使用它们! 所有效果都是高质量的,动画流畅(64帧,每帧512像素) 每个效果都使用独特的高质量精灵表。 100个不同的小精灵大小:4096x4096 …

IO流(2.其他流)

能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流 一、缓冲流 缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流:Buffe…

【中文医疗词嵌入模型】SMedBERT:结构化知识图谱 + 混合注意力机制 + 提及-邻居上下文建模

【中文医疗词嵌入模型】SMedBERT:结构化知识图谱 混合注意力机制 提及-邻居上下文建模 提出背景SMedBERT 具体到点的设计逻辑SMedBERT的背景SMedBERT的工作原理 SMedBERT 具体实现细节3.1 符号和模型3.2 Top-K Entity Sorting3.3 提及-邻居混合注意力3.4 提及-邻居…

Softing工业将亮相2024汉诺威工业博览会——工业物联网的数据集成和连接

您可在2024年4月22至26日前往汉诺威参观Softing展台,我们将在015号馆的F48展位进行展出,期待您的莅临! | 通过灵活的数据集成解决方案无缝连接机器 在此次汉诺威工业博览会上,您将了解到Softing数据集成解决方案——用于机器连接…

【深度学习|基础算法】初识Transformer-encoder-decoder

关于transformer的学习 一、前言二、初识Transformer2.1 总览2.2 encoder2.3 decoder 三. 流程与细节1、输入2、self-attention 一、前言 我本身是从事图像算法行业的,在之前主要是做传统的图像算法,后来接触了基于CNN的神经网络图像算法,包括…

[ritsec CTF 2024] 密码部分

这个比较密码这块还是比较简单的,经过问了N人以后终于完成。 [Warm Up] Words 给了个猪圈密码的图片,这东西好久不见的感觉。 [Warm Up] Emails MTP似乎也没多好的方法,猜更快,先给了几封email然后一个用MTP长度是32&#xff08…

【微服务】------常见模型的分析与比较

DDD 分层架构 整洁架构 整洁架构又名“洋葱架构”。为什么叫它洋葱架构?看看下面这张图你就明白了。整洁架构的层就像洋葱片一样,它体现了分层的设计思想。 整洁架构最主要的原则是依赖原则,它定义了各层的依赖关系,越往里依赖越…

HUD抬头显示器中如何设计LCD的阳光倒灌实验

关键词:阳光倒灌实验、HUD光照温升测试、LCD光照温升测试、太阳光模拟器 HUD(Head-Up Display,即抬头显示器)是一种将信息直接投影到驾驶员视线中的技术,通常用于飞机、汽车等驾驶舱内。HUD系统中的LCD(Liq…

51单片机之LED点阵屏

目录 1.LED点阵屏简介 2.配置LED点阵屏代码 1.LED点阵屏简介 LED点阵屏真的是遍布我们我们生活的每个角落,从街边的流动显示字的招牌到你的液晶显示屏,都是基于点阵屏的原理研究出来的。还有那个世界上最大的球状建筑物:MSG Sphere&#xff…

GridView控件的使用(一)

GridView控件通常用于在Windows窗体或Web应用程序中显示数据表格。它是一个强大的数据绑定控件,能够灵活地显示和编辑数据源中的数据。 在何种情况下应使用GridView进行绑定控件: 显示结构化数据:当您需要展示一系列具有相同字段的数据记录…

机器学习 —— 使用机器学习进行情感分析 详细介绍版

机器学习 —— 使用机器学习进行情感分析 详细介绍版 机器学习 —— 使用机器学习进行情感分析 演示版 目录 一、 绪论二、 数据处理1. 构建CSV文档2. 构建模型前的思考2.1. 问题2.2. 解决方法 3. 读取数据4. 用正则表达式来进行对特定符号的剔除5. 使用口袋模型进行文本处理和…

稀碎从零算法笔记Day44-LeetCode:整数转罗马数字

题型:贪心、模拟 链接: 12. 整数转罗马数字 - 力扣(LeetCode) 来源:LeetCode 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 …

【Springboot开发】后端代码基础框架

前言:主要介绍最基础的springboot开发架构 目录 1. overall2. 配置文件2.1 YAML2.2 properties2.3 配置文件加载顺序2.4 多配置文件 3. 代码包3.1 infrastructure3.1.1 persistence 3.2 application3.2.1 dto3.2.2 converter3.2.3 service 3.3 api3.3.1 vo3.3.2 req…

go websocket

WebSocket 是一种网络协议,建立在 HTTP 协议之上,允许双向通信。WebSocket 协议允许服务器发送数据到客户端,同时也可以让客户端向服务器发送数据。WebSocket 使用 HTTP 协议的升级请求和响应来建立连接。WebSocket 的主要优点在于它可以通过…

【JavaSE】接口 详解(下)

前言 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 接口实例运用 代码举例理解 比较对象的年龄 比较对象的姓名 利用冒泡排序实现Array.sort 年龄比较器 姓名比较器 比较示例测试 clone接口 浅拷贝和深拷贝 浅…

代码随想录学习Day 26

332.重新安排行程 题目链接 from collections import defaultdictclass Solution:def findItinerary(self, tickets):targets defaultdict(list) # 创建默认字典,用于存储机场映射关系for ticket in tickets:targets[ticket[0]].append(ticket[1]) # 将机票输入…

GlusterFS分布式存储

目录 前言 一、GlusterFS分布式存储概述 1、GFS概念 2、GFS特点 3、GFS术语 4、GFS构成 5、GFS工作流程 6、后端存储如何定位文件 7、GlusterFs的卷类型 7.1 Distributed Volume(分布式卷) 7.2 Striped Volume(条带卷&#xff09…

【JavaEE初阶系列】——网络初识—TCP/IP五层网络模型

目录 🚩网络的发展史 🎈局域网LAN 🎈广域网WAN 🚩网络通信基础 🎈IP地址 🎈端口号 🎈协议类型 🎈五元组 🚩协议分层 🎈什么是协议分层 &#x…

Web前端-Ajax

Ajax 概念:Asynchronous JavaScript And XML,异步的JavaScript和XML。 作用: 1.数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。 2.异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等…

TryHackMe - HTTP Request Smuggling

学完、打完后的复习 HTTP 1 这部分比较简单,直接略过 HTTP2请求走私 首先要了解HTTP2的结构,与HTTP1之间的一些差异 HTTP2中不再使用CRLF来作为字段的边界限定,而是在二进制中直接通过长度、名字、值长度、值,来确认边界 而这…