一、本文介绍
本文记录的是基于VanillaNet的RT-DETR轻量化改进方法研究。VanillaNet
的极简主义在于无 shortcut 连接,并且在网络的每个阶段仅使用一层卷积,无额外复杂模块,仅通过自身简洁的架构设计和训练策略,实现有效地训练和优化。
本文在替换骨干网络中配置了原论文中的vanillanet_5
、vanillanet_6
、vanillanet_7
、vanillanet_8
、vanillanet_9
、vanillanet_10
、vanillanet_11
、vanillanet_12
、vanillanet_13
、vanillanet_13_x1_5
、和vanillanet_13_x1_5_ada_pool
11种模型,以满足不同的需求。
模型 | 参数量 | 计算量 | 推理速度 |
---|---|---|---|
rtdetr-l | 32.8M | 108.0GFLOPs | 11.6ms |
Improved | 18.9M | 63.2GFLOPs | 10.6ms |
专栏目录:RT-DETR改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
专栏地址:RT-DETR改进专栏——以发表论文的角度,快速准确的找到有效涨点的创新点!
二、VanillaNet结构详解
VanillaNet: the Power of Minimalism in Deep Learning
VanillaNet
是一种强调设计的优雅和简洁的神经网络架构,以下是其相关介绍:
2.1 设计出发点
- 应对优化挑战和复杂性:随着神经网络的发展,如Transformer模型在计算机视觉和自然语言处理领域取得了显著成功,但也面临着优化困难和固有复杂性的挑战。因此需要一种向简单性转变的范式,
VanillaNet
应运而生。 - 关注资源受限环境:复杂的神经网络架构在部署时面临诸多问题,如
ResNets
中的shortcut操作消耗大量片外内存带宽,一些复杂操作需要复杂的工程实现。而在资源受限环境中,需要一种简洁且高效的网络架构,VanillaNet
旨在解决这些问题。
2.2 原理
2.2.1 深度训练策略
- 训练过程:在训练开始时,使用两个带有激活函数的卷积层代替单个卷积层进行训练。随着训练epoch的增加,
激活函数逐渐变为恒等映射
,训练结束时,两个卷积层可以轻松合并为一个卷积层,从而减少推理时间。 - 数学原理:对于激活函数$A(x)$,将其与恒等映射结合为$A'(x)=(1-\lambda) A(x)+\lambda x$,其中$\lambda$是一个平衡修改后的激活函数$A'(x)$非线性的超参数,随着训练过程$\lambda$从$1$逐渐变为$0$。
2.2.2 系列激活函数
- 提升非线性:通过将
多个激活函数
进行堆叠来提高神经网络的非线性。具体公式为$A{s}(x)=\sum{i=1}^{n} a{i} A\left(x+b{i}\right)$,其中$n$是堆叠的激活函数数量,$a{i}$和$b{i}$是每个激活函数的缩放和偏差参数,避免简单积累。 - 全局信息学习:为了进一步丰富系列函数的逼近能力,使其能够学习全局信息,公式进一步扩展为$A{s}\left(x{h, w, c}\right)=\sum{i, j \in{-n, n}} a{i, j, c} A\left(x{i+h, j+w, c}+b{c}\right)$,其中\$h$、$w$和$c$分别是特征的宽度、高度和通道数。
2.3 结构
2.3.1 整体结构
- 遵循神经网络的常见设计,包括
stem块
、主体
和全连接层
。与现有深度网络不同的是,在每个阶段只使用一层来构建一个尽可能简单的网络。2.3.2 stem块
- 使用一个$4×4×3×C$的卷积层,步长为$4$,将输入的$3$通道图像映射为$C$通道的特征。
2.3.3 主体阶段
- 阶段1 - 3:在阶段$1$、$2$和$3$,使用一个步长为$2$的最大池化层来减小特征图的大小,同时通道数增加$2$倍。
- 阶段4:在阶段$4$,不增加通道数,而是使用一个平均池化层。
2.3.4 全连接层
- 最后一层是一个全连接层,用于输出分类结果。每个卷积层的核大小为$1×1$,激活函数应用在每个$1×1$卷积层之后,并且在每层之后添加批量归一化。
VanillaNet-6模型的架构,仅由6个卷积层组成,非常容易在任何现代硬件上使用。输入特征的大小被下采样,而通道在每个阶段加倍,这借用了经典神经网络的设计,如AlexNet和VGGNet。
2.4 优势
- 简洁性
- 架构简单:没有shortcut连接,避免了复杂的分支和额外的模块,如挤压和激励模块,使得网络架构极其简单,易于理解和实现。
- 计算成本低:每层使用最小的计算成本,同时保持特征图的信息,例如卷积层核大小为$1×1$。
- 高效性
- 推理速度快:在现代AI芯片环境下,其简单的设计和相对较浅的结构使得推理速度不受FLOPs或参数的限制,相比一些复杂的网络架构,如MobileNetV3-Large,虽然FLOPs较高,但推理速度更快。
- 训练高效:采用的深度训练策略和系列激活函数在提升性能的同时,也保证了训练的高效性。
- 性能相当:在大规模图像分类任务上,能够取得与著名的深度神经网络和视觉Transformer相当的性能,如在ImageNet数据集上的实验结果所示。
论文:https://arxiv.org/pdf/2305.12972v2
源码:https://github.com/huawei-noah/VanillaNet
三、实现代码及RT-DETR修改步骤
模块完整介绍、个人总结、实现代码、模块改进、二次创新以及各模型添加步骤参考如下地址: