楠木軒

照片打滿了馬賽克怎麼辦?試試用AI“腦補”吧

由 俎巧玲 發佈於 科技

參與:魔王、杜偉

有了這個工具,我們終於能夠看到馬賽克下的那張臉了。

給出一張高糊人臉照片,你能用它做什麼?

杜克大學近期的一項研究可以將高糊人臉照片轉換成清晰的面部圖像,而且你完全看不出來圖像中的人並非真人,而是計算機生成的人臉。

此外,這個名為 PULSE 的方法還可以「有來有往」,生成的高分辨率照片可以再次降級,回到高糊狀態。在具體實現方面,該方法使用了 StyleGAN 來生成高分辨率圖像。

看起來,PULSE 方法與其他方法相比,展示出了更好的生成效果,清晰度更高,細節也更加豐富。

不過,AI 方法「看到」的面部圖像和我們猜測的似乎存在差別。該項目提供了 Colab 環境,眾多網友試用後發現了一些效果不太好的例子。

比如,超級馬里奧在 PULSE 眼裏成了這樣:

我有點不敢玩這款遊戲了 ……

奧巴馬似乎變年輕了,好像也變白了,但這還是奧巴馬嗎 ?

表情包界王者也突然變了模樣:

想必此時表情包主角的內心是:

有網友質疑該方法生成結果存在偏見,尤其是對黑人圖像的處理效果並不好。對此,項目作者給出了回應:

PULSE 生成白人面部圖像的頻率確實要高於有色人種的面部圖像。這一偏見很可能來自於 StyleGAN 的訓練數據集,可能還有其他未知因素。我們意識到偏見是機器學習和計算機視覺領域的重要問題,並就此問題聯繫了 StyleGAN 和 FFHQ 數據集的創建者。我們希望這能夠促進不具備此類偏見行為的方法的誕生。

此外,PULSE 作者強調,該方法最後輸出的高分辨率圖像並非真人。因此,該方法無法用於識別或重建原始圖像,大家無需擔心該方法會對現實中的人造成困擾。

那麼,這個新方法到底是怎麼做的呢?我們來細看下。

論文地址:https://arxiv.org/abs/2003.03808

GitHub 地址:https://github.com/adamian98/pulse

網站地址:http://pulse.cs.duke.edu/

Colab 地址:https://colab.research.google.com/github/tg-bomze/Face-Depixelizer/blob/master/Face_Depixelizer_Eng.ipynb

PULSE 開啓圖像超分辨率新範式?

單圖像超分辨率任務即基於低分辨率(LR)輸入生成高分辨率(HR)圖像。之前的方法通常是監督式的,其訓練目標通常是度量超分辨率(SR)和高分辨率圖像之間的像素級平均距離。而對此類度量指標的優化往往導致模糊,尤其是高方差區域的模糊。

杜克大學將超分辨率問題重構為:如何創建可以準確降級回去的逼真 SR 圖像。這提供了圖像超分辨率的新範式。

具體來説,研究者提出一種新型超分辨率算法 PULSE ( Photo Upsampling via Latent Space Exploration ) ,該算法可以生成高分辨率的逼真圖像,分辨率之高超過之前的方法。

此外,PULSE 是以完全自監督的方式進行的,且不受限於訓練期間使用的特定降級算子(degradation operator),這與之前的方法有所不同。

PULSE 不從 LR 圖像開始緩慢地添加細節,而是遍歷高分辨率自然圖像流形,搜索可以降級至原始 LR 圖像的高分辨率圖像。這一過程通過「降尺度損失」(downscaling loss)完成,它指引着在生成模型潛在空間中的探索。

此外,研究者利用高維高斯的特性限制搜索空間,使其保證輸出結果是逼真的。因此,PULSE 得以生成既逼真又能進行恰當分辨率降級的超分辨率圖像。

該研究進行了大量實驗,表明 PULSE 方法在人臉超分辨率領域中的效果。該方法以更高的分辨率和縮放因子(scale factor)超過了當前最優方法的感知質量。

具體而言,PULSE 可以在幾秒鐘內將 16x16 像素圖像轉換為 1024 x 1024 像素圖像,添加了一百萬像素。此外,它還可以將低分辨率圖像中無法看清的毛孔、皺紋、頭髮等轉換得清晰。

研究者請 40 個人對 PULSE 和其他五種方法生成的 1440 張圖像進行評分(1-5 分),結果表明 PULSE 分數最高,接近真人的高質量圖像。

PULSE 如何實現最優效果?

研究者首先定義了超分辨率問題的術語。假設低分辨率圖像為 I_LR,超分辨率方法即學習一個條件生成函數 G,把 G 應用於 I_LR 時可以得到超分辨率圖像 I_SR。

形式上,I_LR ∈ R^m×n。期望函數 SR 是 R^m×n → R^M×N 的映射(M > m, N > n)。於是超分辨率圖像 I_SR ∈ R^M×N 可被定義為:

傳統的超分辨率方法認為,低分辨率圖像可以表示與理論上高分辨率圖像 I_HR ∈ R^M×N 相同的信息。然後此類方法試圖基於 I_LR 恢復特定 I_HR,從而將超分辨率問題簡化為優化任務:擬合函數 SR,使下式最小化

然而,在實踐中,即使得到了正確的訓練,這些算法仍無法提升高方差區域的細節。讓我們通過修復低分辨率圖像 I_LR,來探究其背後的原因。

假設 M 是 R^M×N 中的自然圖像流形,即 R^M×N 的這一子集類似自然逼真圖像;假設 P 是基於 M 的概率分佈,用於描述數據集中某張圖像出現的概率;假設 R 是分辨率恰當降低後的圖像集合,即 R = {I ∈ R^N×M : DS ( I ) = I_LR}。則隨着數據集規模趨向於無窮大,算法輸出修復圖像 I_SR 的期望損失是:

當 I_SR 是 I_HR(M ∩ R)的 l_p 平均時,損失得到最小化。事實上,當 p = 2 時,損失最小化,即

因此,最優 I_SR 是分辨率恰當降低的高分辨率圖像集合的像素級加權平均值。因此,這些算法缺乏細節僅僅是因為無法通過改變網絡架構來恢復 l_p 範數。

杜克大學對該問題進行了重新定義,他們提出一種新型單圖像超分辨率框架。對於 LR 圖像 I_LR ∈ R^m×n 且 ϵ > 0,杜克大學研究者旨在找到符合下列條件的圖像 I_SR ∈ M:

具體而言,令 R_ ϵ ⊂ R^N×M 表示分辨率恰當降低的圖像集合,即

然後尋找圖像 ISR ∈ M∩R_ ϵ。M∩ R_ ϵ 是可行解的集合,因為如果得到解的分辨率無法恰當降低或者不夠逼真,則它並非可行解。

有趣的是,M∩R_ ϵ 的交集(尤其是 M ∩ R_0 ) 不能為空,因為它們必須包含原始高分辨率圖像(即傳統方法旨在重建的圖像)。

PULSE 的實驗效果如何?

研究者通過多項實驗對該算法進行評估,並將重點放在了人臉幻覺(face hallucination)這一熱點問題上。

具體來説,研究者利用了 Karras 等人在 Flickr Face HQ ( FFHQ ) 數據集上預訓練的 Face StyleGAN。對於每個實驗,他們從隨機初始化開始,進行了 100 次學習率為 0.4 的球面梯度下降迭代。因此,該方法使用單個英偉達 V100 GPU 生成每張圖像的時間約為 5 秒。

不同方法的視覺效果

下圖 5 展示了不同方法生成圖像的視覺質量:

圖 5:PULSE 與雙三次升尺度(bicubic upscaling)、FSRNet 和 FSRGAN 方法的效果對比。在第一張圖像中,PULSE 在頭髮裏添加了一個 messy 圖像塊,以匹配 LR 圖像放大後中間可見的兩個黑色對角線像素值。

定量結果

研究者進行了感知超分辨率文獻中常用的 MOS 分數評估,如下表所示:

表 1:PULSE 與其他幾種方法在 128×128 分辨率上的 MOS 分數,其中分數越高效果越好。可以看到,PULSE 的分數最高。

為了提供另一種感知質量度量,研究者還對感知超分辨率問題常用的自然圖像質量評價(Naturalness Image Quality Evaluator, NIQE)分數進行了評估。

具體來説,他們對每種方法在 1024×1024 分辨率上的 NIQE 分數進行了評估,其中輸入分辨率為 16×16,縮放因子為 64。

表 2:每種方法在 1024×1024 分辨率上的 NIQE 分數,分數越低效果越好。可以看到,PULSE 的 NIQE 分數最低。

魯棒性

最後,研究者對 PULSE 算法的魯棒性進行了評估。該算法的主要目的是利用已知的降尺度算子來執行感知逼真的超分辨率任務。

研究者發現,即使對於各種未知的降尺度算子,該方法都可以使用雙三次降尺度(bicubic downscaling)實現充分的降級,具體如下圖 6 所示:

圖 6:研究者證實了利用不同降級算子時 PULSE 的魯棒性。