感知損失 Perceptual Losses

2021-08-03 12:09:18 字數 1802 閱讀 4958

本文是參考文獻[1]的筆記。該**是li fei-fei名下的**。

最近新出的影象風格轉換

演算法,雖然效果好,但對於每一張要生成的,都需要初始化,然後保持cnn的引數不變,反向傳播更新影象,得到最後的結果。效能問題堪憂。

但是影象風格轉換演算法的成功,在生成影象領域,產生了乙個非常重要的idea,那就是可以將卷積神經網路提取出的feature,作為目標函式的一部分,通過比較待生成的經過cnn的feature值與目標經過cnn的feature值,使得待生成的與目標在語義上更加相似(相對於pixel級別的損失函式)。

影象風格轉換演算法將生成以生成的方式進行處理,如風格轉換,是從一張噪音圖(相當於白板)中得到一張結果圖,具有a的內容和b的風格。而perceptual losses則是將生成問題看做是變換問題。即生成影象是從內容圖中變化得到。

影象風格轉換是針對待生成的影象進行求導,cnn的反向傳播由於引數眾多,是非常慢的,同樣利用卷積神經網路的feature產生的loss,訓練了乙個神經網路,將內容輸入進去,可以直接輸出轉換風格後的影象。而將低解析度的影象輸入進去,可以得到高解析度的影象。因為只進行一次網路的前向計算,速度非常快,可以達到實時的效果。

下面這個網路圖是**的精華所在。圖中將網路分為transform網路和loss網路兩種,在使用中,transform網路用來對影象進行轉換,它的引數是變化的,而loss網路,則保持引數不變,transform的結果圖,風格圖和內容圖都通過loss net得到每一層的feature啟用值,並以之進行loss計算。

在風格轉換上,輸入x=yc是內容。而在高畫質化上,x是低解析度,內容是高解析度,風格未曾使用。

網路細節的設計大體遵循dcgan中的設計思路:

確切的網路引數值請參考文獻2。

對於風格轉換來說,使用2個stride=2的卷積層來做downsample,每個卷積層後面跟著若干個residual blocks。然後跟著兩個stride=1/2的卷積層來做upsample。雖然輸入和輸出相同,但是這樣有兩個優點: 

殘差連線可以幫助網路學習到identify function,而生成模型也要求結果影象和生成影象共享某些結構,因而,殘差連線對生成模型正好對應得上。

同影象風格轉換演算法類似,**定義了兩種損失函式。其中,損失網路都使用在imagenet上訓練好的vgg net,使用φ來表示損失網路。

使用不同層的重建效果如下:

對於風格重建的損失函式,首先要先計算gram矩陣,

產生的feature_map的大小為cjhjwj,可以看成是cj個特徵,這些特徵兩兩之間的內積的計算方式如上。

兩張,在loss網路的每一層都求出gram矩陣,然後對應層之間計算歐式距離,最後將不同層的歐氏距離相加,得到最後的風格損失。

不同層的風格重建效果如下: 

在影象風格轉換任務上,針對不同解析度的影象,loss值在perceptual loss(ours)和影象風格轉換([10])以及內容上的。

可以看到,使用perceptual loss相當於原始演算法迭代50到100次。

而就時間來看:

可以提公升幾百倍,在gpu上0.0015s可以達到相當的效果,在cpu上更具實用性。

雖然風格轉換是在256的上訓練的,但也可以應用到其他size上,比如512的

4倍清晰度提公升:

8倍清晰度提公升:

貢獻當然就是影象風格轉換的實用化:

perceptual losses for real-time style transfer and super-resolution.

perceptual losses for real-time style transfer and super-resolution: supplementary material

感知損失函式

引入 最近新出的影象風格轉換演算法,雖然效果好,但對於每一張要生成的,都需要初始化,然後保持cnn的引數不變,反向傳播更新影象,得到最後的結果。效能問題堪憂。但是影象風格轉換演算法的成功,在生成影象領域,產生了乙個非常重要的idea,那就是可以將卷積神經網路提取出的feature,作為目標函式的一部...

損失函式 損失函式 Hinge

本文討論hinge損失函式,該函式是機器學習中常用的損失函式之一。在機器學習中,hinge loss是一種損失函式,它通常用於 maximum margin 的分類任務中,如支援向量機。數學表示式為 其中 表示 輸出,通常都是軟結果 就是說輸出不是0,1這種,可能是0.87。表示正確的類別。其函式影...

tf 損失函式 TensorFlow裡面損失函式

2 交叉熵 交叉熵 crossentropy 也是loss演算法的一種,一般用在分類問題上,表達的意識為 輸入樣本屬於某一類的概率 其表示式如下,其中y代表真實值分類 0或1 a代表 值。在tensorflow中常見的交叉熵函式有 sigmoid交叉熵 softmax交叉熵 sparse交叉熵 加權...