是什麼讓人工智慧突然開始畫畫了?

語言: CN / TW / HK

theme: v-green

我正在參加「掘金·啟航計劃」


封面圖就是用擴散模型畫的。

這是最近兩個大火的模型,直接衝到抱抱臉的首頁。

最先火起來的是圖二。因為DALLE-2出來了,由於DALLE-2只對部分大佬開放,因此它的替代品DALLE-mini就火了起來。

之後沒幾天stable diffusion出來了!最最重要的一點是stable diffusion已經向公眾開放了(當然是付費的)。今天就來說一下這幾個模型背後的東西。

1661335781636.png

1661335834802.png

今天我們來看一下這倆模型的生成效果,然後淺淺說一下背後的演算法支撐。

stable diffusion生成的圖片:

下面這三個例子都是直接呼叫stable diffusion生成的圖片。在這裡是直接做的zero-shot的text-to-image生成。

先看第一個,我用的是A dog is writing a blog,就是一個狗正在寫部落格。他一共給我生成了4張候選,我在這裡只截了其中的兩張圖片。我們可以看到第二張好像還是比較真實的,就是一個狗趴在地上拴個繩,正在拿著筆在紙上寫什麼東西。我們可以勉強認為它達到了我的要求,生成了一個狗正在寫部落格的圖片。

然後看第二張圖,第二張圖我的提示是a black cat wears a red skirt。就是一隻黑貓穿著一個紅色的裙子。它也是生成了4個候選,我截圖了最現實的一張,可以看到一個黑貓穿著一個紅色的小衣服。

然後再看第三組圖片,我的提示是a Teddy bear plays computer games。就是一個泰迪熊正在打遊戲。可以看到圖二還是比較正常的,好像是在打遊戲的樣子。

可能因為我這幾個例子都比較奇葩,所以它生成不太出來。整體效果還算是差強人意的。

差強人意:勉強使人滿意。

image.png

所謂zero-shot生成,你可以簡單的理解為我可以直接拿來就用,不用再對模型進行調教了。

說幾個相關的概念

微調: 想一下這樣,比如我拿掘金沸點訓練一個說話的模型,那這個模型說出來的內容必然是沸點摸魚的內容、和程式設計師相關的內容、和彩禮孩子起名相關的內容。你要讓他說一下去長沙旅遊怎麼樣,他大概率是說不出來的。

那怎麼能讓它說旅遊相關的東西?你可以用去那兒、鞋程、馬蜂喔、妹團等網站的一些使用者評論來訓練它。這樣你問他長沙,那他就能和你說長沙旅遊的事了。

few-shot: 那你想說,我一個普通使用者,哪裡會微調模型,所以能不能別讓我微調? 可以。當訓練的資料量足夠大,模型能記住足夠多的東西的時候,你可以不用自己訓練了。但是他記住的東西太多了,還沒有那麼智慧,他回答你之前你需要給他一點提示。這就是few-shot。

one-shot: 對比上邊,不用給幾個提示,給一個提示就夠了。

zero-shot:我根本不用提示,直接開搞好吧。

DALLE-2

接下來看一下DALLE-2的效果:

因為這個我前面提到了它只對部分大佬開放。雖然開放了一些使用者內測的申請,但是像我這種肯定是申請不上的,畢竟亞馬遜的大佬也沒有申請上,還在排隊中。這裡我就放了一下大力兔(DALLE-2)論文原文中的幾個示範圖片。

它的文字資訊以及它生成的圖片,我們可以看到這個九宮格。生成的還是非常真實的。大力兔可以生成不同風格的完全原創的圖片,就是說在模型生成之前,世界上根本不存在這張照片。

image.png

並且它能做的不止圖中這幾個,它還可以給你往圖片上新增東西。比如說你給他一個圖片。然後給他指定不同的位置,再給他說你要往那邊新增什麼,他就可以根據你的要求生成不同的影象。

下圖我們可以看到在一個屋子內的不同位置給它新增火烈鳥。

如果你設定位置在室內,可以看到它會變成一個火烈鳥的游泳圈。如果你設定在室外的話,它會生成兩個真實的火焰鳥。如果你設定在室內的泳池內,它又會生成一個火烈鳥的游泳圈。我們可以看到他身上的圖片是比較貼合實際的,並且他會考慮到圖片的陰影,光效的變化。就是普通的影象合成無法做到的東西。

image.png

是什麼支撐著上面影象的生成?

從第一個名字中我們就可以知道支撐它背後的模型是什麼。diffusion model,換成中文就叫擴散模型。其實這個東西火起來是非常偶然的事情,我看大家都在調侃這個東西,說本來大家做text to image是為了增強影象生成的能力的,沒想到大家突然在這個莫名其妙的方向上捲了起來。

其實它並不是第一個影象生成模型。之前已經做的如火如荼的比如說GAN呀,GAN的生成已經非常成熟了。

先看這張圖。這張圖是用一張照片可以生成他年幼時候的樣子。我們可以在途中看到兩個非常眼熟的面孔:第一個是吳恩達。第三張圖是閆樂坤。

image.png

然後再看這張圖。這張圖是使用gan做了4個對比,用一張圖片生成他老年的樣子,生成他戴眼鏡的樣子,生成他變性的樣子,以及讓他做一些其他的動作。

image.png

通過上述兩個例子,我們可以看到gan生成的影象已經是非常真實的了。由於它生成的影象過於真實,所以他剛開始如火如荼的時候美國甚至為此頒佈了兩條法令:

  1. 禁止使用相關演算法拿人臉生成淫穢色情資源。
  2. 禁止使用政治人物的臉說一些他沒說過的話,做一些他沒做過的事。

除此之外常用的影象生成模型還有VAE、flow等。在這裡就不多做介紹了。

你想說既然人家的模型都已經生成的這麼好了,那你為什麼還要做一個擴散模型呢?

存在必然合理,時代發展必然有它的要求。相對於之前的模型擴散模型有它不可或缺的優點。我今天這篇文章主要就是為了讓大家知道現在很火的兩個生成模型,背後用的是擴散模型而已,至於之後的生成模型對比啊或者更詳細的一些內容以及擴散模型的講解和推導就是純純的演算法知識了,想看的可以挪到這裡:突然火起來的diffusion model是什麼?。在這篇新聞性的文章中就不折磨大家了。