[論文筆記] Deep image prior

Deep image prior閱讀筆記

論文:《 Deep image prior 》
項目主頁:https://dmitryulyanov.github.io/deep_image_prior

1. Introduction(介紹)

  • CNN在圖像生成和圖像復原任務中應用廣泛,效果好
  • 有種解釋是因爲CNN能從大量數據中學到真實圖像的先驗知識,強調的是大量數據學習能力,但是這種解釋並不充分
  • 作者認爲網絡的泛化能力要求網絡結構應該契合數據結構
  • 與普通解釋中將CNN的效果歸結於學習能力不同,本文表明大量的圖像先驗知識是由卷積網絡的結構獲取的,而不是通過大量數據的學習!

##2. 方法

在傳統的圖像復原方法中,常常是一個附加正則項的優化問題,目標函數如下:
這裏寫圖片描述

其中,E(x;x0)是與任務無關的數據項,比如MSE等,描述生成(或復原)圖像與目標圖像的差距,R(x)是正則項,是根據圖像先驗知識對解空間的約束。這些圖像先驗一般人爲設計(hand-crafted),比如圖像梯度重尾分佈,total variation等。本文則提出使用卷積網絡結構替換具有先驗知識的正則項R(x),公式如下:
這裏寫圖片描述
z爲網絡輸入,f(z)爲生成圖像。上式的含義是,通過優化網絡參數(使用梯度下降),使生成的圖像與目標圖像能滿足目標函數E最小。而網絡結構就能從圖像中獲取自然圖像的結構模式,相當於替換了R(x)的作用。需要注意的是,當我們只有退化的圖像,沒有*’退化圖像/原始圖像* 訓練對進行監督訓練,所以輸入的z是random code vector,類似GAN中的latent code。而目標圖像就是退化圖像。

z大小與圖像相同,初始化有有兩種:1)random 2)meshigrid
這裏寫圖片描述
網絡結構如下:
這裏寫圖片描述

目標函數E的選取與任務有關,但是常用的就是MSE等l2 loss。總的來說,對於一張退化圖像x0,輸入z(隨機初始化,訓練時不變),通過輸出f(z)與x0的loss不斷迭代優化參數,直達輸出達到滿意的結果。

這裏面個問題:針對不同任務,模型的收斂速度不同,如下圖。對自然圖像和加性噪聲的圖像擬合速度更快,對隨機噪聲圖像和shuffled 圖像擬合速度更慢。這就說了CNN對自然圖像具有更強的傾向性,或者說CNN的網絡結構對自然圖像分佈信息具有更好的捕獲和模仿能力。論文說,CNN對信號阻抗小,對噪聲阻抗大。因此對於大部分任務要限制網絡的迭代次數,讓CNN先擬合自然圖像信號,而不是過擬合把噪聲也捕獲到。具體如何設置迭代次數,估計也要不斷實驗嘗試。
這裏寫圖片描述

3. Application(應用)

本方法在圖像去噪,超分重建,圖像修復上等取得不錯效果。
這裏寫圖片描述

本文方法適用場景:
1)難以建模圖像退化過程
2)難以得到訓練圖像進行監督訓練
這算是優點吧。

但是,在region inpainting 中,學習率的選擇非常重要,也很敏感。調參估計不容易啊!
這裏寫圖片描述

其他

另外,這個方法優點類似於基於self-similarity和基於字典的方法,但作者認爲CNN與卷積稀疏碼關係更接近,這塊不瞭解,有空再看看。不多,antoencoder本身就是用一個自相似的度量方式訓練網絡,而本文類似gan中只是增加了一個latent space,用z做輸入。

還有一個缺點就是: 計算量大。一張圖像都要迭代幾千次。

總而言之,本文思路比較清奇,做慣了end-2-end監督訓練,這種思路還是挺有意思。CNN對自然圖像信號阻抗低,對噪聲阻抗大的結論也很有啓發性,希望有更多後續工作發表出來。
[1]: http://math.stackexchange.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章