當前位置:
首頁 > 新聞 > Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

選自Distill,作者:Alexander Mordvintsev等,機器之心編譯。


近日,期刊平台 Distill 發布了谷歌研究人員的一篇文章,介紹一個適用於神經網路可視化和風格遷移的強大工具:可微圖像參數化。這篇文章從多個方面介紹了該工具,機器之心選取部分內容進行了編譯介紹。

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

圖像分類神經網路擁有卓越的圖像生成能力。DeepDream [1]、風格遷移 [2] 和特徵可視化 [3] 等技術利用這種能力作為探索神經網路內部原理的強大工具,並基於神經網路把藝術創作推進了一小步。

所有這些技術基本上以相同的方式工作。計算機視覺領域使用的神經網路擁有圖像的豐富內部表徵。我們可以使用該表徵描述我們希望圖像具備的特性(如風格),然後優化圖像使其具備這些特性。這種優化是可能的,因為網路對於輸入是可微的:我們可以輕微調整圖像以更好地擬合期望特性,然後迭代地在梯度下降中應用這種微調。

通常,我們將輸入圖像參數化為每個像素的 RGB 值,但這不是唯一的方式。由於從參數到圖像的映射是可微的,我們仍然可以用梯度下降來優化可替代的參數設定。

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

圖 1:當圖像參數化可微的時候,我們就可以對其使用反向傳播(橙色箭頭)來優化。

為什麼參數化很重要?

這可能令人驚訝,即改變優化問題的參數設定可以如此顯著地改變結果,儘管實際被優化的目標函數仍然是相同的形式。為什麼參數設定的選擇有如此顯著的效果?原因如下:

(1)改善優化:轉換輸入使優化問題更簡單,這是一種被稱為「預處理」的技術,是優化過程的重要部分。我們發現參數設定的簡單變化就可以使圖像優化變得更加簡單。

(2)引力盆地:當我們優化神經網路的輸入時,通常有很多不同的解,對應不同的局部極小值。優化過程落入某個局部極小值是由其引力盆地(即在極小值影響下的優化曲面區域)控制的。改變優化問題的參數設定可以改變不同引力盆地的大小,影響可能的結果。

(3)附加約束:某些參數設定僅覆蓋可能輸入的子集,而不是整個空間。在這種參數設定下的優化器仍然尋找最小化或最大化目標函數的解,但它們需要服從參數設定的約束。通過選擇正確的約束集,我們可以施加多種約束,從簡單的約束(例如,圖像邊界必須是黑色的)到複雜而精細的約束。

(4)暗含地優化其它目標函數:參數化可能內在地使用一種和輸出不同的目標函數,並對其進行優化。例如,當視覺網路的輸入是一張 RGB 圖像時,我們可以參數化那張圖像為一個 3D 物體渲染圖,並在渲染過程中使用反向傳播以進行優化。由於 3D 物體比圖像具有更多的自由度,我們通常使用隨機參數化,它能生成從不同視角渲染的圖像。

在文章接下來的部分中,我們將給出幾個示例,證明使用上述方法的有效性,它們帶來了令人驚訝和有趣的視覺結果。

對齊特徵可視化解釋

相關 colab 頁面:https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/differentiable-parameterizations/aligned_interpolation.ipynb

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

當我們希望真正地理解兩個神經元之間的相互作用時,我們可以更進一步並創建多個可視化,逐漸把目標函數從優化一個神經元轉移到給另一個激活神經元賦予更多的權重。這在某種程度上和生成模型(如 GAN)的潛在空間插值相似。

儘管如此,仍然存在一些小問題:特徵可視化是隨機的。即使你優化的是同一個物體,其每一次的可視化圖也是不同的。一般而言,這不是什麼問題,但它確實阻礙了插值可視化。如果就這樣處理,得到的可視化將是非對齊的:視覺關鍵點(例如眼睛)將出現在每張圖像的不同位置。在稍微不同的物體中,缺乏對齊將更難識別差異,因為差異被更明顯的圖式差異掩蓋了。

如果我們觀察插值幀的動畫演示,就可以看到獨立優化存在的問題:

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

圖 2:(1、3 行)非對齊插值:視覺關鍵點(例如眼睛)從一幀到下一幀的位置會改變。(2、4 行)不同的幀更容易比較,因為視覺關鍵點在相同位置。

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

圖 3:(頂行)從獨立參數化的幀開始;(中行)然後每個幀結合單個共享參數設定;(底行)創建一個視覺對齊的神經元插值。

通過在幀之間部分共享一個參數設定,我們促進可視化結果自然地對齊。直覺上,共享參數設定提供了視覺關鍵點位移的一個共同參照,但是單獨的參數設定基於插值權重賦予每個幀自己的視覺效果。這種參數設定並沒有改變目標函數,但確實放大了引力盆地(其中可視化是對齊的)。

這是可微參數化在可視化神經網路中作為有用輔助工具的第一個示例。

通過 3D 渲染進行紋理風格遷移

相關 colab 頁面:https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/differentiable-parameterizations/style_transfer_3d.ipynb

現在我們已經構造了一個高效反向傳播到 UV 映射紋理的框架,該框架可用於調整現有風格遷移技術來適應 3D 物體。與 2D 情況類似,我們的目標是用用戶提供圖像的風格進行原始物體紋理的再繪製。下圖是該方法的概述:

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

該演算法開始於隨機初始化紋理。在每次迭代中,我們採樣出一個指向物體邊界框中心的隨機視點,並渲染它的兩個圖像:一個是有原始紋理的內容圖像(content image),另一個是有當前優化紋理的學習圖像(learned image)。

在對內容圖像和學習圖像進行渲染後,我們對 Gatys 等人 [2] 的風格遷移目標函數進行了優化,並將參數化映射回 UV 映射紋理中。重複該過程,直到在目標紋理中實現期望的內容與風格融合。

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

圖 17:各類 3D 模型的風格遷移。注意:內容紋理中的視覺關鍵點(如眼睛)在生成紋理中正確地顯示出來。

因為每個視圖都是獨立優化的,所以在每次迭代中優化都要把該風格的所有元素融合進去。例如,如果選擇梵高的《星夜》作為風格圖像,那每個單視圖都會加上星星。我們發現,引入先前視圖風格的「記憶」會獲得更好的結果,如上圖所示。為此,我們在近期採樣視點上維持表徵風格的 Gram 矩陣的滑動平均不變。在每次優化迭代時,我們根據平均矩陣來計算風格損失,而不是基於特定視圖計算。

最終紋理結合了期望風格的元素,同時保持了原始紋理的特徵。譬如將梵高的《星夜》作為風格圖像的模型,其最終紋理就包含了梵高作品中輕快有力的筆觸風格。然而,儘管風格圖像是冷色調的,最終照片里的皮毛還是保持了原始紋理的暖橙色調。更有趣的是風格遷移時兔子眼睛的處理方式。例如,當風格來自梵高的畫作,那兔子的眼睛會像星星一樣旋轉,而如果是康定斯基的作品,兔子眼睛就會變成抽象圖案,但仍然類似原始眼睛。

Distill詳述「可微圖像參數化」:神經網路可視化和風格遷移利器

圖 18:將立體派畫家費爾南·萊熱的畫作 The large one parades on red bottom (Fernand Leger, 1953) 的風格遷移到 Stanford Bunny(Greg Turk & Marc Levoy)上的 3D 列印結果。

結論

對於充滿創造力的藝術家或研究者來說,對參數化圖像進行優化還有很大的空間。這不僅生成了截然不同的圖像結果,還可以生成動畫和 3D 圖像。我們認為本文探討的可能性只觸及了皮毛。例如,你可以將對 3D 物體紋理進行優化擴展到對材料或反射率的優化,甚至可以沿著 Kato 等人 [15] 的方向,繼續優化 mesh 頂點位置。

本文主要討論了可微圖像參數化,因為它們易於優化且涵蓋了大多應用程序。當然,通過強化學習或進化策略 [17, 18] 來優化不可微或部分可微的圖像參數化也是能夠實現的。使用不可微參數化實現圖像或場景生成也很令人期待。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

實時評估世界盃球員的正確姿勢:FAIR今日開源DensePose
Yoshua Bengio談邁向硬體友好的深度學習

TAG:機器之心 |