GPT系列论文:生成式预训练与零样本学习

本文的主要参考是李沐老师关于 GPT 系列的解读:论文精读

GPT1: Improving Language Understanding by Generative Pre-Training (Generative Pre-Train Model 就是GPT模型的名字由来)

GPT2: Language Models are Unsupervised Multitask Learners

GPT3: Language Models are Few-Shot Learners

GPT3开发的demo: https://gpt3demo.com/

GPT-3: Demos, Use-cases, Implications

More concretely:

  • Language model performance scales as a power-law of model size, dataset size, and the amount of computation.
  • A language model trained on enough data can solve NLP tasks that it has never encountered. In other words, GPT-3 studies the model as a general solution for many downstream jobs without fine-tuning.

关于BERT和GPT

Transformer/BERT/GPT 时间线:Transformer —> GPT —> BERT —-> GPT2 —> GPT3。

如果去查 GPT 系列和 BERT 的引用数量,会发现 BERT 一篇的引用比 GPT 系列三篇加起来还多几倍,因此 BERT 在学界影响力更大是毋庸置疑的。但这并不能说明 BERT 的预训练任务就比 GPT 的更 “好”。首先,GPT 早于 BERT 提出在无监督的语料上进行大规模预训练,BERT 一定程度上也是受到 GPT 的启发。其次,GPT 的预训练任务是标准的语言模型(Language Model),即自回归式(auto-regressive)地预测句子中的下一个单词,相比于 BERT “完形填空” 式的预训练任务,无疑要难上许多。这使得 GPT 必须模型够大、数据够多才能训练起来,得到比较好的结果。这也是为什么 BERT 只有一篇论文,而 GPT 还有 GPT-2、GPT-3,通过不断扩增模型和数据的规模,最终使得 GPT-3 有如此惊艳的效果。对于这样困难的预训练任务和巨大的资源需求,一般的公司或个人根本玩不转。而 BERT 由于任务难度较小,相对并不需要那么多资源就可以进行预训练和微调,这也是为什么 BERT 的后续工作那么多(体现在引用量上)。但是,语言模型预测下一个单词的生成式任务,使得 GPT 的上限极高,GPT-3 通过写出足以以假乱真的文章,成为了最火出圈的 NLP 模型。另外,由于语言模型生成式任务的灵活性和巨大的预训练规模,GPT 甚至可以不需要(更新模型参数的)微调,而是通过文本 prompt 提示,就可以直接处理下游任务。

另外,很多人喜欢从从模型结构上来将 BERT 和 GPT 进行区分:BERT 使用了 Transformer 的编码器,适合于判别式任务;GPT 使用了 Transformer 的解码器,适合于生成式任务。然而,使用什么样的模型结构并不是 BERT 和 GPT 的本质区别。二者的本质区别在于选用了什么样的预训练目标函数,选用 Transformer 的编码器或解码器只是在确定了目标函数之后的必然选择。GPT 选用的是标准语言模型的目标函数,预测句子中的下一个单词,此时模型应该只能看到当前词和它之前的词,所以必须将当前词后面的词全部 mask 掉,故而选用带有 masked self-attention 的 Transfomer 解码器;而 BERT 是设计了一种 “完形填空” 式的预训练任务,根据当前词前后的内容还原当前词,此时模型应该可以看到整个序列的所有单词(当前词已被替换为特殊 token),故而选用了 Transformer 的编码器。当然,在讨论 BERT 与 GPT 时,将它们各自选用的架构作为直观的区分方式也是没有问题的。

GPT-1

Paper:Improving Language Understanding by Generative Pre-Training

前言

GPT 首先提出了在无监督的大规模预料上进行预训练,再在下游任务上进行微调的训练范式。至于为什么使用 Transformer 模型,而非 RNN,作者指出:Transformer 模型有更结构化的记忆(more structured memory),能够更好地处理文本中的长距离(long-term)依赖关系,从而能更好地抽取出句子层面和段落层面的语义信息,因此在迁移学习中,Tranformer 学习到的特征更加稳健。在迁移学习时,GPT 设计了各种任务相关(task-specific)的输入表示。

这里所谓的更结构化的记忆、长距离文本信息的论述,笔者是这样理解的:RNN(如 LSTM) 需要一步一步地处理序列内容,如果序列距离过长,可能走到后面时,前面的信息会有所丢失;而在 Transformer 中,自注意力机制的计算是完全并行的,序列的位置信息是通过位置嵌入来编码的,就不会有这个问题,即李宏毅老师所说的:“天涯若比邻”。

方法

原文方法部分分为三个小节,分别介绍如何在无标注的数据上进行自监督预训练、怎样进行微调、怎样对于不同的 NLP 下游任务构造输入。

预训练:

微调

方法部分的第二小节介绍了如何在预训练完成之后,在下游任务上进行微调。

假设有带标签数据集C ,其中每个样本是一个由一系列单词组成的句子和标签 y 组成。将句子输入到 GPT 模型中,取最后一个 transformer block 最后一个单词的输出特征,将它送入到线性层中进行预测:

不同任务的输出构造

介绍完如何微调之后,接下来就要介绍如何将 NLP 中不同的下游任务的输入表示成第二小节中句子+标签 的形式。如下图右侧所示,图中展示了几种不同类型的 NLP 下游任务适配 GPT 预训练模型的输入构造方法:

分类任务

  • 任务简介:任务给定一段文本,输出分类结果。例如:情感分类。
  • 构造方法:将给定的文本首尾各加上一个 token Start/Extract,然后送到 GPT 预训练模型中,将输出特征接一个线性层进行分类。分类任务与之前微调小节介绍的做法是完全一致的,

蕴含任务(非对称性句子关系任务)

  • 任务简介:给定两段文本,判断前者对后者关系。例如:蕴含任务,判断第一句对第二句的关系是蕴含/不蕴含/无关。
  • 构造方法:将两个句子中间添加一个分割 token Delim,然后将整个文本的首尾再加上 Start/Extract,送入 GPT 预训练模型,将输出特征送入线性层分类。

相似度任务(对称性句子关系任务)

  • 任务简介:给定两段文本,判断二者关系。例如:相似度任务,判断两个句子是否相似。
  • 构造方法:将两个句子分别作为前句或后句,构造两个完整文本,各自送入 GPT 预训练模型,提取出特征并进行融合,再送入线性层分类。

多选任务

  • 任务简介:给定一段文本和多个答案,判断哪个正确。
  • 构造方法:将给定文本和 N 个答案结合,构造 N 个完整文本,各自送入 GPT 预训练模型,提取出特征并送入线性层,取置信度最大者。

GPT模型结构(左)与微调下游任务输入构造方式(右)

注意图中的开始符(Start)、分隔符(Delim)、结束符(Extract)不是这几个单词本身,而是三个特殊的符号。

GPT-2

Paper:Language Models are Unsupervised Multitask Learners

前言

GPT 出现后不久,BERT 就提出了。通过新型的 MLM(Masked Language Model)任务和更大的模型、更大的训练数据量,在多项指标上超越了 GPT。GPT 的作者想要再次反超,首先肯定要扩大模型和数据的规模。但是除此之外,GPT-2 还有一个惊人的设定:zero-shot(零样本)。顾名思义,在 zero-shot 设定下,模型在预训练完成之后不需要任何下游任务的标注数据来进行微调,而是直接进行预测。

GPT-2 在研究思路上带给我们的启示是:有时候做研究不一定要在一个既定指标上死磕。在方法没有大创新的情况下,通过 “大力出奇迹” ,即使能够比之前方法有所提升,文章也会显得有些无聊。这时可以思考一些设定上的创新,如本文的 zero-shot,这时即使指标上提升不多甚至持平,也会有更有新意、更有趣。

方法

GPT2还是做语言模型,但是在做到下游任务的时候,会用一个叫做zero-shot的设定,zero-shot是说,在做到下游任务的时候,不需要下游任务的任何标注信息,那么也不需要去重新训练已经预训练好的模型。这样子的好处是我只要训练好一个模型,在任何地方都可以用。
如果作者就是在GPT1的基础上用一个更大的数据集训练一个更大的模型,说我的结果比Bert好一些,可能也就好那么一点点,不是好那么多的情况下,大家会觉得gpt2这篇文章就没什么意思了,工程味特别重。那么我换一个角度,选择一个更难的问题,我说做zero-shot。虽然结果可能没那么厉害了,没那么有优势,但是新意度一下就来了。

GPT-2 的模型跟 GPT-1 一样,这里就不再过多介绍。本节主要来说一下 zero-shot 要怎么做。

在 GPT-1 中,模型预训练完成之后会在下游任务上微调,在构造不同任务的对应输入时,我们会引入开始符(Start)、分隔符(Delim)、结束符(Extract)。虽然模型在预训练阶段从未见过这些特殊符号,但是毕竟有微调阶段的参数调整,模型会学着慢慢理解这些符号的意思。现在,在 GPT-2 中,要做的是 zero-shot,也就是没有任何调整的过程了。这时我们在构造输入时就不能用那些在预训练时没有出现过的特殊符号了。所幸自然语言处理的灵活性很强,我们只要把想要模型做的任务 “告诉” 模型即可,如果有足够量预训练文本支撑,模型想必是能理解我们的要求的。

举个机器翻译的例子,要用 GPT-2 做 zero-shot 的机器翻译,只要将输入给模型的文本构造成 translate english to chinese, [englist text], [chinese text] 就好了。比如:translate english to chinese, [machine learning], [机器学习] 。这种做法就是日后鼎鼎大名的 prompt。

在训练数据的收集部分,作者提到他们没有使用 Common Crawl 的公开网页爬取数据,因为这些数据噪声太多,太多无意义的内容。他们是去 Reddit 爬取了大量有意义的文本。作者还指出,在 Reddit 的高质量文本中,很可能已经有类似 zero-shot 构造方式的样本供模型学习。一个机器翻译的例子如下所示。

In a now-deleted post from Aug. 16, Soheil Eid, Tory candidate in the riding of Joliette, wrote in French: ”Mentez mentez, il en restera toujours quelque chose,” which translates as, ”Lie lie and something will always remain.

实验

在与同样为 zero-shot 模型的对比上,肯定是吊打了之前的 SOTA,这里就不展示了。可以关注一下下面 GPT-2 模型 zero-shot 性能关于模型规模的曲线。在有些任务上已经接近、超过之前某些有监督的方法;在比较困难的任务上,比如开放域问答,完全还看不到别人的影子。然而,看看曲线末端性能随模型规模提升的趋势,完全没有收敛的意思,这最后一段翘起的曲线,昭示着 GPT-3 继续大力出奇迹,从量变到质变的希望。

GPT-3

Paper:Language Models are Few-Shot Learners

前言

根据沐神关于论文价值给出的公式:论文价值 = 有效性 * 新意度 * 问题的大小。GPT-2 虽然通过 zero-shot 的设定,将自己的新意度凸显了出来,但是有效性(绝对性能)还是不太令人满意。GPT-3 ,众所周知的 “大力出奇迹” 式的文章,通过海量数据训练了一个 175 Billion 参数的预训练语言模型,性能直接拉满。甚至有点从量变到质变的意思,GPT-3 通过自回归式语言模型的生成能力,可以生成一些像模像样的文章,有时人类都很难读出这些文章是出自于 AI 模型生成,这也是为什么 GPT-3 能够成为 NLP 领域最火出圈的模型,文本生成能力使得它玩法众多。在任务设定上,GPT-3 没有固守于 GPT-2 的 zero-shot 方式。因为即使对于人类来说,要完成一个新任务,如果一个示例也不给的话,也有点强人所难了。如标题所示,GPT-3 采用了 few-shot 的任务设定,即给出下游任务的一两个例子,然后要求模型对该任务的新问题给出预测。当然,如此大规模的模型,即使是一两个样本,用梯度下降法微调模型权重也很费劲。因此,GPT-3 中所谓的 “few-shot”,与一般的根据支持集(下游任务示例)进行梯度下降更新参数的 few-shot 方法不同,它是利用自然语言的灵活性,将支持集示例放到 prompt 里,让模型自己理解示例,完成下游任务 few-shot 预测。

下图展示了 GPT-3 在不同的 NLP 任务上的性能随模型规模的变化,橙、绿、蓝分别代表 few-/one-/zero shot 方式,淡化的曲线是在不同任务上各自的准确率。实线是平均准确率。可以看到,随着模型规模的增大,性能还是有一定提升的。

方法

GPT-3 的预训练方式和之前还是一样的,模型结构也改动不大。还是在 Transformer 解码器上做标准语言模型的预训练,但是模型规模和数据规模大了几个数量级。这里我们还是主要来看一下 GPT-3 中所谓的 few-/one-/zero- shot 方式分别是什么意思。

下图展示了 GPT-3 中的 few-/one-/zero- shot 方式与常规的微调方式。

  • 微调方式的小样本学习,需要根据给出的下游任务样本和标注,构造损失函数,方向传播梯度,更新模型权重,然后进行预测。GPT-3 中完全没有采取这种方式。
  • Zero-shot,给定任务描述,如 Translate English to French,然后直接给出问题,要求模型给出答案。这种方式与 GPT-2 一致。
  • One-shot,给定任务描述,然后给一个例子,包括问题和答案,如 sea otter => loutre de mer,之后再给出问题,将上述整一段文本作为输入,要求模型给出答案。这种方式期望模型利用预训练阶段海量的文本数据积累和 Tranformer 的自注意力机制,理解问题和示例,然后仿照示例给出预测。
    笔者认为这种方式可行的根本原因是自然语言的灵活性和生成式模型的创造性,使得我们能够直接跟模型进行交互,把要做什么任务、任务示例直接 “打字告诉它”。在计算机视觉领域,好像很难做到类似的事情。
  • Few-shot,与 One-shot 类似,只是给的示例更多。

GPT-3 中的任务设定很惊艳,但是细想之下,也是无奈之举并且也有缺点。一方面,模型规模实在太大,微调来更新权重参数不可行,只好采用 few-shot 的方式。另一方面,模型权重不能更新,每次理解下游任务之后不能保存下来,也就是说每次做同一个下游任务都要给同样的例子。还有,下游任务的示例也不能太多,因为模型可能无法处理过长的输入序列。如果在我们的实际下游任务中确实有不少可供学习的样本,GPT-3 恐怕不是一个好的选择。所以,虽然 GPT-3 能做到的事情似乎听起来更接近 “人工智能”,但是相关的跟进工作并不多。

这应该是作者们充分挖掘模型能力,规避模型缺点,扬长避短设计出的任务设定,这种思路值得学习。

关于大规模预训练的调参、数据准备与清洗、工程实践等,GPT-3 论文中也有讨论,这里就不提了,有兴趣可以参考原文。

再后面关于实验、GPT-3 的不足以及可能的社会影响作者写了很多,本文主要关注算法部分,后面就不一一介绍了,同样请参考原文。

Ref

OpenAI 开源语音识别模型 Whisper & 相关应用

Robust Speech Recognition via Large-Scale Weak Supervision

https://github.com/openai/whisper

Blog:https://openai.com/blog/whisper/

论文精度

OpenAI Whisper 

拥有 GTP-3 语言模型,并为 GitHub Copilot 提供技术支持的人工智能公司 OpenAI 近日开源了 Whisper 自动语音识别系统,Open AI 强调 Whisper 的语音识别能力已达到人类水准。

Whisper 是一个自动语音识别(ASR,Automatic Speech Recognition)系统(transformer模型),OpenAI 通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务(multitask)监督数据对 Whisper 进行了训练。OpenAI 认为使用这样一个庞大而多样的数据集,可以提高对口音、背景噪音和技术术语的识别能力。除了可以用于语音识别,Whisper 还能实现多种语言的转录,以及将这些语言翻译成英语。OpenAI 开放模型和推理代码,希望开发者可以将 Whisper 作为建立有用的应用程序和进一步研究语音处理技术的基础。

Overview of our approach. A sequence-to-sequence Transformer model is trained on many different speech processing tasks,
including multilingual speech recognition, speech translation, spoken language identification, and voice activity detection

Whisper 执行操作的大致过程:

输入的音频被分割成 30 秒的小段、转换为 log-Mel 频谱图,然后传递到编码器。解码器经过训练以预测相应的文字说明,并与特殊的标记进行混合,这些标记指导单一模型执行诸如语言识别、短语级别的时间戳、多语言语音转录和语音翻译等任务。

相比目前市面上的其他现有方法,它们通常使用较小的、更紧密配对的「音频 – 文本」训练数据集,或使用广泛但无监督的音频预训练集。因为 Whisper 是在一个大型和多样化的数据集上训练的,而没有针对任何特定的数据集进行微调,虽然它没有击败专攻 LibriSpeech 性能的模型(著名的语音识别基准测试),然而在许多不同的数据集上测量 Whisper 的 Zero-shot(不需要对新数据集重新训练,就能得到很好的结果)性能时,研究人员发现它比那些模型要稳健得多,犯的错误要少 50%。

目前 Whisper 有 9 种模型(分为纯英文和多语言),其中四种只有英文版本,开发者可以根据需求在速度和准确性之间进行权衡,以下是现有模型的大小,及其内存要求和相对速度:

Whisper的表现因语言而异。下图显示了使用largeV2模型使用Fleurs数据集的语言进行细分。

论文:稳健的语音识别通过大规模的弱监督

弱监督的意思是指我们的语音数据是有标号的,但是标号的可行度不是那么高,质量一般这也是,这也是作者能够采集到近70万h的数据的原因。(在样本数量和质量之间做权衡)

摘要

我们研究了互联网上的大量的训练好的的语音处理系统的功能。当把我们的数据集扩大到680,000小时,且是一个多语言和多任务监督训练时,最终的模型可以与在标准数据集训练好的其他模型相比具有相同的效果,但whisper无需进行任何微调,在面对新数据集时候无需微调。与人类相比,模型具有准确性和鲁棒性。我们正在发布模型和推理代码,以作为在强大语音处理上进一步工作的基础。

引言

目前主流的语音识别方法是先进行大规模的无监督预训练(Wav2Vec 2.0),比如, Wav2Vec 采集了1000000h的无标签训练数据,先用这些数据进行预训练一个编码器(使用对比学习 or 字训练),encoder能够对语音数据做一个很好的编码,然后在面向下游任务时,可以在标准训练集中做微调(只需要几十小时的数据就可),这样比只在标准数据集上训练的结果好很多。

这些预训练好的语音编码器能够学习到语音的一个高质量表示,但是用无监督方法训练的编码器仍然需要训练一个解码器,需要用带标签的数据来微调,微调是一个很复杂的过程,如果不需要微调就好了,这也是本文要做的工作。此外,过去的工作缺乏一个很好的解码器,这是一个巨大的缺陷,而语音识别系统就是应该是“out of box”,也就是拿来即用。

有监督学习很多方法是把多个有监督的数据集合并成一个大的数据集,这样确实保证比在单个数据集上的准确性和泛化性都要好,但是之前的工作最多也就是5000h的数据集,跟之前的100万h的无监督数据集相比差的太多。

顺着这个思路,如果我们把数据集的标号放松一下,就会获得个更多的数据集。在数量和质量之间做权衡是一个不错的选择,比如在yutube上采集视频和字幕作为数据集,为了追求样本的多样性和数量,稍微降低一点质量也是可以的。因此本文就是把弱监督数据集扩展到了68万h,并将模型取名whisper.

方法

数据处理:不需要对标号做任何后处理。从互联网中采集到的数据多种多样,比如声音的环境、录制的设备、说话的人、语言。这样让模型更加稳健,但是对应的我们希望标号质量应该要一致,因此需要做一个过滤系统,把一些质量差的文本删除(一般是一些机器自动生成的文本,如果使用其作为标号,那训练出来的模型效果也不会很好)、去重等等。训练数据30s以及对应的标号作为一个样本。

数据部分是本文最核心的贡献。由于数据够多,模型够强,本文模型直接预测原始文本,而不经过任何标准化(standardization)。从而模型的输出就是最终识别结果,而无需经过反向的文本归一化(inverse text normalization)后处理。所谓文本归一化包括如将所有单词变小写,所有简写展开,所有标点去掉等操作,而反向文本归一化就是上述操作的反过程。在 Whisper 中,这些操作统统不用,因为数据足够多,可以覆盖所有的情况。

在本文收集的语音数据中,包含了不同环境、不同语言、不同说话人等多样的数据,这有助于训练出文件的语音识别系统。然而,文本标签的多样性对模型的学习是一种阻碍。为了解决这个问题,本文使用了几种自动过滤方法,来提高文本标签的质量。

  • 首先,收集自互联网的语音识别数据,很有可能文本标签就是来自现有的语音识别系统的识别结果。之前有研究工作表明,在训练数据中混有机器生成的标签数据会损害模型的性能。为此,本文根据机器识别结果的一些特点,过滤掉了这些数据
  • 另外,本文对数据中语音所属语言和文本所属语言进行检测。如果文本是非英语的其他语言,则要求语音也必须是同种语言;如果文本是英语,则语音可以是任何语言(因为本文方法中有一个其他语言到英语的翻译任务)。
  • 本文用一个语音识别模型在收集的数据上进行测试,发现在一些错误率极高的数据中,存在音频信息不完整、字幕声音不匹配等低质量数据,这些数据同样会被过滤掉。

另外,可能在收集的数据中含有标准语音识别数据集中的内容,为了避免对测试结果产生影响,这部分数据同样需要去掉。

最后,将音频切分为 30s 的片段,配上对应文本,得到训练数据。

2、模型

由于我们的工作重点是研究大规模监督预训练的语音识别能力,因此我们使用现成的架构来避免将我们的发现与模型改进混淆。具体来说就是使用最原始的encoder-decoder Transformer (Vaswani et al., 2017)模型作为网络。将所有音频重新采样至16,000 Hz,80通道的Mel频谱图表示,其步幅为10毫秒。对于特征归一化,我们将输入归一化到-1和1之间,整个训练数据集的平均值约为零。

输入(80*3000)在送入transformer之前先经过卷积层(kernel=3),主要是考虑卷积具有局部相关性,输出80*1500,降低维度。剩下的部分就是一个经典 transformer 架构。

Whisper 使用的模型改动不大,就是 Transformer 第一次提出时的 encoder-decoder 架构。Whisper 的入出侧是声音信号,声音信号的预处理是将音频文件重采样到 16000 Hz,并计算出 80 通道的梅尔频谱,计算时窗口大小为 25ms,步长为 10ms。然后将数值归一化到 -1 到 1 之间,作为输入数据。可以认为是对于每一个时间点,提取了一个 80 维的特征。之前数据处理部分提到每个音频悲切氛围 30s 的片段,这里步长为 10,所以每 30 秒有 3000 个时间点。综上,对于一个 30 秒的音频数据,我们提取到形状为 3000×80 的特征。对应到 NLP 中,可以理解为句子长度为 3000,每个词的词嵌入维度为 80

3000×80 的输入数据首先通过两个 1D 卷积层,得到 1500×80 的特征。后面的处理就是标准的 Transformer encoder-decoder结构了。将这个特征送入到 Transformer encoder 中,提取处的特征作为交叉注意力输入送给 decoder。decoder 每次预测下一个 token,其输入是对应多任务学习的一些预设 token 和 prompt。

3、核心:多任务训练

虽然语音系统主要的任务是给一段话,把里面说的词识别出来,但是实际上大部分语言识别系统来说,还需要进行其他的后处理:检测是否有人说话(VAD)、谁在说话、识别的语音文本添加标点等等。作者希望一个模型可以同时做转录、VAD、时间戳、检测等等任务

all in one的方法会带来两个问题:比如要做VAD,可能我只需要一个小模型就可以完成,但现在必须要用这个超大模型。另外,假如我这个模型在某个任务表现不好,那么我需要多添加该任务数据继续训练,但继续训练,其他任务的效果是否会受影响。

具体任务如下:

一是给定英文语音,转录成英文文本;二是给定其他语言语音,转录并翻译成英文文本;三是给定其他语言语音,转录成该语言文本;四是给定只有背景音乐的音频,识别出无人说话。

所有这些任务都由解码器预测的 token 序列表示,从而使得一个模型能够处理多个任务。这几个任务及模型输出 token 的关系可以从图中下方的图示中的 token 序列看出:在 START OF TRANSCRIPT token 之后,如果当前无人说话,则识别为 NO SPEECH 。如果有人说话,则识别出当前语音所属的语言 LANGUAGE TAG 。然后有两种可能的任务 TRANSCRIBE 还是翻译任务 TRANSLATE ,这两种任务又分为两种形式:带时间戳的和不带时间戳的,分别穿插或不穿插时间戳 token ,预测出文本 token。最后到达 EOT token,整个流程结束。

那么如何训练这些任务呢?使用的是一个prompt格式,不同的任务通过不同的tokens组合来区别的,三种:特殊控制token、文本token、时间戳token

从起点开始,有一定概率走prev这个,表示前面一段我已经转录的内容(包括文本和时间戳),也有一定概率直接走到start token,然后学习语言类别token(包括99种语言+空白),接下来分两个token(转录还是翻译),然后有分两中(是否预测时间戳),有时间戳token则需要预测这句话的开始结束时间+内容,没有时间戳的话,直接预测这三十秒的文字,最后EOT结束。这样相比bert使用不同的输出头,对应不同的损失来说。whisper多任务只需要一个输出头,一个损失函数就可以,通过控制输入的流来控制不同的任务。但这样设计也有缺陷:某个任务表现不好,需要模型完全训练,这样对其他任务来说也会有影响,牵一发动全身。

实验

作者实验的数据集是模型训练集没有使用过的,认为是zero-shot。验证标准:WER

结论

Whisper 说明在语音识别领域,对于把大规模的弱监督训练的认识还是不够,我们的模型结果说明不需要做自监督 或者自训练,只要在大规模数据集上训练好模型,推理时无需任何微调,只需要zero-shot就可以。

基于Whisper开发应用工具:

AutoCut: 通过字幕来剪切视频

github: https://github.com/mli/autocut

AutoCut 使用 Whisper 来对你的视频自动生成字幕。然后在字幕文件中你选择需要保留的句子,AutoCut 将对你视频中对应的片段裁切并保存。你无需使用视频编辑软件,只需要编辑文本文件即可完成视频剪切。

假如你录制的视频放在 2022-11-04/ 这个文件夹里。那么运行

autocut -d 2022-11-04

提示:如果你使用 OBS 录屏,可以在 设置->高级->录像->文件名格式 中将空格改成 /,即 %CCYY-%MM-%DD/%hh-%mm-%ss。那么视频文件将放在日期命名的文件夹里。

AutoCut 将持续对这个文件夹里视频进行字幕抽取和剪切。例如,你刚完成一个视频录制,保存在 11-28-18.mp4。AutoCut 将生成 11-28-18.md。你在里面选择需要保留的句子后,AutoCut 将剪切出 11-28-18_cut.mp4,并生成 11-28-18_cut.md 来预览结果。

你可以使用任何的 Markdown 编辑器。例如我常用 VS Code 和 Typora。下图是通过 Typora 来对 11-28-18.md 编辑。

全部完成后在 autocut.md 里选择需要拼接的视频后,AutoCut 将输出 autocut_merged.mp4 和对应的字幕文件。

转录某个视频生成 .srt 和 .md 结果。

autocut -t 22-52-00.mp4
  1. 如果对转录质量不满意,可以使用更大的模型,例如autocut -t 22-52-00.mp4 –whisper-model large默认是 small。更好的模型是 medium 和 large,但推荐使用 GPU 获得更好的速度。也可以使用更快的 tiny 和 base,但转录质量会下降。

剪切某个视频

autocut -c 22-52-00.mp4 22-52-00.srt 22-52-00.md
  1. 默认视频比特率是 --bitrate 10m,你可以根据需要调大调小。
  2. 如果不习惯 Markdown 格式文件,你也可以直接在 srt 文件里删除不要的句子,在剪切时不传入 md 文件名即可。就是 autocut -c 22-52-00.mp4 22-52-00.srt
  3. 如果仅有 srt 文件,编辑不方便可以使用如下命令生成 md 文件,然后编辑 md 文件即可,但此时会完全对照 srt 生成,不会出现 no speech 等提示文本。autocut -m test.srt test.mp4 autocut -m test.mp4 test.srt # 支持视频和字幕乱序传入 autocut -m test.srt # 也可以只传入字幕文件

一些小提示

  1. 讲得流利的视频的转录质量会高一些,这因为是 Whisper 训练数据分布的缘故。对一个视频,你可以先粗选一下句子,然后在剪出来的视频上再剪一次。
  2. 最终视频生成的字幕通常还需要做一些小编辑。你可以直接编辑md文件(比srt文件更紧凑,且嵌入了视频)。然后使用 autocut -s 22-52-00.md 22-52-00.srt 来生成更新的字幕 22-52-00_edited.srt。注意这里会无视句子是不是被选中,而是全部转换成 srt
  3. 最终视频生成的字幕通常还需要做一些小编辑。但 srt 里面空行太多。你可以使用 autocut -s 22-52-00.srt 来生成一个紧凑些的版本 22-52-00_compact.srt 方便编辑(这个格式不合法,但编辑器,例如 VS Code,还是会进行语法高亮)。编辑完成后,autocut -s 22-52-00_compact.srt 转回正常格式。
  4. 用 Typora 和 VS Code 编辑 Markdown 都很方便。他们都有对应的快捷键 mark 一行或者多行。但 VS Code 视频预览似乎有点问题。
  5. 视频是通过 ffmpeg 导出。在 Apple M1 芯片上它用不了 GPU,导致导出速度不如专业视频软件。

Novelty in Science–A guide for reviewers

作者:Michael J. Black

迈克尔·布莱克(Michael J. Black)是出生在美国的计算机科学家,在德国图宾根工作。他是马克斯·普朗克智能系统研究所的创始理事,负责领导感知系统部门的计算机视觉,机器学习和计算机图形研究。他还是图宾根大学的名誉教授。

研究价值 = 新意度 x 有效性 x 问题大小 ,这篇博客的标题叫做科学中的新意度,来看看大佬是如何解释 论文新意度的(Novelty)。

审稿人对怎样才能使一篇论文被 CVPR 这样的顶级会议所接受有着强烈的想法。他们知道,要进入这样的会议是很难的,而且得到一篇论文是很有声望的。
因此,被录用的论文必须是非常特别的。这是事实,但什么使一篇论文特别呢?许多审稿人关注的一个重点是新颖性。但什么是科学中的新颖性?

我看到评审员经常把复杂性、难度和技术性误认为是新颖性。在科学评审中,新颖性似乎意味着这些东西。我们最好把 “新颖性 “这个词从审查说明中去掉,用来代替。

美感消除了 “技术性 “和 “复杂性 “的概念,并更多地涉及到科学新颖性的核心。 一幅画可以是美丽的,即使它很简单,技术复杂度很低。一张纸也可以。毕加索的一个小插曲可以和伦勃朗的复杂画作一样美丽。考虑到美,让我们看看审查员对新颖性的一些常见误解。

Reviewers have strong ideas about what makes a paper acceptable in top conferences like CVPR. They know that getting into such conferences is hard and that getting a paper in is prestigious. So, the papers that get in must be really special. This is true, but what makes a paper special? A key focus of many reviewers is novelty. But what is novelty in science?

I see reviewers regularly mistake complexity, difficulty, and technicality for novelty. In science reviewing, novelty seems to imply these things. We might be better served by removing the word “novelty” from the review instructions and replacing it with beauty

Beauty removes the notions of “technical” and “complex” and gets more to the heart of scientific novelty.  A painting can be beautiful even if it is simple and the technical complexity is low. So can a paper. A little squiggle of paint by Picasso can be as beautiful as an intricate painting by Rembrandt.  

Keeping beauty in mind, let’s look at some common reviewer misunderstandings about novelty.

Novelty as complexity

The simplicity of an idea is often confused with a lack of novelty when exactly the opposite is often true.  A common review critique is

The idea is very simple. It just changes one term in the loss and everything else is the same as prior work.

If nobody thought to change that one term, then it is ipso facto novel. The inventive insight is to realize that a small change could have a big effect and to formulate the new loss.  

Such reviews lead my students to say that we should make an idea appear more complex so that reviewers will find it of higher value.  I value simplicity over unnecessary complexity; the simpler the better. Taking an existing network and replacing one thing is better science than concocting a whole new network just to make it look more complex.

Novelty as difficulty

It’s hard to get a paper into a top conference, therefore reviewers often feel that the ideas and technical details must be difficult.  The authors have to shed blood, sweat, and tears to deserve a paper. Inexperienced reviewers, in particular, like to see that the authors have really worked hard. 

Formulating a simple idea means stripping away the unnecessary to reveal the core of something. This is one of the most useful things that a scientist can do. 

A simple idea can be important. But it can also be trivial. This is where reviewers struggle. A trivial idea is an unimportant idea. If a paper has a simple idea that works better than the state of the art, then it is most likely not trivial.  The authors are onto something and the field will be interested.

Novelty as surprise

Novelty and surprise are closely related. A novel idea is a surprising one by definition — it’s one that nobody in the field thought of.  But there is a flip side to this as surprise is a fleeting emotion. If you hear a good idea, there is a moment of surprise and then, the better it is, the more obvious it may seem. A common review:

The idea is obvious because the authors just combined two well known ideas.

Obvious is the opposite of novelty. So, if an idea is obvious after you’ve heard it, reviewers quickly assume it isn’t novel.  The novelty, however, must be evaluated before the idea existed. The inventive novelty was to have the idea in the first place.  If it is easy to explain and obvious in hindsight, this in no way diminishes the creativity (and novelty) of the idea.

Novelty as technical novelty

The most common misconception of reviewers is that novelty pertains to technical details. Novelty (and value) come in many forms in papers. A new dataset can be novel if it does something no other dataset has done, even if all the methods used to generate the dataset are well known. A new use of an old method can be novel if nobody ever thought to use it this way. Replacing a complex algorithm with a simple one provides insight. 

Novelty reveals itself in as many ways as beauty. Before critiquing a paper for a lack to technical novelty ask yourself if the true novelty lies elsewhere.

Novelty as usefulness or value

Not all novel ideas are useful. Just the property of being new does not connote value.  We want new ideas that lead us somewhere.  Here, reviewers need to be very careful.  It’s very hard to know where a new idea will take the field because any predictions that we make are based on the field as it is today.

A common review I get is

The authors describe a new method but I don’t know why anyone needs this.

Lack of utility is indeed an issue but it is very hard to assess with a new idea. Reviewers should be careful here and aware that we all have limited imagination. 

A personal note

My early career was built on seeing and formalizing connections between two established fields: robust statistics and Markov random fields. The novelty arose from the fact that nobody had put these ideas together before. It turned out to be a fertile space with many surprising connections that led to new theory. Fortunately, these connections also turned out to be valuable, resulting in practical algorithms that were state of the art. 

With hindsight, the connection between robust statistics and outliers in computer vision seems obvious. Today, the use of robust estimators in vision is the norm and seems no more novel than breathing air. But to see the connections for the first time, before others saw them, was like breathing for the first time. 

There is little in life more exciting than that spark of realization in science when you glimpse a new way of seeing.  You feel as if you were the first to stand on a mountain peak. You are seeing the world for a moment the way nobody before you has ever seen it. This is novelty and it happens in an instant but is enabled by all of one’s experience. 

The resulting paper embodies the translation of the idea into code, experiments, and text. In this translation, the beauty of the spark may be only dimly glimpsed.  My request of reviewers is to try to imagine the darkness before the spark. 

总结:

1、新意度 !=复杂度、困难度、惊讶度、技术新意度、有效性

2、新意度 ~=优美 (要懂得欣赏)

多模态预训练 | ViLT

paper: https://arxiv.org/abs/2102.03334 ICML 2021

code: https://github.com/dandelin/ViLT

图1 Visual comparison of conventional VLP architectures
and our proposed ViLT.

视觉文本多模态任务,极其简单的多模态结构。模态的特征抽取做到了极小化,主要的计算量放在后边的模态融合上,提高了推理速度。多模态领域里程碑式工作。将区域特征,region 从多模态框架中移除。

Vision and Language Pre-training(VLP)已经已经在视觉语言的多模态下游任务中发展的很好。然而,当前VLP的工作主要集中在图像特征抽取上,一般来讲,图像特征抽取的越好,下游任务中的表现就越好。但是,现在主要有两个问题,一是效率太低,速度太慢,抽取图像特征花费大量时间,比多模态融合都多。我们应该花费更多时间在融合上。第二个是,你用一个预训练好的模型去抽取特征,表达能力受限。目标检测数据集不够大,规模不够大。如果模型不是端到端学习,只是从预训练模型抽取特征,大概率来说不是最优解。

Motivation

目前参数量最小的多模态Transformer方法。ViLT使用预训练的ViT来初始化交互的transformer,这样就可以直接利用交互层来处理视觉特征,不需要额外增加一个视觉encoder(如Faster-RCNN)。

Contribution

  1. 第一个基于patch projection的多模态预训练模型,其是首个使用patch projection来做visual embedding的方法。
  2. 证明了可以将BERT的方法和Vison Transformer结合起来用于多模态transformer
  3. 体现了全词掩码在预训练时以及图像增强在微调时的重要性。

Method

现有的视觉语言模型的三种结构类别:

VE = Vision Embedding

TE = Text Embedding

MI = Modality Interaction

上图是4种不同类型的VLP模型示意图。其中每个矩形的高表示相对计算量大小,VE、TE和MI分别是visual embedding、text embedding和modality interaction的简写。

作者提出这4种类型的主要依据有两点:

1.在参数或者计算上,两种模态是否保持平衡。

2.在网络深层中,两种模态是否相互作用。

VSE、VSE++和SCAN属于(a)类型。对图像和文本独立使用encoder,图像的更重,文本的更轻,使用简单的点积或者浅层attention层来表示两种模态特征的相似性。

CLIP属于(b)类型。每个模态单独使用重的transformer encoder,使用池化后的图像特征点积计算特征相似性。

ViLBERT、UNTER和Pixel-BERT属于(c)类型。这些方法使用深层transformer进行交互作用,但是由于VE仍然使用重的卷积网络进行特征抽取,导致计算量依然很大。

作者提出的ViLT属于(d)类型。ViLT是首个将VE设计的如TE一样轻量的方法,该方法的主要计算量都集中在模态交互上。

Modality Interaction Schema

模态交互部分可以分成两种方式:一种是single-stream(如BERT和UNITER),另一种是dual-stream(如ViLBERT和LXMERT)。其中single-stream是对图像和文本concate然后进行交互操作,而dual-stream是不对图像和文本concate然后进行交互操作。ViLT延用single-stream的交互方式,因为dual-stream会引入额外的计算量。

现有的VLP模型的text embedding基本上都使用类BERT结构(图1),但是visual embedding存在着差异。在大多数情况下,visual embedding是现有VLP模型的瓶颈。visual embedding的方法总共有三大类,其中region feature方法通常采用Faster R-CNN二阶段检测器提取region的特征,grid feature方法直接使用CNN提取grid的特征,patch projection方法将输入图片切片投影提取特征。ViLT是首个使用patch projection来做visual embedding的方法。

网络结构ViLT

作者提出的ViLT可以认为是目前最简单的多模态Transformer方法。ViLT使用预训练的ViT来初始化交互的transformer,这样就可以直接利用交互层来处理视觉特征,不需要额外增加一个视觉encoder。

文本特征输入部分,将文本看成一个词序列,通过word embedding matrix转化成word embedding,然后和position embedding进行相加,最后和modal-type embedding进行concate。

图像特征输入部分,将图像切块看成一个图像块序列,通过linear projection转化成visual embedding,然后和postion embedding进行相加,最后和modal-type embedding进行concate。

其中word embedding和visual embedding通过可学习的modal-type embedding标志位来区分,其中0标志位表示word embedding部分,1标志位表示visual embedding部分。

wrod embedding和visual embedding分别都嵌入了一个额外的可学习[class] embedding,方便和下游任务对接。

Pretraining Objectives

ViLT预训练的优化目标有两个:一个是image text matching(ITM),另一个是masked language modeling(MLM)

ImageText Matching:随机以0.5的概率将文本对应的图片替换成不同的图片,然后对文本标志位对应输出使用一个线性的ITM head将输出feature映射成一个二值logits,用来判断图像文本是否匹配。另外ViLT还设计了一个word patch alignment (WPA)来计算teextual subset和visual subset的对齐分数。

Masked Language Modeling:MLM的目标是通过文本的上下文信息去预测masked的文本tokens。随机以0.15的概率mask掉tokens,然后文本输出接两层MLP与车mask掉的tokens。

Whole Word Masking:另外ViLT还使用了whole word masking技巧。whole word masking是将连续的子词tokens进行mask的技巧,避免了只通过单词上下文进行预测。比如将“giraffe”词tokenized成3个部分[“gi”, “##raf”, “##fe”],可以mask成[“gi”, “[MASK]”, “##fe”],模型会通过mask的上下文信息[“gi”,“##fe”]来预测mask的“##raf”,就会导致不利用图像信息。

Experiment

本文提出的方法在效率上大大提升且表现出相似的性能,相比于region feature的方法速度快了60倍,相比于grid feature的方法快了4倍,而且下游任务表现出相似甚至更好的性能。

如图所示,ViLT相比于region feature的方法速度快了60倍,相比于grid feature的方法快了4倍,而且下游任务表现出相似甚至更好的性能。

缺点:

1、性能不够高,在一些数据集上得表现比不过C类方法,有可能因为对于现有的任务来说,因为数据集的bias,或者这个任务需要更多的视觉信息,因此需要更多得视觉部分,最后的效果才能好。

2、虽然推理时间快,但是训练速度很慢。只是结构上简化了多模态学习,但一般人还是玩不起。

CCF(中国计算机学会)推荐国际学术会议和期刊目录(2022年拟定)

CCF(中国计算机学会)推荐国际学术会议和期刊目录(2022年拟定)终于来了!较前一版本(2019)拟新增期刊4个,会议6个;升级期刊18个,会议19个;移除期刊1个。值得注意的是:当前的目录正在公示期,并非2022最终版本,所以后面会再次发布最终版本

https://www.ccf.org.cn/Academic_Evaluation/By_category/

本文将重点关注 AI 领域,特别是计算机视觉方向的会议/期刊变动情况

【重点总结—拟定】

  • MICCAI 首次被收录,空降B类会议
  • PRCV 首次被收录,空降C类会议
  • NAACL 从C类升级到B类会议
  • ICLR 继续陪跑,没有被收录推荐目录
  • AI和图形学/多媒体两大领域的A类会议/期刊均没有变化(无新增/无降级/无移除)
  • WINE(Conference on Web and Internet Economics)空降A类期刊(属于交叉/综合/新兴领域)
  • SCIS(Science China Information Sciences)从B类期刊升级到A类期刊(属于交叉/综合/新兴领域)

仅以当前目录(拟定)来看,Amusi猜测:MICCAI、PRCV 的投稿量一定会爆炸增长。

Amusi侃侃:2019-2022这几年里,关于CCF 人工智能会议中争议最多的应该就是:建议ICLR新增到A类,而这次ICLR居然还是连目录(拟定)都没有进,A类/B类/C类中都没有;如果最终版确定没有,那不知道CCF目录下次更新是何时了…

下面完整罗列了推荐目录(拟定)中的【人工智能】和【计算机图形学与多媒体】两大领域的会议和期刊:

人工智能会议

A类不变,仍是7个会议:AAAI、NeurIPS、ACL、CVPR、ICCV、ICML和IJCAI,如下图所示:

B类有13个会议,新增一个NAACL(NAACL从C类升级到B类),如下图所示:

C类有20个会议,减少一个NAACL(NAACL从C类升级到B类),如下图所示:

人工智能期刊

A类不变,仍是4个期刊:AI、TPAMI、IJCV、JMLR,如下图所示:

B类有22个期刊,新增(空降)TACL 期刊,如下图所示:

C类有37个期刊,新增(空降)TIIS 期刊,如下图所示:

计算机图形学与多媒体会议

A类不变,仍是4个会议:ACM MM、SIGGRAPH、VR和IEEE VIS,如下图所示:

B类有14个会议,新增(空降)MICCAI,如下图所示:

C类有15个会议,新增(空降)PRCV、ICVRV和CVM,如下图所示:

计算机图形学与多媒体期刊

A类不变,仍是3个期刊:TOG、TIP和TCVG,如下图所示:

B类不变,仍是10个期刊,如下图所示:

C类有13个期刊,新增(空降)CVMJ,如下图所示:

基于扩散模型的语义分割

论文标题:LABEL-EFFICIENT SEMANTIC SEGMENTATION WITH DIFFUSION MODELS

论文地址:https://arxiv.org/pdf/2112.03126.pdf

论文代码:https://github.com/yandex-research/ddpm-segmentation

摘要

  1. 背景介绍: 去噪扩散概率模型DDPM最近受到了很多研究关注,因为它们优于其他方法,如GAN,并且目前提供了最先进的生成性能。差分融合模型的优异性能使其在修复、超分辨率和语义编辑等应用中成为一个很有吸引力的工具。
  2. 研究方法: 作者为了证明扩散模型也可以作为语义分割的工具,特别是在标记数据稀缺的情况下。对于几个预先训练的扩散模型,作者研究了网络中执行逆扩散过程马尔可夫步骤的中间激活。结果表明这些激活有效地从输入图像中捕获语义信息,并且似乎是分割问题的出色像素级表示。基于这些观察结果,作者描述了一种简单的分割方法,即使只提供了少量的训练图像也可以使用。
  3. 实验结果: 提出的算法在多个数据集上显着优于现有的替代方法。

图像生成模型 Stable Diffusion|CVPR ’22 Oral

项目地址:https://ommer-lab.com/research/latent-diffusion-models/

试玩: https://huggingface.co/spaces/stabilityai/stable-diffusion

High-Resolution Image Synthesis with Latent Diffusion Models

Stable Diffusion 是一个“文本到图像”的人工智能模型。近日,Stable AI 公司向公众开放了它的预训练模型权重。当输入一个文字描述时,Stable Diffusion 可以生成 512×512 像素的图像,这些图像如相片般真实,反映了文字描述的场景。

这个项目先是经历了早期的代码发布,而后又向研究界有限制地发布了模型权重,现在模型权重已经向公众开放。对于最新版本,任何人都可以在为普通消费者设计的硬件上下载和使用 Stable Diffusion。该模型不仅支持文本到图像的生成,而且还支持图像到图像的风格转换和放大。与之一同发布的还有 DreamStudio 测试版,这是一个用于该模型的 API 和 Web 用户界面。

Stable AI 公司表示:

“Stable Diffusion 是一个文本到图像的模型,它将使数十亿人在几秒钟内创造出令人惊叹的艺术。它在速度和质量上的突破意味着它可以在消费者级的 GPU 上运行。这将允许研究人员和公众在一系列条件下运行它,并使图像生成普及化。我们期待着有围绕这个模型和其他模型的开放生态系统出现,以真正探索潜伏空间的边界。”

Latent Diffusion 模型(LDM)是 Stable Diffusion 模型建立的一种图像生成方法。LDM 通过在潜伏表示空间(latent representation space)中迭代“去噪”输入来创建图像,然后将表示解码为完整的图像,这与其他著名的图像合成技术,如生成对抗网络(GAN)和 DALL-E 采用的自动回归方法不同。最近的 IEEE/CVF 计算机视觉和模式识别会议(CVPR)上有一篇关于 LDM 的论文,它是由慕尼黑路德维希-马克西米利安大学的机器视觉和学习研究小组创建的。今年早些时候,InfoQ 也报道的另一个基于扩散的图片生成 AI 是谷歌的 Imagen 模型。

Stable Diffusion 可以支持众多的操作。与 DALL-E 类似,它可以生成一个高质量的图像,并使其完全符合所需图像的文字描述。我们也可以使用一个直观的草图和所需图像的文字描述,从而创建一个看起来很真实的图像。类似的“图像到图像”的能力可以在 Meta AI 的 Make-A-Scene 模型中找到,该模型刚发布不久。

一些人公开分享了 Stable Diffusion 创建的照片的例子,Stable AI 的首席开发人员 Katherine Crowson 也在 Twitter 上分享了许多照片。毫无疑问,基于人工智能的图片合成技术将对艺术家和艺术界产生影响,这令一些观察家感到担忧。值得注意的是,在 Stable Diffusion 发布的同一周,一幅由人工智能生成的作品在科罗拉多州博览会的艺术竞赛中获得了最高荣誉。

Stable Diffusion 的源代码可以在 GitHub 上查阅。

试玩地址: https://huggingface.co/spaces/stabilityai/stable-diffusion

Contribution

  • Diffusion model是一种likelihood-based的模型,相比GAN可以取得更好的生成效果。然而该模型是一种自回归模型,需要反复迭代计算,因而训练和推理都十分昂贵。本文提出一种diffusion的过程改为在latent space上做的方法,从而大大减少计算复杂度,同时也能达到十分不错的生成效果。( “democratizing” research on DMs),在unconditional image synthesis, inpainting, super-resolution都能表现不错~
  • 相比于其它进行压缩的方法,本文的方法可以生成更细致的图像,并且在高分辨率(风景图之类的,最高达10242px都无压力)的生成也表现得很好。
  • 提出了cross-attention的方法来实现多模态训练,使得class-condition, text-to-image, layout-to-image也可以实现。
方法We condition LDMs either via concatenation or by a
more general cross-attention mechanism.

整体框架如图,先训练好一个AutoEncoder(包括一个encoder和decoder)。因此,我们可以利用encoder压缩后的数据做diffusion操作,再用decoder恢复即可。

  • Autoencoder训练: L1/L2loss来作为重建损失,用GAN来做对抗攻击?,用KL loss来把latent space拉到正态分布,防止搜索空间过大
  • 用了encoder降维后,就可以使用latent space diffusion了~ 具体扩散过程其实没有变,只不过现在扩散和重建的目标为latent space的向量了。Diffusion model具体实现为 time-conditional UNet。

为了引入conditioning的信息,提出了domain specific encoder τθ(y)不同模态的(比如text, class, image…)转成中间表达(intermediate representation),再利用cross-attention来嵌入到UNet中去。

Experiments

展示一些可用的任务:

  • layout-to-image 输入bounding box输出图像。
  • text-to-image输入文本,输出图像。
  • 输入bounding box输出图像。
  • 输入文本,输出图像
    • 输入landscape输出高分辨率的风景图。
    • 超分辨率
    • inpainting (图像修复/编辑)

    效率对比。大概时间上缩短为1/3~ 并且,FID的值更小。

    ICCV2021|极大似然法做点云降噪

    论文标题:Score-Based Point Cloud Denoising

    论文链接:https://arxiv.org/abs/2107.10981

    作者单位:北京大学

    本文提出了一种新的点云去噪范式,利用噪声点云的分布模型并利用分布的分数,表现SOTA!性能优于DMR、GPDNet等网络。

    从扫描设备获取的点云通常会受到噪声的干扰,这会影响表面重建和分析等下游任务。噪声点云的分布可以看作是一组无噪声样本 p(x) 与某个噪声模型 n 卷积的分布,导致 (p∗n)(x) 的模式是底层清洁表面。为了对嘈杂的点云去噪,我们建议通过梯度上升从 p∗n 增加每个点的对数似然——迭代更新每个点的位置。由于 p∗n 在测试时是未知的,我们只需要分数(即对数概率函数的梯度)来执行梯度上升,我们提出了一种神经网络架构来估计 p∗n 的分数只给定嘈杂的点云作为输入。我们推导出用于训练网络的目标函数,并利用估计的分数开发去噪算法。实验表明,所提出的模型在各种噪声模型下优于最先进的方法,并显示出应用于其他任务(如点云上采样)的潜力。

    VirtualCube: An Immersive 3D Video Communication System

    3D视频会议系统VirtualCube:相隔万里也如近在咫尺般身临其境

    https://www.microsoft.com/en-us/research/project/virtualcube/

    微软亚洲研究院的研究项目 3D 视频会议系统 VirtualCube,可以让在线会议的与会者建立自然的眼神交互,沉浸式的体验就像在同一个房间内面对面交流一样。该技术的相关论文被全球虚拟现实学术会议 IEEE Virtual Reality 2022 接收并获得了大会的最佳论文奖(Best Paper Award – Journal Papers Track)。

    在日常交谈中,相互注视和摆动头部等动作都是自然对话的组成部分,尤其是当我们在面对面交流中变换话题、控制发言或转换交流对象时,都会伴随眼神和肢体动作的交流。然而,当前的视频会议技术却存在着一定的缺陷——由于摄像头和屏幕不在同一高度,如果看向屏幕眼神往往很不自然,如果看向摄像头则无法关注到其他与会者的反应,因此视频会议缺少了线下交流的真实感和互动感。而且在实际的工作中,我们还会有各种不同的会议场景,比如多人会议、同排而坐协同工作等情况,对于捕捉与会者的侧方视线和动作来说,现有的视频会议系统就更无能为力了。

    如果有一个会议系统,可以让人们即使身处不同的地方,也能像在同一房间里一样交流,视线转动就能与同伴建立起眼神沟通,这是否会给远程办公增添一份沉浸式的真实感呢?

    利用现有的普通硬件设备搭建的 3D 视频系统:

    为了解决这些问题,微软亚洲研究院提出了创新的 3D 视频会议系统——VirtualCube,它可以在远程视频会议中建立起真人等大的 3D 形象,无论是正面沟通,还是侧方交流,系统都能够正确捕捉到与会者的眼神、动态,建立起眼神和肢体交流。相关论文被全球虚拟现实学术会议 IEEE Virtual Reality 2022 接收并获得了大会的最佳论文奖(Best Paper Award – Journal Papers Track)

    VirtualCube 系统具有三大优势:

    标准化、简单化,全部使用现有的普通硬件设备。与办公场所中常见的格子间(Cubicle)类似,每个 VirtualCube 都提供了一致的物理环境和设备配置:与会者正前方安装有6个 Azure Kinect RGBD 摄像头,以捕捉真人的图像和眼神等动作;在与会者的正面和左右两侧还各有一个大尺寸的显示屏,以创造出身临其境的参会感。使用现有的、标准化的硬件能够大大简化用户设备校准的工作量,从而实现 3D 视频系统的快速部署和应用。

    感。使用现有的、标准化的硬件能够大大简化用户设备校准的工作量,从而实现 3D 视频系统的快速部署和应用。

    6个 Azure Kinect RGBD 摄像头捕捉人像和眼神等动作

    多人、多场景,任意组合。作为在线视频会议的基础构建,VirtualCube 的虚拟会议环境可由多个空间(Cube)按照不同的布局组成,以支持不同的会议场景,例如两人的面对面会议、两人并排会议,以及多人的圆桌会议等。

    多个空间(Cube)可实现任意组合

    实时、高质量渲染真人图像。VirtualCube 可以捕捉到参与者的各种细微变化,包括人的皮肤颜色、纹理,面部或衣服上的反射光泽等,并实时渲染生成真人大小的 3D 形象,显示在远程与会者的屏幕中。而且虚拟会议环境的背景也可以根据用户的需求自由选择。

    任意变换会议场景,都能身临其境

    V-Cube View和V-Cube Assembly算法双剑合璧,沉浸式会议体验不再是难题

    其实业界对 3D 视频会议的研究从未间断过。早在2000年,就有人曾提出过与类似混合现实技术有关的畅想。基于这个设想,科研人员一直在探索如何将视频会议以更逼真、更自然的方式呈现,期间也出现了不同的技术路线和解决方案,但都没有达到理想的效果。对此,微软亚洲研究院主管研究员张译中和杨蛟龙表示,过往的研究仍然有很多没有解决的问题:首先,在真实环境下,无论放置怎样的单目摄像设备,即使图像质量再高,与会者也很难形成自然的眼神交流,特别是多人会议的情况;其次,很多研究针对特定的会议场景进行优化,如两个人面对面的会议或三人的圆桌会议,很难支持不同的会议设置;第三,虽然在影视界我们能够看到一些逼真的虚拟人,但那是需要专业的技术和影视团队长时间打磨和优化才能实现的,仍然需要一定的手工劳动,目前无法进行实时捕捉和实时渲染。

    为此,微软亚洲研究院提出了 V-Cube View 和 V-Cube Assembly 两大全新算法,在 VirtualCube 中实现了自动捕捉参与者的手势动作和眼神变化,实时渲染形成高保真图像,让参与者在虚拟会议中体验到真实会议的氛围。

    “两个人在交谈且相互注视对方时,对方看到的自己就相当于在自己眼睛的位置放置一个摄像头。但屏幕和摄像头的位置存在高低差,所以当一方注视屏幕中对方的眼睛时,摄像头捕捉到的眼神就会偏离。因此在 VirtualCube 中,我们在与会者正前方的屏幕边缘放置了六个摄像头,通过 V-Cube View 算法合成正确的视点图像,并利用 V-Cube Assembly 确定正确的相对位置,进而给与会者一个沉浸式的会议体验”,张译中介绍道。

    基于深度学习的 V-Cube View 算法,通过 VirtualCube 中的六个摄像头的 RGBD 图像作为输入,实时渲染任意目标视点下人的高保真视频。这里的技术挑战是如何同时做到高保真和实时。对此,微软亚洲研究院主管研究员杨蛟龙解释道:“实时渲染高保真的人像,特别是高保真的人脸一直是个具有挑战性的研究课题。传统的三维重建和纹理贴图的做法虽然可以做到实时绘制,却无法重现出真实人脸复杂的材质和在不同视点下外观的变化。为此我们提出了一种新的 Lumi-Net 渲染方法,其核心思想是利用重构的三维几何作为参考来实现一个四维光场的实时渲染,并结合神经网络进行图像增强,从而提高了渲染的质量,特别是人脸区域的高保真度。”

    具体而言,V-Cube View 算法分为三步进行。首先,研究员设计了一个神经网络来快速求解目标视点深度图作为人体的几何参考(geometry proxy)。然后,算法在给定的几何参考下将获取的多视角 RGB 图像(即光线)进行融合,实现绘制。在这一步中,研究员受传统的非结构化流明图(Unstructured Lumigraph)方法启发,将输入光线与目标像素光线的方向和深度差异作为先验,通过神经网络学习最合适的融合权重。最后,为了进一步提升绘制质量,研究员们使用了神经网络对上一步的绘制结果进行图像增强。整个算法实现了端到端的训练,并在训练过程中引入了感知损失函数及对抗学习技术,使得算法可以自动学习出最优的神经网络,实现高保真的绘制。而且为了保证绘制的实时性,算法的前两步都在低分辨率图像上执行,这样可以在不损失太多精度的情况下大大降低所需计算量。经过精心设计和优化的 V-Cube View 算法,将实时的三维人物渲染质量提升到了一个新的高度。

    V-Cube View 算法示意图

    另外,为了让 VirtualCube 的使用者拥有和线下交流同样的体验,在将与会者映射到虚拟环境时,系统还要考虑他们之间的相对位置关系,这时 V-Cube Assembly 算法就发挥了重要的作用。“在整个虚拟会议环境中,V-Cube Assembly 可以被定义为全局坐标系统,单个的 VirtualCube 则为局部坐标系统。全局坐标系与局部坐标系之间的正确 3D 几何变化,对在视频显示器上正确呈现远程与会者的图像至关重要”杨蛟龙介绍。

    研究员们首先会在 VirtualCube 中捕捉与会者的 3D 几何体,形成局部坐标系,然后将这些局部坐标系的 3D 几何体数据,投射到全局坐标系,经过 V-Cube Assembly 处理,在全局虚拟会议环境中确定每个 VirtualCube 参与者正确的相对位置,最后再将全局 3D 几何体转换为 VirtualCube 的局部坐标系,影射到 VirtualCube 的屏幕上。

    V-Cube Assembly 算法示意图

    抛砖引玉,畅想未来办公无限可能

    VirtualCube 给 3D 视频会议系统提供了一种全新的思路。无论从算法设计、端到端设备部署还是工程调试上,VirtualCube 都证明了利用现有的普通硬件设备就可以实现沉浸式的 3D 视频会议体验。

    除了让与会者“共享”同一个物理空间外,研究员们还在探索利用 VirtualCube 系统满足远程办公中的更多协作需求。例如,研究员们展示了这样一种场景:在协同工作时,两位与会者及其电脑桌面都将是视频会议的一部分,因此与会者并排而坐,并且跨屏幕传递自己桌面上的文档和应用程序会让远程协作更加方便。

    随着技术的不断精进,未来,大家或许都可以实现身隔万里,却能亲临其境一起办公,自然沟通的遥在体验,而这将极大地提高混合办公的效率。微软亚洲研究院的研究员们也希望 VirtualCube 可以成为一颗探索的种子,给更多研究人员带来启发,在大家共同的努力下,找到更好的虚拟空间交互形式,打开未来办公的更多可能。

    PointCLIP 用CLIP巧解点云分类

    论文: CVPR2022 PointCLIP: Point Cloud Understanding by CLIP

    代码:https://github.com/ZrrSkywalker

    本文提出PointCLIP:第一个将 CLIP 应用于点云识别的工作,它将2D预训练的知识迁移到3D领域,可在没有任何 3D 训练的情况下对点云进行跨模态零样本识别。

    在本文中,我们通过提出 PointCLIP 来确定这种设置是可行的,它在 CLIP 编码的点云和 3D 类别文本之间进行对齐。

    因为重新训练clip的代价太大(原始clip的训练数据 有4yi对文本图像对),因此没法去修改clip的模型结构,因此也就意味之模型的输入:text-image形式。因此作者将三d点云数据经过不同视角的渲染,变成M个RGB的二维maps,送如encoder中并获得M个特征,通过与对应的文本特征做一个相似度,来确定 当前的点云类别。

    模型结构

    具体来说,我们通过将点云投影到多视图深度图中而不进行渲染来编码点云,并聚合视图方式的零样本预测以实现从 2D 到 3D 的知识迁移。最重要的是,我们设计了一个视图间适配器,以更好地提取全局特征,并将从 3D 中学到的小样本知识自适应地融合到 2D 中预训练的 CLIP 中。

    通过在小样本设置中微调轻量级适配器,PointCLIP 的性能可以大大提高。此外,我们观察到 PointCLIP 和经典 3D 监督网络之间的互补特性。通过简单的集成,PointCLIP 提高了基线的性能,甚至超越了最先进的模型。因此,PointCLIP 是在低资源成本和数据机制下通过 CLIP 进行有效 3D 点云理解的有前途的替代方案。

    ensembling聚合部分:可以认为是把pointclip作为一个即插即用的模块,用于辅助3D点云分类网络做分类任务 。

    实验结果

    我们对广泛采用的 ModelNet10、ModelNet40 和具有挑战性的 ScanObjectNN 进行了彻底的实验,以证明 PointCLIP 的有效性。