深度学习:CSPNet

简介: 深度学习:CSPNet

深度学习:CSPNet

前言

CSPNet 是作者 Chien-Yao Wang 于 2019 发表的论文 CSPNET: A NEW BACKBONE THAT CAN
ENHANCE LEARNING CAPABILITY OF CNN。也是对 DenseNet 网络推理效率低的改进版本。

解决的问题

  1. 由于在轻量级的网络下,他的精度会有所下降,CSPnet可以在维持足够精度的同时提升10%到20%的计算效率,同时可以应用于传统的 ResNet,ResNeXt,DenseNet等网络。
  2. 降低计算瓶颈。
  3. 降低内存资源。

Method

目前主流网络存在的问题

在这里插入图片描述

我们以DenseNet为例,如上图,我们上下两个分别为他们的推导公式,我们发现有很多以前的feature重复出现,在反向传播的过程中,网络会不断的学习这些相同的梯度,作者认为这些冗余feature会影响模型的性能,于是作者对网络做出了下面的改进。

Cross Stage Partial Network

在这里插入图片描述

如上图为作者作出的改进,作者首先把input 分成两部分,一部分经过了卷基层,另一部分什么也不做,然后在把这两个结果concat拼接。
总体而言,所提出的 CSPDenseNet 保留了 DenseNet 特征重用特性的优势,但同时通过截断梯度流来防止过多的重复梯度信息。这个想法是通过设计分层特征融合策略并在局部transition层中使用来实现的。

Partial Dense Block

设计局部dense block的优点是:

  1. 增加梯度路径:通过拆分合并策略,梯度路径的数量可以增加一倍。由于采用了跨阶段策略,可以缓解使用显式特征图副本进行concatenation带来的缺点;
  2. 平衡每层的计算:通常,DenseNet 的base layer中的通道数远大于growth rate(注:DenseNet的超参数,值为dense block中dense卷积层的卷积核个数)。由于在一个局部dense block中参与dense层操作的base layer通道只占原始数量的一半,因此可以有效解决近一半的计算瓶颈(注:解决近一半的计算瓶颈是通过拆分输入通道实现,拆分各一半,一半传入dense block,一半直接传到dense block后);
  3. 减少内存流量:假设 DenseNet 中一个dense block的基本特征图大小为w × h × c,growth rate为 dd,总共有 m 个dense层。那么,那个dense block的CIO(Convolutional Input/Output)是( c × m ) + ( ( m ^ 2 + m ) × d ) / 2 。虽然 m 和 d 通常远小于 c,但局部dense block最多可以节省网络一半的内存流量。

Partial Transition Layer

在DenseNet中,Trainsition layer起到了特征融合的作用,在这里,作者采取了4中不同的融合策略进行试验如下图:
在这里插入图片描述
通过实验,最终作者选取了第三种方案,这种方案速度更快,精度更高。

Exact Fusion Model

实验

在这里插入图片描述

目录
相关文章
|
机器学习/深度学习 边缘计算 PyTorch
轻量级网络论文-CSPNet 详解
轻量级网络论文-CSPNet 详解
680 0
|
机器学习/深度学习 API 计算机视觉
4.2 图像分类基本概念和ResNet设计思想
这篇文章介绍了图像分类的基本概念,详细阐述了ResNet(残差网络)的设计思想和实现方法,包括残差单元的结构设计、整体网络结构以及如何使用飞桨框架的高层API快速构建和训练图像分类模型。
|
机器学习/深度学习 PyTorch 语音技术
Pytorch迁移学习使用Resnet50进行模型训练预测猫狗二分类
深度学习在图像分类、目标检测、语音识别等领域取得了重大突破,但是随着网络层数的增加,梯度消失和梯度爆炸问题逐渐凸显。随着层数的增加,梯度信息在反向传播过程中逐渐变小,导致网络难以收敛。同时,梯度爆炸问题也会导致网络的参数更新过大,无法正常收敛。 为了解决这些问题,ResNet提出了一个创新的思路:引入残差块(Residual Block)。残差块的设计允许网络学习残差映射,从而减轻了梯度消失问题,使得网络更容易训练。
2811 0
|
XML JSON 数据格式
COCO转VOC代码:将coco格式的json文件转换为voc格式的xml文件
COCO转VOC代码:将coco格式的json文件转换为voc格式的xml文件
854 0
|
PyTorch 算法框架/工具
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
1321 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
|
机器学习/深度学习 计算机视觉 网络架构
RT-DETR改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
RT-DETR改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
1010 12
RT-DETR改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
7038 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
机器学习/深度学习 编解码 PyTorch
CVPR2021-即插即用 | Coordinate Attention详解与CA Block实现(文末获取论文原文)(一)
CVPR2021-即插即用 | Coordinate Attention详解与CA Block实现(文末获取论文原文)(一)
3545 0

热门文章

最新文章