AI也能「抽象派」作畫,圓形+方塊組合,可微2D渲染下生成抽象人臉
有人將一張方塊圖、圓形圖的組合生成了抽象的人臉!還有人將帆布油畫《阿尼埃爾的浴場》還原為直線。
繪畫,尤其是草圖可以說是傳達概念、對象和故事的一種方式。計算機視覺和人機交互方面的草圖研究歷史悠久,可追溯到 1960 年代。近年來,由于深度學(xué)習(xí)技術(shù)的快速發(fā)展,草圖應(yīng)用越來越多,這些技術(shù)可以成功地處理草圖識別、生成、基于草圖的檢索、語義分割、分組、解析和抽象等任務(wù)。
關(guān)于草圖的研究也不時的被網(wǎng)友頂上熱搜,近日新聞網(wǎng)站 reddit 上就有一篇帖子熱度爆表,短短十幾個小時熱度就達到 800+,原貼內(nèi)容為:從形狀到「臉」- 使用神經(jīng)網(wǎng)絡(luò)進行形狀抽象的可微 2D 渲染。
它的效果是這樣的:從動圖展示效果來看,一開始輸入為 4x4 不同形狀的圖像,最后生成了人臉輪廓(盡管生成的人臉輪廓有些抽象,但我們還是可以看出是人臉):
針對這一展示效果,網(wǎng)友紛紛表示驚艷,但可惜的是,原貼作者并沒有給出更多的技術(shù)細節(jié),但在評論區(qū)中,我們可以從原貼作者的回答中得出一些信息:
原貼作者即項目作者表示:「這是我用于神經(jīng)渲染的 POC。該模型只是試圖最小化輸出與真值圖像(在本例中為 celeb 數(shù)據(jù)集)之間的 L2 距離。動圖中展示的是訓(xùn)練運行期間驗證過程,遵循單一形狀收斂。輸入形狀可以以任何形式開始,但 4x4 網(wǎng)格輸入應(yīng)該是最有趣的, 這一實現(xiàn)效果可擴展到很多應(yīng)用。我正在考慮寫一篇簡短的文章,把自己的想法表達出來?!?/p>
上面的回復(fù)中,項目作者提到了自己并沒有寫技術(shù)文檔,不過,也有網(wǎng)友分享了一篇今年 7 月的文章《 Differentiable Drawing and Sketching 》。項目作者表示:「這真的很酷!其實我一直在找類似的東西,但找不到,所以做了這個?!?/p>
具體而言:這篇文章是來自南安普敦大學(xué)的研究者提出了一種自底向上的可微松弛(relaxation)過程:即將點、線和曲線繪制到一個像素光柵(pixel raster)。這種松弛過程允許模型學(xué)習(xí)和優(yōu)化端到端的可微程序和深度網(wǎng)絡(luò),此外,松弛過程還為網(wǎng)絡(luò)提供了幾個構(gòu)建塊,以控制如何對組合繪圖過程建模。值得注意的是,該研究所提方法是自底向上的,這一特性允許繪圖操作以能夠模擬繪圖的物理現(xiàn)實而不是被束縛的方式組成,例如,現(xiàn)代計算機圖形學(xué)的方法。
論文地址:https://arxiv.org/pdf/2103.16194.pdf
GitHub 地址:https://github.com/jonhare/DifferentiableSketching
論文展示了如何通過直接優(yōu)化照片生成草圖,以及在沒有監(jiān)督的情況下如何構(gòu)建自動編碼器將柵格化手寫數(shù)字轉(zhuǎn)換為矢量。
雖然論文與reddit項目作者的最終實現(xiàn)效果不同,論文是將圖像抽象為點或線段的草圖,項目則是將方塊和圓形最終生成抽象人臉,但論文采用的方法對項目具有借鑒意義。因此,機器之心對論文《 Differentiable Drawing and Sketching 》中的技術(shù)細節(jié)進行了介紹。
技術(shù)解讀:可微光柵化松弛
在這部分內(nèi)容中,研究者討論了如何將連續(xù)世界空間(continuous world space) W 中定義的點、線和曲線繪制或光柵化到圖像空間中。
他們的目標(biāo)是提出一種形式化方法(formalisation),使得最終可以定義相對于世界空間參數(shù)(如點坐標(biāo)或線段起點和終點的坐標(biāo))可微的光柵化函數(shù)。
一維光柵化
研究者首先考慮了對一維點 p ? W 進行光柵化的問題,其中 W = R。具體來講,點 p 的光柵化過程可以由函數(shù) f(n; p) 來定義,該函數(shù)為圖像空間中的每個像素計算一個值(通常為 [0 , 1])。這個圖像空間的位置又由給出。
先來看看簡單的最近像素(closest-pixel)光柵化函數(shù)。如果假設(shè)第 0 個像素覆蓋點 p 的世界空間中的域 [0, 1),第一個像素覆蓋 [1, 2) ,如此類推。然后,最近鄰光柵化將真值點 p 映射到一個圖像,如下等式(1)所示:
這一過程如下圖 2a 所示。2b 則是另一種光柵化方案,其中在兩個最近的像素上進行插值。
假設(shè)當(dāng)被光柵化的點位于中點(midpoint)時,像素具有最大值,則如下等式(2)所示:
實際上,這些可以擴展至 2D 的函數(shù)在很多計算機圖形系統(tǒng)中得到隱式地使用,但很少以我們編寫它們的形式出現(xiàn)。
接下來是可微松弛。理想情況下,研究者希望能夠定義一個相對于點 p 可微的光柵化函數(shù),這允許 p 優(yōu)化。等式(1)給出的光柵化函數(shù)對于 p 是分段可微的,但梯度幾乎在所有地方都為零,這是沒有用的。等式 (2) 在最鄰近 p 的兩個像素中具有一定的梯度,但總體而言它的梯度也幾乎處處為零。
因此,研究者想定義一個光柵化函數(shù),它對所有(或至少大部分)可能的 n 值都具有梯度。這個函數(shù)幾乎在任何地方都應(yīng)該是連續(xù)的和可微的??逛忼X光柵化方法對如何實現(xiàn)這一點給出了一些提示:該函數(shù)可以根據(jù) n 和 p 之間的距離為每個 n 計算一個值。
N 維中的松弛光柵化
以往定義的所有一維光柵化函數(shù)都可以簡單地擴展為「在二維或更多維度上對一個點進行光柵化」。
線段可以通過其起始坐標(biāo) s = [s_x, s_y] 和結(jié)束坐標(biāo) e = [e_x, e_y] 來定義。為了開發(fā)一組通用、潛在可微的光柵化函數(shù),研究者需要考慮光柵的形式化,就像在一維情況下所做的那樣:找到一個函數(shù),該函數(shù)在給定線段 f (n; s, e) 的情況下,能夠在圖像中所有像素位置集合 n 上定義一個標(biāo)量場。
光柵化線段需要考慮像素與線段的接近程度。研究者高效地計算了任意像素 n 到線段上最近點的平方歐幾里德距離,如下所示:
在最近鄰光柵化的情況下,有人會問「這條線段是否穿過談?wù)撝械南袼亍?。只有在以下這種情況下才填充:
為了以相對于參數(shù)可微的方式光柵化曲線(與參數(shù)化無關(guān)),研究者遵循了與線段相同的通用方法:計算每個坐標(biāo)與曲線之間的最小平方歐幾里德距離 :
與線段的情況一樣,接下來這一距離變換(distance transform)能夠與「根據(jù)距離運行的光柵化函數(shù)」相結(jié)合:
擴展至多條線段
為了光柵化多條線段,研究者考慮論了將不同線段的光柵化組合成單個圖像。具體而言,他們將光柵化不同線段 {s_1, e_1}, {s_2, e_2}, . . . , {s_i, e_i} 生成的圖像表示為在相同圖像空間上定義的矩陣 I ^(1) , I^ (2) , . . . , I^ (n)。
在最簡單的二進制光柵化情況下,研究者認為相應(yīng)像素的邏輯或(logical-or)可能會產(chǎn)生所需的效果,即將單個光柵化中著色的任何像素作為最終輸出中的著色,如下等式(9)所示:
研究者還將這種 composition 松弛為可微的,并允許像素值為非二進制(但限于 [0, 1]),如下等式(10)所示:
最終,研究者得到了點或線段構(gòu)圖所需要的全部組件。
圖像優(yōu)化示例
為了證明針對真實圖像優(yōu)化原語(primitives)方法的有效性,該研究提供了許多示例。例如圖 4 和圖 5 利用圖 3a 中大小為 200 × 266 輸入圖像作為目標(biāo)圖像進行優(yōu)化。
圖 4 顯示了使用模糊 MSE 損失優(yōu)化 1000 個點和 1000 條線的結(jié)果,并展示了可以實現(xiàn)的整體效果。圖 5 顯示了使用一系列不同損失從同一起點優(yōu)化 500 條線段的效果。
此外,該研究還將自動生成的草圖與人類繪制的圖像進行了比較。圖 3b 是用筆(pen and ink)繪制的草圖,用于生成圖 4 和 5。很明顯,草圖廣泛地捕捉了場景的整體結(jié)構(gòu)和明暗區(qū)域。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。