這篇論文是因爲公司最近在搞超分辨相關的項目的時候,需要參考的一篇論文,覺得思路和自己之前的某些思路比較像,所以就整理下對這篇論文的理解,同時也是第一次試試自己寫這種理論性(可能吧)的文章
要解決的問題
圖像超分辨一般是爲了解決圖像放大時細節缺失的問題,例如採用最近領方法放大圖像時會產生馬賽克效果,雙線性插值放大後的圖像看着像是被高斯模糊了,超分辨則是爲了還原圖像的細節信息,如下圖所示:
而這篇論文則是把超分辨直接應用在了另外一個地方:信息,嗯,直白點說就是信息,其實則是經過CNN處理之後獲得的圖像特徵。可以將CNN看作一個系統 ,是圖像到特徵的一個映射變換,由於系統 本身不會增加圖像的信息,因此可以認爲特徵所攜帶的信息量應該是小於等於原圖像所攜帶的信息量,低分辨率圖像所攜帶的信息量小於高分辨率圖像所攜帶的信息量,那麼低分辨率圖像得到的特徵所攜帶的信息量一定小於高分辨率圖像的(原諒我不知道怎麼表達這一串)。信息越少,越不容易分類,那麼低分辨率圖像就越不容易被正確分類。
作者在論文中,通過兩組實驗表明了分辨率對特徵提取和識別的影響,如上圖所示,(a)表明了隨着分辨率的降低,特徵的歐式距離也在不斷的增加,(b)和(c)則表明了隨着分辨率的降低,mAP也會迅速降低。低分辨率圖像的信息缺失導致了CNN無法提取有效的可分特徵,從而影響分類結果。
如何提高低分辨率圖像的識別效果?作者通過GAN對特徵進行超分辨,使之能夠恢復爲高分辨率圖像特徵,如下圖所示:
那麼,如何去構造這個特徵GAN則是論文的主要工作內容。
特徵超分辨
作者將低分辨率圖像特徵 作爲生成網絡 的輸入,可以得到超分辨特徵 , ,判別網絡 則對超分辨特徵和高分辨率圖像特徵進行判別。具體的訓練框架如下圖所示:
圖中的特徵提取網絡 可以是任意的特徵提取網絡,作者在實驗中採用了VGG16網絡結構,得到的特徵長度爲4096;在輸入 和 前對特徵進行了reshape,變爲了64x64大小的圖像,這樣就就可以直接採用2D卷積對數據進行處理。
網絡結構
生成網絡
Type | Kernel Size | Stride | Channel | Output Size |
---|---|---|---|---|
conv | 8x8 | 1 | 4 | 64x64x4 |
conv | 5x5 | 2 | 8 | 32x32x8 |
conv | 5x5 | 1 | 16 | 32x32x16 |
conv | 5x5 | 2 | 32 | 16x16x32 |
conv | 5x5 | 1 | 64 | 16x16x64 |
conv | 5x5 | 2 | 128 | 8x8x128 |
drop(70%) | 1x64x128 | |||
fc | 1x4096 |
判別網絡
Type | Kernel Size | Stride | Channel | Output Size |
---|---|---|---|---|
conv | 5x5 | 2 | 8 | 32x32x8 |
conv | 5x5 | 2 | 16 | 16x16x16 |
conv | 3x3 | 2 | 32 | 8x8x32 |
conv | 3x3 | 1 | 64 | 8x8x64 |
fc | 1 |
總的來說,網絡結構相當簡單,並沒有用到Inception或者殘差單元,每個卷積層後面有leaky relu層作爲激活相應層,使用了dropout層來防止過擬合。(唔~其實我不明白爲什麼會用8x8的卷積核)
稍微吐槽下,這論文提出的方法和特徵相關,也就是說如果特徵長度和原文不同,就得重新設計網絡進行訓練,finetune的機回都不給,超麻煩!
損失函數
嗯,基本上目前好多和CNN相關的論文都在倒騰損失函數(可能是我論文看的少吧,也可能之前基本上只關注人臉這塊,反正很長一段時間大家都在倒騰損失函數,容易出paper啊),這篇論文也是在WGAN損失函數的基礎上做了一些修改。論文說可以直接使用WGAN的損失函數對網絡進行訓練,但是作者發現直接只用並不能提高低分辨率特徵的表達能力(在分類上就是最後得到的特徵依然可分性不好),因此他將 的損失函數修改爲
當 時,等同於是在原有的損失函數的基礎上增加了MSE,使得 與 的歐式距離更加接近,作者也通過實驗得出的最優 爲2。
實驗結果
唔~因爲我還要去復現這個方法,沒有太仔細看這篇論文的分析和結果,這裏僅貼上論文中的結果,反正比低分辨率圖像的結果更好就是了
我還得去復現,還得學習MxNet,我要轉MxNet啦,先到這裏吧,等我弄得差不多了在更新這個吧~