本文主要是介绍ConvNeXt V2:用MAE训练CNN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文名称:ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders
发表时间:CVPR2023
code链接:代码
作者及组织: Sanghyun Woo,Shoubhik Debnath来自KAIST和Meta AI。
前言
ConvNextV2是借助MAE的思想来训练ConvnextV1。关于ConvnextV1可参考:
A ConvNet for the 2020s
1、Fully Convolutional Masked Autoencoder
本文借助MAE的思想,设计了一套基于CNN的自监督学习网络结构。
如上图所示,首先随机mask住2D图像的patch区域,为了防止Conv在训练过程中“看到“被遮挡区域的信息,于是Encoder部分采用了Sparse Conv(简单来说就是仅卷有像素值的区域);而Decoder则是一层Convnext Block;最终类似SIMMIM,仅用MSE Loss计算被遮挡部分的损失函数。
这里值得注意一个点:在Pretraining Stage用SparseCNN,在Finetuning Stage又将SparseCNN转变成常规卷积。
最终取得实验结果:发现还是比不上有监督训练。
2、Global Response Normalization(GRN)
在上节中,发现FCMAE效果还是差点儿,于是作者可视化特征图的每个channel:发现有好多失活的,这跟MAE训练的ViT效果相反:不同channel均有激活且多样性丰富。
为了增加channel的多样性,作者设计了GRU的归一化方式:
简单说下上述代码含义:算法的输入和输出的维度相同 R H × W × C \mathbb{R}^{H \times W \times C} RH×W×C 。首先对X的每个channel执行L2正则得到 g x ∈ R C gx \in \mathbb{R}^{ C} gx∈RC ;然后对gx的每个channel的值除以gx的均值得到权重 n x ∈ R C nx \in \mathbb{R}^{ C} nx∈RC , n x nx nx 保留了每个channel相对于其余channel的重要性。 最后返回 X ⋅ n x ∈ R H × W × C X \cdot nx \in \mathbb{R}^{ H \times W \times C} X⋅nx∈RH×W×C 。另外设计了两个可学习的缩放系数 γ \gamma γ 和 β \beta β 。
由于GRN跟LayerScale有重复,故最终Block样式如下图所示:
最终特征图的cos相似度图为:在+了GRN之后,cos距离从红线变成了蓝线,说明特征图之间的多样性提升明显。
3、实验
3.1. 模型结构
总共缩放7种模型,最小的Flops=0.55g。
3.2.Finetune实验
在小模型ConvnextV2效果较其余预训练方法更好,在ViT-H差点儿。
3.3.Transfer learning实验
在检测任务上ConvnextV2较SimMIM更好。
这篇关于ConvNeXt V2:用MAE训练CNN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!