1. 程式人生 > >專案實訓(十九)A Neural Algorithm of Artistic Style 閱讀(二)

專案實訓(十九)A Neural Algorithm of Artistic Style 閱讀(二)

對於content loss來說,因為VGG結構能夠提取圖片的高層圖片,在generated image 和 content image之間通過已經訓練好的VGG網路取CONV4_2層的feature map輸出,利用最小平方差來計算二者的距離,

雖然公式裡面有一個1/2,是為了之後求導x^2之後形式上的方便。有沒有都沒有所謂。

而對於style loss來說,Gram矩陣的使用很有研究的必要。重建style,是根據不同filter得到的啟用值之間的相關性來重建的,因為style在影象中的表現就是紋理特徵,即是畫素之間的相關性。所以再把i,j層的feature map轉換成向量形式後做內積就可以得到Gram矩陣。

其實Gram矩陣就是協方差矩陣換了個名字,Gatys的幾篇論文其實沒有解釋為什麼用Gram矩陣,因為給不了證明。

如果用協方差(也就是Gram矩陣)來進行約束隱藏層特徵的話,重建出來的特徵雖然有些會保持,但是有些可能位置會打散。比如最右側的一張圖,人還是人,但是重建出來相當於“拼圖”效果了。這是因為協方差本身就是去除了位置資訊。 那麼既然協方差可以用於紋理生成,那麼如果我們加上 “讓生成圖的隱藏層特徵與原圖儘量一樣,另一方面讓生成圖的打散特徵與畫的打散特徵儘量相似”,這就是用神經網路做風格轉換的最初想法。這也比較符合“風格”的定義,畢竟風格不應該具有位置資訊,一種風格應該是與位置無關的。

我個人覺得Gram這個矩陣的研究意義還是很大的。

四、文章核心

1、使用現成的識別網路,提取影象的不同層級的特徵。如文章中自己提到的那樣,這項工作的最關鍵的一點就是能夠把content image,style image在高層次上分開來。說明識別這項任務看似到最後使用一個全連線層做的是分類任務,但是其實在卷積的過程中包括了很多豐富的資訊。

2、高層次相應可以描述文章的內容

3、使用梯度下降方法調整輸入響應,在特定層次獲得特定的相應。

五、實驗結果分析

上圖是對於同一張街景圖下,多個風格的轉換。可以看到這篇文章的一個致命缺點,就是速度很慢。因為是對輸入影象就進行調整,所以沒生成一張影象就要重新進行訓練,雖然現在可以多個GPU訓練,但是也不可能在幾秒中之內得到結果。所以之後會不斷地出現文章在速度方面的追求。很直觀的理解就是訓練好網路以後,通過前饋神經網路直接生成圖片。

上圖是在不同引數情況下的結果。

從左到右,α/β的比值逐漸增大,從損失函式中可以看出,content loss的權重逐漸增大,而style loss的權重逐漸減小,在生成影象的過程中,會更傾向於保持content image的內容,所以可以看到,每一行的最後一張的原圖資訊最為明顯。

從豎直方向看,風格誤差包含較高的卷積層如CONV5_1反而會有更好的視覺效果,更加平滑。我個人人為的原因是,若使用低層次的卷積層提取紋理資訊,style image的細節會很突出,邊緣等的變化也會非常明顯,會給人的視覺上造成較為突出的感覺,自然會感覺不夠舒服、不夠真實。

最終達到的效果如下圖:

六、總結

總體而言,文章很厲害,能夠敏銳的發覺到這個領域,開山之作。但是還是有不足之處。在arxiv上的文章前半篇都不太有乾貨,一直在講虛的東西,稍微也有一些誇大文章的作用。而速度太慢也是這篇文章的一個致命缺點,所以接下來,會對另一篇real-time的文章進行學習。