📢 转载信息
原文链接:http://bair.berkeley.edu/blog/2024/03/21/xt/
原文作者:BAIR Blog
作为计算机视觉研究人员,我们相信每个像素都能讲述一个故事。然而,在处理大型图像时,该领域似乎正陷入一种“作家瓶颈”。大型图像已不再罕见——我们口袋里和环绕地球的摄像头拍摄的照片极其庞大和精细,以至于在处理它们时,将我们当前最优秀的模型和硬件推向了极限。通常,我们会面临内存使用量相对于图像尺寸呈二次方增长的问题。
今天,我们在处理大型图像时面临两种次优选择:下采样或裁剪。这两种方法都会导致图像中信息量和上下文的显著丢失。我们重新审视这些方法,并介绍 $x$T,这是一个新的框架,可以在当代 GPU 上对大型图像进行端到端建模,同时有效地将全局上下文与局部细节聚合起来。
$x$T 框架的架构。
为何要关注大图像?
为什么要费心处理大图像呢?想象一下你正坐在电视机前,观看最喜欢的橄榄球队比赛。球场上布满了球员,但动作只发生在屏幕的一小部分区域。然而,如果你只能看到球当前所在区域周围的一小块区域,你会满意吗?或者,如果你以低分辨率观看比赛,你会满意吗?每个像素都在讲述一个故事,无论它们相距多远。这在所有领域都是如此,从你的电视屏幕到病理学家查看一张千兆像素的切片以诊断微小的癌症区域。这些图像是信息的宝库。如果因为我们的工具无法处理这张“地图”而无法充分探索其财富,那还有什么意义呢?
了解比赛的来龙去脉才有趣。
这正是今天的困境所在。图像越大,我们就越需要同时放大以查看全貌,缩小以查看细枝末节,这使得同时掌握“森林”和“树木”成为一项挑战。目前大多数方法都迫使我们在迷失森林或遗漏树木之间做出选择,而这两种选择都不理想。
$x$T 如何尝试解决这个问题
想象一下尝试解一个巨大的拼图。与其一次性处理整个拼图(这会让人不知所措),不如先从较小的部分开始,仔细查看每个部分,然后弄清楚它们是如何融入更大的图景中的。这基本上就是我们使用 $x$T 处理大型图像的方式。
$x$T 将这些巨大的图像分层切割成更小、更易于处理的片段。但这不仅仅是让事情变小。它是关于理解每个部分本身,然后使用一些巧妙的技术,弄清楚这些部分如何在更大的尺度上连接起来。这就像与图像的每个部分进行“对话”,了解其故事,然后与其他部分分享这些故事,以获得完整的叙述。
嵌套分词 (Nested Tokenization)
$x$T 的核心在于嵌套分词的概念。简单来说,在计算机视觉领域,分词类似于将图像切割成模型可以消化和分析的片段(tokens)。然而,$x$T 通过在过程中引入一个层次结构——因此称为嵌套——更进一步。
想象一下你的任务是分析一张详细的城市地图。不是试图一次性看完整个地图,而是将其分解为区域,然后在这些区域内再分解为街区,最后在这些街区内再分解为街道。这种分层分解使得管理和理解地图的细节变得更容易,同时还能追踪所有内容在更大图景中的位置。这就是嵌套分词的精髓——我们将图像分割成不同的区域,每个区域可以根据视觉主干(我们称之为区域编码器)所期望的输入大小进一步分割成子区域,然后再被分块以供该区域编码器处理。这种嵌套方法允许我们在局部层面提取不同尺度的特征。
协调区域和上下文编码器
一旦图像被整齐地划分为词元,$x$T 就会使用两种类型的编码器来理解这些片段:区域编码器和上下文编码器。每个编码器在拼凑出图像的完整故事中都扮演着独特的角色。
区域编码器是一个独立运作的“局部专家”,它将独立的区域转换成详细的表示。但是,由于每个区域都是隔离处理的,图像之间没有信息共享。区域编码器可以是任何最先进的视觉主干网络。在我们的实验中,我们使用了分层视觉Transformer,如Swin和Hiera,以及ConvNeXt等CNN!
现在进入上下文编码器,这个“大局观大师”。它的工作是将来自区域编码器的详细表示拼接起来,确保一个词元的见解是在其他词元的背景下考虑的。上下文编码器通常是一个长序列模型。我们实验中使用了Transformer-XL(以及我们称之为Hyper的变体)和Mamba,但你也可以使用Longformer以及该领域其他最新的进展。尽管这些长序列模型通常是为语言设计的,但我们证明了可以将它们有效地用于视觉任务。
$x$T 的魔力在于这些组件——嵌套分词、区域编码器和上下文编码器——的组合方式。通过首先将图像分解成易于管理的片段,然后系统地分析这些片段(既独立又结合),$x$T 设法在保持原始图像细节保真度的同时,整合了远距离的上下文,并且可以在当代 GPU 上对海量图像进行端到端处理。
结果
我们在具有挑战性的基准任务上评估了 $x$T,这些任务涵盖了成熟的计算机视觉基线和严格的大图像任务。特别是,我们实验使用了iNaturalist 2018进行细粒度物种分类,xView3-SAR进行上下文依赖分割,以及MS-COCO进行检测。
与 $x$T 结合使用的强大视觉模型在细粒度物种分类等下游任务上开辟了新前沿。
我们的实验表明,$x$T 能够在所有下游任务上以更少的参数实现更高的准确性,同时每个区域使用的内存远少于最先进的基线*。我们能够在 40GB A100 上对大至 29,000 x 25,000 像素的图像进行建模,而可比较的基线在仅 2,800 x 2,800 像素时就会耗尽内存。
与 $x$T 结合使用的强大视觉模型在细粒度物种分类等下游任务上开辟了新前沿。
*取决于你对上下文模型的选择,例如 Transformer-XL。
为什么这比你想象的更重要
这种方法不仅仅很酷;它是必要的。对于追踪气候变化或诊断疾病的科学家来说,它是一个“游戏规则改变者”。这意味着可以创建能够理解完整故事、而不仅仅是零散片段的模型。例如,在环境监测中,能够同时看到广阔景观的总体变化和特定区域的细节,有助于理解气候影响的全貌。在医疗保健中,这可能意味着早期发现疾病与否的区别。
我们不是声称一举解决了世界上所有问题。我们希望 $x$T 为我们打开了可能性的大门。我们正在进入一个新时代,我们不必在视觉的清晰度或广度上做出妥协。$x$T 是我们迈向能够轻松驾驭大规模图像复杂性的模型的重要一步。
还有很多工作要做。研究将会发展,我们处理更大、更复杂图像的能力也希望如此。事实上,我们正在研究 $x$T 的后续工作,这将进一步扩展这一前沿领域。
结论
如需了解这项工作的完整介绍,请查看 arXiv 上的论文。项目页面 包含我们已发布的代码和权重链接。如果您觉得这项工作有用,请按如下方式引用:
@article{xTLargeImageModeling, title={xT: Nested Tokenization for Larger Context in Large Images}, author={Gupta, Ritwik and Li, Shufan and Zhu, Tyler and Malik, Jitendra and Darrell, Trevor and Mangalam, Karttikeya}, journal={arXiv preprint arXiv:2403.01915}, year={2024} }
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区