博客專欄

        EEPW首頁 > 博客 > AI也能「抽象派」作畫,圓形+方塊組合,可微2D渲染下生成抽象人臉

        AI也能「抽象派」作畫,圓形+方塊組合,可微2D渲染下生成抽象人臉

        發布人:機器之心 時間:2021-12-02 來源:工程師 發布文章

        有人將一張方塊圖、圓形圖的組合生成了抽象的人臉!還有人將帆布油畫《阿尼埃爾的浴場》還原為直線。

        繪畫,尤其是草圖可以說是傳達概念、對象和故事的一種方式。計算機視覺和人機交互方面的草圖研究歷史悠久,可追溯到 1960 年代。近年來,由于深度學習技術的快速發展,草圖應用越來越多,這些技術可以成功地處理草圖識別、生成、基于草圖的檢索、語義分割、分組、解析和抽象等任務。

        關于草圖的研究也不時的被網友頂上熱搜,近日新聞網站 reddit 上就有一篇帖子熱度爆表,短短十幾個小時熱度就達到 800+,原貼內容為:從形狀到「臉」- 使用神經網絡進行形狀抽象的可微 2D 渲染。

        1.png

        它的效果是這樣的:從動圖展示效果來看,一開始輸入為 4x4 不同形狀的圖像,最后生成了人臉輪廓(盡管生成的人臉輪廓有些抽象,但我們還是可以看出是人臉):

        2.gif

        針對這一展示效果,網友紛紛表示驚艷,但可惜的是,原貼作者并沒有給出更多的技術細節,但在評論區中,我們可以從原貼作者的回答中得出一些信息:

        原貼作者即項目作者表示:「這是我用于神經渲染的 POC。該模型只是試圖最小化輸出與真值圖像(在本例中為 celeb 數據集)之間的 L2 距離。動圖中展示的是訓練運行期間驗證過程,遵循單一形狀收斂。輸入形狀可以以任何形式開始,但 4x4 網格輸入應該是最有趣的, 這一實現效果可擴展到很多應用。我正在考慮寫一篇簡短的文章,把自己的想法表達出來?!?/p>

        3.png

        上面的回復中,項目作者提到了自己并沒有寫技術文檔,不過,也有網友分享了一篇今年 7 月的文章《 Differentiable Drawing and Sketching 》。項目作者表示:「這真的很酷!其實我一直在找類似的東西,但找不到,所以做了這個。」

        4.png

        具體而言:這篇文章是來自南安普敦大學的研究者提出了一種自底向上的可微松弛(relaxation)過程:即將點、線和曲線繪制到一個像素光柵(pixel raster)。這種松弛過程允許模型學習和優化端到端的可微程序和深度網絡,此外,松弛過程還為網絡提供了幾個構建塊,以控制如何對組合繪圖過程建模。值得注意的是,該研究所提方法是自底向上的,這一特性允許繪圖操作以能夠模擬繪圖的物理現實而不是被束縛的方式組成,例如,現代計算機圖形學的方法。

        5.png

        論文地址:https://arxiv.org/pdf/2103.16194.pdf

        GitHub 地址:https://github.com/jonhare/DifferentiableSketching

        論文展示了如何通過直接優化照片生成草圖,以及在沒有監督的情況下如何構建自動編碼器將柵格化手寫數字轉換為矢量。

        6.png

        雖然論文與reddit項目作者的最終實現效果不同,論文是將圖像抽象為點或線段的草圖,項目則是將方塊和圓形最終生成抽象人臉,但論文采用的方法對項目具有借鑒意義。因此,機器之心對論文《 Differentiable Drawing and Sketching 》中的技術細節進行了介紹。

        技術解讀:可微光柵化松弛

        在這部分內容中,研究者討論了如何將連續世界空間(continuous world space) W 中定義的點、線和曲線繪制或光柵化到圖像空間1638436435560653.png中。 

        他們的目標是提出一種形式化方法(formalisation),使得最終可以定義相對于世界空間參數(如點坐標或線段起點和終點的坐標)可微的光柵化函數。

        一維光柵化

        研究者首先考慮了對一維點 p ? W 進行光柵化的問題,其中 W = R。具體來講,點 p 的光柵化過程可以由函數 f(n; p) 來定義,該函數為圖像空間1638436463665854.png中的每個像素計算一個值(通常為 [0 , 1])。這個圖像空間的位置又由1638436479838732.png給出。

        先來看看簡單的最近像素(closest-pixel)光柵化函數。如果假設第 0 個像素覆蓋點 p 的世界空間中的域 [0, 1),第一個像素覆蓋 [1, 2) ,如此類推。然后,最近鄰光柵化將真值點 p 映射到一個圖像,如下等式(1)所示:

        10.png

        這一過程如下圖 2a 所示。2b 則是另一種光柵化方案,其中在兩個最近的像素上進行插值。

        11.png

        假設當被光柵化的點位于中點(midpoint)時,像素具有最大值,則如下等式(2)所示:

        12.png

        實際上,這些可以擴展至 2D 的函數在很多計算機圖形系統中得到隱式地使用,但很少以我們編寫它們的形式出現。

        接下來是可微松弛。理想情況下,研究者希望能夠定義一個相對于點 p 可微的光柵化函數,這允許 p 優化。等式(1)給出的光柵化函數對于 p 是分段可微的,但梯度幾乎在所有地方都為零,這是沒有用的。等式 (2) 在最鄰近 p 的兩個像素中具有一定的梯度,但總體而言它的梯度也幾乎處處為零。

        因此,研究者想定義一個光柵化函數,它對所有(或至少大部分)可能的 n 值都具有梯度。這個函數幾乎在任何地方都應該是連續的和可微的??逛忼X光柵化方法對如何實現這一點給出了一些提示:該函數可以根據 n 和 p 之間的距離為每個 n 計算一個值。

        N 維中的松弛光柵化

        以往定義的所有一維光柵化函數都可以簡單地擴展為「在二維或更多維度上對一個點進行光柵化」。

        線段可以通過其起始坐標 s = [s_x, s_y] 和結束坐標 e = [e_x, e_y] 來定義。為了開發一組通用、潛在可微的光柵化函數,研究者需要考慮光柵的形式化,就像在一維情況下所做的那樣:找到一個函數,該函數在給定線段 f (n; s, e) 的情況下,能夠在圖像中所有像素位置集合 n 上定義一個標量場。

        光柵化線段需要考慮像素與線段的接近程度。研究者高效地計算了任意像素 n 到線段上最近點的平方歐幾里德距離,如下所示:

        13.jpg

        在最近鄰光柵化的情況下,有人會問「這條線段是否穿過談論中的像素」。只有在以下這種情況下才填充:

        14.jpg

        為了以相對于參數可微的方式光柵化曲線(與參數化無關),研究者遵循了與線段相同的通用方法:計算每個坐標1638436580762459.png與曲線之間的最小平方歐幾里德距離 :

        與線段的情況一樣,接下來這一距離變換(distance transform)能夠與「根據距離運行的光柵化函數」相結合:

        16.jpg

        擴展至多條線段

        為了光柵化多條線段,研究者考慮論了將不同線段的光柵化組合成單個圖像。具體而言,他們將光柵化不同線段 {s_1, e_1}, {s_2, e_2}, . . . , {s_i, e_i} 生成的圖像表示為在相同圖像空間1638436612640168.png上定義的矩陣 I ^(1) , I^ (2) , . . . , I^ (n)。

        在最簡單的二進制光柵化情況下,研究者認為相應像素的邏輯或(logical-or)可能會產生所需的效果,即將單個光柵化中著色的任何像素作為最終輸出中的著色,如下等式(9)所示:

        18.png

        研究者還將這種 composition 松弛為可微的,并允許像素值為非二進制(但限于 [0, 1]),如下等式(10)所示:

        19.png

        最終,研究者得到了點或線段構圖所需要的全部組件。 

         圖像優化示例

        為了證明針對真實圖像優化原語(primitives)方法的有效性,該研究提供了許多示例。例如圖 4 和圖 5 利用圖 3a 中大小為 200 × 266 輸入圖像作為目標圖像進行優化。

        圖 4 顯示了使用模糊 MSE 損失優化 1000 個點和 1000 條線的結果,并展示了可以實現的整體效果。圖 5 顯示了使用一系列不同損失從同一起點優化 500 條線段的效果。

        此外,該研究還將自動生成的草圖與人類繪制的圖像進行了比較。圖 3b 是用筆(pen and ink)繪制的草圖,用于生成圖 4 和 5。很明顯,草圖廣泛地捕捉了場景的整體結構和明暗區域。

        20.jpg

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜章县| 桐柏县| 英吉沙县| 旺苍县| 灵山县| 醴陵市| 客服| 遵义市| 汤阴县| 囊谦县| 阜宁县| 西乌珠穆沁旗| 临高县| 晋宁县| 三原县| 延长县| 红河县| 绥阳县| 淳化县| 蒙山县| 临沂市| 阜城县| 贵德县| 资兴市| 丹阳市| 察隅县| 华安县| 乐都县| 兴国县| 陇南市| 威海市| 德令哈市| 巴彦县| 桂平市| 汽车| 文登市| 金乡县| 伊吾县| 闵行区| 金湖县| 晋中市|