不同的神經(jīng)網(wǎng)絡(luò)可以實(shí)現(xiàn)給圖像去噪,、去水印,、消除馬賽克等等功能,但我們能否讓一個(gè)模型完成上述所有事,?事實(shí)證明 AI 確實(shí)有這樣的能力,。來自 Skoltech、Yandex 和牛津大學(xué)的學(xué)者們提出了一種可以滿足所有大膽想法的神經(jīng)網(wǎng)絡(luò),。
事情是這樣的:研究人員們讓一個(gè)深度卷積網(wǎng)絡(luò)去學(xué)習(xí)復(fù)制被破壞的圖像(例如加入噪點(diǎn)的圖像),,隨后竟發(fā)現(xiàn)這個(gè)網(wǎng)絡(luò)可以自行先學(xué)會(huì)如何重建圖像。該研究的論文《Deep Image Prior》已被收錄在 CVPR 2018 大會(huì),,而 GitHub 則已有 3800 個(gè) star,。
Deep Image Prior 的重要特點(diǎn)是,網(wǎng)絡(luò)由始至終僅使用了輸入的,,被破壞過的圖像做為訓(xùn)練,,沒有經(jīng)歷過大多數(shù)神經(jīng)網(wǎng)絡(luò)所需要的學(xué)習(xí)過程即可完成任務(wù)。它沒有「看過」任何其它圖像,,也沒有看過未受破壞的正常圖像,,但最終恢復(fù)的效果依然很好。這說明自然圖像的局部規(guī)律和自相似性確實(shí)很強(qiáng),。
在 GitHub 項(xiàng)目中,,作者如下展示了 5 種常見圖像重構(gòu)的效果。他們表示單個(gè)卷積網(wǎng)絡(luò)可以完成缺失圖像的修復(fù),、痕跡的移除,、圖像去噪、超分辨率和去除水印等,,可以說該模型在理解圖像先驗(yàn)信息下顯得無所不能,。當(dāng)然作者表示這個(gè)項(xiàng)目的超參數(shù)和架構(gòu)都是可以調(diào)整的,它們遠(yuǎn)沒有達(dá)到最優(yōu),,所以感興趣的讀者快試試吧,。
項(xiàng)目地址:https://github.com/DmitryUlyanov/deep-image-prior
其實(shí)上圖中的每一項(xiàng)任務(wù)都有很多研究,它們假設(shè)模型能從大型真實(shí)圖像數(shù)據(jù)集中學(xué)習(xí)到圖像的先驗(yàn)信息,,即像素怎樣才能組合成一張「正?!沟膱D像,這樣學(xué)習(xí)到通用圖像信息的模型就能用來修補(bǔ)圖像或生成高分辨率圖像了,。但是這種觀點(diǎn)正確嗎,?該項(xiàng)目的研究論文表示否定,它們只在損壞的「非正?!箞D像上訓(xùn)練同樣能學(xué)習(xí)到圖像的「先驗(yàn)」,,注意這種「訓(xùn)練」僅表示模型在單張損壞圖像上反復(fù)迭代。
網(wǎng)友使用 AKB-48 照片進(jìn)行超分辨率的嘗試,。
與傳統(tǒng)觀點(diǎn)相反,,該項(xiàng)目的研究論文表示未經(jīng)任何「學(xué)習(xí)過程」的卷積圖像生成器架構(gòu)可以捕捉到大量圖像數(shù)據(jù),,尤其是解決不同圖像修復(fù)問題的圖像數(shù)據(jù)。在卷積網(wǎng)絡(luò)對(duì)損壞圖像反復(fù)迭代時(shí),,它能自動(dòng)利用圖像的全局統(tǒng)計(jì)信息重構(gòu)丟失的部分,。
研究者使用未經(jīng)訓(xùn)練的卷積網(wǎng)絡(luò)來解決幾種此類問題。研究者未在大量示例圖像數(shù)據(jù)上訓(xùn)練卷積網(wǎng)絡(luò),,而是直接將生成器網(wǎng)絡(luò)應(yīng)用于單個(gè)退化圖像,,即有損壞的自然圖像。在此方法中,,網(wǎng)絡(luò)權(quán)重作為修復(fù)圖像的參數(shù),。權(quán)重經(jīng)過隨機(jī)初始化和擬合,以在提供特定退化圖像和任務(wù)相關(guān)模型時(shí)能夠最大化似然度,。
本研究展示了,,這個(gè)非常簡(jiǎn)單的方法在標(biāo)準(zhǔn)圖像處理問題(如去噪、圖像修復(fù)和超分辨率)中極具競(jìng)爭(zhēng)力,。除了標(biāo)準(zhǔn)圖像修復(fù)任務(wù)外,,該技術(shù)還可用于理解深度神經(jīng)網(wǎng)絡(luò)激活函數(shù)中的信息。
論文:Deep Image Prior
論文地址:https://sites.skoltech.ru/app/data/uploads/sites/25/2018/04/deep_image_prior.pdf
摘要:深度卷積網(wǎng)絡(luò)已經(jīng)成為圖像生成和修復(fù)的常用工具,。通常,其優(yōu)秀性能要?dú)w功于從大量示例圖像中學(xué)習(xí)逼真圖像先驗(yàn)的能力,。而這篇論文反其道而行之,,展示了一種生成器網(wǎng)絡(luò)架構(gòu),它可以在學(xué)習(xí)之前先捕捉大量低級(jí)圖像數(shù)據(jù),。本論文展示了隨機(jī)初始化神經(jīng)網(wǎng)絡(luò)可在標(biāo)準(zhǔn)逆問題(如去噪,、超分辨率和圖像修復(fù))中作為手工先驗(yàn)知識(shí)(handcrafted prior)使用,且性能優(yōu)越,。此外,,同樣的先驗(yàn)知識(shí)還可用于反轉(zhuǎn)深度神經(jīng)表征以作出判斷,并基于 flash-no flash 輸入對(duì)來修復(fù)圖像,。
該方法應(yīng)用廣泛,,且強(qiáng)調(diào)了標(biāo)準(zhǔn)生成器網(wǎng)絡(luò)架構(gòu)捕捉的歸納偏置(inductive bias)。它還彌補(bǔ)了圖像修復(fù)兩大流行方法之間的距離:使用深度卷積網(wǎng)絡(luò)的基于學(xué)習(xí)的方法,、基于手工圖像先驗(yàn)知識(shí)(如自相似性)的無學(xué)習(xí)方法,。
項(xiàng)目使用
該項(xiàng)目為不同的任務(wù)提供了對(duì)應(yīng)的實(shí)現(xiàn)文檔,例如 inpainting.ipynb 展示了如何做圖像修復(fù)與去水印,、super-resolution.ipynb 展示了如何做圖像超分辨率,。如下展示了項(xiàng)目的環(huán)境配置與安裝,注意其主要使用了 PyTorch 0.4,,所以已經(jīng)更新到 1.0 的讀者可以借助 conda 或其它工具配置一個(gè)新環(huán)境,。
安裝
在執(zhí)行代碼之前,,你需要安裝下列庫:
python = 3.6
pytorch = 0.4
numpy
scipy
matplotlib
scikit-image
jupyter
以上庫均可通過 conda (anaconda) 安裝,如:
conda install jupyter
Docker 鏡像
你也可以使用具備全部依賴項(xiàng)的 Docker 鏡像完成環(huán)境的配置,,并連接到 Jupyter Notebook,。你需要確保安裝了 docker 和 nvidia-docker,然后運(yùn)行以下命令:
nvidia-docker build -t deep-image-prior .
然后,,啟動(dòng)容器,,如下所示:
nvidia-docker run --rm -it --ipc=host -p 8888:8888 deep-image-prior
你會(huì)得到一個(gè) URL,使用它可連接至 Jupyter notebook,。