近日,期刊平臺 Distill 發(fā)布了谷歌研究人員的一篇文章,,介紹一個適用于神經(jīng)網(wǎng)絡(luò)可視化和風(fēng)格遷移的強(qiáng)大工具:可微圖像參數(shù)化。這篇文章從多個方面介紹了該工具,,機(jī)器之心選取部分內(nèi)容進(jìn)行了編譯介紹,。
圖像分類神經(jīng)網(wǎng)絡(luò)擁有卓越的圖像生成能力。DeepDream [1],、風(fēng)格遷移 [2] 和特征可視化 [3] 等技術(shù)利用這種能力作為探索神經(jīng)網(wǎng)絡(luò)內(nèi)部原理的強(qiáng)大工具,,并基于神經(jīng)網(wǎng)絡(luò)把藝術(shù)創(chuàng)作推進(jìn)了一小步。
所有這些技術(shù)基本上以相同的方式工作,。計(jì)算機(jī)視覺領(lǐng)域使用的神經(jīng)網(wǎng)絡(luò)擁有圖像的豐富內(nèi)部表征,。我們可以使用該表征描述我們希望圖像具備的特性(如風(fēng)格),然后優(yōu)化圖像使其具備這些特性,。這種優(yōu)化是可能的,,因?yàn)榫W(wǎng)絡(luò)對于輸入是可微的:我們可以輕微調(diào)整圖像以更好地擬合期望特性,然后迭代地在梯度下降中應(yīng)用這種微調(diào),。
通常,,我們將輸入圖像參數(shù)化為每個像素的 RGB 值,但這不是唯一的方式,。由于從參數(shù)到圖像的映射是可微的,,我們?nèi)匀豢梢杂锰荻认陆祦韮?yōu)化可替代的參數(shù)設(shè)定。
圖 1:當(dāng)圖像參數(shù)化可微的時候,,我們就可以對其使用反向傳播(橙色箭頭)來優(yōu)化,。
為什么參數(shù)化很重要,?
這可能令人驚訝,即改變優(yōu)化問題的參數(shù)設(shè)定可以如此顯著地改變結(jié)果,,盡管實(shí)際被優(yōu)化的目標(biāo)函數(shù)仍然是相同的形式,。為什么參數(shù)設(shè)定的選擇有如此顯著的效果?原因如下:
(1)改善優(yōu)化:轉(zhuǎn)換輸入使優(yōu)化問題更簡單,,這是一種被稱為「預(yù)處理」的技術(shù),,是優(yōu)化過程的重要部分。我們發(fā)現(xiàn)參數(shù)設(shè)定的簡單變化就可以使圖像優(yōu)化變得更加簡單,。
(2)引力盆地:當(dāng)我們優(yōu)化神經(jīng)網(wǎng)絡(luò)的輸入時,,通常有很多不同的解,對應(yīng)不同的局部極小值,。優(yōu)化過程落入某個局部極小值是由其引力盆地(即在極小值影響下的優(yōu)化曲面區(qū)域)控制的,。改變優(yōu)化問題的參數(shù)設(shè)定可以改變不同引力盆地的大小,影響可能的結(jié)果,。
(3)附加約束:某些參數(shù)設(shè)定僅覆蓋可能輸入的子集,,而不是整個空間。在這種參數(shù)設(shè)定下的優(yōu)化器仍然尋找最小化或最大化目標(biāo)函數(shù)的解,,但它們需要服從參數(shù)設(shè)定的約束,。通過選擇正確的約束集,我們可以施加多種約束,,從簡單的約束(例如,,圖像邊界必須是黑色的)到復(fù)雜而精細(xì)的約束。
(4)暗含地優(yōu)化其它目標(biāo)函數(shù):參數(shù)化可能內(nèi)在地使用一種和輸出不同的目標(biāo)函數(shù),,并對其進(jìn)行優(yōu)化,。例如,當(dāng)視覺網(wǎng)絡(luò)的輸入是一張 RGB 圖像時,,我們可以參數(shù)化那張圖像為一個 3D 物體渲染圖,,并在渲染過程中使用反向傳播以進(jìn)行優(yōu)化。由于 3D 物體比圖像具有更多的自由度,,我們通常使用隨機(jī)參數(shù)化,,它能生成從不同視角渲染的圖像。
在文章接下來的部分中,,我們將給出幾個示例,,證明使用上述方法的有效性,它們帶來了令人驚訝和有趣的視覺結(jié)果,。
對齊特征可視化解釋
相關(guān) colab 頁面:https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/differentiable-parameterizations/aligned_interpolation.ipynb
特征可視化最常用于可視化單個神經(jīng)元,,但它也可用來可視化神經(jīng)元組合,以研究它們?nèi)绾蜗嗷プ饔?[3],。這時不是優(yōu)化一張圖像來激活單個神經(jīng)元,,而是優(yōu)化它來激活多個神經(jīng)元,。
當(dāng)我們希望真正地理解兩個神經(jīng)元之間的相互作用時,我們可以更進(jìn)一步并創(chuàng)建多個可視化,,逐漸把目標(biāo)函數(shù)從優(yōu)化一個神經(jīng)元轉(zhuǎn)移到給另一個激活神經(jīng)元賦予更多的權(quán)重,。這在某種程度上和生成模型(如 GAN)的潛在空間插值相似。
盡管如此,,仍然存在一些小問題:特征可視化是隨機(jī)的。即使你優(yōu)化的是同一個物體,,其每一次的可視化圖也是不同的,。一般而言,這不是什么問題,,但它確實(shí)阻礙了插值可視化,。如果就這樣處理,得到的可視化將是非對齊的:視覺關(guān)鍵點(diǎn)(例如眼睛)將出現(xiàn)在每張圖像的不同位置,。在稍微不同的物體中,,缺乏對齊將更難識別差異,因?yàn)椴町惐桓黠@的圖式差異掩蓋了,。
如果我們觀察插值幀的動畫演示,,就可以看到獨(dú)立優(yōu)化存在的問題:
圖 2:(1、3 行)非對齊插值:視覺關(guān)鍵點(diǎn)(例如眼睛)從一幀到下一幀的位置會改變,。(2,、4 行)不同的幀更容易比較,因?yàn)橐曈X關(guān)鍵點(diǎn)在相同位置,。
圖 3:(頂行)從獨(dú)立參數(shù)化的幀開始,;(中行)然后每個幀結(jié)合單個共享參數(shù)設(shè)定;(底行)創(chuàng)建一個視覺對齊的神經(jīng)元插值,。
通過在幀之間部分共享一個參數(shù)設(shè)定,,我們促進(jìn)可視化結(jié)果自然地對齊。直覺上,,共享參數(shù)設(shè)定提供了視覺關(guān)鍵點(diǎn)位移的一個共同參照,,但是單獨(dú)的參數(shù)設(shè)定基于插值權(quán)重賦予每個幀自己的視覺效果。這種參數(shù)設(shè)定并沒有改變目標(biāo)函數(shù),,但確實(shí)放大了引力盆地(其中可視化是對齊的),。
這是可微參數(shù)化在可視化神經(jīng)網(wǎng)絡(luò)中作為有用輔助工具的第一個示例。
通過 3D 渲染進(jìn)行紋理風(fēng)格遷移
相關(guān) colab 頁面:https://colab.research.google.com/github/tensorflow/lucid/blob/master/notebooks/differentiable-parameterizations/style_transfer_3d.ipynb
現(xiàn)在我們已經(jīng)構(gòu)造了一個高效反向傳播到 UV 映射紋理的框架,,該框架可用于調(diào)整現(xiàn)有風(fēng)格遷移技術(shù)來適應(yīng) 3D 物體,。與 2D 情況類似,我們的目標(biāo)是用用戶提供圖像的風(fēng)格進(jìn)行原始物體紋理的再繪制,。下圖是該方法的概述:
該算法開始于隨機(jī)初始化紋理,。在每次迭代中,,我們采樣出一個指向物體邊界框中心的隨機(jī)視點(diǎn),并渲染它的兩個圖像:一個是有原始紋理的內(nèi)容圖像(content image),,另一個是有當(dāng)前優(yōu)化紋理的學(xué)習(xí)圖像(learned image),。
在對內(nèi)容圖像和學(xué)習(xí)圖像進(jìn)行渲染后,我們對 Gatys 等人 [2] 的風(fēng)格遷移目標(biāo)函數(shù)進(jìn)行了優(yōu)化,,并將參數(shù)化映射回 UV 映射紋理中,。重復(fù)該過程,直到在目標(biāo)紋理中實(shí)現(xiàn)期望的內(nèi)容與風(fēng)格融合,。
圖 17:各類 3D 模型的風(fēng)格遷移,。注意:內(nèi)容紋理中的視覺關(guān)鍵點(diǎn)(如眼睛)在生成紋理中正確地顯示出來。
因?yàn)槊總€視圖都是獨(dú)立優(yōu)化的,,所以在每次迭代中優(yōu)化都要把該風(fēng)格的所有元素融合進(jìn)去,。例如,如果選擇梵高的《星夜》作為風(fēng)格圖像,,那每個單視圖都會加上星星,。我們發(fā)現(xiàn),引入先前視圖風(fēng)格的「記憶」會獲得更好的結(jié)果,,如上圖所示,。為此,我們在近期采樣視點(diǎn)上維持表征風(fēng)格的 Gram 矩陣的滑動平均不變,。在每次優(yōu)化迭代時,,我們根據(jù)平均矩陣來計(jì)算風(fēng)格損失,而不是基于特定視圖計(jì)算,。
最終紋理結(jié)合了期望風(fēng)格的元素,,同時保持了原始紋理的特征。譬如將梵高的《星夜》作為風(fēng)格圖像的模型,,其最終紋理就包含了梵高作品中輕快有力的筆觸風(fēng)格,。然而,盡管風(fēng)格圖像是冷色調(diào)的,,最終照片里的皮毛還是保持了原始紋理的暖橙色調(diào),。更有趣的是風(fēng)格遷移時兔子眼睛的處理方式。例如,,當(dāng)風(fēng)格來自梵高的畫作,,那兔子的眼睛會像星星一樣旋轉(zhuǎn),而如果是康定斯基的作品,,兔子眼睛就會變成抽象圖案,,但仍然類似原始眼睛。
圖 18:將立體派畫家費(fèi)爾南·萊熱的畫作 The large one parades on red bottom (Fernand Leger, 1953) 的風(fēng)格遷移到 Stanford Bunny(Greg Turk & Marc Levoy)上的 3D 打印結(jié)果,。
結(jié)論
對于充滿創(chuàng)造力的藝術(shù)家或研究者來說,,對參數(shù)化圖像進(jìn)行優(yōu)化還有很大的空間,。這不僅生成了截然不同的圖像結(jié)果,還可以生成動畫和 3D 圖像,。我們認(rèn)為本文探討的可能性只觸及了皮毛,。例如,你可以將對 3D 物體紋理進(jìn)行優(yōu)化擴(kuò)展到對材料或反射率的優(yōu)化,,甚至可以沿著 Kato 等人 [15] 的方向,,繼續(xù)優(yōu)化 mesh 頂點(diǎn)位置。
本文主要討論了可微圖像參數(shù)化,,因?yàn)樗鼈円子趦?yōu)化且涵蓋了大多應(yīng)用程序,。當(dāng)然,通過強(qiáng)化學(xué)習(xí)或進(jìn)化策略 [17, 18] 來優(yōu)化不可微或部分可微的圖像參數(shù)化也是能夠?qū)崿F(xiàn)的,。使用不可微參數(shù)化實(shí)現(xiàn)圖像或場景生成也很令人期待,。