機器學習去除馬賽克案例(程式碼)

李博Garvin發表於2019-02-13

知道步兵和騎兵的區別麼,步兵是沒“碼”的。今天就給大家介紹一種去碼的方法

背景概念

 

廢話不多說,先看下效果:

螢幕快照 2019-02-12 下午3.23.32.png

上圖中的左邊的圖有很多干擾,右邊是經過本文要介紹的方法所處理後的結果。從圖片去碼的原理來講,在深度學習領域大致有兩種方法:

  1. 學習法,就是通過大量程式碼的圖片放入神經網路進行訓練和學習,讓神經網路可以學習到圖片打碼的一些特徵,從而生成一個可以去掉碼的模型。這種方法其實是深度學習領域常用的一種思路。問題是需要大量打標的圖片,以及大量計算資源。

  2. 生成法,因為一個高畫素的圖片是由很多低畫素元素拼接生成的,如果可以學習到影象的生成規則,找到影象的主體部分,就可以排除碼的影響,也就是本文介紹的方法

 

方法2的論文,大家有興趣可以去翻翻:https://sites.skoltech.ru/app/data/uploads/sites/25/2018/04/deep_image_prior.pdf

步驟

第一步,

clone整個工程,github地址:https://github.com/DmitryUlyanov/deep-image-prior

 

第二步,

將程式碼放入有GPU的執行環境中(在無GPU環境下是無法執行的),這裡博主用的是PAI-DSW:https://data.aliyun.com/product/learn

 

程式碼裡有很多案例,除碼的是inpainting.ipynb這個檔案,

螢幕快照 2019-02-12 下午3.41.08.png

 

第三步,

執行整套程式碼,在Main Loop可以看到圖片生成的整個過程,我這裡截了幾張過程圖片大家可以看下。

1.png

 

2.png

 

3.png

 

4.png

 

 

總結

 

這個專案我覺得是一個比較有意思的小case,可以感受下機器生成圖片的整個流程,希望對大家有幫助。

相關文章