為什麼AI繪圖時,人手最容易崩壞?

雖然AI繪圖越來越逼真,但是卻有些地方很難克服,例如手部細節,手指數量常常不正常,或是沒有拇指與其他手指的形狀之分。這是為什麼? 這篇文章裡會從AI繪圖的基本原理講起,了解造成這個現象的原因。

目前幾乎所有AI繪圖程式都是使用Diffuse的原理,中文的直接翻譯為擴散,但是我覺得用降噪來形容比較精準。不同於大部分人類的繪圖方式,這些程式不會先從線條處理開始再進行上色,而是一個步驟直接完成。這可能很難理解,所以要先從它們是怎麼被訓練的開始講解。

首先,開發人員會先收集訓練用的圖片,並且為每一張圖片製作有噪點的副本,就像下圖一樣,左邊是原始圖片,右邊是加上噪點後。

開發人員會輸入數以萬計的圖片和有加入噪點的副本,訓練這個程式學習噪點的特性,就像數學老師給你題目和答案,要你寫出算式或計算過程一樣。

那麼,要讓AI畫圖,只要反轉這個過程就好了。首先,會隨機生成一張充滿造點的圖像,我們看起來只是一些色塊而已,但是我們可以騙程式說這是一張正常的圖片,只是被加上很多噪點而已。這時候AI就會嘗試回推原本圖像的樣貌,就像你在數學中學會了特定算法後,把答案套進計算過程去猜題目是什麼一樣,只是這個題目根本是虛構的。

舉例來說,你想要AI畫出一隻綿羊。這時候,程式會隨機生成一張充滿色塊的圖像,接著就會騙AI模型說這是一張模糊或充滿噪點的綿羊圖片,AI就會想辦法把這些色塊調整成一個綿羊的形狀。

當然,這背後還有更多原理,例如不同的採樣法(ddim, PLMS…等等),我都有在我的小論文裡說明,但是這些都跟今天的主題無關。你只要知道AI畫圖不是無中生有,而是像捏黏土一樣把無法辨認的奇形怪狀捏成指定的樣子而已。

回到今天的大問題: 為什麼AI很不擅長生成正常的手? 這是因為AI沒有對三維空間的認識,也沒有對人類器官的認知,所以從有限的訓練資料來學習,就會因為某些用於訓練的圖片沒有拍到整隻手或是其他類似原因而根本不知道「正確的手」應該要長怎樣,就像你看過的樹木數量遠超過浮游植物,可能以為樹木是地球上的主要氧氣來源一樣,但是其實是海裡的浮游植物。

另外,手部是一個非常複雜的形狀,加上人類每天都使用著它、看著它,因此手部只要一有什麼奇怪的地方,人們就很容易感覺不對勁,不同於其他身體部位(例如鼻子,看看大部分漫畫人物的鼻子細節程度,再怎麼簡單都不會很不自然)。

例如這張圖片,我想最明顯很奇怪的地方是他有六隻長度比例很奇怪的手指,而不是他的左耳跟頭髮末端融合在一起了。

希望我今天有幫你解到惑,也希望你一併學會了AI繪圖的基本原理! 我的門羅幣跟比特幣地址都新增到文章頁尾了,如果你想透過金錢支持我,我會很開心的!


分類:

這些文章都是由我獨力完成,如果願意贊助我,我會很開心!

我的Monero 錢包:

88NniPxHdJ9VMvor1orgS2dDDDM5RjLrxXAs3HYCRH2mSKxjZPdrp2h42gmf4mP6RVX9kmCEeBA1oaSndnB7VmT9MBEaUDE


我的Bitcoin 錢包:

bc1qy73wr3y73ymkjtnct3f0jfuya20avfztffxepv