ConvNeXt-V2: 当 MAE 遇见 ConvNeXt 会碰撞出怎样的火花?(上)

简介: ConvNeXt-V2: 当 MAE 遇见 ConvNeXt 会碰撞出怎样的火花?

Title: ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders


Author:Sanghyun Woo et al. (KAIST, Meta AI and New York University)


Paper: https://arxiv.org/pdf/2301.00808.pdf


Github: https://github.com/facebookresearch/ConvNeXt-V2


引言


受掩码自编码机制的启发,本文在 ConvNeXt 的架构基础上延伸出了一个完全卷积掩码自编码器框架——ConvNeXt V2,同时作者设计了一个全新的全局响应归一化(Global Response Normalization, GRN)层以增强原始 ConvNeXt 模块通道间的特征竞争,从而捕获更具有判别力的通道特征。



ConvNeXt V2 最终在各种识别基准上的性能,包括 ImageNet 分类、COCO 检测和 ADE20K 分割任务上均取得了极具竞争力的结果,其中最小的模型仅 3.7M 参数可获取 76.7% top-1 准确率,而最大的模型约 650M 参数则能达到 88.9% 准确率。


3757796764586c23eb6061c0763c7fc3.png

前情回顾

ConvNeXt

先来看下经典卷积神经网络的发展史:


02c362982e1e6aaa72a0c7972741e247.png

紧接着 ViT 的提出带火了一众基于 Transformer 的模型:


d3f800450f9b47cffcee5dc851f01927.png


然后便是 Swin Transformer received ICCV 2021 best paper award (Marr Prize),一时间轰动华语乐坛视觉领域:


b99de79c28c61879c2373b257cb56bd4.png


可以看出,Swin 其实是将传统 CNNs 三个重要的先验信息融入到了 Vision Transformer 的设计:


带局部窗口的注意力设计;

共享权重;

分层特征;


另一方面,我们从各大CV顶会接收的论文情况也能看出一些端倪:


9c13dad9ad3712c41b2a2b375a18de0e.png


可以发现,基于各种 **Former 的模型遍地开花,而基于传统的卷积神经网络几乎没有增长。当然,除了 idea 新颖外,基于 Transformer 的模型效果也确实惊艳,例如:


58c79443f21d35280a36b9f5a7cd76ee.png


那么,这两者的本质区别在哪里呢?


a091758334bebe1fcbef8c70ba12a555.png


首先,Transformer 模型由于缺乏固有的归纳偏置属性,这也意味着在小数据量的情况下它是很难“硬train一发”,因此大部分 Vision Transformer 模型训练的时候都会加入一堆 DataAug 和 Training Tricks,如果我们将这些 Tricks 应用到原始的 ResNet 上也能获得不错的性能增益:


7cb2c33faaee82bbd96b7d13d133e87b.png


好了,让我们看下 ConvNeXt 的设计思路是怎么样的:


65afb6f8bdb7e8c2d8597c2adf0a59ab.png


整体设计遵循由粗粒度到细粒度的原则,可以看到,通过最终一步步的实验论证,ConvNeXt 的精度也随即提升,最终获得了完全可以媲美 Vision Transformer 的结果:


dc4219bc1a596bbe2f051cd3722d76bb.png


下面展示的是不同模块之间的结构对比图:


03df01e53288eadcde8eed0b04dcfd39.png


总的来说,ConvNeXt 是一个基于纯 ConvNets 的网络结构设计,其通过借鉴 Vision Transformer 的一些优化技巧,在 ResNet 的基础上一步步扎实的进行实验论证,最终获得了一个极具实际应用价值的网络结构模型,最终实现了优于 Swin Transformers 的性能,同时保持了标准 ConvNets 的简单性和效率,非常值得大家伙借鉴。


MAE


MAE 想必大家伙都认识了,毕竟CV界盛传的一句经典谚语——“凯明出品,必属精品”!自编码器一开始是应用在 NLP 领域,例如 BERT 模型便是被提出应用在句子的不同部分屏蔽单词,并尝试通过预测要填充到空白处的单词来重建完整的句子。因此自然而然的一个想法便是是否可以将这一想法嫁接到计算机视觉领域。


作为CV界的头号种子选手,老何当然是不负众望,凭借着多年来异常敏锐的嗅觉,不费吹灰之力便提出了一种使用自编码器对计算机视觉模型进行自监督预训练的新方法:



74532d04c052ccb4c12dc494ecdceb03.png

在 MAE 中,作者提倡使用非常高的遮挡率,例如 75%,这能带来两个好处:


训练速度提升3倍,因为模型仅需处理更少(unmasked)的图像块;

强迫模型学习出泛化能力,提高特征提取的能力;

此处,这是一个非对称的编解码器,这意味着其应用了一个相当轻量的解码器,而编码器的输出便是输入图像块的潜在向量表示。而 MAE 的关键步骤之一便是利用解码器重建初始图像,其中每个掩码标记都是一个共享的学习向量,表示存在缺失的补丁。解码器则接收潜在表示以及掩码标记作为输入,并输出每个补丁的像素值,包括掩码。根据此信息,可以将原始图像拼凑在一起,以根据用作输入的掩码图像形成完整图像的预测版本。


一旦重建了目标图像,我们只需测量它与原始输入图像的差异并将其用作损失执行反向传播即可。最终,当模型训练完成后,解码器将会被丢弃掉,只保留编码器部分,以供下游任务使用。


目录
相关文章
社区供稿 | 魔搭Agent创意挑战赛作品体验感受
近期在闲逛知乎时看到魔搭发起了一个Agent创新应用比赛,看了下奖金还挺高的呀( •̀ ω •́ )y
|
6月前
|
开发者 Docker 微服务
《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》
FastAPI是一款基于Python 3.6+的现代、高性能Web框架,结合Starlette和Pydantic优势,支持异步编程,性能媲美Go与Node.js。它内置输入验证、依赖注入功能,自动生成交互式API文档,大幅提升开发效率与代码质量。Docker容器技术通过封装应用及其依赖,实现“一次构建,到处运行”,解决环境差异问题,提供轻量级、高效的部署方案。两者结合助力快速搭建稳定、高效的Python微服务架构,满足高并发与弹性伸缩需求,推动现代化应用开发。
267 9
《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》
|
人工智能 自然语言处理 API
手把手教你搭建微信公众号AI助手
【8月更文挑战第6天】手把手教你搭建微信公众号AI助手
1052 2
手把手教你搭建微信公众号AI助手
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
编译器 C语言
C语言:普通全局变量可以被多个源文件共享吗
C语言中,普通全局变量可以通过extern关键字在多个源文件中声明和共享,实现数据的跨文件使用。但需注意,变量只能在一个文件中定义,其他文件中仅能声明。
510 9
|
SQL 开发框架 JavaScript
Sentieon | 应用教程:唯一分子标识符(UMI)
**Sentieon®工具通过UMI处理NGS数据,减少PCR误差和提高变异检测准确性。流程包括:umi extract(提取UMI标签),bwa mem对齐,umi consensus(创建一致性分子),再次对齐并排序。umi extract根据读取结构提取条形码,umi consensus生成共识Fastq,最终比对产生用于变异调用的BAM文件。该流程适用于体细胞突变检测,推荐使用TNscope®。日志提供质量控制信息,如组大小直方图和双工统计。**
313 1
golang对遍历目录操作的优化
【8月更文挑战第7天】在Golang中优化目录遍历能提升性能。可通过缓冲读取减少系统调用、使用协程并发处理大量文件、按需跳过不必要目录及仅获取所需文件信息等方式实现。示例代码展示了如何运用协程并行遍历子目录以加快处理速度。实际应用时需依据场景选择合适策略。
218 1
|
机器学习/深度学习 人工智能 自然语言处理
6.1 自然语言处理综述
这篇文章综述了自然语言处理(NLP)的发展历程、主要挑战、常见任务,并探讨了如何利用深度学习和飞桨框架来解决NLP任务,同时提出了对NLP未来应用的思考。
|
负载均衡
网工配置命令基础总结(2)----VRRP配置
网工配置命令基础总结(2)----VRRP配置
1108 0
|
Kubernetes 监控 Devops
容器管理工具有那些,各有什么优缺点
容器管理工具有很多种,包括Docker、Kubernetes(K8S)、OpenShift、Mesos、Swarm、Rancher等等。
694 0