AI 學(xué)會(huì)“腦補(bǔ)”:神經(jīng)網(wǎng)絡(luò)超逼真圖像補(bǔ)完從 0 到 1
1 新智元編譯
來源:arXiv、Github
編譯:張易
【新智元導(dǎo)讀】自動(dòng)圖像補(bǔ)全是計(jì)算機(jī)視覺和圖形領(lǐng)域幾十年來的研究熱點(diǎn)和難點(diǎn)。在神經(jīng)網(wǎng)絡(luò)的幫助下,來自伯克利、Adobe 等研究人員利用組合優(yōu)化和類似風(fēng)格轉(zhuǎn)移的方法,突破以往技術(shù)局限,成功實(shí)現(xiàn)了超逼真的“從0到1”圖像生成。代碼已在Github 開源。
完勝 PS!新方法實(shí)現(xiàn)完美“腦補(bǔ)”
在分享照片之前,你可能會(huì)想進(jìn)行一些修改,例如擦除分散注意力的場景元素,調(diào)整圖像中的物體位置以獲得更好的組合效果,或者把被遮擋的部分恢復(fù)出來。
這些操作,以及其他許多編輯操作,需要進(jìn)行自動(dòng)的孔洞填充(圖像補(bǔ)足),這是過去幾十年間計(jì)算機(jī)視覺和圖形領(lǐng)域的一個(gè)研究熱點(diǎn)。因?yàn)樽匀粓D像固有的模糊性和復(fù)雜性,整體填充也是長期以來的難點(diǎn)。
但現(xiàn)在,這個(gè)問題終于得到了比較好的解決,證據(jù)就是下面這幅圖。
這項(xiàng)全新研究的主要貢獻(xiàn)是:
-
提出了一個(gè)聯(lián)合優(yōu)化框架,可以通過用卷積神經(jīng)網(wǎng)絡(luò)為全局內(nèi)容約束和局部紋理約束建模,來虛構(gòu)出缺失的圖像區(qū)域。
-
進(jìn)一步介紹了基于聯(lián)合優(yōu)化框架的用于高分辨率圖像修復(fù)的多尺度神經(jīng)補(bǔ)丁合成算法。
-
在兩個(gè)公共數(shù)據(jù)集上評(píng)估了所提出的方法,并證明了其優(yōu)于基線和現(xiàn)有技術(shù)的優(yōu)勢。
克服現(xiàn)有方法局限,用深度學(xué)習(xí)風(fēng)格轉(zhuǎn)移合成逼真細(xì)節(jié)
我們稍后會(huì)詳細(xì)介紹這項(xiàng)研究成果。在此之前,有必要補(bǔ)充一下背景知識(shí)。
現(xiàn)有的解決孔洞填充問題的方法分為兩組。第一組方法依賴于紋理合成技術(shù),其通過擴(kuò)展周圍區(qū)域的紋理來填充空白。這些技術(shù)的共同點(diǎn)是使用相似紋理的補(bǔ)丁,以從粗到精的方式合成孔洞的內(nèi)容。有時(shí),會(huì)引入多個(gè)尺度和方向,以找到更好的匹配補(bǔ)丁。Barnes et al.(2009) 提出了 PatchMatch,這是一種快速近似最近鄰補(bǔ)丁的搜索算法。
盡管這樣的方法有益于傳遞高頻紋理細(xì)節(jié),但它們不抓取圖像的語義或全局結(jié)構(gòu)。第二組方法利用大型外部數(shù)據(jù)庫,以數(shù)據(jù)驅(qū)動(dòng)的方式虛構(gòu)缺失的圖像區(qū)域。這些方法假定被相似上下文包圍的區(qū)域可能具有相似的內(nèi)容。如果能找到和所查詢圖像具有足夠視覺相似度的圖像樣本,這種方法會(huì)非常有效,但是當(dāng)查詢圖像在數(shù)據(jù)庫中沒有被很好地表示時(shí),該方法可能會(huì)失敗。另外,這樣的方法需要訪問外部數(shù)據(jù)庫,這極大地限制了可能的應(yīng)用場景。
最近,深度神經(jīng)網(wǎng)絡(luò)被用于紋理合成和圖像的風(fēng)格化(stylization)。特別需要指出,Phatak et al(2016)訓(xùn)練了具有結(jié)合了和對(duì)抗性損失的編碼器 - 解碼器 CNN(Context Encoders)來直接預(yù)測丟失的圖像區(qū)域。這項(xiàng)工作能夠預(yù)測合理的圖像結(jié)構(gòu),并且評(píng)估非??欤?yàn)榭锥磪^(qū)域的預(yù)測是在a single forward pass中進(jìn)行的。雖然結(jié)果令人鼓舞,但有時(shí)這種方法的修復(fù)結(jié)果缺乏精細(xì)的紋理細(xì)節(jié),在空白區(qū)域的邊界周圍會(huì)產(chǎn)生可見的偽跡。 這種方法也不能處理高分辨率圖像,因?yàn)楫?dāng)輸入較大時(shí),和對(duì)抗性損失相關(guān)的訓(xùn)練會(huì)有困難。
在最近的一項(xiàng)研究中,Li和Wand(2016)指出,通過對(duì)圖像進(jìn)行優(yōu)化(該圖像的中間層神經(jīng)響應(yīng)與內(nèi)容圖像相似,底層卷局部響應(yīng)模仿style圖像的局部響應(yīng)),可以實(shí)現(xiàn)逼真的圖像stylization結(jié)果。那些局部響應(yīng)由小的(通常3×3)神經(jīng)補(bǔ)丁表示。 該方法證明能夠?qū)⒏哳l率細(xì)節(jié)從style圖像傳輸?shù)絻?nèi)容圖像,因此適合于實(shí)際的傳遞任務(wù)(例如,傳遞面部或汽車的外觀)。盡管如此,通過使用神經(jīng)響應(yīng)的 gram matrices 能更好地進(jìn)行更多藝術(shù)風(fēng)格的傳遞。
好,是主角出場的時(shí)候了——
為了克服上述方法的局限性,來自伯克利、Adobe、Pinscreen 和 USC Institute for Creative Technologies 的研究人員提出了一種混合優(yōu)化方法(joint optimization),利用編碼器 - 解碼器CNN的結(jié)構(gòu)化預(yù)測和神經(jīng)補(bǔ)丁的力量,成功合成了實(shí)際的高頻細(xì)節(jié)。類似于風(fēng)格轉(zhuǎn)移,他們的方法將編碼器 - 解碼器預(yù)測作為全局內(nèi)容約束,并且將孔洞和已知區(qū)域之間的局部神經(jīng)補(bǔ)丁相似性作為風(fēng)格(style)約束。
更具體地說,使用中間層的補(bǔ)丁響應(yīng)(該中間層使用預(yù)訓(xùn)練分類網(wǎng)絡(luò)),可以通過訓(xùn)練類似于 Context Encoder 的全局內(nèi)容預(yù)測網(wǎng)絡(luò)來構(gòu)造內(nèi)容約束,并且可以用環(huán)繞孔洞的圖像內(nèi)容來對(duì)紋理約束進(jìn)行建模??梢允褂镁哂杏邢薮鎯?chǔ)的 BFGS 的反向傳遞算法來有效地優(yōu)化這兩個(gè)約束。
作者在論文中寫道:“我們通過實(shí)驗(yàn)證明,新提出的多尺度神經(jīng)補(bǔ)丁合成方法可以產(chǎn)生更多真實(shí)和連貫的結(jié)果,保留結(jié)構(gòu)和紋理的細(xì)節(jié)。我們在兩個(gè)公共數(shù)據(jù)集上定量和定性地評(píng)估了所提出的方法,并證明了其在各種基線和現(xiàn)有技術(shù)上的有效性,如圖1 所示。”
圖1:對(duì)于給定的一張帶有孔洞(256×256)的圖像(512×512),我們的算法可以合成出更清晰連貫的孔洞內(nèi)容(d)。我們可以和用Context Encoders(b)、PatchMatch(c)這兩種方法產(chǎn)生的結(jié)果進(jìn)行比較。
具體方法
為了進(jìn)一步處理帶有大面積孔洞的高分辨率圖像,作者提出了一種多尺度神經(jīng)補(bǔ)丁合成方法。為了簡化公式,假設(shè)測試圖像始終裁剪為 512×512,中間有一個(gè) 256×256 的孔洞。然后,創(chuàng)建一個(gè)三級(jí)金字塔,步長為二,在每個(gè)級(jí)別將圖像縮小一半。它呈現(xiàn) 128×128 的最低分辨率,帶有 64×64 的孔洞。接下來,我們以從粗到精的方式執(zhí)行孔洞填充任務(wù)。初始化最低級(jí)別的內(nèi)容預(yù)測網(wǎng)絡(luò)的輸出,在每個(gè)尺度(1)執(zhí)行聯(lián)合優(yōu)化以更新孔洞;(2)upsample 以初始化聯(lián)合優(yōu)化并為下一個(gè)尺度設(shè)置內(nèi)容約束。最后,重復(fù)此步驟,直到聯(lián)合優(yōu)化以最高分辨率完成。
Framework 概述
我們尋求對(duì)損失函數(shù)進(jìn)行了優(yōu)化的修復(fù)圖像,其被表示為三個(gè)項(xiàng)的組合:整體內(nèi)容項(xiàng),局部紋理項(xiàng)和tv-loss項(xiàng)。 內(nèi)容項(xiàng)是捕獲圖像的語義和全局結(jié)構(gòu)的全局結(jié)構(gòu)約束,并且局部項(xiàng)通過使其與已知區(qū)域一致來重新定義局部紋理。 內(nèi)容項(xiàng)和紋理項(xiàng)均使用具有固定參數(shù)的預(yù)訓(xùn)練網(wǎng)絡(luò)來計(jì)算。
圖2. Framework 概述。我們的方法使用兩個(gè)聯(lián)合損失函數(shù)來解決未知圖像,即整體內(nèi)容損失和局部紋理損失。通過將圖像饋送到預(yù)訓(xùn)練的內(nèi)容預(yù)測網(wǎng)絡(luò),并且將輸出與推理(reference)內(nèi)容預(yù)測進(jìn)行比較來導(dǎo)出整體內(nèi)容損失。 通過將 x 饋送到預(yù)訓(xùn)練網(wǎng)絡(luò)(稱為紋理網(wǎng)絡(luò)),并且在其特征圖上比較局部神經(jīng)補(bǔ)丁來導(dǎo)出局部紋理損失。
高分辨率圖像修復(fù)的算法
給定一個(gè)帶有孔洞的高分辨率圖像,我們產(chǎn)生了多尺度輸入其中S是尺度的數(shù)量。s = 1是最粗糙的尺度,s = S是輸入圖像的原始分辨率。我們以迭代多尺度方式進(jìn)行這一優(yōu)化。
我們首先將輸入縮小到粗糙尺度,計(jì)算內(nèi)容的推理(reference)。在實(shí)際操作中,我們在 upsample 到一個(gè)新尺度時(shí),將寬度和高度加倍。 在每個(gè)尺度中,我們根據(jù)等式 1 更新,通過 upsample 設(shè)置優(yōu)化初始,并通過 upsample 在尺度上設(shè)置內(nèi)容 reference。我們因此迭代地取得高分辨率的修復(fù)結(jié)果。算法1 是對(duì)該算法的總結(jié)。
實(shí)驗(yàn)過程
數(shù)據(jù)集
我們在兩個(gè)不同的數(shù)據(jù)集上評(píng)估了我們提出的方法:Paris StreetView 和ImageNet 。 不使用與這些圖像相關(guān)聯(lián)的標(biāo)簽或其他信息。 Paris StreetView 包含 14,900 個(gè)訓(xùn)練圖像和 100個(gè)測試圖像。 ImageNet 有 1,260,000 個(gè)訓(xùn)練圖像,以及從驗(yàn)證集隨機(jī)選取的 200 個(gè)測試圖像。 我們還選擇了20個(gè)含干擾項(xiàng)的圖像,以測試我們用于真實(shí)干擾項(xiàng)移除場景的算法。
量化比較
我們首先在 Paris StreetView 數(shù)據(jù)集上就低分辨率圖像(128×128)將我們的方法和基線方法進(jìn)行了定量比較。表1中的結(jié)果表明,我們的方法實(shí)現(xiàn)了最高的數(shù)值性能。我們將這歸因于我們方法的性質(zhì)——和 PatchMatch 相比,它能夠推斷圖像的正確結(jié)構(gòu),而和 Context Encoder 相比,它能夠從已知區(qū)域傳遞紋理細(xì)節(jié)。(圖3)我們優(yōu)于PatchMatch的結(jié)果表明,內(nèi)容網(wǎng)絡(luò)有助于預(yù)測合理的結(jié)構(gòu)。我們勝過 Context Encoder 的結(jié)果表明,由紋理網(wǎng)絡(luò)執(zhí)行的神經(jīng)補(bǔ)丁合成方法的有效性。
表1:在Paris StreetView數(shù)據(jù)集上的數(shù)值比較。PSNR值越高越好。
圖3:Context Encoder(損失)、Context Encoders(對(duì)抗性損失)和PatchMatch的比較。當(dāng)從邊界向孔洞區(qū)域傳遞紋理時(shí),我們的方法比Context Encoder(既使用損失也使用對(duì)抗性損失)表現(xiàn)更好。在推理正確結(jié)構(gòu)時(shí),我們的方法比PatchMatch表現(xiàn)更好。
內(nèi)容網(wǎng)絡(luò)在聯(lián)合優(yōu)化中的作用。我們比較了使用內(nèi)容約束和不使用內(nèi)容約束的修復(fù)結(jié)果。如圖4 所示,當(dāng)不使用內(nèi)容項(xiàng)來引導(dǎo)優(yōu)化時(shí),修復(fù)結(jié)果的結(jié)構(gòu)出錯(cuò)了。
圖4:(a)為原始輸入,(b)是不使用內(nèi)容約束產(chǎn)生的修復(fù)結(jié)果,(c)是我們的結(jié)果。
高分辨率圖像修復(fù)
圖5是在ImageNet數(shù)據(jù)集上的比較結(jié)果。從上至下:原始輸入,PatchMatch,Context Encoder(同時(shí)使用和對(duì)抗性損失),我們的結(jié)果。所有圖像分辨率都是512×512(本文中已縮小以適應(yīng)頁面顯示)。
圖6是在Paris StreetView數(shù)據(jù)集上的比較結(jié)果。從上至下:原始輸入,PatchMatch,Context Encoder(同時(shí)使用和對(duì)抗性損失),我們的結(jié)果。所有圖像分辨率都是512×512(本文中已縮小以適應(yīng)頁面顯示)。
真實(shí)世界干擾項(xiàng)去除場景
最后,我們的算法很容易擴(kuò)展為處理任意形狀的孔洞。 這是通過估計(jì)任意孔洞周圍的邊界平方,填充孔洞內(nèi)的平均像素值,并通過裁剪圖像形成輸入,以使正方形邊界框處于輸入的中心,并將輸入調(diào)整為內(nèi)容網(wǎng)絡(luò)輸入的大小。然后,我們使用已經(jīng)訓(xùn)練的內(nèi)容網(wǎng)絡(luò)進(jìn)行前向傳播。在聯(lián)合優(yōu)化中,紋理網(wǎng)絡(luò)對(duì)自然中孔洞的形狀和位置沒有限制。這是分離將內(nèi)容和紋理項(xiàng)分離的額外好處。由于 Context Encoder 僅限于方孔,我們在圖7中展示了和 PatchMatch 的對(duì)比結(jié)果。如圖所示,我們提出的聯(lián)合優(yōu)化方法更好地預(yù)測了結(jié)構(gòu),并提供了清晰和逼真的結(jié)果。
圖7:隨意對(duì)象的去除。從左到右:原始輸入,對(duì)象遮擋,PatchMatch 結(jié)果,我們的結(jié)果。
結(jié)論
作者使用神經(jīng)補(bǔ)丁合成提升了語義修復(fù)的現(xiàn)有技術(shù)??梢钥吹剑?dāng)內(nèi)容網(wǎng)絡(luò)給出較強(qiáng)的關(guān)于語義和全局結(jié)構(gòu)的先驗(yàn)信息時(shí),紋理網(wǎng)絡(luò)在生成高頻細(xì)節(jié)方面非常強(qiáng)大。有一些場景復(fù)雜的情況,這種新的方法會(huì)產(chǎn)生不連續(xù)性和違背真實(shí)的圖像(圖8)。此外,速度仍然是這種算法的瓶頸。研究人員的目標(biāo)是在未來的工作中解決這些問題。
圖8:這是兩個(gè)聯(lián)合優(yōu)化法失敗的例子。
論文:使用多尺度神經(jīng)補(bǔ)丁合成修補(bǔ)高分辨率圖像
摘要
對(duì)于帶有語義合理性和情境感知細(xì)節(jié)的自然圖像,深度學(xué)習(xí)的最新進(jìn)展為填充這些圖像上的大面積孔洞帶來了樂觀的前景,并影響了諸如對(duì)象移除這樣的基本的圖像處理任務(wù)。雖然這些基于學(xué)習(xí)的方法在捕獲高級(jí)特征方面比現(xiàn)有技術(shù)明顯更有效,但由于存儲(chǔ)器限制和訓(xùn)練困難,它們只能處理分辨率很低的輸入。即使對(duì)于稍大的圖像,修復(fù)的區(qū)域也會(huì)顯得模糊,而且可以看到令人不快的邊界。我們提出一種基于圖像內(nèi)容和風(fēng)格(style)約束聯(lián)合優(yōu)化的多尺度神經(jīng)補(bǔ)丁合成方法,不僅保留上下文結(jié)構(gòu),而且通過匹配和適應(yīng)具有與深度分類網(wǎng)絡(luò)相似的中層特性的補(bǔ)丁,可以產(chǎn)生高頻細(xì)節(jié)。我們在 ImageNet 和 Paris Streetview 數(shù)據(jù)集上評(píng)估了我們的方法,并實(shí)現(xiàn)了最先進(jìn)的修復(fù)精度。我們表明,相對(duì)于之前的方法,我們的方法可以產(chǎn)生更清晰和更連貫的結(jié)果,特別是對(duì)于高分辨率圖像來說。
論文地址:https://arxiv.org/pdf/1611.09969.pdf
Github 代碼:https://github.com/leehomyc/High-Res-Neural-Inpainting