【生成式AI導論 2024】第17講:有關影像的生成式AI (上) — AI 如何產生圖片和影片 (Sora 背後可能用的原理)

Hung-yi Lee
31 May 202449:29

Summary

TLDR本文概述了生成式人工智能(AI)在影像领域的应用,包括基于条件生成图片或视频的AI技术。介绍了GPT-4如何根据图片生成描述性文字,以及SORA模型如何根据文本描述生成视频影像。探讨了影像生成模型的构建过程、训练数据的需求,以及如何使用CLIP模型评估生成结果的质量。同时,分析了减少视频生成过程中计算量的技术方法,如改造注意力机制和多步骤生成策略。

Takeaways

  • 🌟 生成式AI可以根据条件生成内容,包括根据图像生成文字或根据条件生成图像和视频。
  • 🔍 GPT-4能够理解图像内容并根据图像生成文字描述,例如评价人物衣着和猜测职业。
  • 🎨 SORA模型能够根据文本描述生成图像,展示了生成式AI在图像创造方面的强大能力。
  • 📹 生成式AI可以用于视频生成,包括根据文本描述生成视频或对现有视频进行风格转换和画质提升。
  • 🗣️ Talking Head技术允许通过AI生成人物讲话的动态视频,有广泛的应用前景。
  • 🖌️ 生成式AI可以根据草图或草稿生成精细的图像,提供创意和设计辅助。
  • 🎞️ 影片由多帧图片组成,生成式AI可以通过编码和解码过程处理视频数据。
  • 🤖 现代AI模型通常不直接使用像素作为输入,而是通过编码器将图像转换为更简单的形式。
  • 📈 训练图像生成模型需要大量带文字描述的图像数据,如LAION公司提供的大规模图像数据集。
  • 📊 评估图像生成模型的效果可以使用CLIP模型,通过计算模型输出与文本描述的匹配度来评分。
  • 🛠️ 减少视频生成中的计算量可以通过改进注意力机制,如使用Spatial和Temporal Attention的组合。

Q & A

  • 生成式AI在影像领域的应用主要有哪些方向?

    -生成式AI在影像领域的应用主要有两个方向:一是将影像作为条件输入,生成对应的文字描述;二是根据给定的条件生成图片或影片。

  • GPT-4在处理图片信息时有哪些特点?

    -GPT-4能够处理图片信息,例如通过分析两张人物照片,对人物的衣着进行评论,并猜测他们的职业,但不会直接回答谁更帅这种主观问题。

  • SORA模型在生成影像方面有哪些能力?

    -SORA模型能够读取文本描述并生成与之对应的清晰影像,包括一些现实生活中不太可能出现的场景。

  • 影像生成式AI在生成影片时可能会遇到哪些问题?

    -影像生成式AI在生成影片时可能会遇到的问题包括生成的影像中的物体变形、不自然的动作等瑕疵。

  • 如何使用生成式AI进行影片的风格转换或画质提升?

    -可以使用生成式AI对未完成的影片进行续写,或对影片进行风格转换,如将黑白影片上色,或用于老电影的影像修复和画质提升。

  • 什么是Talking Head技术,它有哪些应用场景?

    -Talking Head技术是指根据给定的录音和照片,生成说话时嘴型和面部表情的影像。它可以应用于VTuber虚拟角色的创建,或者结合GPT-4O生成没有人的Youtuber。

  • 生成式AI在处理图片时的基本单位是什么?

    -生成式AI在处理图片时的基本单位是像素,图片由像素构成,像素越多图片越清晰。

  • 影片的基本构成是什么?

    -影片是由一系列连续的图片构成的,每一张图片称为一帧(Frame),影片的流畅度与每秒帧数(fps)有关。

  • Transformer模型在生成图片时通常使用什么方法来表示图片?

    -Transformer模型通常会使用编码器(Encoder)将图片切成多个小块(Patch),然后对每个Patch进行压缩表示,再通过解码器(Decoder)还原成图片。

  • 如何训练一个模型以实现文字生成图片的功能?

    -需要收集大量对应文字描述和图片的数据,通过训练Transformer模型来学习如何根据文字描述生成对应的图片。

  • 为什么文字生成影片的计算量特别大?

    -文字生成影片需要生成大量的Patch,每个Patch之间需要通过Attention机制进行相互关联,导致计算量随Patch数量的增加而急剧增加。

  • 如何减少文字生成影片的计算量?

    -可以通过改造Attention机制,如使用Spatial和Temporal Attention的组合来减少计算量,或者通过多步骤生成过程,每一步只专注于某个特定任务。

  • 如何评价生成式AI生成的图片的质量?

    -可以使用CLIP模型来评价生成的图片与输入文字的匹配程度,即通过CLIP Score来衡量生成图片的质量。

  • 个人化图像生成是如何实现的?

    -通过给特定的对象指定一个独特的名称,并用少量的该对象的图片来训练模型,使模型能够识别并生成与该对象相关的各种场景的图片。

  • 为什么说图片生成模型很难用文字描述来精确控制?

    -因为图片包含的细节和视觉元素往往难以用文字完全描述,有些细微的差别和特征可能在文字描述中难以表达。

Outlines

00:00

📚 影像与生成式AI的课程介绍

本段落为课程的开场白,介绍了生成式AI的基本概念及其在影像领域的应用。生成式AI可以根据条件生成内容,影像相关的生成式AI可以基于图片或视频生成文本描述,或根据条件生成新的图片和视频。本节课将重点讨论如何根据条件生成图片和视频。

05:01

🤖 GPT-4的图像识别与职业猜测

介绍了GPT-4如何根据两张照片猜测人物的职业和审美标准。GPT-4能够根据衣着和外观特征对人物进行评价和职业猜测,例如将穿牛仔外套的年轻人与时尚娱乐行业联系起来,而将穿白衬衫戴眼镜的男士与学术技术或商业领域联系起来。同时,展示了GPT-4在面对“谁更帅”的问题时的回避策略和回答风格。

10:03

🎨 SORA模型的影像生成能力

讨论了SORA模型根据文本描述生成影像的能力,展示了SORA根据文本生成的怪物和纽约海底街景的影片。同时指出SORA生成的影像存在一些不自然和瑕疵之处,如怪物背后的墙移动不自然,海底生物的变形等。此外,还提到了SORA模型尚未开放使用,目前的DEMO均来自OpenAI的官方Blog。

15:05

🔍 影像生成模型的局限性与应用

深入探讨了影像生成模型SORA的局限性,如在生成过程中出现的生物变形问题,并讨论了影像生成模型的多种应用,例如未完成影片的续写、风格转换、影像修复和画质提升。还提到了Talking Head技术,即根据录音和照片生成说话头像的应用,以及这种技术在VTuber等领域的潜在应用。

20:07

🖌️ 生成式AI的图片生成原理

解释了生成式AI如何生成图片,包括图片的基本单位像素、分辨率的概念,以及影片由多张图片组成的原理。介绍了影片中的关键概念如帧(Frame)、帧率(fps),并讨论了人工智能如何通过编码器(Encoder)和解码器(Decoder)处理图片,将图片信息简化并通过Transformer模型进行生成。

25:09

📝 文字生成图片的训练方法

讨论了如何训练一个模型以实现文字生成图片的功能。介绍了需要的大规模训练数据集,如LAION公司发布的包含58亿张图片的数据集,以及使用这些数据集进行训练时可能面临的版权风险。同时,解释了模型训练过程中的编码、压缩和解码步骤,以及如何通过Attention机制在生成过程中保持图片元素间的关联性。

30:12

📊 影像生成模型的评价标准

探讨了如何评价影像生成模型的效果,指出人类评价的局限性,并引入了CLIP模型作为评价工具。CLIP模型通过比较输入文字和图片的匹配程度来打分,从而评估生成模型的性能。此外,提到了图片生成中的特殊难点,即有些视觉内容难以用文字描述,提出了个性化图像生成的概念。

35:14

🌟 个性化图像生成的实现

介绍了如何实现个性化图像生成,即通过给特殊对象指定一个独特的符号,并用少量图片训练模型以识别和生成该对象的不同表现形式。这种方法允许用户在不同场景中使用定制化的对象,并且只需要少量的样本即可实现。

40:16

🎞️ 文字生成影片的挑战与技术

讨论了文字生成影片相比于文字生成图片的挑战,主要是由于影片由大量连续帧组成,导致需要计算的Attention次数呈指数级增长。介绍了减少计算量的方法,包括改造Attention机制,如使用Spatial和Temporal Attention的组合来模拟3D Attention,以及通过多步骤生成过程逐步提高影片质量。

45:16

🛠️ 影片生成模型的优化策略

深入讨论了优化影片生成模型的策略,包括使用伪3D Attention技术减少计算量,以及通过分步骤生成来简化每个模型的任务。举例说明了如何通过一系列模型逐步提高影片的帧率和分辨率,最终生成高质量的影片,并推荐了两篇关于影像生成的学术论文供进一步学习。

Mindmap

Keywords

💡生成式AI

生成式AI是一种人工智能技术,它能够根据给定的条件或输入生成新的数据内容,如文本、图像或视频。在视频中,生成式AI被用来讨论如何根据条件生成影像内容,例如通过分析图片来生成文字描述,或者根据文本描述生成图片和视频。

💡条件

在生成式AI中,条件是指输入到模型中用于指导生成过程的参数或数据。视频中提到的条件可以是一张图片、一段影像或一段文字描述,这些条件决定了AI生成内容的风格、主题或具体细节。

💡GPT-4

GPT-4是视频中提到的一个先进的语言模型,它能够理解并分析图像内容。例如,GPT-4可以根据两张人物照片分析并评论他们的衣着,甚至猜测他们的职业,展现了生成式AI在图像理解和内容生成方面的能力。

💡SORA模型

SORA是OpenAI推出的一个生成式AI模型,它能够根据文本描述生成相应的影像。视频中提到SORA模型在根据文本生成清晰影像方面展现出了强大的能力,尽管目前还未对外开放使用。

💡影像修复

影像修复是指利用技术手段改善老旧或损坏影像的质量。在视频中,提到了使用生成式AI进行影像修复的应用,例如将黑白影片上色或提升影片的分辨率,以增强其现代感。

💡Talking Head

Talking Head是一种技术,它可以根据给定的录音和照片生成说话的头像。视频中提到,这种技术可以应用于VTuber或虚拟角色的创建,使它们能够根据文本或语音输入生成自然的面部表情和嘴型。

💡Patch

Patch在视频中指的是图像或影片的基本构成单元,通过编码器将图像分割成小块,每个小块包含图像的一部分信息。Patch的概念在生成式AI中用于简化图像处理过程,使其更适合神经网络处理。

💡编码器和解码器

编码器和解码器是生成式AI中用于图像和影片处理的两个关键组件。编码器负责将图像或影片压缩成一系列简单的Patch,而解码器则负责将这些Patch重新组合成原始的图像或影片。视频中提到,这些过程涉及到复杂的神经网络操作。

💡Transformer

Transformer是一种深度学习模型,广泛应用于自然语言处理和其他序列建模任务。在视频中,Transformer被用于生成式AI中,处理图像和影片的Patch,通过注意力机制(Attention)确保生成内容的连贯性和一致性。

💡CLIP模型

CLIP是一种多模态模型,能够理解和评估图像与文本之间的关系。视频中提到,CLIP模型被用于评估生成式AI生成的图像质量,通过计算图像与描述文本的匹配程度来衡量生成效果的好坏。

💡个人化图像生成

个人化图像生成是指根据用户提供的独特对象或场景生成图像的过程。视频中提到,通过少量的示例图片和特定的命名,可以训练生成式AI模型识别并生成与特定对象相关的图像,实现个性化的图像创作。

Highlights

生成式AI在影像领域的应用,包括根据图片生成对应文字或根据条件生成图片和影片。

GPT-4能够分析图片并根据衣着对人物职业进行猜测,展示了AI在图像理解和分析方面的能力。

介绍了Sora模型,能够根据文本描述生成清晰影像,尽管还未开放使用,但展示了生成式AI的潜力。

SORA模型生成的影像存在瑕疵,如背景移动和水生生物变形,指出了生成式AI在影像生成上的局限性。

讨论了用影片生成影片的应用,例如未完成影片的续写和风格转换,展示了AI在影像编辑方面的应用。

介绍了Talking Head技术,通过AI生成说话时的嘴型和面部表情,指出了AI在虚拟现实角色创建上的应用。

探讨了根据条件生成图片的多种应用,如根据草图生成精细图画或根据站姿生成人像。

解释了图片和影片的基本构成单位,即像素和帧,以及它们在AI模型中的处理方式。

介绍了编码器(Encoder)和解码器(Decoder)在AI模型中对影像进行压缩和还原的过程。

讨论了影像压缩技术的发展,以及如何通过Transformer模型生成图片。

分析了非自回归模型在生成图片时的优势,如同时生成所有Patch以提高效率。

介绍了LAION数据集在训练文字生图模型中的作用,以及其规模和潜在的版权问题。

解释了如何使用CLIP模型来评估生成图片的相关性和质量,即CLIP Score。

讨论了个性化图像生成的概念,以及如何通过少量图片训练模型以识别特定对象。

分析了文字生影片的挑战,特别是在计算量和生成连续性方面。

介绍了减少生成影片计算量的方法,如改进注意力机制和分步生成技术。

讨论了Imagen模型如何通过多步骤生成提高影片质量,包括增加帧数和分辨率。

Transcripts

play00:00

好,那各位同學大家好啊,我們來上課吧

play00:06

那今天呢,我們要講跟影像有關的生成式AI

play00:12

我們知道生成式AI呢,它本質上要做的事情就是它有一個輸入

play00:17

它有一個condition,根據這個condition要生出一些東西

play00:22

那跟影像有關的生成式AI可以從兩個方向來討論

play00:27

這個是影像,它可以是生成式AI的condition

play00:31

生成式AI可以根據它看到的一張圖片

play00:34

它看到的一段影像來生成一些對應的東西

play00:38

比如說生成對應的文字

play00:40

這是一種類的跟影像有關的生成式AI

play00:44

那另外一類的生成式AI是

play00:47

這些生成式AI它的目標就是產生圖片或產生影片

play00:53

你給它一個condition

play00:55

根據你給他的Condition產生對應的圖片或影片

play00:59

那在今天的課程裡面

play01:01

我們會專注於討論第二塊部分

play01:04

那我們先來很快的看一下第一類的生成式AI

play01:09

那這一類可以看圖片、可以看影片的生成式AI

play01:14

也許你已經不是很陌生了

play01:16

因為現在GPT-4它是能夠看圖片的

play01:20

所以你可以給GPT-4兩張人的照片

play01:24

這兩個人呢,其實都叫李宏毅

play01:27

那你就問他說,這個照片中的哪一個人比較帥

play01:30

你也不用期待他會回答你

play01:32

因為他現在都非常的精明

play01:33

所以他不會直接回答哪一個人比較帥這種問題

play01:36

但他會對兩人的衣著做一些評論

play01:40

說左邊這一位穿著牛仔外套的年輕人

play01:44

比較時尚而有型

play01:45

右邊穿白襯衫的眼鏡男士

play01:48

看起來比較專業而有親和力

play01:51

但是我不知道誰比較帥,你覺得呢?

play01:54

接下來我還想要問他說

play01:56

你知不知道這兩個人從事什麼樣的職業

play01:59

根據他們的衣著和打扮

play02:01

猜一下他們是從事什麼樣的職業

play02:04

那GPT4o猜的是蠻準的

play02:07

他說牛仔外套的年輕人

play02:09

可能從事時尚娛樂或創意領域的工作

play02:12

這個沒錯

play02:13

這個李鴻義是一個非常知名的演員

play02:16

然後右邊這個呢

play02:17

他是從事學術技術或商業領域的工作

play02:20

例如教授工程師或者是經理

play02:23

所以看起來這些照片拍的都是蠻不錯的

play02:26

讓這個語言模型可以根據這個照片

play02:29

大致可以猜出這個人是什麼樣的職業

play02:32

看起來這些照片都非常符合他對應的那個人的形象

play02:36

其實這個GPT-4o

play02:38

他內心深處還是有一個審美標準的

play02:42

所以如果你逼迫他說一定要決定誰比較帥的話

play02:46

他還是會給你一個答案

play02:48

不管我問他幾次

play02:49

他都會說左邊那個人比較帥

play02:52

但是我這邊還是特別把他的答案秀出來給你看

play02:55

你可以仿照一下

play02:57

你可以參學習一下GPT-4o的回答

play03:00

雖然他覺得左邊這個人比較帥

play03:02

他會強調說右邊這個人呢

play03:04

看起來也很有魅力

play03:06

他的魅力來自於專業性和親和力

play03:09

所以GPT-4o呢

play03:11

經過了大量的RLHF以後

play03:13

他現在講話已經非常的精明

play03:15

就是個人精

play03:16

我們可以多學習他講話的風格

play03:19

那這個是根據影片來產生

play03:24

根據圖片來產生文字

play03:26

那這門課我們會花比較多時間來探討

play03:29

怎麼根據某一個condition來產生影片或者是產生圖片

play03:36

那講到根據某一個condition來產生影片這件事情

play03:40

就不能不提SORA這個模型

play03:44

在我們學期初的時候

play03:46

OpenAI 試出Sora這個模型的DEMO

play03:54

在這個DEMO裡面

play03:55

他們就展示說Sora有非常強的力量

play03:59

可以讀一段文字

play04:00

這段文字是對於一段影像的描述

play04:04

Sora這個生成式AI

play04:06

就可以生出非常清晰的對應的影像

play04:09

那在學期初的時候

play04:11

一時之間造成了非常大的轟動

play04:14

不過Sora到現在都還沒有真的被開放使用

play04:19

所以如果你看到網路上的一些DEMO

play04:21

那個都是來自於OpenAI它本身的那個Blog的DEMO

play04:25

就釋出SORA這個模型的DEMO的時候

play04:28

寫了兩篇Blog

play04:30

那多數人的影片其實都是從那兩個Blog來的

play04:33

那我把那兩個Blog的連結呢

play04:35

也放在投影片上給你參考

play04:39

那根據OpenAI的DEMO

play04:41

SORA產生出來的影片

play04:43

長什麼樣子呢

play04:44

非常的驚人

play04:46

我這邊就擷取兩個例子給大家看

play04:49

左邊下面這段文字

play04:51

是輸入給Sora這個模型的文字

play04:54

它是根據下面的文字

play04:56

去產生出上面這段影片

play04:59

左邊這個例子裡面

play05:00

是要Sora畫一個小怪物

play05:03

這個小怪物看著一個逐漸溶解的紅色蠟燭

play05:08

Sora產生出來的影片是這個樣子的

play05:13

右邊是要畫一個紐約的街景

play05:24

但現在紐約沉在海底下

play05:27

所以有很多的水生生物

play05:29

Solar 畫起來是這個樣子

play05:46

那這邊選的兩段影片

play05:48

通通是特別選現實生活中不可能出現的場景

play05:53

但Sora裡面有很多現實中出現的場景

play05:56

它可以產生非常擬真的影片

play05:58

但你就會搞不清楚說

play06:00

到底是訓練資料裡面有一模一樣的影片

play06:02

還是SORA真的創造出這樣的影片

play06:05

所以這邊是特別選兩段

play06:07

在現實生活中可能不會出現的場景

play06:09

來告訴你說

play06:10

SORA是有可能創造出

play06:12

這些現實生活中不會出現的場景的

play06:15

但你仔細看一下

play06:16

你還是會發現說

play06:18

這些影片還是有一點點瑕疵的

play06:20

比如左邊這個小怪物

play06:22

你會發現

play06:23

雖然小怪物沒有動

play06:24

但背後的牆呢

play06:26

一直在左右移動

play06:27

感覺蠻不自然的

play06:29

那如果你有仔細觀察這個紐約街道上的水生生物的話

play06:33

你會發現這些水生生物啊

play06:35

還不是一般的水生生物

play06:36

好多生物都在變形了

play06:38

有的生物遠遠看明明是一隻海龜

play06:41

近看他就突然縮成一隻魚了

play06:43

這些生物是會變形的

play06:45

那所以 Sora 在生影像的時候還是有一些瑕疵的

play06:49

那這邊呢

play06:50

是找了一些比較有趣的瑕疵

play06:53

左邊這個圖呢

play06:54

是要叫Sora畫五隻狼的幼崽

play06:58

這個是Sora畫出來的狼的幼崽

play07:02

是長這個樣子的

play07:05

你看它分裂了

play07:13

越來越多

play07:15

所以這個有時候人工智慧還是會犯錯的

play07:18

右邊呢

play07:19

是考古學家挖出了一張塑膠椅

play07:23

這個非常虛科幻的一個場景

play07:26

那麼來看看發生了什麼事

play07:30

挖了一個東西出來

play07:34

變魔術

play07:35

變出一張椅子

play07:41

哎呀

play07:41

椅子跑掉了

play07:42

你看跑掉了

play07:48

就算是他產生的影片有一些瑕疵

play07:50

其實在今年年初的時候,也已經非常讓人震驚了

play07:55

那剛才講的是用文字來生影片

play08:00

那你其實也可以做影片來生影片

play08:05

那用影片來生影片也有很多的應用,比如說你可以給你的AI一段未完成的影片

play08:11

叫他把剩餘的部分續寫完產生出來

play08:15

或者是你可以叫AI幫你做風格轉換

play08:19

給他一段影片,他把他的風格轉換

play08:21

比如說本來是黑白的影片

play08:23

然後他把顏色塗上去

play08:25

像這樣的技術可能可以被用在影像修復上面

play08:29

比如說把一些老電影做影像修復

play08:32

讓他看起來更有現代感

play08:34

或者也可以做畫質的提升

play08:37

本來你有一個影片的解析度是比較低的

play08:40

那也許可以透過生成式AI直接幫他提升畫質

play08:45

所以影像生影像也有很多的應用

play08:49

那其實也並不侷限於透過影像來生影像

play08:54

生成影像的生成式AI還有很多其他的應用

play08:58

一個今天大家都能夠想得到的

play09:01

而且已經有非常多人在使用的

play09:03

就是所謂的Talking Head

play09:05

所謂Talking Head的意思就是

play09:07

你給這個生成式AI一段你的錄音

play09:11

然後呢你給生成式AI一張你的照片

play09:15

然後呢他就想像

play09:17

你說這句話的時候

play09:19

你的嘴型

play09:20

你的臉

play09:21

應該長什麼樣子

play09:23

那我這邊用的是一篇今年三月的時候的論文裡面的模型這個模型

play09:29

是有開源的

play09:30

像這種talking head生存啊現在你其實可以找到很多的商用軟體

play09:35

不過通常是要付錢的

play09:36

那我這邊用的這個是一個免費開源的軟體

play09:39

所以是每個人都可以試的

play09:41

那長起來就給他一句話

play09:44

給他隨便一張照片

play09:46

他就把這句話合到這個照片的人的口中

play09:49

聽起來看起來像是這個樣子

play09:53

這門測試生成式AI導論

play09:56

就是我就說這門測試生成式AI導論

play09:59

那就看到說這個人就配合生成式AI導論

play10:03

這句句話的嘴型在講話

play10:06

這門課是生成式AI討論

play10:08

而且我照片裡面是沒有牙齒的啦

play10:10

他硬要幫我加個牙齒上去啦

play10:12

加很白皙的牙齒上去

play10:15

所以可以想像說這個有非常多的應用

play10:17

這個我馬上可以想到的直接的應用

play10:20

其實就是這個VTuber對不對

play10:23

其實這個Talking Head的技術

play10:26

只要背後直接接GPT-4O

play10:28

馬上就可以直接做一個

play10:30

沒有人的Youtuber了

play10:32

所以我相信很不遠的未來,大概幾個月後

play10:35

你就可能會聽到有人說

play10:37

出現了一個新的VTuber

play10:39

然後這個VTuber講話很有趣

play10:41

然後再過幾週以後,他就突然承認說

play10:43

其實這個VTuber是不存在的

play10:45

他背後就是GPT4 Owner加一個Token Tag

play10:47

我已經幫忙把這個劇本寫好了

play10:49

大家要用就拿去用一下

play10:51

我相信在幾個月,一定就會有這樣子的故事出現了

play10:57

那還可以拿很多其他的東西

play10:59

這些東西作為生成式AI輸入的condition

play11:03

比如說你可以畫一個草圖

play11:06

叫生成式AI幫你把精細的圖畫出來

play11:09

或者是就打一個草稿

play11:11

讓生成式AI根據草稿把圖畫出來

play11:15

或者是給他一個人的站姿

play11:17

再讓他根據這個站姿生出對應的人像

play11:21

所以這篇paper裡面就講了

play11:23

你可以拿各式各樣的condition來生成圖片

play11:27

裡面有一個Network叫做ControlNet

play11:30

就是告訴你說怎麼加入各式各樣的Condition

play11:33

各種不同的Condition都可以拿來生成圖片

play11:37

以上呢是講生圖片或影像的AI的種種的應用

play11:43

那接下來我們就要來講

play11:45

這一些生圖片或生影像的AI是怎麼被打造出來的

play11:51

那在講圖片跟影像是怎麼被生成出來的之前

play11:56

我們來複習一下圖片跟影像

play12:00

他構成的基本單位是什麼

play12:03

先來講圖片

play12:04

那我們都知道說圖片是由像素所構成的

play12:08

像素越多圖片看起來就越清晰

play12:12

左邊這張是1024x1024解析度的圖片

play12:16

他裡面有1024x1024的像素

play12:18

所以非常的清晰

play12:20

但是如果同一張圖

play12:22

你只用16x16個像素

play12:24

總共只有16x16

play12:26

256個點去描述這張圖片

play12:29

每個點都代表一個顏色

play12:30

但只有256乘256個點

play12:32

那左邊這張圖看起來就會非常的模糊

play12:36

這個是圖片

play12:38

那影片呢

play12:39

影片其實就是由一張一張的圖片

play12:43

所構成的

play12:45

所以一段影片

play12:46

他其實就是一串的圖片

play12:49

在影片裡面的每一張圖片呢

play12:51

叫做一個Frame

play12:53

叫做一個Frame

play12:54

中文通常翻譯成 幀 叫做一幀

play12:58

那有一個詞彙叫做frame per second

play13:01

所寫是fps

play13:03

代表的是每秒的幀數

play13:05

也就是這個影片每秒有幾張圖片

play13:08

只要圖片夠多

play13:10

人看起來就會是非常流暢的影片

play13:13

人看起來就不會覺得

play13:14

一段影片是由一張一張的圖片所構成的

play13:18

另外我們在YouTube上看的影片

play13:20

通常是24fps

play13:22

也就是一秒鐘呢是由24張圖片接起來所構成的

play13:28

那看起來呢就是這個樣子啦

play13:32

那就是你通常在YouTube上看到的影片呢

play13:34

就是這個樣子

play13:35

你完全感受不到它是一張一張圖片所構成的

play13:40

那這個就是那個芙莉蓮呢

play13:43

把一個絕對不可能打破的結界打破的一個段落

play13:48

那右邊呢是同一個影片把它改成1FPS

play13:51

也就是每秒只有一張圖

play13:53

那看起來呢

play13:54

就是非常的卡頓啦

play13:56

看起來就非常的卡頓

play13:58

好像你網路不好的時候

play13:59

這個看起來的影片

play14:01

人家也就會問說

play14:02

要不要讓人好好看動畫啦

play14:04

這看起來就會非常的痛苦

play14:06

啊不過24fps呢

play14:08

如果是玩遊戲的話

play14:09

那這個解析度呢

play14:10

還是太低了

play14:12

這個每秒的幀數呢

play14:13

還是太低了

play14:14

如果玩遊戲的話

play14:15

可能要60fps

play14:17

你玩起來呢

play14:18

才會覺得絲滑流暢

play14:21

那剛才講的是圖片跟影片是由什麼所構成的

play14:27

那接下來我們再來看一下

play14:29

今天的人工智慧是如何看待一張圖片跟看待一段影像

play14:36

其實今天多數人工智慧的模型都不是直接拿像素當作輸入

play14:43

當然你要直接拿像素當作輸入也可以

play14:46

在比較早的年代很多人會這麼做

play14:49

後來發現像素實在是太複雜了

play14:52

所以今天能夠產生非常大張非常清晰的圖

play14:57

其實歸功於一些影像壓縮的技術

play15:01

今天給一張64x64的圖片

play15:04

你不會讓模型直接去產生一張解析度64x64的圖片

play15:09

對人工智慧模型來說

play15:12

通常會把圖片先通過一個編碼器

play15:16

這個編碼器的英文是Encoder

play15:20

那這個編碼器通常做的事情呢

play15:22

就是先把圖片切成一塊一塊的

play15:26

在今天這個例子裡面呢

play15:27

64x64的圖片被切成4x4

play15:31

總共16塊

play15:33

那每一塊呢

play15:34

叫做一個Patch

play15:36

那接下來呢

play15:37

每一個Patch呢

play15:39

會被進行壓縮

play15:41

那怎麼樣壓縮呢

play15:42

壓縮的結果是什麼樣呢

play15:44

取決於你的編碼器長什麼樣子

play15:46

有的方法是會把每一個Patch

play15:49

用一個獨特的符號來表示它

play15:52

所以每一個Patch就好像是一種新的語言

play15:55

每一個Patch可以看作是新的語言裡面的一個Token

play15:59

這是一種表示的方式

play16:01

也有一些編碼器

play16:02

它是把每一個Patch變成一個低維度的向量

play16:06

本來一個Patch裡面應該要有很多的像素

play16:10

但是它把這些像素的資訊全部濃縮起來

play16:13

用幾個數字,也就是一個低維度的向量來表示它

play16:17

總之有很多種不同類型的編碼器

play16:20

但是他們都是把影像變得更簡單

play16:24

就是把影像切成一個一個Patch

play16:26

每一個Patch用一個簡單的方法來表示它

play16:30

然後接下來呢

play16:31

你就會把圖片裡面的Patch拉直

play16:35

本來一個圖片是2D的

play16:36

但是給人工智慧模型

play16:38

比如說Transformer處理之前

play16:40

你就把它拉直,拉成一條線

play16:42

然後呢 丟給Transformer

play16:46

那人工智慧的模型

play16:47

比如說Transformer在產生圖片的時候

play16:50

其實他也是產生一排的Patch

play16:54

然後這一排Patch呢

play16:55

會通過一個解碼器

play16:57

他的英文是Decoder

play16:58

然後就會還原回原來的圖片

play17:02

那講到這邊可能有同學會有問題說

play17:04

那這個不就跟

play17:06

只是調低影像的解析度一樣嗎

play17:09

我們可不可以說這個編碼器做的事情

play17:12

就是把原來64x64的圖片

play17:15

把它解析度調低變成4x4呢

play17:18

在概念上也許類似

play17:21

但是實際上編碼器跟解碼器做的事情

play17:25

遠比調低調高解析度更加的複雜

play17:30

事實上這邊的編碼器跟解碼器呢

play17:33

他們都是很複雜的類神經網路

play17:36

他們裡面往往都是transformer

play17:38

往往都有非常多層

play17:40

所以今天你可能會覺得說

play17:42

如果我把一張圖片變成4x4

play17:45

總共16個patch

play17:46

會不會通過解碼器還原回來以後

play17:49

我這個狗呢

play17:50

這個圖片呢

play17:51

看起來就是4x4

play17:52

總共只有16個格子呢

play17:54

其實不會

play17:55

這個解碼器在還原的時候

play17:58

其實會做非常複雜的事情

play18:01

他不是隻看一個patch來還原

play18:03

他會考慮一個patch

play18:04

跟他所有鄰近的patch

play18:06

甚至是整張圖片裡面所有的patch

play18:08

一起去做還原

play18:10

那這邊這個壓縮跟還原的過程

play18:12

其實都是透過類神經網路

play18:14

來進行的

play18:16

這個壓縮跟還原的過程

play18:18

其實都非常的複雜

play18:20

那我們可以把圖片

play18:22

壓縮到非常簡單

play18:24

然後還可以把它解回來

play18:26

而解回來看起來仍然是

play18:28

一樣的圖片

play18:30

那至於實際上的細節是怎麼做的

play18:32

我右邊就留了一篇論文

play18:34

那其實類似的技術非常的多

play18:36

比較有代表性的給大家參考

play18:39

這邊講的是圖片的部分

play18:42

那我們再來看影片

play18:44

我們知道影片是由一堆圖片所構成的

play18:48

那你當然可以用一個圖片的編碼器

play18:51

把影片裡面的每一張圖片

play18:54

都分別轉成一排的patch

play18:58

但對於影像來說

play19:00

你可以做更多的壓縮

play19:02

本來圖片是2D的

play19:04

只有高跟寬

play19:05

所以你只能在高跟寬這兩個方向上去做壓縮

play19:09

但影片是有時間這個維度的

play19:12

所以你可以在時間的方向上也進行壓縮

play19:16

比如說常見的做法

play19:18

可能會把相鄰的幾個Frame合併在一起

play19:22

一起做壓縮

play19:24

比如說在這個例子裡面

play19:25

這段影片總共有四個Frame

play19:27

那可能第一個Frame跟第二個Frame會一起做壓縮

play19:31

第三個Frame跟第四個Frame一起去做壓縮

play19:34

那這邊實際上的做法可能是

play19:36

第一個跟frame跟第二個frame

play19:38

他們位置一樣的patch

play19:40

會被再做進一步的壓縮

play19:43

變成另外一個

play19:44

video的patch

play19:46

一樣位置的patch

play19:47

進一步壓縮

play19:48

變成video的patch

play19:49

一樣位置的patch

play19:50

做進一步壓縮

play19:52

變成video的patch

play19:53

圖片裡面

play19:54

同樣位置的patch

play19:56

做壓縮

play19:57

變成新的

play19:58

video的patch

play19:59

變成影片的patch

play20:02

然後再把

play20:03

影片的patch呢

play20:04

把他拉直排成一排

play20:07

那這個就是今天這個生成式人工智慧

play20:11

的這些模型的輸入跟輸出的影片的樣子

play20:15

所以大家要記住等於在等一下的這個討論裡面

play20:18

我們就假設你已經知道一段影片

play20:21

就是描述成一排的patch

play20:25

那我們就不會特別把影片轉patch這個部分再告訴你

play20:29

總之你心裡要知道對於人工智慧來說

play20:33

一段影片就是一排的Patch

play20:36

那事實上SORA也用了類似的技術

play20:41

但你知道今天OpenAI它都不會明著告訴你

play20:43

它要做什麼樣的事情

play20:45

不過從它畫的圖裡面

play20:47

你也可以很明確的知道說

play20:49

它使用了這個Patch這個技術

play20:51

你看它的圖裡面

play20:53

這是一段影片

play20:54

而一段影片呢

play20:55

就是說很多張圖片所構成的

play20:58

通過一個Encoder

play20:59

那這個Encoder呢

play21:01

會把影片變成一堆Patch

play21:04

那這個Patch壓縮的方向

play21:06

可以是同一張圖裡面的長跟寬兩個方向

play21:09

也可以在時間的方向上面做壓縮

play21:13

所以這邊每一個小塊的Patch

play21:16

可能都對應了影片裡面的

play21:18

一段長、一段寬跟一段時間

play21:21

都對應了影片的一小塊

play21:23

最後把這些Patch通通拉直

play21:26

再丟到你的人工智慧的模型

play21:30

比如說Transformer裡面

play21:32

那SORA也會使用Patch這樣子的技術

play21:37

好,那我們接下來呢

play21:38

就來進入模型的部分

play21:41

我們來講文字

play21:43

我們先用文字生圖為例

play21:45

來跟你講說這些模型是怎麼被訓練出來的

play21:48

那麼很快也會講到文字生影片的部分

play21:53

好,那文字生圖

play21:55

我們就是希望模型呢

play21:56

可以讀一段文字

play21:58

然後產生對應的圖片

play22:01

那要怎麼訓練一個模型

play22:03

可以讀一段文字

play22:04

產生對應的圖片呢

play22:06

你就需要大量的訓練資料

play22:09

可是這邊需要什麼樣的訓練資料呢

play22:13

這已經是我們這學期最後一堂實體的課了

play22:17

不知道你能不能夠猜得出

play22:19

如果要訓練一個模型

play22:21

輸入是一段文字

play22:22

輸出是一張圖片

play22:23

需要什麼樣的訓練資料

play22:25

我們知道如果今天要教遠模型做文字接龍

play22:28

你就是要給他一句話

play22:29

然後告訴他接下來要接哪一個Token

play22:32

那對圖片生成來說道理也非常的類似

play22:36

你要他看一段文字產生一張圖片

play22:40

那你要教他的就是收集一大堆圖片

play22:43

跟這些圖片對應的文字敘述

play22:46

然後機器就可以學會說看到這段文字

play22:49

應該要產生這樣的圖片

play22:51

看到這段文字應該要產生這樣的圖片

play22:54

以此類推

play22:55

但你知道說現在這些生成圖片的模型都非常的厲害

play23:00

你輸入什麼他往往都可以產生對應的輸出

play23:04

甚至很多時候你直接打一個人名

play23:06

如果那個人夠有名的話

play23:08

生成是AI畫出來的人臉還會跟那個名人長得蠻像的

play23:13

到底是用什麼樣的訓練資料才能夠達到這樣的地步呢

play23:18

現在其實已經有非常大規模的開源的

play23:24

可以拿來訓練文字生圖的資料了

play23:28

有一個資料集是一個叫做LAION的公司所釋出的

play23:32

裡面就是大量的圖片

play23:34

每一張圖片都有它對應的文字

play23:37

你就可以拿這樣子的

play23:39

你就可以拿這樣子的大規模的資料來訓練一個模型

play23:43

教他怎麼看一段文字產生對應的圖片

play23:47

LAION最大的資料集有多少張圖呢?

play23:50

有58億張圖啊

play23:54

這個資料集大到說他們特別做了一個搜尋引擎

play23:57

你在這個搜尋引擎上面打一段文字

play24:00

他告訴你說這個資料集裡面有哪些圖片對應到類似的文字

play24:06

LAION會問說這麼大規模的資料集是怎麼被收集來的呢?

play24:11

你想也知道就是一定是從網路上爬下來的

play24:14

他們做的事情很有可能是從網路上爬了一些圖片

play24:17

看到很多網路的圖片

play24:19

其實都有對應的文字敘述

play24:21

他們就把圖片跟對應的文字敘述爬下來

play24:24

當然他們也做了一些後處理

play24:26

比如說把母湯的那些照片拿掉啊

play24:29

你懂我的意思吧

play24:30

18禁的照片拿掉啊

play24:32

把覺得這段文字跟這個圖片

play24:34

其實沒有對得很好的也拿掉啊等等

play24:37

整理出這樣的資料集

play24:39

但使用這樣的資料集

play24:41

其實還是有一定程度的風險的

play24:43

LAION這個公司

play24:44

他其實對外宣稱說他只是幫忙收集了這些圖片

play24:48

所以他並沒有這些圖片的所有權

play24:52

那你拿去訓練那是你家的事情

play24:55

你知道蠻多公司都是拿這些圖片去訓練的

play24:58

比如說這個Stability AI就是做Stable Diffusion那家公司

play25:03

他們都是拿這個資料集去訓練的

play25:06

然後後來就被一些畫家告了

play25:09

像OpenAI就死都不告訴你他們資料是哪裡來的

play25:12

搞不好也是同一個資料集

play25:14

但只要不講就不會被告這樣

play25:17

總之就是這麼回事啦

play25:18

總之這個LAION就只是把資料放在那邊

play25:22

那至於能不能用

play25:23

那是另外一件事情

play25:26

好那有了這樣子的資料集以後

play25:29

要怎麼訓練一個文字生圖的模型呢

play25:33

所以你已經知道

play25:35

有一段文字

play25:36

它對應到某一張圖片

play25:38

那我們現在圖片都用Patch來表示

play25:41

所以你看到這些Patch

play25:42

你知道這代表著某一張圖片

play25:45

那你用這樣子的資料

play25:47

你就可以去訓練一個Transformer

play25:50

也許你可以訓練Transformer

play25:52

做這個Patch接龍

play25:54

我們都已經知道語言模型去做文字接龍

play25:57

那我們可以訓練一個Transformer

play25:59

去做Patch接龍

play26:01

這個Transformer要學到的東西就是

play26:03

看到這段文字

play26:05

就先生出一個編號1的Patch

play26:09

然後把編號1的patch貼到文字後面

play26:13

那再看接下來要生哪一個patch

play26:15

也許生編號7的patch

play26:17

再把編號7的patch貼到後面

play26:20

再產生下一個patch

play26:21

生出編號99的patch

play26:23

把一張圖片裡面的patch都生出來

play26:26

通過decoder

play26:27

你就可以還原出一張圖片

play26:30

這是某一種用文字生圖的可能的方式

play26:34

但其實在上上週講生成的策略的時候

play26:38

也已經告訴你說

play26:39

其實文字生圖很少用這種接龍的方式

play26:43

那接龍的方式有個專有名詞叫做

play26:45

Auto-regressive

play26:46

其實文字生圖很少用Auto-regressive的方式來產生圖片

play26:52

因為就算把圖片表示成Patch

play26:54

一張圖裡面Patch的數量可能還是太多了

play26:59

那我們在上上週的課程講生成的策略的時候

play27:03

也有特別跟大家提醒說

play27:05

其實在生圖的時候往往就是一步到位

play27:09

用一個non-autoregressive的model

play27:11

一張圖片裡面所有的patch是同時被生成出來的

play27:16

那在上上週的課程裡面

play27:18

我畫的圖呢

play27:19

大概都是長這個樣子的

play27:21

就是你有一個transformer

play27:23

然後呢

play27:24

你會告訴transformer說

play27:25

我們產生位置1的patch

play27:27

他就生出patch1

play27:29

產生位置2的patch就出patch7

play27:32

產生位置3的patch

play27:34

就生成Patch99

play27:36

那一張圖片裡面

play27:38

所有的Patch都是透過同一個模型

play27:41

同時生成的

play27:43

所以你就不需要等這個Patch一個一個被生出來

play27:46

一張圖片裡面

play27:47

所有的Patch都是可以被同時生成的

play27:52

這個是在概念上

play27:53

所有的Patch是被同時生成的

play27:57

但實際上的做法是這個樣子

play28:00

我們其實會把所有要

play28:04

就假設現在總共要生16個Patch

play28:07

這張圖現在是由4x4

play28:09

總共16個Patch所組成的

play28:11

那你一開始其實就會告訴同一個Transformer說

play28:15

我們要生Patch1到Patch16

play28:18

然後Transformer呢

play28:20

就會同時把16個Patch

play28:22

通通都生出來

play28:24

所以實際上呢

play28:25

這個第一個位置到第16個位置

play28:28

他們其實並不是完全分開生出來的

play28:32

而是同時丟給一個Transformer

play28:35

同時被生出來的

play28:37

那這樣做有什麼好處呢

play28:39

雖然這些Patch還是平行同時被生出來的

play28:43

但是在生成的過程中

play28:45

你知道Transformer裡面呢

play28:47

就是會有Attention

play28:49

Attention的意思就是

play28:50

每一個位置在做處理的時候

play28:52

都會參考其他位置的資訊

play28:56

那因為Transformer裡面有Attention

play28:58

所以我們在生成某一個Patch的時候

play29:01

其實會去參考其他Patch生成的過程

play29:04

再去生成某一個Patch

play29:06

用這個方法你生出來的圖片

play29:08

每一個Patch中間

play29:10

他還是有一點關聯性的

play29:12

透過這個Attention

play29:13

他Patch跟Patch間還是會有一些關聯性

play29:16

不會完全毫不相關

play29:19

不過就算是用這樣子的方法

play29:21

就算是你用Transformer裡面有Attention

play29:24

來處理Patch跟Patch之間的關係

play29:27

其實也不能保證能夠解決

play29:30

我們上上週講生成策略的時候提到的

play29:33

腦補的問題

play29:35

就如果每一個位置

play29:36

看到一隻在奔跑的狗

play29:37

每一個位置

play29:38

如果想要畫的狗長得是不一樣的話

play29:41

那你可能就會畫出很多隻狗

play29:43

疊在同一張圖片裡面

play29:45

就算是用了Transformer

play29:47

其實也不能夠完全解決這個問題

play29:49

那至於這個問題實際上是怎麼被處理的

play29:52

我們在等一下的課程中

play29:54

還會再看到

play29:55

但現在就假設說

play29:56

Transformer可以處理這個問題

play29:58

反正就是告訴他說生16個位置的Patch

play30:01

他就把16個位置的Patch

play30:03

一次都生成出來

play30:05

Patch跟Patch之間的關係

play30:07

我們透過Attention來進行處理

play30:12

我們現在已經知道在概念上

play30:14

怎麼產生一張圖片

play30:16

那我們來談一下

play30:17

怎麼衡量影像生成模型的好壞

play30:21

如果你今天給你的影像生成模型輸出一個指令

play30:25

它產生對應的圖片

play30:27

那我們怎麼知道生成的結果好不好呢

play30:32

那你記得我們在講怎麼評量文字模型的時候

play30:36

我們最後有講到說

play30:37

雖然有很多評量的方法

play30:39

但是人類才是最好的Evaluator

play30:44

人類才是最好的評量者

play30:47

但是人類的時間又有限

play30:49

現在人工智慧已經這麼強了

play30:51

那我們在講這個語言模型的評量的時候說

play30:54

也許我們可以讓GPT-4來代替人類

play30:57

用比較強的語言模型來代替人類進行評量

play31:01

其他模型的工作

play31:03

事實上在影像裡面也有類似的趨勢

play31:07

今天怎麼知道一個圖片生成的模型

play31:10

生出來的圖對不對呢

play31:12

當然你可以人去看

play31:14

人去看說這個像不像一隻奔跑的狗

play31:16

不過人可能沒有力氣看太多的圖片

play31:19

所以今天一個常見的做法是引入一個叫做

play31:23

clip CLIP 的模型

play31:25

我們先來介紹一下 clip 這個模型

play31:28

clip 這個模型他訓練的時候他學的事情就是

play31:32

先從網路上有人收集了非常大量的圖片

play31:36

跟這些圖片對應的文字

play31:39

那你就跟 clip 說

play31:41

如果今天給你一張圖片跟他對應的文字

play31:45

給你一張圖片跟他對應的文字

play31:47

你就要輸出高分

play31:48

你就要輸出一個比較大的數值

play31:51

你要輸出一個比較高的分數

play31:53

反過來

play31:54

如果我今天把我資料集裡面的圖片跟文字

play31:58

任意配對

play31:59

我把陽光下的貓去配這張狗的圖

play32:02

我把沙灘上的狗去配這個貓的圖

play32:05

再丟給clip的模型的時候

play32:07

clip的模型要學到說這個配對

play32:09

是一個不正確的配對

play32:11

所以要給這樣不正確的配對低分

play32:14

所以clip這個模型

play32:15

可以從大量的資料裡面學到說

play32:17

給正確的配對就是高分

play32:19

給不正確的配對就是低分

play32:22

那這種模型是已經被訓練好

play32:24

已經開源的

play32:25

所以今天你會發現很多的圖片生成模型

play32:29

其實就是直接拿clip來衡量

play32:31

他們把這個指標呢

play32:33

叫做clip score

play32:35

也就是說今天圖片生成模型

play32:37

生成一張圖片以後

play32:39

就把輸入的文字敘述

play32:41

加上這張圖片

play32:43

一起丟給Clip,看Clip給多少的分數

play32:46

給的Clip的分數越高,Clip Score越高

play32:49

就代表這個圖片生成的模型做得越好

play32:52

雖然這個方法聽起來蠻簡單的

play32:54

而且要依賴Clip這個模型的能力

play32:57

但是這是今天蠻主流的衡量圖片生成模型好壞的一個做法

play33:03

所以發現說今天我們的時代已經來到了

play33:06

不只是人來評量這些生成式AI的好壞

play33:09

今天通常是用另外一個模型

play33:11

用另外一個人工智慧來評量這些生成式AI生成的好壞

play33:16

但是生成圖片有一個特殊的難點

play33:21

就是圖片是一張圖是勝過千言萬語的

play33:26

很多東西你根本難以用文字來描述

play33:30

它到底長什麼樣子

play33:33

比如說這是我家客廳的一個鐘

play33:35

我想要讓這個GPT-4

play33:38

其實就是DALLI啦

play33:40

我想讓DALLI呢

play33:42

畫一個一模一樣的圖

play33:44

可不可以畫出一個類似的鐘

play33:46

我就試著跟他描述

play33:48

這個鐘長什麼樣子

play33:50

我跟他說這是一個有

play33:52

現代簡約設計風格的鐘

play33:54

鐘面是一個

play33:56

大約圓形的框架

play33:58

然後是黑色金屬材質

play34:00

沒有刻度

play34:02

鐘的中央是一個木板

play34:04

上下摟空

play34:06

patya的字樣沒有其他花紋

play34:08

那指針呢是黑色的設計簡約

play34:11

只有時針分針沒有秒針

play34:13

讓他根據這些文字來想像

play34:17

這個鐘應該長什麼樣子

play34:20

好那我就試著碰了很久了

play34:22

不斷改我的文字敘述

play34:23

希望產生出來的鐘呢

play34:25

跟我家客廳的鐘呢越像越好

play34:27

在我把那天的額度都用完之前

play34:30

我能夠畫出來最像的鐘呢

play34:32

也只能夠長這個樣子而已

play34:34

跟真正的我想要他畫的鐘

play34:36

還是有一點點的差距

play34:38

是已經很像了啦

play34:39

但是不管我怎麼努力的描述

play34:41

感覺都還是有一些差距

play34:44

因為有很多圖像是文字難以描述的

play34:49

所以怎麼辦呢

play34:50

也許我們可以做個人化的圖像生成

play34:54

那這個其實就是我們在作業時會做的事情

play34:59

那怎麼做個人化的圖像生成呢

play35:02

假設你的桌上有一個很特別的雕塑

play35:05

你也很難描述它是什麼雕塑

play35:08

那你就直接幫它取一個特別的名字

play35:12

我們把它叫做S star

play35:14

要把它叫什麼都可以

play35:15

你就是要拿一個你平常沒有在用的符號

play35:19

來稱呼這一個你想要客製化的特別的物件

play35:25

那你就不要拿你平常會用的符號

play35:27

比如說如果你把它叫做狗

play35:28

那就不好了

play35:29

以後你就再也畫不出狗來了

play35:30

有時候我畫出來的狗都長這個樣子

play35:32

而且他有可能會被那個詞彙的意思所汙染

play35:35

因為你跟他說這是一個狗

play35:37

只有他可能會把一個狗的頭呢

play35:38

加到這個雕像上面

play35:39

因為他覺得這其實應該要長得像一隻狗

play35:42

總之你要選一個沒有什麼特殊的意思

play35:46

然後你平常不會再用的符號

play35:48

來代表這個你要客製化的對象

play35:51

然後接下來呢

play35:52

你就教你的文字生圖模型說

play35:55

以後我跟你講

play35:57

S-Star的照片

play35:59

你就要畫這樣的圖出來哦

play36:00

跟你講S-Star的照片

play36:02

你要畫這樣的圖出來哦

play36:04

然後微調你的文字生圖模型

play36:06

他就可以認得這一個客製化的對象

play36:10

那之後呢

play36:11

你就可以把這個客製化的對象

play36:13

放在各式各樣的場景中

play36:16

比如說

play36:17

這邊的例子是來自於右下角這邊論文

play36:19

他們只用三到五張圖片而已

play36:22

這種客製化的技術呢

play36:23

不需要太多的圖片

play36:25

他們只教這個文字生圖的模型說

play36:28

這幾張圖片都是S-STAR這個東西

play36:32

接下來他就可以下各式各樣

play36:35

跟S-STAR有關的指令

play36:37

比如說跟他說

play36:38

An oil painting of X-STAR

play36:41

這個X-STAR的油畫

play36:42

就畫一個油畫版的X-STAR

play36:44

或產生一些X-STAR的APP ICON

play36:48

放一些X-STAR的APP ICON

play36:51

跟他說產生一個ELMO

play36:53

ELMO就是這個紅色怪物

play36:55

這個 ELMO 要做得像一個 S-Dot

play36:58

這個模型居然聽懂了

play36:59

畫了一個 ELMO

play37:00

就是用個盤做的方式

play37:02

就跟 S-Dot 一樣

play37:03

產生一個這個針織版的 S-Dot

play37:06

他也知道什麼叫做針織版的 S-Dot

play37:09

所以你可以透過少量的物件

play37:12

來客製化你的圖片、生圖的模型

play37:17

這個其實就是我們最後一個作業

play37:19

會做的事情了

play37:22

好那剛才講的是文字生圖

play37:25

那接下來我們來擴展到文字生影片

play37:30

那文字生圖跟文字生影片有什麼樣不同呢

play37:33

其實沒有什麼樣本質上的不同

play37:37

因為本來文字生圖就是產生一堆 patch

play37:41

文字生影片只是產生了更多的 patch 而已

play37:46

那如果是文字生圖產生出來的 patch

play37:48

只對應到一張圖片

play37:49

如果是文字生影片的話

play37:51

你就要產生一大排的patch

play37:53

然後這些patch集合起來

play37:55

就對應到一段影片

play37:58

play37:59

結束了

play38:00

就這樣其實他的原理就這樣

play38:03

你可能想說文字生影片

play38:04

感覺這個道理也還蠻簡單的

play38:07

就是生出一大堆的patch

play38:09

那到底為什麼大家覺得文字生影片

play38:12

是一個很大的挑戰呢

play38:15

那仔細想一想文字生影片的

play38:18

複雜的程度

play38:20

假設我們現在每秒鐘有24個Frame

play38:25

你一般看影片的時候每秒鐘都是24個Frame

play38:28

那我們現在假設每一個Frame用64x64個Patch來描述它

play38:34

通常依照今天Encoder的能力

play38:37

64x64個Patch通常還原回去

play38:39

可能是1024x1024的圖

play38:42

就是一個普通的解析度的

play38:45

普通清晰程度的影像而已

play38:48

假設每一個Frame有64x64個Patch

play38:53

那一段一分鐘的影片應該要有多少的Patch呢

play38:58

我算了一下

play38:59

一分鐘的影片總共有1440個Frame

play39:02

因為每秒鐘24個Frame

play39:04

乘以60 1440個Frame

play39:06

每個Frame有64x64個Patch

play39:08

算出來是600萬個Patch

play39:11

600萬個Patch聽起來數量還不是非常的驚人

play39:14

因為今天你動不動就聽到一個類神經網路

play39:17

它的參數量是上億等級的

play39:20

所以我相信百萬對你來說已經不是一個非常大的數字了

play39:24

但不要忘了Transformer裡面是要做Attention的

play39:29

Attention是每一個位置跟每一個位置兩兩間都要做Attention

play39:35

所以假設所有的Patch兩兩間都要做Attention

play39:39

六百萬的Patch要做的Attention的次數是六百萬的平方

play39:43

六百萬的平方是三十六兆啊

play39:46

所以今天如果你要生一段一分鐘的影片

play39:50

他不是一個特別高清的影片

play39:52

但你每一次每一層在做Attention的時候

play39:55

居然要做36兆次的Attention

play39:58

這個運算量聽起來就非常的驚人

play40:01

所以文字生影片最大的挑戰就是

play40:04

這個運算量實在是太大了

play40:07

所以怎麼辦呢

play40:08

你會發現近年來一系列的研究

play40:11

都是在想盡辦法減少需要的運算量

play40:15

那怎麼減少需要的運算量呢?

play40:19

首先第一個想法就是改造Attention

play40:23

真的有必要所有的Patch間通通算Attention嗎?

play40:27

算Attention的目的就是要讓不同的Patch間有關聯嗎?

play40:30

這樣產生出來的影像每一個畫面才會是一致的

play40:34

但是一個一分鐘的影像

play40:36

最開頭的影片最開頭的Frame左上角的Patch

play40:39

真的會跟最後一個Frame右下角的Patch有關聯嗎?

play40:43

也許我們根本不需要計算那麼多的Attention

play40:47

所以第一個改造的方向是減少Attention的運算

play40:52

就這邊是三個Frame

play40:54

每個Frame裡面有4x4個Patch

play40:56

然後這一個Patch要計算Attention的話

play40:59

他不只要跟同一個Frame裡面所有的Patch做Attention

play41:02

他還要跟同一段影片裡面其他的Frame也做Attention

play41:06

這種既考慮同一張圖片裡面的資訊

play41:10

也考慮時間的資訊的Attention

play41:13

叫做Spatial Temporal的Attention

play41:16

那今天可能已經很少有人

play41:18

硬做Spatial Temporal的Attention了

play41:20

因為他運算量太大了

play41:22

沒辦法幫你升高清的以下

play41:25

所以怎麼辦呢

play41:26

也許一個簡化的方向就是

play41:29

我們不要管Frame跟Frame之間的關係

play41:32

每一個Patch

play41:33

只跟同一個Frame裡面的Patch

play41:36

來考慮Attention

play41:37

這樣至少可以確定

play41:39

至少可以確定同一個Frame裡面

play41:42

他們的畫面是不會太違和的

play41:45

同一個Frame裡面他的畫面是一致的

play41:48

那這種Attention呢

play41:49

只考慮了一張圖片裡面的長跟寬

play41:52

只考慮兩個方向

play41:54

他是一個2D的Attention

play41:55

叫做Spatial的Attention

play41:57

那只是考慮Spatial的Attention顯然是不夠的

play42:00

因為如果只有Spatial的Attention的話

play42:02

你的畫面換畫面之間就不連續了

play42:05

就不連貫了

play42:07

那怎麼辦呢

play42:08

所以也需要考慮時間的Attention

play42:11

這種考慮時間的Attention叫做Temporal的Attention

play42:15

它是1D的Attention

play42:16

在考慮這個Patch的時候

play42:18

考慮另外一個Friend同樣位置的Patch

play42:22

考慮另外一個Friend同樣位置的Patch

play42:25

但這種Attention顯然是有問題的

play42:28

因為它只考慮時間這個維度的諮詢

play42:31

它沒有考慮空間這個維度的諮詢

play42:34

所以看起來2D的Attention跟1D的Attention

play42:37

Special attention跟Temporal attention

play42:39

都是有一些侷限的

play42:41

那這兩個東西都有侷限

play42:43

你要用哪一個呢

play42:44

就是我全都要

play42:46

不要想那麼多

play42:47

就把這兩種Attention疊在一起

play42:49

就可以創造一個偽3D的Attention

play42:53

今天在做這種影片生成的時候

play42:55

你常常看到這樣的架構

play42:56

就是把Special attention

play42:58

跟Temporal attention

play43:00

2D的Attention跟1D的Attention

play43:02

交替使用

play43:03

把他們兩種Attention疊在一起

play43:05

就可以製造出偽3D的Attention

play43:09

那我們來計算一下這個偽3D的Attention裡面

play43:13

需要計算Attention的次數

play43:16

我們剛才已經知道

play43:17

如果是完整的3D的Attention

play43:19

Special Tempo的Attention的話

play43:21

它算出來的Attention的次數

play43:24

真的是一個天文數字

play43:26

那我們來看一下Special的Attention

play43:29

如果今天我們只考慮同一個Frame裡面的Patch

play43:32

兩兩之間要做Attention的話

play43:34

那要做多少次的Attention呢?

play43:37

那一個Frame裡面有64x64個圖

play43:42

兩兩要做Attention

play43:43

64x64的平方

play43:45

總共有1440個Frame

play43:47

我們要生一分鐘的影片

play43:49

總共有1440個Frame

play43:50

所以把64x64的平方再乘以1440

play43:53

是240億次的Attention

play43:56

那如果是Temporal的Attention呢?

play43:59

Temporal的Attention

play44:00

是不同Frame裡面同樣位置的Patch

play44:03

Patch才做Attention

play44:05

那我們的時間的那個維度

play44:08

總共有1440個位置

play44:10

他們兩兩要做Attention

play44:12

所以是1440的平方

play44:14

那我們總共有

play44:15

一個Frame裡面有64x64個Patch

play44:18

所以假設是Temporal Attention的話

play44:20

那要做Attention的次數

play44:21

是1440的平方x64x64

play44:24

是85億次

play44:26

雖然這邊也是上億等級的次數

play44:29

但是你會發現

play44:31

240億次加85億次兩個合起來做一個偽3D的Attention

play44:36

跟原來全3D的Attention

play44:40

它的差別是有達到千倍那麼多

play44:44

所以透過把temporal加Special的Attention兩種Attention疊起來

play44:48

你可以製造偽3D的Attention

play44:51

它需要的運算量是原來真正全3D的Attention的運算量的千分之一而已

play44:57

這個是今天影片生成模型非常常用的一個技術

play45:02

那還有什麼方法減少需要的運算量呢

play45:07

那我們上週有講我們上上週講生成式策略的時候

play45:11

有講過我們在生成的時候不一定要一步到位

play45:15

可以把生成分成很多個步驟依序執行

play45:20

那文字生影片今天也常常使用類似的技術

play45:25

我們之前有講過說,你可以給你的生成式AI一個條件,先讓它生成第一版的物件,然後再有另外一個生成式AI的模型,把第一版變成第二版,然後最後有一個模型把第N-1版變成第N版,人們以為是輸入這個條件,直接就產生第N版,其實中間已經做過了非常多生成式AI的模型,但每個模型只要專注在某一個任務上面,製造一個流水線,每個流水線的任務都沒有很複雜,

play45:55

但是全部接起來就可以做複雜的事情

play45:59

影片生成今天也通常會做非常類似的設計

play46:04

比如說第K-1版跟第K版的差別可以是

play46:07

第K-1版裡面每一個frame的解析度是比較低的

play46:12

第K版它的解析度是比較高的

play46:15

這個時候生成式AI只需要專注於

play46:17

把每一張圖片的解析度調高

play46:20

把根據已經產生出來的低解析度的圖片

play46:24

產生高解析度的圖片就好

play46:27

那有時候第 K-1 版到第 K 版

play46:29

可能是調高了幀數

play46:32

調高了每秒裡面那個幀

play46:34

每秒裡面的 frame 的速度

play46:36

比如說 K-1 版可能每秒只有兩張圖片

play46:40

第 K-1 版就把兩張圖片擴展到每秒有四張圖片

play46:45

這個時候對 K-1 到第 K 版的這個深層式 AI 來說

play46:50

他只需要專注於去預測兩張圖片中間

play46:53

如果你要做Interleaving

play46:55

你要做內插的話

play46:56

應該生出什麼樣的內容

play46:58

才會是看起來比較連貫的

play47:02

雖然我們不知道Sora是怎麼做的

play47:03

不過我們可以看另外一個Google的模型

play47:06

叫做Imagen

play47:07

Imagen裡面呢

play47:08

就用了非常類似的技術

play47:10

那上面這個圖呢

play47:12

是來自於Imagen的論文

play47:14

他就告訴你說

play47:15

他最先產生出來的圖片

play47:17

這裡面每一個框框代表一個模組

play47:19

代表一個模型

play47:21

他先用一個最簡單的模型

play47:23

這個模型吃文字的輸入

play47:25

他只產生一個這個

play47:29

他的這個這個這邊有三個數字

play47:31

第一個數字是有多少個frame

play47:34

然後第二個跟第三個數字是生出來的每一個frame

play47:37

他的長跟寬是多少

play47:39

所以第一個模型只會生16個frame

play47:42

長跟寬分別是40x24

play47:46

然後他說他的這個 frame per second 每秒的幀數是3

play47:50

那他生16張圖的話

play47:53

那他生出來的影像長度大概就是5秒左右

play47:57

而Base Model生出來這個影片呢

play47:59

人呢一定是覺得根本不知道在做什麼的

play48:02

但沒關係

play48:03

有另外一個模組

play48:05

有另外一個模型

play48:06

他把三個fps 每秒三個frame

play48:10

調高到每秒六個frame

play48:13

再有下一個模組

play48:15

把每一個frame的解析度變高

play48:18

從原來40x24的圖變成80x48的圖

play48:23

然後再有另外一個模型

play48:26

把解析度再變更高一點

play48:28

80x48變320x192

play48:32

然後再有一個模型

play48:34

提高一下每秒的幀數

play48:36

把每秒6幀變成每秒12幀

play48:39

再一個模型再把幀數再調高一點

play48:42

每秒12幀調到每秒24幀

play48:44

這個就是你一般在看動畫的時候的這個幀數了

play48:48

然後再來呢

play48:49

但是每個frame如果它的大小是320x192

play48:55

這個解析度還是太低了

play48:57

那把它擴展到1280x768

play49:00

跟你的螢幕一樣大

play49:02

那這樣就可以產生清晰的影片了

play49:05

那這個也是今天文字生影片常用的技巧之一

play49:10

如果你想要學更多有關影像生成的生成式AI的話

play49:16

你可以看以下兩篇paper

play49:18

這篇paper講的是語言模型怎麼把影像當作輸入

play49:23

那這篇paper講的是Diffusion Model怎麼產生影片

Rate This

5.0 / 5 (0 votes)

関連タグ
生成式AI影像生成AI技术图片处理影片制作Transformer模型编码器解码器注意力机制个性化定制影像压缩
英語で要約が必要ですか?