論文解讀:如何毫無違和感地把美隊盾牌放在羅馬士兵手中

論文解讀:如何毫無違和感地把美隊盾牌放在羅馬士兵手中

論文地址:arxiv.org/abs/1804.0318

論文代碼地址:github.com/luanfujun/de

0.先睹為快——人工智慧 P 圖竟然毫無違和感

下面這些圖片是人工智慧演算法 p 圖的結果,從左到右三張圖分別是原圖、新增元素、機器輸出結果:

1.引言——當羅馬士兵拿起美國隊長的盾牌

在日常生活中,p 個圖可能是一件很簡單的事,大部分時候只需要進行摳圖,然後複製粘貼即可,複雜一點的可能還需要進行其他的各種操作,這些操作使用 PS 基本都可以完成。但是如果我讓你給 p 一幅圖呢,你能做到嗎?想想都很有難度的樣子。不信我們舉一個例子,我們給下面這位勇猛的古代展示 p 個圖,讓他像美國隊長那般帥氣地拿個盾牌。

對於像我這樣一個不怎麼會 p 圖的人來說,就會複製粘貼,就會得到下圖(左)所示的結果,但是對於一些大神,他們可能會得到更好的結果,如右圖所示:

但是對於本文中的作者,大神中的大神,他得到的結果如下所示:

是不是毫無違和感?根本看不出來那個盾牌是後期 p 上的。點擊論文的代碼鏈接,訪問作者的 GitHub 網址,你會發現更多神奇的操作。下面我們簡單介紹一下作者是如何實現這種神奇的操作。

這裡給出兩幅大神操作圖,左邊的代表原圖,中間的代表直接複製粘貼的圖,右邊的代表處理之後的圖。

2.VGG 網路結構簡介

這篇論文所使用的神經網路,源於一種名為 VGG 的網路架構。

VGG 由牛津大學的 Visual Geometry Group 提出,故而得名。在正式介紹前,我們簡單的了解一下什麼是 VGG 網路及其網路架構。

VGG 網路是 ILSVRC 2014 年競賽的第二名,其 top-5 的準確率達到了 7.3%,第一名的 GoogleNet 的 top-5 的準確率打到了 7%。其網路結構總體來說與 LeNet 結構相同,但是有兩點重要的不同:

1、網路變得更深,達到了 16-19 層,這也反應了一個事實,那就是網路越深,其表達能力越強。

2、網路中只使用了小型的卷積核模板,主要使用的是 3*3 的卷積模板,沒出現像 AlexNet 中 11*11 那樣大的卷積模板。模板變小,意味著網路參數的減少。

VGG 網路結構如下圖所示:

上圖中展現了 A-E 幾種不同的 VGG 網路結構,可以看到其總體的結構都是: 卷積+池化+全鏈接。VGG-19(E 模型) 就是我們本文介紹的論文中所使用的神經網路結構。

3.神經網路 P 圖,已經做了多年

正所謂長江後浪推前浪(前浪死在沙灘上),本文作者能夠達到這樣一個高度,一部分是因為他站在了巨人的肩膀上。

本文中使用的技術叫做:深度繪畫協調(Deep Painterly Harmonization),這也是這篇文章的標題。在過去的二十年里,圖像協調技術(Image Harmonization)一直在快速的發展,我們可以將其理解為:將多張圖片毫無違和感地拼接在一起。但是以往主要的手段都是研究人員,自己設定一個或者多個統計參數,例如:圖片的亮度,圖片的色溫,圖片的直方圖特徵等等,通過一定的手段使得不同圖片中的參數結果盡量相同,從而達到了將圖片「完美」拼接的目的。但是結果顯然不盡如人意。為什麼呢?

1、不同的圖像風格可能對應不同的統計量,沒有普適性,適用於這樣風格圖像的統計量可能並不適用於另一風格的圖像。

2、統計量可以理解為全局特徵,它反映的是整幅圖片的風格。但是我們拼接的過程中,可能更注重的是拼接處的局部特徵。

從 2012 年起,神經網路在圖像分類和處理領域大放光彩,各種各樣的神經網路架構脫穎而出,為整個圖像領域注入了新鮮的血液。很多以前不能處理或者處理不好的領域,神經網路都展現了其強大的能力,特別是圖像的識別領域。

在 2016 年 CVPR 會議上,Gatys 等大神就提出了使用神經網路來進行對圖像進行風格轉移,將一副圖像的風格轉移到另一幅圖像上。正所謂,無圖無真相,大家可以看看下面的結果圖:

A 圖是原圖, B, C, D 分別是處理後的圖像,每一幅圖的左下角的圖片,是我們欲學習的風格圖。

4.核心技術:兩步實現畫面協調

結合 Gatys 的工作和其他研究人員的奮鬥結果,為了實現基於繪畫的 PS 神技,本文作者創造性的提出了「兩步走」的戰略思想。你可能要問,為什麼要分兩步呢?我個人猜測作者的靈感來自我國社會主義現代化建設「三步走」的戰略(瞎猜的~)。當然,作者並不承認,作者的解釋是因為一步走效果不好,所以就兩步走了唄。

1、先產生一個中間結果,這個中間結果的效果比較比較接近最終目標,主要是在繪畫的風格進行修改,使得我們想要粘貼的的圖像的風格與原畫相似。在這一步,主要的任務是風格的相似,不過於注重細節,從而使得整個網路結構具有更強的魯棒性,對不同的風格圖像都能進行相應的處理。

2、基於第一步的中間結果,我們進一步修改圖片的質量,使得圖片在視覺上效果更佳。在這一步中,我們更佳注重局部紋理信息。

上述兩步可以使用如下的偽代碼表示(摘自原文):

其中:

I 為輸入圖像,例如美國隊長的盾牌;

S 為我們風格畫作,例如那個勇士;

M 是模板,用來控制生成圖片時, 每一個像素點應該由其周圍的幾個像素點構成,相當於起到一個局部化的作用。

我們通過一步處理,得到一個中間結果 I ,然後在經過進一步的處理,得到最終的輸出結果O

其中 SinglePassHarmonization 的實現邏輯如下:

其中 ComputeNeuralActivations(I) 代表了當輸入時 I 的時候, VGG 網路的輸出。此輸出並不是指 VGG 網路最後通過全鏈接網路的輸出,而是指每一層卷積得到的特徵圖。通過輸入圖像的特徵圖與風格圖像的特徵圖,我們對其進行匹配,然後重構出一張輸出圖片。

5.第一步: 粗協調

這一步的目的正如上述所說,用於對我們的輸入圖片 I 進行分風格上的改變,是指更加接近於我們的風格圖像 S。如何做到這一點呢? 本文中使用的就是我們前面介紹的 VGG 網路。網路每個卷積層的輸入都以代表原始圖像的特徵。

上圖代表了 VGG 網路中的卷積層與 pool 層結構,對應於第二節 VGG 網路結構中的 E 結構。前兩層的結構中,每一層有兩個卷積層,例如 conv1_2 代表第一層卷積的第二層; conv2_1 則代表了第二層卷積的第一層。後面三層結構中,每一層都有四層卷積。例如 conv4_2 代表了第四層卷積的第二層。

在我們對輸入圖像 I 和風格圖像 S 分別經過神經網路得到 F(I)F(S) 之後,如上一節的演算法2所示,我們對其進行匹配,匹配的演算法過程如下所示:

對於F(I) 中的每一層的每一個像素點,我們都會建立一個 P(l,p) 的映射關係,將其對應到每一層的 F(S) ,然後得到最終的映射關係 P。通過此映射關係,並基於 Gram 矩陣和 Gatys 損失函數我們可以重新構建出粗協調後的圖像。

Gatys 損失函數的計算公式如下:

其中:

L 代表總共有多少卷積層;Nl 代表了第 l 層的卷積核個數;Dl 代表了在第 l 層有多少激活值;Fl[~] 是一個矩陣,其 (i,p) 位置的元素代表了第 l 層中,第 i 個卷積核中的第 p 個激活值;Gl = Fl Fl.T 代表了 Gram 矩陣。

第一列圖像就是我們直接複製粘貼的結果,第二列圖像是通過第一步粗協調後得到的結果,可以看到,雖然存在一些細節問題,但是整體的畫風已經轉變過來了。下面第二步,其主要任務就是解決這些線條不流暢,存起離群像素點問題,從而使得整體的視覺效果更佳。

6.第二步:優化改進

第二步中,我們同樣要進行匹配,方法基本與演算法 3 中所示的一致,唯一的不同之處在於,我們並不是對 F(I) 的所有層都進行匹配,我們只選擇一層,我們選擇第 lref,我們對這一層的特徵圖進行一個匹配,最終得到一個匹配關係 P(lref, p) 接下來對此單層的匹配關係進行記憶不得處理,刪除離群點,使得圖像的在空間上更加具有一致性。之後呢,就把從這一層得到的匹配關係,賦值給其他各層,得到最終的 P(l, p)

在得到此映射關係後,我們需要重構出輸出圖像。因為我們映射關係的 P(l, p) 的獲取方法與第一步有所不同,所以其對應的 Gatys 損失函數也有所不同,除此之外,我們還需加上其他兩項損失函數,來構造我們最終的損失函數,如下所示:

其中: ?

? 代表變形後的 Gatys 損失函數。 ?

?代表了由於圖像模糊帶來的損失, ?

? 代表了直方圖損失。

現在,問題來了,我們應該選擇第幾層的特徵圖片呢?在實際中可以根據自己的情況而定。在本文中,作者對比了不同層得到的結果,最終選擇的是 conv4_1。

7.後續處理

雖然上述的「兩步走」戰略思想已經非常的成功了,我們人眼看上去看不出來很大的瑕疵,但是一件精美的藝術品是要經得住推敲的,當我仔細查看我們所得到的圖片後,還是有很多細節值得改善的。

色度去噪 Chrominance Denoising

試驗中發現,一些高頻的雜訊點會對色彩空間的影響較大,但是對圖像的亮度卻沒有很大的影響。於是花,很自然的一種想法就是轉換顏色空間,將 RGB 顏色空間轉化為 Lab 顏色空間,然後對 a 方向和 b 方向進行濾波處理。這種方法可以處理一下較小的離群點,但是對於較大的離群點,沒辦法濾除。

塊化合成 Patch Synthesis

在之前的每一步最後的圖像重建過程中,我們是將所得的所有塊化圖像,相加平均,但是這樣做的話很容易將圖像的細節變得模糊。我們想的變法就是將沒一個塊化圖像都分為卡通部分(低頻信息)和紋理部分(高頻信息)。然後我們只對卡通部分就行相加平均,得到的結果在加上紋理部分,即我們對紋理部分不進行平均,最終得到的結果,其細節部分將不會被模糊掉。

8.小結

在本篇文章中我們介紹了一種適用於繪畫的「PS 技術」。主要的流程分為兩步,第一步,首先將我們將繪畫風格應用到我們的輸入圖像中,是指與繪畫圖像大致一致。在第二步中,我們更佳關注於細節的信息,對選擇單一的一層特徵圖像,進行去噪處理,使得圖像的整體視覺效果更佳理想。

最後,讓我們一起來欣賞幾幅機器 P 出的圖:


關注集智AI學園公眾號

獲取更多更有趣的AI教程吧!

搜索微信公眾號:swarm

AI集智AI學園QQ群:426390994

學園網站:campus.swarma.org

weixin.qq.com/r/FzpGXp3 (二維碼自動識別)

商務合作|zhangqian@swarma.org

投稿轉載|wangjiannan@swarma.org


推薦閱讀:

Hulu機器學習問題與解答系列 | 十二:注意力機制
驍龍845全新AI架構,三倍AI性能提升
埃森哲與Infosys重磅報告:AI落地成果已出,仍無所作為將被踢出局
史上最全DL Beyond CS 論文列表
《SEGAN: Speech Enhancement Generative Adversarial Network》閱讀筆記

TAG:深度學習DeepLearning | 人工智慧 | 生成對抗網路GAN |