CSPNet: A New Backbone that can Enhance Learning Capability of CNN(2019)

news2024/12/23 16:17:59


文章目录

  • -
  • Abstract
  • 1 Introduction
  • 2 Related work
    • former work
  • 3 Method
    • 3.1 Cross Stage Partial Network
    • 3.2 Exact Fusion Model
  • 4 Experiments
  • 5 Conclusion

原文链接
源代码

-

梯度信息重用(有别于冗余的梯度信息)可以减少计算量和内存占用提高效率,但会降低精度(可能是因为重用梯度信息带来的近似误差)

Abstract

神经网络使最先进的方法在计算机视觉任务(如物体检测)上取得了令人难以置信的结果。然而,这种成功在很大程度上依赖于昂贵的计算资源,这阻碍了拥有廉价设备的人们欣赏先进技术。在本文中,我们提出了跨阶段部分网络(CSPNet)以缓解以往的工作需要从网络架构的角度进行大量推理计算的问题我们将此问题归因于网络优化中梯度信息的重复所提出的网络通过集成网络阶段开始和结束的特征映射来尊重梯度的可变性,在我们的实验中,在ImageNet数据集上以同等甚至更高的精度减少了20%的计算量,并且在MS COCO目标检测数据集上的AP 50方面显著优于最先进的方法。CSPNet很容易实现,并且足够通用,可以处理基于ResNet、ResNeXt和DenseNet的架构

1 Introduction

当神经网络变得更深[7,39,11]和更宽[40]时,神经网络表现得尤为强大。然而,扩展神经网络的架构通常会带来更多的计算量,这使得像目标检测这样的计算量很大的任务对大多数人来说是负担不起的。由于实际应用通常需要在小型设备上进行较短的推理时间,因此轻量化计算逐渐受到越来越多的关注,这对计算机视觉算法提出了严峻的挑战。尽管一些方法是专门为移动CPU设计的[9,31,8,33,43,24],但它们采用的深度可分离卷积技术与工业IC设计(如边缘计算系统的专用集成电路(ASIC))不兼容
在这项工作中,我们研究了最先进的方法(如ResNet, ResNeXt和DenseNet)的计算负担,我们进一步开发计算效率高的组件,使上述网络能够同时部署在cpu和移动gpu上,而不会牺牲性能

在本研究中,我们介绍了跨阶段部分网络(CSPNet)。设计CSPNet的主要目的是使该体系结构能够实现更丰富的梯度组合,同时减少计算量。这一目标是通过将基础层的特征映射划分为两个部分,然后通过提出的跨阶段层次结构将它们合并来实现的。我们的主要概念是通过拆分梯度流,使梯度流在不同的网络路径上传播。通过这种方式,我们证实了通过切换拼接和转换步骤,传播的梯度信息可以有很大的相关差异。此外,CSPNet可以大大减少计算量,提高推理速度和精度,如图1所示

提出的CSPNet可以应用于ResNet[7]、ResNeXt[39]、DenseNet[11]等。它不仅降低了网络的计算成本和内存占用,而且有利于提高推理速度和准确性

本文提出的基于CSPNet的目标检测器解决了以下三个问题:
1)加强CNN的学习能力现有的CNN在轻量化后精度大大降低,所以我们希望加强CNN的学习能力,使其在轻量化的同时保持足够的精度。所提出的CSPNet可以很容易地应用于ResNet、ResNeXt和DenseNet。在上述网络上应用CSPNet后,计算量可以从10%减少到20%,但在ImageNet[2]上进行图像分类任务时,其准确率优于ResNet[7]、ResNeXt[39]、DenseNet[11]、HarDNet[1]、Elastic[36]和Res2Net[5]

2)消除计算瓶颈:过高的计算瓶颈将导致更多的周期来完成推理过程,或者一些算术单元经常会闲置。因此,我们希望能够将CNN的计算量均匀地分布在每一层,这样可以有效地提升每个计算单元的利用率,从而减少不必要的能耗。值得注意的是,提出的CSPNet使PeleeNet[37]的计算瓶颈减半。此外,在基于MS COCO[18]数据集的目标检测实验中,我们提出的模型在基于yolov3的模型上进行测试时,可以有效减少80%的计算瓶颈

3)降低内存成本:动态随机存取存储器(DRAM)的晶圆制造成本非常昂贵,并且占用大量空间。如果能有效降低内存成本,就能大大降低ASIC的成本。此外,小面积晶圆可用于各种边缘计算设备。为了减少内存的使用,我们在特征金字塔生成过程中采用了跨通道池化[6]来压缩特征映射。这样,在生成特征金字塔时,使用目标检测器的CSPNet可以减少PeleeNet 75%的内存使用

由于CSPNet能够提高CNN的学习能力,因此我们使用更小的模型来获得更好的精度。我们提出的模型可以在GTX 1080ti上以109 fps的速度实现50%的COCO AP 50。由于CSPNet可以有效地减少大量的内存流量,我们提出的方法可以在英特尔酷睿i9-9900K上以52 fps的速度实现40%的COCO AP 50。此外,由于CSPNet可以显著降低计算瓶颈和精确融合模型(EFM)可以有效降低所需的内存带宽,我们提出的方法可以在Nvidia Jetson TX2上以49 fps的速度实现42%的COCO AP 50

2 Related work

former work

CNN architectures design. :在ResNeXt[39]中,Xie等人首先证明了基数可以比宽度和深度的维度更有效DenseNet[11]由于采用大量重用特征的策略,可以显著减少参数和计算的数量它将前面所有层的输出特征连接起来作为下一个输入,这可以被认为是最大化基数的方法。SparseNet[46]将密集连接调整为指数间隔连接,可以有效提高参数利用率,从而获得更好的结果。Wang等人通过梯度组合的概念进一步解释了为什么高基数和稀疏连接可以提高网络的学习能力,并开发了partial ResNet (PRN)[35]。为了提高CNN的推理速度,Ma等[24]引入了四条需要遵循的准则,并设计了ShuffleNet-v2。Chao等人[1]提出了一种低内存流量CNN,称为Harmonic DenseNet (HarDNet)和一种度量卷积输入/输出(CIO),它是与实际DRAM流量测量成比例的近似DRAM流量

Real-time object detector.最著名的两种实时目标检测器是YOLOv3[29]和SSD[21]。基于SSD的LRF[38]和RFBNet[19]可以在GPU上实现最先进的实时目标检测性能。近年来,基于无锚点的目标检测器[3,45,13,14,42]已成为主流的目标检测系统。这种类型的两个对象检测器是CenterNet[45]和CornerNet-Lite[14],它们在效率和功效方面都表现得非常好。对于CPU或移动GPU上的实时目标检测,基于ssd的Pelee[37]、基于yolov3的PRN[35]和基于Light-Head RCNN[17]的ThunderNet[25]在目标检测方面都有很好的表现。

3 Method

3.1 Cross Stage Partial Network


DenseNet.
图2 (a)显示了Huang等人[11]提出的DenseNet的一级详细结构。DenseNet的每个阶段包含一个密集块和一个过渡层,每个密集块由k个密集层组成。第i个密集层的输出将与第i个密集层的输入进行连接,连接后的结果将成为第(i + 1)个密集层的输入。表示上述机理的方程可表示为:

其中*表示卷积算子,[x 0,x 1,…]表示连接x 0,x 1,…, w I和x I分别是第I层的权值和输出

如果使用反向传播算法更新权值,则权值更新方程为:

式中,f为权值更新函数,gI表示传播到第I层的梯度。我们可以发现,在更新不同密度层的权重时,大量的梯度信息被重用。这将导致不同的密集层反复学习复制的梯度信息

Cross Stage Partial DenseNet.
CSPDenseNet的一级架构如图2 (b)所示。CSPDenseNet的一级由部分密集块和部分过渡层组成。在部分密集块中,通过通道x 0 = [x0’,x0’']将一个阶段中底层的特征映射分成两部分。在x0’和x0‘’之间,前者直接连接到关卡的终点,而后者则会经过一个密密麻麻的街区部分过渡层所涉及的所有步骤如下:首先,密集层的输出,[x‘’0,x 1,…,x k],将经历一个过渡层。其次,这个过渡层的输出,x T,将与x ‘’0,再经过一个过渡层,然后产生输出x U。CSPDenseNet的前馈传递和权值更新方程分别如式3和式4所示
我们可以看到,来自密集层的梯度是单独积分的。另一方面,未经过密集层的特征映射x 0′也单独积分。对于更新权值的梯度信息,两边不包含属于其他边的重复梯度信息。

总的来说,提出的CSPDenseNet保留了DenseNet的特征重用特性的优点同时通过截断梯度流防止了过多的重复梯度信息。该思想通过设计分层特征融合策略实现,并应用于局部过渡层

Partial Dense Block.
设计部分密集块的目的是1)增加梯度路径:通过拆分合并策略,可以使梯度路径的数量增加一倍。由于跨阶段策略,可以减轻使用显式特征映射复制进行连接所带来的缺点
2)每层的平衡计算:通常,DenseNet的基础层通道数远大于增长率。由于局部密集块中涉及密集层操作的基础层通道仅占原始数量的一半,因此可以有效解决近一半的计算瓶颈
3.)减少内存流量:假设DenseNet中一个密集块的基本特征图大小为w × h × c,增长率为d,总共有m个密集层。则该密集块的CIO为**(c × m) + ((m^2 + m) × d)/2**,部分密集块的CIO为**((c × m) + (m 2 + m) × d)/2**。m和d通常远小于c,部分密集块最多可以节省网络内存流量的一半

Partial Transition Layer.
设计部分过渡层的目的是为了使梯度组合的差异最大化部分过渡层是一种分层特征融合机制,采用截断梯度流的策略,防止不同层学习到重复的梯度信息。在这里,我们设计了CSPDenseNet的两个变体,以展示这种梯度流截断如何影响网络的学习能力。3 ©和3 (d)显示了两种不同的融合策略。CSP (fusion first)是指将两部分生成的特征图进行拼接,然后进行转换操作。如果采用这种策略,将会有大量的梯度信息被重用。对于CSP (fusion last)策略,密集块的输出将通过过渡层,然后与来自第1部分的特征映射进行拼接。如果使用CSP(最后融合)策略,梯度信息将不会被重用,因为梯度流被截断了。如果我们使用3中所示的四种架构进行图像分类,相应的结果如图4所示。可以看出,如果采用CSP (fusion last)策略进行图像分类,计算成本明显下降,但前1的准确率仅下降0.1%。另一方面,CSP(融合优先)策略确实有助于显著降低计算成本,但前1名的准确率显著下降1.5%。通过跨阶段使用拆分合并策略,可以有效地减少信息集成过程中重复的可能性。从图4的结果可以明显看出,如果能够有效地减少重复的梯度信息,网络的学习能力将会大大提高在这里插入图片描述
Apply CSPNet to Other Architectures.
CSPNet也可以很容易地应用于ResNet和ResNeXt,架构如图5所示。由于只有一半的特征通道通过Res(X)块,因此不再需要引入瓶颈层。这使得当浮点操作(FLOPs)固定时,内存访问成本(MAC)的理论下限是固定的

3.2 Exact Fusion Model

Looking Exactly to predict perfectly.
我们提出了一种捕获每个锚点适当视野(FoV)的EFM方法,提高了单级目标检测器的精度。对于分割任务,由于像素级标签通常不包含全局信息,因此为了更好地检索信息,通常更倾向于考虑更大的补丁[22]。然而,对于像图像分类和目标检测这样的任务,从图像级和边界框级标签中观察到的一些关键信息可能是模糊的。Li等人[15]发现CNN在从图像级标签中学习时经常会分心,并得出结论,这是两阶段目标检测器优于一阶段目标检测器的主要原因之一

Aggregate Feature Pyramid.
所提出的EFM能够更好地聚合初始特征金字塔。EFM基于YOLOv3[29],它在每个基础真值对象之前精确地分配了一个边界框。每个接地真相边界盒对应一个超过阈值IoU的锚定盒。如果锚框的大小等于网格单元的FoV,那么对于第s个尺度的网格单元,对应的边界框的下界是(s - 1)个尺度,上界是(s+1)个尺度。因此,EFM集合了三个尺度的特征

Balance Computation.
由于特征金字塔中连接的特征映射是巨大的,它引入了大量的内存和计算成本。为了缓解这个问题,我们引入了Maxout技术来压缩特征映射

4 Experiments





5 Conclusion

我们已经提出了CSPNet,使最先进的方法,如ResNet, ResNeXt和DenseNet是轻量级的移动gpu或cpu。其中一个主要的贡献是我们已经认识到冗余的梯度信息问题,导致低效的优化和昂贵的推理计算。我们提出利用跨阶段特征融合策略和截断梯度流来增强学习到的特征在不同层内的可变性。此外,我们提出了结合Maxout操作的EFM来压缩特征金字塔生成的特征映射,这大大降低了所需的内存带宽,从而使推理足够高效,可以与边缘计算设备兼容。实验表明,基于EFM的CSPNet在移动GPU和CPU上的实时目标检测任务的准确率和推理率显著优于竞争对手

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

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

相关文章

二、结合各种图形库实现各种demo(11-20)

demo地址https://bidding-m.gitee.io/maptalks-test-next/#/ 11、isects 12、right click menu 13、infoWindow 14、image marker 15、multi image marker 16、vector-marker-fill 17、line-gradient-arrow 18、rotated-marker-with-line 19、smoothness-line 20、polygon 欢迎…

“集爱三湘 传递温情”旺旺送温暖公益活动在开福东风路街道办举行

(通讯员:吴康)用真情传递爱的力量,用行动践行善的约定。12月12日上午,湖南大旺食品有限公司长沙分公司联合湖南省朝阳公益基金会在开福区东风路街道办举行“集爱三湘 传递温情”旺旺送温暖活动,旨在扎实做好…

链表基础知识(一、单链表)

一、链表表示和实现 顺序表的问题及思考 问题: 1. 中间/头部的插入删除,时间复杂度为O(N) 2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当…

Live800:客服5大场景高满意度话术有这些

客服作为企业与消费者之间的桥梁,其服务质量往往直接影响到消费者对企业的印象和忠诚度。因此,提高客服满意度一直是企业所关注的重要问题。那么,客服在哪些场景下能够让消费者感到满意呢?今天,我们就来探讨一下客服5大…

MySQL笔记-第11章_数据处理之增删改

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第11章_数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更…

【Web】一张动图告诉你,输入网址之后,发生了什么事情?

让我们一步一步地来看这个过程。 步骤1: 用户在浏览器中输入一个URL(比如www.csdn.net),然后按下回车键。首先,我们需要将这个URL转换成一个IP地址。通常,这个映射关系会被存储在缓存中,因此浏…

Linux基本操作指令

哈喽小伙伴们,从这篇文章开始,在学习数据结构的同时,我们开启一个新的篇章——Linux操作系统的学习,这将会是又一个新的开始,希望小伙伴们能够认真细心,不要掉队哦。 目录 一.什么是Linux 二.为什么要学习…

BeautifulSoup学习

前期准备&#xff1a; pip install bs4 pip install lxml bs解析器 从上面的表格可以看出&#xff0c;lxml解析器可以解析HTML和XML文档&#xff0c;并且速度快&#xff0c;容错能力强&#xff0c;所有推荐使用它。 节点选择器 获取名称 soup BeautifulSoup(<b class&…

mysql:不要在索引列进行数学运算和函数运算

不要在索引列进行数学运算和函数运算。这是因为数学运算和函数运算会改变索引列的值&#xff0c;导致索引失效。 如果需要进行计算或函数处理&#xff0c;最好将数据取出并在应用程序中进行处理。 下面举个对照的例子&#xff1a; 1&#xff09;看语句explain select * from …

Embedding压缩之基于二进制码的Hash Embedding

推荐系统中&#xff0c;ID类特征的表示学习&#xff08;embedding learning&#xff09;是深度学习模型成功的关键&#xff0c;因为这些embedding参数占据模型的大部分体积。这些模型标准的做法是为每一个ID特征分配一个unique embedding vectors&#xff0c;但这也导致存储emb…

Openlayers 加载 Geoserver 图层以及查询条件过滤

Openlayers 加载 Geoserver 图层以及查询条件过滤 查询条件过滤核心代码完整代码&#xff1a;在线示例 Openlayers 加载 Geoserver 图层&#xff0c;在实际项目中常常会遇到&#xff0c;需要对图层进行过滤&#xff0c;这里介绍一下过滤方法。 其实就是利用 Geoserver 的 CQL_…

2024SIA上海国际轴承工业展览会 ▎参行业盛会 展轴研风采

2024SIA上海国际轴承工业展览会 内容&#xff1a;1、轴承制品展区&#xff1a;2、轴承设备展区&#xff1a;3、轴承零件展区&#xff1a; 国际轴承展丨轴承工业展丨轴承装备展丨上海轴承展丨上海轴承工业展丨上海轴承装备展 2024上海国际轴承工业展览会将会于2024年7月24-26日…

C语言—每日选择题—Day46

第一题 1. 下列程序段的输出结果是&#xff08;&#xff09; #include <stdio.h> int main() {int x 1,a 0,b 0;switch(x) {case 0: b;case 1: a;case 2: a;b;}printf("a%d,b%d\n", a, b);return 0; } A&#xff1a;a2,b1 B&#xff1a;a1,b1 C&#xf…

面试必备的Linux常用命令

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 Linux常用命令 1、文件及内容2、网络3、进程服务4、…

binlog+mysqldump恢复数据(误删数据库或者表)

表删除恢复 1、准备数据 首先准备数据库环境&#xff0c;测试数据库为speech1&#xff0c;如下&#xff1a; 为test数据表添加3条记录&#xff0c;如下&#xff1a;三行为新加的记录&#xff0c;添加后将test表删除。 2、恢复数据 查看binlog日志状态 SHOW MASTER STATUS…

【FPGA】综合设计练习题目

前言 这是作者这学期上的数电实验期末大作业的题目&#xff0c;综合性还是十分强的&#xff0c;根据组号作者是需要做“4、篮球比赛计分器”&#xff0c;相关代码会在之后一篇发出来&#xff0c;这篇文章用于记录练习题目&#xff0c;说不定以后有兴趣或者有时间了回来做做。 …

逆变器的防孤岛测试保护方案

逆变器的防孤岛测试保护方案是为了确保逆变器在发生故障或停电时能够及时停止供电&#xff0c;避免孤岛现象的发生。孤岛现象指的是当电网停电或发生故障时&#xff0c;逆变器仍然继续供电&#xff0c;可能会对电网维护人员和设备造成安全隐患。逆变器会通过监测电网的状态来判…

深入理解网络 I/O 多路复用:Epoll

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

Visual Studio调试技巧合集

Visual Studio调试技巧合集 1 如何同一个项目运行不同main文件&#xff1f; 1 如何同一个项目运行不同main文件&#xff1f; &#xff08;1&#xff09;移动鼠标到需要关掉调试的文件&#xff0c;点击右键属性–常规–从生成中排除–是–确定&#xff0c;即显示“-”号排除&am…

python实现形态学建筑物指数MBI提取建筑物及数据获取

前言 形态学建筑物指数MBI通过建立建筑物的隐式特征和形态学算子之间的关系进行建筑物的提取[1]。 原理 上图源自[2]。 实验数据 简单找了一张小图片&#xff1a; test.jpg 代码 为了支持遥感图像&#xff0c;读写数据函数都是利用GDAL写的。 import numpy as np import …