編輯:杜偉、陳萍
有人將一張方塊圖、圓形圖的組合生成了抽象的人臉!還有人將帆布油畫《阿尼埃爾的浴場》還原為直線。
繪畫,尤其是草圖可以說是傳達概念、對象和故事的一種方式。計算機視覺和人機互動方面的草圖研究歷史悠久,可追溯到 1960 年代。近年來,由於深度學習技術的快速發展,草圖應用越來越多,這些技術可以成功地處理草圖識別、生成、基於草圖的檢索、語義分割、分組、解析和抽象等任務。
關於草圖的研究也不時的被網友頂上熱搜,近日新聞網站 reddit 上就有一篇帖子熱度爆表,短短十幾個小時熱度就達到 800+,原貼內容為:從形狀到「臉」- 使用神經網路進行形狀抽象的可微 2D 渲染。

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

針對這一展示效果,網友紛紛表示驚豔,但可惜的是,原貼作者並沒有給出更多的技術細節,但在評論區中,我們可以從原貼作者的回答中得出一些資訊:
原貼作者即項目作者表示:「這是我用於神經渲染的 POC。該模型只是試圖最小化輸出與真值圖像(在本例中為 celeb 資料集)之間的 L2 距離。動圖中展示的是訓練運行期間驗證過程,遵循單一形狀收斂。輸入形狀可以以任何形式開始,但 4×4 網格輸入應該是最有趣的, 這一實現效果可擴展到很多應用。我正在考慮寫一篇簡短的文章,把自己的想法表達出來。」

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

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

論文地址:https://arxiv.org/pdf/2103.16194.pdf
GitHub 地址:https://github.com/jonhare/DifferentiableSketching
論文展示瞭如何通過直接最佳化照片生成草圖,以及在沒有監督的情況下如何構建自動編碼器將柵格化手寫數字轉換為向量。

雖然論文與reddit項目作者的最終實現效果不同,論文是將圖像抽象為點或線段的草圖,項目則是將方塊和圓形最終生成抽象人臉,但論文采用的方法對項目具有借鑑意義。因此,機器之心對論文《 Differentiable Drawing and Sketching 》中的技術細節進行了介紹。
技術解讀:可微光柵化鬆弛
在這部分內容中,研究者討論瞭如何將連續世界空間(continuous world space) W 中定義的點、線和曲線繪製或光柵化到圖像空間

中。
他們的目標是提出一種形式化方法(formalisation),使得最終可以定義相對於世界空間參數(如點座標或線段起點和終點的座標)可微的光柵化函數。
一維光柵化
研究者首先考慮了對一維點 p ϵ W 進行光柵化的問題,其中 W = R。具體來講,點 p 的光柵化過程可以由函數 f(n; p) 來定義,該函數為圖像空間

中的每個像素計算一個值(通常為 [0 , 1])。這個圖像空間的位置又由

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

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

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

實際上,這些可以擴展至 2D 的函數在很多計算機圖形系統中得到隱式地使用,但很少以我們編寫它們的形式出現。
接下來是可微鬆弛。理想情況下,研究者希望能夠定義一個相對於點 p 可微的光柵化函數,這允許 p 最佳化。等式(1)給出的光柵化函數對於 p 是分段可微的,但梯度幾乎在所有地方都為零,這是沒有用的。等式 (2) 在最鄰近 p 的兩個像素中具有一定的梯度,但總體而言它的梯度也幾乎處處為零。
因此,研究者想定義一個光柵化函數,它對所有(或至少大部分)可能的 n 值都具有梯度。這個函數幾乎在任何地方都應該是連續的和可微的。抗鋸齒光柵化方法對如何實現這一點給出了一些提示:該函數可以根據 n 和 p 之間的距離為每個 n 計算一個值。
N 維中的鬆弛光柵化
以往定義的所有一維光柵化函數都可以簡單地擴展為「在二維或更多維度上對一個點進行光柵化」。
線段可以通過其起始座標 s = [s_x, s_y] 和結束座標 e = [e_x, e_y] 來定義。為了開發一組通用、潛在可微的光柵化函數,研究者需要考慮光柵的形式化,就像在一維情況下所做的那樣:找到一個函數,該函數在給定線段 f (n; s, e) 的情況下,能夠在圖像中所有像素位置集合 n 上定義一個標量場。
光柵化線段需要考慮像素與線段的接近程度。研究者高效地計算了任意像素 n 到線段上最近點的平方歐幾里德距離,如下所示:

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

為了以相對於參數可微的方式光柵化曲線(與參數化無關),研究者遵循了與線段相同的通用方法:計算每個座標

與曲線之間的最小平方歐幾里德距離 :
與線段的情況一樣,接下來這一距離變換(distance transform)能夠與「根據距離運行的光柵化函數」相結合:

擴展至多條線段
為了光柵化多條線段,研究者考慮論了將不同線段的光柵化組合成單個圖像。具體而言,他們將光柵化不同線段 {s_1, e_1}, {s_2, e_2}, . . . , {s_i, e_i} 生成的圖像表示為在相同圖像空間

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

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

最終,研究者得到了點或線段構圖所需要的全部元件。
圖像最佳化示例
為了證明針對真實圖像最佳化原語(primitives)方法的有效性,該研究提供了許多示例。例如圖 4 和圖 5 利用圖 3a 中大小為 200 × 266 輸入圖像作為目標圖像進行最佳化。
圖 4 顯示了使用模糊 MSE 損失最佳化 1000 個點和 1000 條線的結果,並展示了可以實現的整體效果。圖 5 顯示了使用一系列不同損失從同一起點最佳化 500 條線段的效果。
此外,該研究還將自動生成的草圖與人類繪製的圖像進行了比較。圖 3b 是用筆(pen and ink)繪製的草圖,用於生成圖 4 和 5。很明顯,草圖廣泛地捕捉了場景的整體結構和明暗區域。

2021 NeurIPS MeetUp China
受疫情影響,NeurIPS 2021依然選擇了線上的形式舉辦。雖然這可以為大家節省一筆註冊、機票、住宿開支,但不能線下參與這場一年一度的學術會議、與學術大咖近距離交流討論還是有些遺憾。
我們將在NeurIPS官方支持下,於12月11日在上海博雅酒店舉辦線下NeurIPS MeetUp China,促進國內人工智慧學術交流。
2021 NeurIPS MeetUp China將設置 Keynote、圓桌論壇、論文分享、 Poster和企業招聘等環節,邀請頂級專家、論文作者與現場參會觀眾共同交流。
歡迎 AI 社區從業者們積極報名參與,同時我們也歡迎 NeurIPS 2021 論文作者們作為嘉賓參與論文分享與 Poster 展示。感興趣的小夥伴點選「閱讀原文」即可報名。
