姓CNN还是姓Transformer? 关键是“有效”学到“大”模型!基础打好,赢者通吃!...

2023-10-21 09:40

本文主要是介绍姓CNN还是姓Transformer? 关键是“有效”学到“大”模型!基础打好,赢者通吃!...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关注公众号,发现CV技术之美

本文转载自机器之心。

来自浦江实验室、清华等机构的研究人员提出了一种新的基于卷积的基础模型,称为 InternImage,与基于 Transformer 的网络不同,InternImage 以可变形卷积作为核心算子,使模型不仅具有检测和分割等下游任务所需的动态有效感受野,而且能够进行以输入信息和任务为条件的自适应空间聚合。InternImage-H 在 COCO 物体检测上达到 65.4 mAP,ADE20K 达到 62.9,刷新检测分割新纪录。

近年来大规模视觉 Transformer 的蓬勃发展推动了计算机视觉领域的性能边界。视觉 Transformer 模型通过扩大模型参数量和训练数据从而击败了卷积神经网络。来自上海人工智能实验室、清华、南大、商汤和港中文的研究人员总结了卷积神经网络和视觉 Transformer 之间的差距。从算子层面看,传统的 CNNs 算子缺乏长距离依赖和自适应空间聚合能力;从结构层面看,传统 CNNs 结构缺乏先进组件。

针对上述技术问题,来自浦江实验室、清华等机构的研究人员创新地提出了一个基于卷积神经网络的大规模模型,称为 InternImage,它将稀疏动态卷积作为核心算子,通过输入相关的信息为条件实现自适应空间聚合

InternImage 通过减少传统 CNN 的严格归纳偏置实现了从海量数据中学习到更强大、更稳健的大规模参数模式。其有效性在包括图像分类、目标检测和语义分割等视觉任务上得到了验证。并在 ImageNet、COCO 和 ADE20K 在内的挑战性基准数据集中取得了具有竞争力的效果,在同参数量水平的情况下,超过了视觉 Transformer 结构,为图像大模型提供了新的方向。

caaa951352735c2c1f35ec695d687645.png

  • 论文链接:https://arxiv.org/abs/2211.05778

  • 开源代码:https://github.com/OpenGVLab/InternImage

dbfeba34002e7274e8809aa9d452062a.png

150613bcf15f18bcb34c05450464013f.png

传统卷积神经网络的局限

扩大模型的规模是提高特征表示质量的重要策略,在计算机视觉领域,模型参数量的扩大不仅能够有效加强深度模型的表征学习能力,而且能够实现从海量数据中进行学习和知识获取。

ViT 和 Swin Transformer 首次将深度模型扩大到 20 亿和 30 亿参数级别,其单模型在 ImageNet 数据集的分类准确率也都突破了 90%,远超传统 CNN 网络和小规模模型,突破了技术瓶颈。但是,传统的 CNN 模型由于缺乏长距离依赖和空间关系建模能力,无法实现同 Transformer 结构相似的模型规模扩展能力。研究者总结了传统卷积神经网络与视觉 Transformer 的不同之处:

(1)从算子层面来看,视觉 Transformer 的多头注意力机制具有长距离依赖和自适应空间聚合能力,受益于此,视觉 Transformer 可以从海量数据中学到比 CNN 网络更加强大和鲁棒的表征。

(2)从模型架构层面来看,除了多头注意力机制,视觉 Transformer 拥有 CNN 网络不具有的更加先进的模块,例如 Layer Normalization (LN), 前馈神经网络 FFN, GELU 等。

尽管最近的一些工作尝试使用大核卷积来获取长距离依赖,但是在模型尺度和精度方面都与最先进的视觉 Transformer 有着一定距离。

可变形卷积网络的进一步拓展

InternImage 通过重新设计算子和模型结构提升了卷积模型的可扩展性并且缓解了归纳偏置,包括(1)DCNv3 算子,基于 DCNv2 算子引入共享投射权重、多组机制和采样点调制。(2)基础模块,融合先进模块作为模型构建的基本模块单元(3)模块堆叠规则,扩展模型时规范化模型的宽度、深度、组数等超参数。

该工作致力于构建一个能够有效地扩展到大规模参数的 CNN 模型。首先,重新设计的可变形卷积算子 DCNv2 以适应长距离依赖和弱化归纳偏置;然后,将调整后的卷积算子与先进组件相结合,建立了基础单元模块;最后,探索并实现模块的堆叠和缩放规则,以建立一个具有大规模参数的基础模型,并且可以从海量数据中学习到强大的表征。

883e11091065d737e4cbaf109def3bde.png

算子层面,该研究首先总结了卷积算子与其他主流算子的主要区别。当前主流的 Transformer 系列模型主要依靠多头自注意力机制实现大模型构建,其算子具有长距离依赖性,足以构建远距离特征间的连接关系,还具有空间的自适应聚合能力以实现构建像素级别的关系。但这种全局的注意力机制其计算和存储需求量巨大,很难实现高效训练和快速收敛。同样的,局部注意力机制缺乏远距离特征依赖。大核密集卷积由于没有空间聚合能力,而难以克服卷积天然的归纳偏置,不利于扩大模型。因此,InternImage 通过设计动态稀疏卷积算子,达到实现全局注意力效果的同时不过多浪费计算和存储资源,实现高效训练。

研究者基于 DCNv2 算子,重新设计调整并提出 DCNv3 算子,具体改进包括以下几个部分。

(1)共享投射权重。与常规卷积类似,DCNv2 中的不同采样点具有独立的投射权重,因此其参数大小与采样点总数呈线性关系。为了降低参数和内存复杂度,借鉴可分离卷积的思路,采用与位置无关的权重代替分组权重,在不同采样点之间共享投影权重,所有采样位置依赖性都得以保留。

(2)引入多组机制。多组设计最早是在分组卷积中引入的,并在 Transformer 的多头自注意力中广泛使用,它可以与自适应空间聚合配合,有效地提高特征的多样性。受此启发,研究者将空间聚合过程分成若干组,每个组都有独立的采样偏移量。自此,单个 DCNv3 层的不同组拥有不同的空间聚合模式,从而产生丰富的特征多样性。

(3)采样点调制标量归一化。为了缓解模型容量扩大时的不稳定问题,研究者将归一化模式设定为逐采样点的 Softmax 归一化,这不仅使大规模模型的训练过程更加稳定,而且还构建了所有采样点的连接关系。

b3d39d3cbeafc4299816479a3bf33b67.png

构建 DCNv3 算子之后,接下来首先需要规范化模型的基础模块和其他层的整体细节,然后通过探索这些基础模块的堆叠策略,构建 InternImage。最后,根据所提出模型的扩展规则,构建不同参数量的模型。

基础模块。与传统 CNN 中广泛使用的瓶颈结构不同,该研究采用了更接近 ViTs 的基础模块,配备了更先进的组件,包括 GELU、层归一化(LN)和前馈网络(FFN),这些都被证明在各种视觉任务中更有效率。基础模块的细节如上图所示,其中核心算子是 DCNv3,通过将输入特征通过一个轻量级的可分离卷积来预测采样偏置和调制尺度。对于其他组件,遵循与普通 Transformer 相同的设计。

叠加规则。为了明确区块堆叠过程,该研究提出两条模块堆叠规则,其中第一条规则是后三个阶段的通道数9da94400cca28caa30268e62af0b562d.png,由第一阶段的通道数15574bc2ed5972a2051ba644a8a29654.png决定,即2766032318f60a87f3258604dec11006.png;第二条规则是各模块组号与各阶段的通道数对应,即119f2b1d5bc2bd333ce89a0c96f07fdc.png;第三,堆叠模式固定为 “AABA”,即第 1、2 和 4 阶段的模块堆叠数是相同的b37bd574fbcc5f8676d32250eb0cd445.png,并且不大于第 3 阶段931dd33561c06b02b787b89599e815ba.png。由此选择将参数量为 30M 级别的模型作为基础,其具体参数为:Steam 输出通道数4d11aac2bd8088056dff953e7c7aed94.png为 64;分组数为每个阶段输入通道数的 1/16,第 1、2、4 阶段的模块堆叠数58e9028876db8aa84b8fbd353b821896.png为 4,第 3 阶段的模块堆叠数d61aa2df1fb220fba636dcab03c8c817.png为 18,模型参数为 30M。

模型缩放规则。基于上述约束条件下的最优模型,该研究规范化了网络模型的两个缩放维度:即深度 D(模块堆叠数)和宽度 C(通道数),利用限制因子a838e35b5cd6a152b047b911a22cc646.png695c47f9a604576c95b6d87f9a2daa4d.png沿着复合系数b5aee8def11f0bf0ae76eb7926f71794.png对深度和宽度进行缩放,即,2d618dced48903459bb0a6258d42bf55.png,其中fc4c900cf1fc36131ae26b80614efec2.png,根据实验其最佳设置为cb77d6816461a03539e9166fc3633ca7.png

按照此规则,该研究构建了不同尺度的模型,即 InternImage-T、S、B、L、XL。具体参数为:

59dc1863957060549df6d4ca00c6a4f8.png

实验结果

图像分类实验:通过使用 427M 的公共数据集合:Laion-400M,YFCC15M,CC12M,InternImage-H 在 ImageNet-1K 的精度达到了 89.2%。

6aac0dee68b2ccddb4f894fd62b53fb7.png

目标检测:以最大规模的 InternImage-H 为骨干网络,并使用 DINO 作为基础检测框架,在 Objects365 数据集上预训练 DINO 检测器,然后在 COCO 上进行微调。该模型在目标检测任务中达到了 65.4% 的最优结果,突破了 COCO 目标检测的性能边界。

030c51746b218919fa9cb5a246ef09de.png

语义分割:在语义分割上,InternImage-H 同样取得了很好的性能,结合 Mask2Former 在 ADE20K 上取得了当前最高的 62.9%。

2d1ac87393078ac0cdbe5de5f3555200.png

结论

该研究提出了 InternImage,这是一种新的基于 CNN 的大规模基础模型,可以为图像分类、对象检测和语义分割等多功能视觉任务提供强大的表示。研究者调整灵活的 DCNv2 算子以满足基础模型的需求,并以核心算子为核心开发了一系列的 block、stacking 和 scaling 规则。目标检测和语义分割基准的大量实验验证了 InternImage 可以获得与经过大量数据训练、且精心设计的大规模视觉 Transformer 相当或更好的性能,这表明 CNN 也是大规模视觉基础模型研究的一个相当大的选择。尽管如此,大规模的 CNN 仍处于早期发展阶段,研究人员希望 InternImage 可以作为一个很好的起点。

e30a5c237026f24fea5d799786967dbf.jpeg

END

欢迎加入「目标检测交流群👇备注:OD

eca47c53238d56adb05587149fabed3f.png

这篇关于姓CNN还是姓Transformer? 关键是“有效”学到“大”模型!基础打好,赢者通吃!...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/moxibingdao/article/details/128019265
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/253552

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

一文教你PyCharm如何有效地添加源与库

《一文教你PyCharm如何有效地添加源与库》在使用PyCharm进行Python开发的时候,很多时候我们需要添加库或者设置源,下面我们就来和大家详细介绍一下如何在PyCharm中添加源和库吧... 在使用PyCharm进行python开发的时候,很多时候我们需要添加库或者设置源。这些操作可以帮助我们更方便

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot