本文為AI研習社編譯的技術博客,原標題 Differentiable Image Parameterizations,作者為 SHIVAM BANSAL 。

翻譯 | 王飛 陳澤斌 Monica 陳臘梅 校對 | 餘杭 整理 | MY

受過訓練以對圖像進行分類的神經網路具有非凡的意義和驚人的生成圖像的能力。諸如 DeepDream,風格遷移和特徵可視化等技術利用這種能力作為探索神經網路內部工作的強大工具,並為基於神經藝術的小型藝術運動提供動力。

所有這些技術的工作方式大致相同。計算機視覺中使用的神經網路具有它們所看到的圖像的豐富內部表示。我們可以使用此表示來描述我們希望圖像具有的屬性(例如樣式),然後優化輸入圖像以具有這些屬性。這種優化是可能的,因為網路在輸入方面是可區分的:我們可以稍微調整圖像以更好地適應所需的屬性,然後在梯度下降中迭代地應用這種調整。

通常,我們將輸入圖像參數化為每個像素的 RGB 值,但這不是唯一的方法。只要從參數到圖像的映射是可區分的,我們仍然可以使用梯度下降來優化可選的參數化方式。

1:只要圖像參數化是可區分的,那我們就可以對其進行反向傳播。

可區分的圖像參數化不禁讓我們想問:我們可以反向傳播什麼樣的圖像生成過程?答案很多,甚至有一些可以產生各種有趣的效果,包括 3D 神經藝術,具有透明度的圖像以及對齊插值。之前使用特定異常圖像參數化的工作已經顯示出令人興奮的結果,我們認為縮小並整體觀察這個區域表明,其中還存在著更多的潛力尚待挖掘。

為什麼參數化很重要?

儘管實際優化後目標函數保持不變,但改變優化問題的參數化可能會顯著改變結果,這似乎令人驚訝。以下是參數化的選擇可能產生重大影響的四個原因:

  1. 改進後的優化:轉換輸入以使優化問題更容易,即被稱為「預處理」的技術,是優化的主要內容。預處理通常表現為梯度的變換(通常將其乘以正定的「預處理器」矩陣)。但是,這相當於優化輸入的備用參數化。我們發現參數化的簡單變化使得神經藝術的圖像優化和圖像優化變得更加容易。
  2. 吸引盆:當我們優化對神經網路的輸入時,通常存在許多不同的解決方案,分別對應於不同的局部最小值。訓練以複雜優化場景圖(landscapes)為特徵的深度神經網路,其對於給定目標可具有許多同樣良好的局部最小值。(請注意,找到全局最小值並不總是可取的,因為它可能會導致模型過擬合。)因此,優化神經網路的輸入也會產生許多局部最小值,這並不奇怪。我們的優化過程落入任何特定局部最小值的概率由其吸引力盆地(即,在最小值的影響下的優化場景圖的區域)控制。已知改變優化問題的參數化會改變不同吸引盆的大小,從而影響可能的結果。
  3. 附加約束:一些參數化僅涵蓋可能輸入的子集,而不是整個空間。在這樣的參數化中工作的優化器仍將找到最小化或最大化目標函數的解決方案,但它們將受到參數化的約束。通過選擇正確的約束集,可以施加各種約束,範圍從簡單約束(例如,圖像的邊界必須是黑色)到豐富的細微約束。
  4. 隱式優化其他對象:參數化可以在內部使用與其輸出的對象以及我們所要優化的對象不同的對象。例如,雖然視覺網路的自然輸入是 RGB 圖像,但我們可以將該圖像參數化為 3D 對象的渲染,並且通過在渲染過程中反向傳播來優化該圖像。因為 3D 對象具有比圖像更多的自由度,所以我們通常使用隨機參數化來生成從不同視角渲染的圖像。

在本文的其餘部分,我們給出了具體的例子,這些方法都很有用,都能產生令人驚訝和有趣的視覺效果。

第一部分:對齊特徵可視化插值

特徵可視化最常用於可視化單個神經元,但它也可用於可視化神經元的組合,以研究它們如何相互作用。目的不是優化圖像以激活單個神經元,而是優化它來激活多個神經元。

當我們想要真正理解兩個神經元之間的相互作用時,我們可以更進一步,創建多個可視化,逐漸將目標從優化一個神經元轉移到對其他神經元激活的加權。這在某些方面類似於像 GAN 這樣的生成模型的潛在空間中的插值。

儘管如此,還是存在一個小挑戰:特徵可視化是隨機的。即使你針對完全相同的目標進行優化,每次都會以不同的方式呈現出可視化結果。通常,這不是問題,但它確實減損了插值可視化。如果我們不加思索地進行處理,所得到的可視化將是不對齊的:諸如眼睛的視覺位置出現在每個圖像中的不同位置。這種缺乏對齊可能會因為目標略有不同而難以看出差異,因為它們被布局中更大的差異所淹沒。

如果我們將插值幀看作動畫,我們可以看到獨立優化的問題:

2

我們如何實現這種對齊插值,其中視覺位置不在幀之間移動?可以嘗試許多可能的方法。例如,可以明確地懲罰相鄰幀之間的差異。我們的最終結果和我們的 colab notbook 將此技術與共享參數化結合使用。其中一個是使用共享參數化:每個幀被參數化為其自己的唯一參數化和單個共享參數化的組合。

3

通過在框架之間部分共享參數化,我們儘可能使生成的可視化自然對齊。直觀上感覺,共享參數化為視覺標誌的位移提供了公共參考,而獨特的參數化基於其插值權重給予每個幀其自身的視覺吸引力。此參數化不會更改目標,但它會擴大可視化對齊的吸引力盆地。

這是一個初始的例子,說明了可區分參數化通常是如何成為可視化神經網路的有用的附加工具的。

第二部分:非 VVG 架構下的風格遷移

神經風格遷移一直以來都有一個未解之謎:儘管它已經取得顯著的成功,但幾乎所有的風格遷移都是依賴於 VGG 架構完成的。這並不是因為沒有人對基於其他體系結構的風格轉移感興趣,而是因為不斷的嘗試過後發現效果都很差。在 Medium、 Reddit 和 Twitter 上都可以找到用不同架構進行實驗的例子。

如今已經提出了幾個假設來解釋為什麼在 VGG 架構上工作會比在其他模型上效果好得多。一種解釋是由於 VGG 架構有比較大的規模去獲取其他模型丟失的信息,這些信息即使說對分類沒什麼幫助,但是它確實能夠使得該模型更好的完成風格遷移。另一種解釋是其他模型相比於 VGG 模型更具有攻擊性,這也導致其失去空間信息。我們認為可能還有另外一個因素:大多數現代視覺模型在梯度上都有棋盤狀偽影,這可能使程式化圖像在進行優化時變得更加困難。

在之前的工作中,我們發現解相關的參數化可以明顯提高優化效果,同時這種方法也可以改善風格遷移。在這裡請允許我們使用一個沒有產生視覺吸引力的風格遷移模型:

4:移動最終優化圖像下的滑塊,將像素空間中的優化效果與非相關空間中進行比較。這兩張圖像是在同一個目標下創建的,它們的區別僅在於參數化的不同。

讓我們更全面地去思考這個改變。風格遷移涉及三種圖像:內容圖像、風格圖像以及我們優化後的圖像。這三種圖像都要放入卷積神經網路中,風格遷移物體與其他的不同之處是在於激活卷積運算的的方式不同。我們唯一的改變是如何將優化後的圖像參數化。相對於用像素級別的參數化(這種方法易受鄰近像素點的影響),我們採用縮放的傅里葉變換進行參數化。

5: 在去相關領域中的圖像使得風格遷移對模型的選擇更加穩定。

內容目標旨在讓神經元與內容圖像在同樣的位置上做出標記。風格目標緻力於創建類似於風格圖像中的神經元激活模式(不考慮位置關係)。這與二維傅里葉變換相反。

我們精確的實行方法可在附錄中查看。注意該方法也使用了遷移穩定性,這種穩定性並不適用於所有的風格遷移。

第三部分:複合模式生成網路

至今為止,我們已經研究了使用像素或傅里葉方法進行參數化,這些參數化程度與我們通常對圖像的認知比較接近。在該節中我們探討了通過使用不同的參數化將額外約束添加到優化過程的可能性。更確切的說,我們將圖像當成神經網路一樣進行參數化,特別是複合模式生成網路。

複合模式生成網路是將(x,y)位置映射到圖像顏色中的神經網路。

將複合模式生成網路應用到位置網路中,可以做出任意解析度的圖像。CPPN 網路的參數-權重與偏差決定產生什麼樣的圖像。根據 CPPN 所選擇的架構,所得到的圖像中的像素與鄰近像素共享顏色在一定程度上受限制。

隨機參數可以產生審美直觀上感興趣的圖像,但是我們可以通過學習 CPPN 上的參數生產更多有趣的圖像,通常這是由進化所完成的。這裡,我們研究了反向傳播某些目標函數的可能性,例如特徵可視化目標。這是很容易就可以做到的,因為 CPPN 網路跟卷積神經網路一樣是可微的,並且目標函數同樣也可以通過 CPPN 傳播從而更新其參數。也就是說,CPPNs 是一種可微化的圖像參數化--一種在任何神經藝術或可視化任務中參數化圖像的通用工具

6 : CPPNs 是一個可微的圖像參數化,我們可以通過反向傳播傳遞圖像將其應用於神經網路藝術或可視化任務,通過 CPPNs 得到其參數。

使用 CPPNs 作為圖像參數化能夠為神經網路藝術增添一種有趣的藝術品質,讓我們朦朧的聯想到光繪。(注意,這裡光繪的隱喻是比較模糊的:例如光的合成是一個加法過程,而 CPPNs 可以在層與層之間由負的權重連接。更理論層面說,它們可以被視為約束你圖像合成複雜度的因素。當用於優化特徵可視化目標時,它們生成了不同的圖像。)光繪是一種通過稜鏡和鏡子控制彩色光束從而產生圖像的藝術媒介。這種技術典型的應用就是 Stephen Knapp 的作品。

7:CPPN 作為一種可微的圖像參數化用於不同層之間的特徵可視化。

所生成的圖片的視覺質量受到所選擇的 CPPN 的架構的影響,不僅是網路的形狀(即層和濾波器的數目起到了作用),而且還跟所選擇的激活函數與歸一化有關。例如,較深的網路比較淺的網路產生更多細微的成分。我們鼓勵讀者通過改變 CPPN 的架構來生成不同的圖像,如果想嘗試的話可以通過修改附錄中的代碼就能輕易地完成。

CPPN 所產生的模式演變就是藝術的產物。為了保持光繪的寓意,優化過程應該考慮光束方向和形狀迭代的調整。例如,因為迭代變化相比於像素參數化更有全局影響。在優化開始時,只有主要模式是可見的,通過迭代調整權重,我們想像的光束就會以更完整的細節出現在相應的位置上。

8:訓練期間 CPPNS 的輸出。在移動設備上你可以通過盤旋或者輕拍的方式來控制每一個視頻。

通過這些隱喻,我們可以創造一種能夠從上述圖片中的任意一張變換成不同圖片的新類型動畫。直觀地說,我們通過 移除光影雕塑上的光束來創造新的圖像。事實上,這個結果是通過內插兩種不同模式的 CPPN 權重表達式來實現的。然後在給定內插 CPPN 表示法的情況下生成圖像從而得到多個中間框架。和之前一樣,參數的變化具有全局性,並創造視覺上令人滿意的中間框架。

9:在兩個已知點中間插入 CPPN 權重

在本小節中,我們提出了一種超標準圖像表示的參數化。針對給定目標函數優化的圖像,神經網路(在這種情況下為 CPPN)可用於參數化。更確切地說,我們將特徵可視化目標函數與 CPPN 參數化相結合,來創造具有獨特視覺風格的無限解析度圖像。

第四部分:生成半透明圖案

本篇文章中使用的神經網路被訓練用來接收 2D RGB 圖像作為輸入。是否可以用類似的網路來合成超出這種模式的工件呢?事實證明利用可微分參數化定義一系列圖像而不是單一圖像,然後在每一個優化步驟從系列中取一個或者若干圖片作為樣本可以實現。這非常重要,因為我們接下來探索優化的許多對象,在進入網路時比圖片有著更多的層級和自由度。

具體來說,讓我們考慮一下半透明圖像的情況。除了 RGB 通道,這些圖像還有一個 alpha 通道來對每個像素的不透明度進行編碼(在 [0,1]範圍內)。為了將這些圖像反饋送到 RGB 圖像訓練的神經網路中,我們需要以某種方式摺疊 alpha 通道。實現這一目標的其中一個方法,是使用標準 alpha 混合公式將 RGBA 圖像 II 疊加到背景圖片 BGBG 頂部。

其中 I_aIa 是圖像 II 的 alpha 通道。

如果我們使用靜態背景 BGBG,例如黑色,那麼透明度則僅僅表示該背景直接有助於優化目標的像素位置。事實上,這相當於優化一個 RGB 圖像並且使其在顏色與背景匹配的區域變得透明!直觀地說,我們希望透明區域與「這個區域的內容可能是任何東西」相對應。在這種直覺的基礎上,我們在每一個優化步驟中使用了不同的隨機背景。(我們嘗試了從真實圖像採樣和使用不同類型的噪音。只要它們足夠隨機,不同的分布就不會對優化結果產生有意義的影響。因此,為了簡單起見,我們使用了平滑的 2D 高斯雜訊)

10:將 alpha 通道添加到圖像參數化允許它代表透明度。在優化的每個步驟中,透明區域與隨機背景混合。

默認情況下,優化半透明圖像會使圖像完全不透明,所以網路總是可以獲得最佳輸入。為了避免這種情況,我們需要通過鼓勵一些透明的目標來改變我們的目標。我們發現用以下方法替換原始目標是有效:

這個新目標會自動平衡原始目標 objold 降低其透明度。如果圖片變得非常透明,它會聚焦於原始目標。如果它變得太不透明,它將暫時停止關注原始目標並專註於降低平均不透明度。

11:應用於不同層和單元的半透明圖像優化示例。

事實證明,半透明圖像的生成在特徵可視化方面很有用處。特徵可視化旨在通過創建最大化激活他們的圖像來了解視覺模型中的神經元在尋找什麼。不幸的是,這些可視化無法區分圖像的哪個區域強烈影響了神經元的激活,哪些區域僅輕微影響神經元激活。當優化整個通道的激活時不會發生這種情況,因為在那種情況下,每個像素有多個趨近居中的神經元,全部輸入的圖像充滿了這個神經元強烈關注的副本。

理想情況下,我們希望有一種可視化方法,使其在重要程度上可區分 - 一種表示圖像的一部分無關緊要的自然方式是使其透明。因此,如果我們利用 alpha 通道優化一個圖像並且鼓勵整個圖像變得透明,則根據特徵可視化目標不重要的圖像區域應該變透明。

12

第五部分:通過 3D 渲染實現高效紋理優化

在上一章節中,我們可以通過使用 RGB 圖像的神經網路來創造半透明的 RGBA 圖像。我們可以進一步推動這一點,創建其他類型的對象甚至進一步從 RGB 輸入中刪除嗎?在本節中,我們將探索為特徵可視化目標優化 3D 對象。我們使用 3D 渲染進程將它們轉換為可以傳入網路的 2D RGB 圖像,並通過渲染過程反向傳播以優化 3D 對象的紋理。

我們的技術類似於 Athalye 等人的方法。用來創建真實世界的對抗性示例,因為我們依賴目標函數的反向傳播來對 3D 模型視圖進行隨機採樣。和現有的生成藝術紋理的方法不同,因為我們在反向傳播的過程中不修改對象的幾何形狀。通過從頂點位置解開紋理的生成,我們可以為複雜的對象創建非常細緻的紋理。

在描述我們的方法之前,我們首先需要了解 3D 對象在屏幕上存儲和呈現的方式。對象的幾何形狀通常被保存為一組內部互聯的三角形,稱為三角形網格,或簡稱為網格。為了渲染逼真的模型,在網格上繪製紋理。紋理保存為通過使用所謂的 UV 映射應用於模型的圖像。網格中的每個頂點 ci 與紋理圖像中的(ui,vi)坐標相關聯。然後通過用圖像中由其頂點的(u,v)坐標界定的區域對每個三角形著色來渲染模型,即在屏幕上繪製。

創建 3D 對象紋理的一種簡單且天真的方式是以正常形式優化圖像,然後把它作為紋理繪製到對象上。然而,這種方法形成的紋理沒有考慮底層的 UV 映射,所以會在渲染對象中創建各種可視化工件。首先,接縫在渲染的紋理上是可見的,因為優化並不知道底層的 UV 映射,所以不會沿著紋理的分割塊一致地優化紋理。其次,所生成的圖案隨機地定向在對象的不同部分上(例如,參見垂直和擺動圖案),因為它們在底層 UV 映射中不一致的定向。最終生成的圖案不一致的縮放,因為 UV 映射不會在紋理中的三角形區域和它們的映射三角形之間強制執行一致的比例。

13:著名的斯坦福兔子 3D 模型。

你可以通過旋轉和縮放與模型進行交互。此外,你還可以將對象展開為其二維紋理樣式。此樣式展示了用於在紋理圖像中存儲紋理的 UV 貼圖。請注意基於渲染的優化紋理如何劃分為多個補丁,以便對對象進行完整且不失真的覆蓋。

我們採取不同的方法。不是直接優化紋理,而是通過 3D 對象的渲染來優化紋理,就像用戶最終會看到的那樣。下圖顯示了擬議管道的概述:

14:我們通過渲染過程反向傳播來優化紋理。這是可能的,因為我們知道渲染圖像中的像素如何與紋理中的像素相對應。

我們使用傅立葉參數化隨機初始化紋理來啟動該過程。在每次訓練迭代中,隨機攝像機位置進行採樣,其朝向指向對象的邊界框的中心,並且將紋理化對象渲染為圖像。然後,我們將所需目標函數的梯度,即神經網路中感興趣的特徵,反向傳播到渲染圖像。

但是,渲染圖像的更新並不對應於我們意圖優化的紋理的更新。因此需要進一步將更改操作傳播到對象的紋理上。我們知道屏幕上的每個像素在紋理中的坐標,通過應用反向 UV 映射可以輕鬆實現傳播。通過修改紋理,在以下優化迭代期間,渲染圖像將包含之前迭代中應用的更改記錄。

15:通過優化特徵可視化目標函數來生成紋理。紋理中的接縫幾乎不可見,圖案定向準確。

生成的紋理始終沿著切割邊進行優化,從而消除接縫並為渲染對象強制執行統一的定向。此外,由於對象的幾何形狀擺脫了功能優化限制,紋理的解析度可以是任意高的。在下一節中,我們將了解如何再次利用此框架來實現將藝術樣式轉移到對象的紋理上。

第六部分:通過 3D 渲染進行紋理風格遷移

現在我們已經建立的一個框架可用來實現 UV-mapped 紋理圖的高效反向傳遞,同樣我們也可以用它來進行 3D 物體的紋理風格遷移。與 2D 情況類似,我們主要是為了將用戶提供圖片的紋理風格遷移到其他物體上,下圖概述了遷移的過程。

16:內容目標主要是為了讓神經元在 3D 模型的隨機視圖上和原始紋理的同樣位置激活。

在每一次優化中,3D 模型都會從一個隨機角度用原始紋理和學習紋理進行渲染。

風格目標旨在創建類似於風格圖像的神經元激活模式而不考慮位置。

通過渲染過程的反向傳播,我們可以優化紋理。

該演算法的工作方式與上一節中介紹的演算法類似。從隨機初始化的紋理開始,在每次迭代中,我們採樣一個面向對象邊界框中心的隨機視圖,我們渲染它的兩個圖像:一個具有原始紋理風格的內容圖像,另一個具有我們當前優化的紋理風格的學習圖像。

在渲染內容圖像和學習圖像之後,我們針對由 Gatys 等人引入的風格遷移目標函數進行優化。然後我們將參數化的圖片映射回 UV-mapped 紋理圖,如上一節中介紹的那樣。然後迭代該過程,直到在目標紋理中獲得所需的內容和風格的目標紋理。

17:在 3D 模型上進行風格遷移時應注意,內容紋理中的可視物體(如眼睛)會在生成的紋理中正確顯示。

由於每個視圖都是獨立優化的,因此優化會被強制在每次迭代時嘗試添加所有風格元素。例如,如果我們使用梵高的「星夜」圖作為風格圖像,那麼每個視圖中都會被添加星星。我們發現通過引入先前視圖風格的「記憶」,可以獲得更令人滿意的結果,例如上面展示的。為此,我們在新採樣的視圖上使用來表示風格特徵的 Gram 矩陣的移動平均值與之前保持一致性。在每次優化迭代中,我們計算相對於那些平均矩陣的風格損失,而不是針對該特定視圖計算的風格損失。(我們在前向計算中使用 TensorFlow 的 tf.stop_gradient 方法的移動平均值去代替現在 Gram 矩陣,反向傳播中仍然使用 Gram 矩陣產生對應的梯度。另一種方法,例如所使用的方法,需要在每個步驟中採樣場景的多個視圖,從而增加內存需求。相比之下,我們的替換技巧可在單個消費級 GPU 上對高解析度 (>10M 像素) 圖像進行風格遷移。)

產生的紋理結合了所需樣式的元素,同時保留了原始紋理的特徵。以梵高的《星夜》作為風格圖像為例,由此產生的紋理包含了梵高作品中那種輕快有力的筆觸,而且產生的毛皮還有一個溫暖的橙色底色而不是風格圖像的主要冷色調,因為它保留了原始的紋理。更有趣的是,當不同的風格被遷移時,兔子的眼睛是被保存的狀態也是不同的。例如,當從梵高的畫作中獲得風格時,兔子眼睛就會像星星一樣的螺旋,而如果使用康定斯基的作品,眼睛就會變成抽象的圖案,但仍然與原來的眼睛相似。

18:3D 列印《The large one parades on red bottom》(Fernand Leger, 1953)的風格被 Greg Turk 和 Marc Levoy 遷移到《Stanford Bunny》。

該方法生成的紋理模型可方便地應用於流行的 3D 建模軟體或遊戲引擎中。為了證明這一點,我們使用全彩色的砂岩材料將其中一個設計作為真實世界的物理製品列印出來。

結論

對於創造性的藝術家或研究者來說,有很大的空間來對參數化圖像進行優化。這不僅可產生顯著不同的圖像結果,而且也打開了動畫和 3D 物體的創造大門。本文只是拋磚引玉,未來的發展將會更加廣闊。例如,我們還可以擴展 3D 物體紋理的優化方法用來優化材料或反射,甚至可以沿著 Kato 等的方向,優化網格頂點位置。

本文主要討論可微圖像參數化,因為它們很容易優化,並且涵蓋了廣泛的可能應用場景。當然 使用增強學習或進化策略,也可能優化不可微的圖像參數,或者是部分可微的。使用不可微參數化可以為圖像或場景生成提供更多的令人興奮的可能性。

原文鏈接:distill.pub/2018/differ

一個專註於

AI技術發展和AI工程師成長的求知求職社區

誕生啦!

歡迎大家訪問以下鏈接或者掃碼體驗

https://club.leiphone.com/page/home?

club.leiphone.com

club.leiphone.com/page/ (二維碼自動識別)


推薦閱讀:
相关文章