深度学习之CSPNet分析

2023-10-14 12:30
文章标签 分析 学习 深度 cspnet

本文主要是介绍深度学习之CSPNet分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。

目录

一、提出原因

二、CSPNet结构分析

1、基本思想

2、对比实验:

3、综述设计思想


一、提出原因

CSPNet是从网络结构体系角度提出的跨阶段局部网络,主要有以下几个目的:

(1)增强CNN的学习能力,并且在轻量化的同时保持准确性

神经网络推理过程中计算量过高是网络优化中的梯度信息重复所导致的。CSPNet将梯度的变化从头到尾集成到特征图中,这样就可以在减少了计算量的同时可以保证准确率。

(2)降低计算瓶颈

过高的计算瓶颈会导致更多的周期来完成神经网络的推理过程,或者一些算术单元经常处于空闲状态。因此,如果能在CNN的每一层上均匀地分配计算量,就能有效地提高每个计算单元的利用率,从而减少不必要的能耗。

(3)降低内存成本

在特征金字塔生成过程中采用跨通道池来压缩特征映射,可以减少内存使用。


二、CSPNet结构分析

CSPNet不单单是一个网络,更是一种可移植的思想方法,可以与多种网络结构结合。

1、基本思想

(1)将之前所有层的输出特征连接起来,作为下一层的输入,最大化 cardinality(分支路径的数量)。

(2)由梯度信息结合的思想,让高 cardinality 和稀疏连接来提升网络的学习能力。

2、对比实验:

上图中的Transition Layer代表过渡层,主要包含瓶颈层(1×1卷积)和池化层(可选)

(1)先concat再transition

上图为原始的DenseNet的特征融合方式,下图为Fusion First。

DenseNet网络简介:其每一阶段包含一个dense block和一个transition layers(放在两个Dense Block中间,是因为每个Dense Block结束后的输出通道数很多,要使用1*1的卷积核来降维),每个dense block由多个dense layer组成。(优点:特征重复使用)

Fusion First :将两个分支生成的特征映射连接(concat)起来,然后进行转换操作(Transition)。如果采用这种策略,将会重用大量的梯度信息。

(2)先transition再concat

左图为原始的DenseNet的特征融合方式,右图为Fusion Last。

Fusion Last:稠密块(Dense Block)的输出将经过过渡层,然后与第一部分的feature map进行拼接,由于梯度流被截断,梯度信息将不再被重用,计算量显著降低。

3、综述设计思想

一半的特征进入dense layer,通过通道拆分来减少计算量,是一种网络优化的方法,但是对精度的提升好像帮助并不大。

Partial Dense Block

(1)增加了渐变路径:采用拆分合并的思想,拆成两部分,让渐变路径的数目翻倍

(2)均衡各层的计算:因为在局部密集块中参与密层操作的基层通道只有原来数量的一半,因此可以减少近一半的计算瓶颈

(3)减少内存流量

Partial Transition Layer

(分析对应上面的对比试验)

它是一种层次化的特征融合机制,采用了截断梯度流的策略(就是对半拆)来防止不同的层学习重复的梯度信息,最大化梯度组合的差异。


这篇关于深度学习之CSPNet分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210527

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.