【转载】2023年计算机视觉发展现状:从视觉Transformer到神经辐射场

原文地址:State of Computer Vision 2023: From Vision Transformers to Neural Radiance Fields, by Sebastian Raschka, on 2023-07-6

2023年计算机视觉发展现状:从视觉Transformer到神经辐射场

大语言模型(LLM)的发展仍在快速推进。与此同时,暂且抛开AI监管的相关争议不谈,大语言模型领域的新闻更新速度仅比往常稍慢一些。

这恰好是一个契机,让我们可以偶尔将目光投向计算机视觉领域,探讨该领域当下的研究与发展现状。这个主题也刚好契合对温哥华举办的2023年计算机视觉与模式识别会议(CVPR 2023)的回顾——这是一场非常精彩的会议,会场也可能是我迄今为止参加过的会议里环境最好的。

figure01

这本内容满满(更准确地说是成果满满)的CVPR会议手册,列出了今年CVPR收录的2359篇论文。

注:如果您看到的通讯内容有截断或缺失,是因为部分邮件服务商可能会对较长的邮件进行裁切。遇到这种情况,您可以访问 https://magazine.sebastianraschka.com/ 查看全文。

文章与趋势

今年,CVPR 2023共计收录了2359篇论文,数量十分可观,参会者可以浏览海量的海报展示。当我穿行在海报展区,与参会者和研究者交流时,我发现大部分研究都集中在以下四大主题:

  • 视觉Transformer(Vision Transformers)
  • 视觉生成式AI:扩散模型与生成对抗网络
  • NeRF:神经辐射场
  • 目标检测与分割

接下来,我将对这四个子领域做简要介绍,并分别从会议论文中选出一篇有意思的论文进行重点解读。

(感兴趣的读者可以在 https://cvpr2023.thecvf.com/Conferences/2023/AcceptedPapers 查看全部收录论文列表。)

1)视觉Transformer

继语言Transformer与大语言模型取得成功之后,视觉Transformer(Vision Transformers,简称ViT)于2020年首次提出,相关论文见 https://arxiv.org/abs/2010.11929

ViT的核心思想与语言Transformer类似:在多头注意力模块中采用同样的自注意力机制。区别在于,语言Transformer对词进行分词,而ViT对图像进行分块编码(图像分词)。

正如之前《Ahead of AI》的一篇文章(https://magazine.sebastianraschka.com/p/understanding-encoder-and-decoder)中讨论的,最初用于语言建模的Transformer(论文见 https://arxiv.org/abs/1706.03762 )采用的是编码器-解码器架构。而现代语言Transformer可以分为两类:仅编码器架构,比如常用于分类任务的BERT;以及仅解码器架构,比如主要用于文本生成的GPT。

最初的ViT模型采用类似BERT的类编码器架构,对图像分块进行嵌入编码,之后可以接入一个分类头,用于完成图像分类任务。

figure02

用于分类任务的视觉Transformer(ViT)核心原理

需要注意的是,ViT的参数量通常远多于卷积神经网络(CNN)。根据经验,要达到良好的建模效果,ViT需要更多的训练数据。因此我们通常使用预训练好的ViT,而不是从头开始训练。(与语言Transformer不同,ViT通常采用有监督方式预训练,而非无监督或自监督方式。)

举例来说,我最近在CVPR的一场演讲中(主题见 https://magazine.sebastianraschka.com/p/accelerating-pytorch-model-training )也提到,相比在目标数据集上从头训练Transformer,使用预训练的Transformer能取得好得多的分类效果。

figure03

从头训练ViT与微调预训练ViT的对比

https://arxiv.org/abs/2012.12877https://arxiv.org/abs/2103.14030 这类ViT架构,凭借在计算机视觉任务上的顶尖性能,成为了非常热门的模型。

不过,ViT也饱受诟病:它的资源消耗相对更高,运行效率低于CNN。这也是为什么尽管ViT是计算机视觉领域最热门的研究方向之一,却尚未在实际应用中大规模落地的主要原因之一。

Efficient ViT:采用级联分组注意力的内存高效视觉Transformer

如上所述,ViT资源消耗较高,限制了它在实际场景中的更广泛应用。在这篇CVPR论文(https://arxiv.org/abs/2305.07027)中,研究者提出了一种全新的高效架构来解决这一问题,让ViT更适合实时应用场景。

figure04

引自论文 https://arxiv.org/abs/2305.07027 的标注示意图

这篇论文的核心创新点包括两方面:

  1. 在全连接层(FC层)之间仅使用一个受内存限制的多头自注意力(MHSA)模块;
  2. 级联分组注意力机制。

先来看第一点:夹在全连接层之间的MHSA模块。已有研究表明,内存效率低下的主要原因是MHSA,而非全连接层(相关研究见 https://arxiv.org/abs/2007.00072https://arxiv.org/abs/2107.06419)。为了解决这个问题,研究者增加了全连接层来加强特征通道之间的信息交互,但相比主流的ViT架构(比如 https://arxiv.org/abs/2103.14030),减少了注意力层的数量。此外,他们还缩小了MHSA中查询(Q)矩阵和键(K)矩阵的通道维度。

figure05

EfficientViT的核心架构改动(引自论文 https://arxiv.org/abs/2305.07027 的标注示意图)

这里的级联分组注意力,灵感来源于分组卷积——分组卷积早已被应用,例如这篇2012年的论文:https://papers.nips.cc/paper_files/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html

分组卷积也叫通道卷积或深度卷积,是标准卷积操作的一种变体。与普通卷积不同,分组卷积会将输入通道划分为多个组,每个组独立执行卷积运算。例如,如果输入有64个通道,分组参数设为2,那么输入就会被分成两组,每组32个通道,各自独立进行卷积。这种方法不仅能降低计算量,还能通过一种正则化作用增加模型的多样性,在部分任务中可能提升建模效果。

figure06

分组卷积的核心原理

令人印象深刻的是,EfficientViT不仅运行速度最高可达MobileViT的6倍,在精度相近的前提下,它在iPhone 11上的运行效率也达到了MobileViT的2.3倍。

总而言之,凭借出色的预测性能,ViT会继续发展下去(至少会一直是热门的研究方向)。而如今随着效率问题的不断优化,我认为未来几年ViT也会在生产环境中得到更广泛的应用。

2)视觉生成式AI:扩散模型

得益于Stable Diffusion这类开源模型的普及(该模型复现了论文 https://arxiv.org/abs/2112.10752 中提出的架构),如今大多数人应该都对扩散模型有所了解。如果还不熟悉,这里做一个简单介绍。

扩散模型本质上是生成式模型。训练过程中,模型会逐步向输入数据中添加随机噪声,对数据进行扰动;随后在逆向过程中,模型学习如何去除噪声,对输出进行降噪,还原出原始数据。推理时,扩散模型就可以从随机噪声输入出发,生成全新的数据。

figure07

扩散模型原理示意图

(当然,除了扩散模型之外,还有很多其他的生成式AI模型,我在《Machine Learning Q and AI》一书的第9章中有详细讨论,书籍链接:https://leanpub.com/machine-learning-q-and-ai

大多数扩散模型都基于卷积神经网络,采用以CNN为基础的U-Net架构。U-Net因其标志性的“U”形结构而得名,最初被用于图像分割任务,由用于捕捉上下文信息的编码器和实现精确定位的解码器组成。

传统上,扩散模型会复用U-Net来建模每一步扩散过程的条件分布,实现从噪声分布到目标数据分布的映射。换句话说,U-Net的作用是预测扩散过程每一步中需要添加或去除的噪声。U-Net之所以适合这个场景,是因为它能很好地融合局部信息与全局信息。

figure08

隐空间扩散模型(即Stable Diffusion),引自论文 https://arxiv.org/abs/2112.10752

一个有意思的问题是:把扩散模型的CNN骨干网络换成ViT是否会带来收益?下面这篇论文的研究者就对此进行了探索。

All are Worth Words: A ViT Backbone for Diffusion Models

在这篇论文(https://arxiv.org/abs/2209.12152)中,研究者尝试将扩散模型中的卷积U-Net骨干替换为ViT,他们将这种架构命名为U-ViT。需要说明的是,这并非该方向的首次尝试,此前已有相关研究,比如 https://arxiv.org/abs/2208.07791 和 https://arxiv.org/abs/2111.14822 等论文提出的方法。不过本次提出的U-ViT是目前效果最好的方案。

该架构的主要贡献在于新增了“长”跳跃连接,以及在输出前增加了一个卷积模块。注意,这里的“长”跳跃连接是在Transformer模块原有常规跳跃连接的基础上额外添加的。

和上一节介绍的常规ViT类似,模型的输入是“分块化”的图像,再额外加上一个时间标记(对应扩散步数)和一个条件标记(用于类别条件生成)。

figure09

论文 https://arxiv.org/abs/2209.12152 提出的全新U-ViT架构

下图展示了通过消融实验验证这些设计选择有效性的结果(设计非常严谨!)。

研究者在三类核心任务上对新架构进行了评估:

  • 无条件图像生成
  • 类别条件图像生成
  • 文本生成图像

在无条件图像生成任务上,全新的U-ViT扩散模型效果具有竞争力,但略逊于其他扩散模型;在类别条件图像生成任务上,U-ViT扩散模型可以比肩最优的生成对抗网络(GAN),并且效果超过其他扩散模型;而在文本生成图像任务上,它的表现优于所有在相同数据集上训练的对比模型(包括GAN和扩散模型)。

figure10

U-ViT在条件生成与文本生成图像任务上的效果,引自论文 https://arxiv.org/abs/2209.12152

值得肯定的是,尽管该模型在多个任务上没有全面超越其他模型,论文仍然被会议收录。这是一个带有全新架构思路的新模型,未来ViT会将扩散模型带向何方,非常值得期待。

(补充一点小说明:和部分其他模型相比,该模型文本生成图像任务的训练和评测数据集规模相对较小。同时目前也不清楚这种架构和传统基于CNN的扩散模型相比,计算性能如何。不过可以理解,使用较小数据集主要是因为这是学术项目,而非大型科技公司的重点项目,可能受限于资源。即便使用的是规模更小、更成熟的MS-COCO基准数据集,研究本身也没有任何问题。)

3)神经辐射场(NeRF)

简而言之,神经辐射场(NeRF)是一种相对较新的技术(2020年首次提出),能够从一组二维图像出发,合成复杂三维场景的全新视角,原始论文见 https://arxiv.org/abs/2003.08934。其实现原理是将三维场景建模为由神经网络生成的颜色与密度构成的体场。NeRF模型通过少量不同视角拍摄的图像训练后,能够根据三维空间中点的坐标和观测方向,输出该点的颜色和不透明度。

figure11

通过NeRF从二维输入图像学习生成全新三维渲染结果的示意图(图引自论文 https://arxiv.org/abs/2003.08934

神经辐射场涉及不少专业术语,我们先稍作回溯,梳理一下这些术语的由来。

首先我们来定义神经场(neural fields):这个术语听起来很专业,其实就是指一个可训练(即可参数化)的神经网络函数,能够在整个输入空间(比如一个三维场景)中生成输出值的“场”。

其核心思想是让神经网络对特定的三维场景发生过拟合,这样就能高精度地生成该场景的全新视角。这和数值分析中的样条插值概念有些类似:样条插值就是让一条曲线“过拟合”一组数据点,从而得到对底层函数平滑且精确的表达。

下图总结了神经场算法的流程,图取自Xie等人发表的优秀综述论文 https://arxiv.org/abs/2111.11426

figure12

典型的前馈神经场算法示意图,引自论文 https://arxiv.org/abs/2111.11426

具体到NeRF,网络会学习根据观测方向,输出空间中给定点的颜色和不透明度,从而构建出逼真的三维场景表示。由于NeRF会预测三维空间中特定观测方向上每一点的光的颜色与强度,它本质上建模的是一个辐射值场,“辐射场”一词也由此而来。顺便一提,严格来说NeRF的表示是5维的,因为它包含了三个空间维度(三维空间的x、y、z坐标),加上由两个角度θ和φ定义的观测方向,共两个额外维度。

NeRF的应用潜力巨大,所有涉及高质量三维重建的场景都可以用到它,包括三维扫描、虚拟现实与增强现实,以及影视、游戏中的三维建模和动作捕捉等领域。

ABLE-NeRF:面向神经辐射场的、基于注意力的可学习嵌入渲染方法

如上所述,NeRF的基本思想是将三维场景建模为连续的辐射值体场。它不存储显式的三维物体或体素网格,而是用一个函数(即神经网络)来表示三维场景,该函数将三维坐标映射为颜色(RGB值)和密度。

网络通过一组不同视角拍摄的场景二维图像完成训练。渲染场景时,NeRF接收三维坐标和观测方向(即相机光线)作为输入,输出该位置的RGB颜色值和体密度。

通过这种方式,NeRF能够生成具有照片级真实感的物体新视角。不过NeRF也存在不足:光滑物体的渲染效果往往偏模糊,半透明物体的颜色也容易显得浑浊不清。

在论文 https://arxiv.org/abs/2303.13817 中,研究者针对这些缺陷,通过引入自注意力框架和可学习嵌入,提升了半透明表面与光滑表面的视觉渲染质量。

figure13

ABLE-NeRF提升渲染真实感的效果对比(图引自论文 https://arxiv.org/abs/2303.13817

关于常规NeRF,还有一个细节值得一提:它使用的是基于光传输物理原理推导的体渲染方程。体渲染的基本思想是,对光线穿过三维场景时沿途所有点的贡献进行积分。渲染过程会对每条光线上的点进行采样,查询神经网络得到每个点的辐射值和密度,再对这些值积分,计算出像素的最终颜色。

本次提出的ABLE-NeRF没有沿用这种基于物理的体渲染方式,转而采用基于注意力的网络来决定光线的颜色。此外,研究者还加入了掩码注意力机制,避免特定点关注到被遮挡的点,以此贴合真实世界的物理限制。最后,他们还新增了一个Transformer模块用于学习可学习嵌入,来捕捉间接光照带来的视角相关外观效果。(消融实验表明,可学习嵌入对于提升视觉质量至关重要。)下图的标注示意图总结了该方法的整体框架。

figure14

ABLE-NeRF方法的标注示意图,引自论文 https://arxiv.org/abs/2303.13817

从ABLE-NeRF和基准NeRF的渲染对比结果来看,效果提升非常显著。当然,和真实值相比,结果还谈不上完美,但ABLE-NeRF已经能达到约90%的还原度。仅从图像出发就能实现这样的三维场景重建效果,发展速度已经相当惊人了。

4)目标检测与分割

目标检测与分割是计算机视觉的经典任务,应该不需要过多介绍。不过还是简单说明一下两者的区别:目标检测的核心是预测边界框和对应的类别标签;分割则是对每个像素进行分类,以此区分前景物体和背景。

figure15

目标检测(上)与分割(下)示意图。图分别引自YOLO论文(https://arxiv.org/abs/1506.02640)和Mask R-CNN论文(https://arxiv.org/abs/1703.06870v3

此外,分割任务还可以细分为三类,我在下面逐一说明。

  1. 语义分割。该技术会为图像中的每个像素分配一个物体类别标签(比如汽车、狗、房子),但它不会区分同一类物体的不同实例。举个例子,如果图像里有三辆汽车,语义分割会把它们都标记为“汽车”,不会区分第一辆、第二辆和第三辆。

  2. 实例分割。该技术在语义分割的基础上更进一步,能够区分同一类物体的不同个体。还是刚才三辆汽车的例子,实例分割会分别识别出每一辆车(比如汽车1、汽车2、汽车3)。也就是说,实例分割不仅对每个像素分类,还会区分出不同的物体实例,为每个实例分配独立的ID。

  3. 全景分割。该技术融合了语义分割和实例分割。在全景分割中,每个像素都会被分配一个语义标签和一个实例ID。为了更好地区分全景分割和实例分割,可以这么理解:实例分割的重点是识别场景中每个可识别物体的实例,也就是主要关注“事物”(things)——汽车、人、动物这类可数的、有明确个体的物体。而全景分割的目标是实现对场景的完整理解,它会为每个像素都打上标签:对于“物料”(stuff,比如天空、草地这类不可数的连续区域)分配类别标签;对于“事物”(things,汽车、人这类可数物体)分配实例标签。

figure16

图引自论文 https://arxiv.org/abs/1801.00868

经典的目标检测算法包括R-CNN(https://arxiv.org/abs/1311.2524)及其变体(Fast R-CNN:https://arxiv.org/abs/1504.08083、Faster R-CNN:https://arxiv.org/abs/1506.01497)、YOLO(You Only Look Once,https://arxiv.org/abs/1506.02640),以及SSD(Single Shot MultiBox Detector,https://arxiv.org/abs/1512.02325)。

分割模型则包括U-Net(https://arxiv.org/abs/1505.04597,此前扩散模型部分已有讨论)、Mask R-CNN(https://arxiv.org/abs/1703.06870,具备分割能力的Faster R-CNN变体),以及DeepLab(https://arxiv.org/abs/1606.00915)等等。

目标检测和分割在自动驾驶、医学影像以及视频监控等领域都有重要应用。需要注意的是,两者也经常结合使用:目标检测可以先对物体进行粗定位,再由分割算法进行微调,实现更精确的边界和形状分析。

Mask DINO:构建统一的基于Transformer的目标检测与分割框架

这篇论文(https://arxiv.org/abs/2206.02777)是DINO模型的扩展工作,DINO全称为“DETR with Improved deNoising anchOr boxes”(改进去噪锚框的DETR),原始论文见 https://arxiv.org/abs/2203.03605

而DETR(DEtection TRansformer,检测Transformer)是由Facebook AI提出的端到端目标检测模型,相关论文见 https://arxiv.org/abs/2005.12872——不出所料,它采用了Transformer架构。和传统目标检测模型不同,DETR将目标检测视为一个直接的集合预测问题,不需要人工设计锚框,也省去了非极大值抑制的步骤,提供了一种更简洁、更灵活的目标检测方案。

如今,基于CNN的方法通常会将目标检测(区域级任务)和分割(像素级任务)进行统一,以此提升两个任务的整体性能(本质上是一种多任务学习),但基于Transformer的目标检测与分割系统还没有做到这一点。

而本次提出的Mask DINO正是为了解决这个问题。通过对DINO进行扩展,Mask DINO的表现超越了所有现有的目标检测与分割系统。下图的标注示意图总结了Mask DINO的核心思路。

figure17

Mask DINO论文的标注示意图,引自 https://arxiv.org/abs/2206.02777


本通讯是我的个人兴趣项目,没有直接的商业收益。如果您愿意支持我的创作,可以考虑购买我的书籍,链接:https://sebastianraschka.com/books。如果您觉得这些书籍有启发、有帮助,也欢迎推荐给您的朋友和同事。

figure18

https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

您的支持对我意义重大!非常感谢!

Leave a Reply

Your email address will not be published. Required fields are marked *

*