誰能駕馭馬賽克?微軟AI打碼手藝 VS GoogleAI解碼絕活兒


雷鋒網(公眾號:雷鋒網)按:上個月底,微軟研究院推出一套基於AI 技術的視頻人臉模糊解決方案,通俗講就是為人臉自動打碼。而在今日,Google發佈了模糊圖片轉高清圖片的解決方案,説白了就是去除馬賽克的技術。

你説Google,人家微軟剛整出一套自動打碼手藝,你就來個自動解碼絕活,還能不能一起愉快的玩耍。

不少人有個疑問,那麼Google是否能解除微軟打的馬賽克,上演一番科技版“用我的矛戳你的洞”?我們先來看下雙方的技術原理是怎麼樣。

微軟自動打碼手藝

根據微軟亞洲研究院副研究員謝文軒介紹,操作這套解決方案,用户只需在後台用鼠標選擇想要打碼的人物,相應人物在視頻中的所有露臉區域都將被打上馬賽克。

大致流程如下:


技術解決方案背後的邏輯是先找出視頻中全部人臉所在的位置,第二步是把同一個人的所有人臉連接起來。


這背後涉及到人臉檢測、追蹤和識別。

1.人臉檢測

人臉檢測的作用是定位人臉出現的位置。為了保證人臉儘量不被漏掉,微軟採用了一套基於深度網絡的、具有高召回率的人臉檢測器。該檢測器對視頻的每一幀都進行檢測,記錄每個人臉對應的矩形框位置。

2.人臉追蹤

在某一幀中給出一個人臉框,在其前幾幀和後幾幀都找到與之最相似的框。人臉跟蹤的作用體現在這兩大方面:一是連接相鄰幀的檢測框,因為人臉檢測只負責每一幀的人臉定位,不負責幀間的連接;二是將當前幀的人臉檢測框延續到前後幾幀,這樣即可定位到那些檢測不到的側臉。

3.人臉識別

當然,該方案僅僅靠人臉檢測與追蹤還是不夠的。假設一個場景,如果視頻中存在鏡頭切換以及人物遮擋等問題,就需要利用人臉識別。微軟訓練了一套基於深度網絡的人臉識別模型,對於不同鏡頭裏的兩張人臉,根據相似度對它們進行連接。最後系統將整個視頻中不同人物的人臉都各自連接起來,提供給用户進行挑選。

時間複雜度方面,系統在 Azure 的 CPU 服務器上能夠實時處理 720p 的視頻,並且能夠以 2 倍時長處理 1080p 的高清視頻。

在講Google的自動解除馬賽克絕活前,我們先來了解下馬賽克還原問題。

馬賽克還原之殤

通常來講,馬賽克是不可逆損失信息的,很難還原。

為何難以還原?

打碼是一個減少信息量的過程,這些減少的信息已經丟失。馬賽克處理相當於對圖像信號的進行比原始數據更低頻率的採樣。根據奈奎斯特採樣定理,如果這個採樣頻率比原始數據的頻率的 2 倍還要低,那麼必然產生不可逆的數據損失。大部分情況下,“馬賽克”處理都會產生不可逆的數據損失。

打馬賽克的方式有多種,最常見的就是取平均。我們可以把一張圖片想象成一個方格矩陣,裏面不同的數值(RGB、CMYK數值)表示不同的顏色。打馬賽克的本質就是把那個區域的數字都取周圍數字的平均數。

舉個簡單的例子,一張 16 個像素的圖像,用一個很簡單的算法打碼,每四個像素取左上角的像素的值。


廣義的馬賽克可為兩大類:大塊馬賽克模糊和小塊馬賽克模糊。

大塊馬賽克模糊往往更難處理。


而小塊馬賽克模糊相比而言容易一些。


為何小塊的馬賽克容易還原?

馬賽克是一個抽樣信號,抽樣信號能否還原取決於採樣間距,也就是每個色塊的大小。如果採樣間距不是很大的話,將抽樣信號通過一個低通濾波器是可以基本還原原始信號的。上面黑白照片上的馬賽克色塊大小基本上都超過了允許採樣間距。這種信號通過低通濾波器的話會導致高頻信號失真,也就是圖片的細節。

近視眼可以看做是一種低通濾波器,你可以試着摘下眼鏡看看上述黑白照片的馬賽克酒壺,比戴眼鏡更能看出輪廓。所以我們在遠看馬賽克的時候反而能看出輪廓,近了就什麼都看不出了。

還原馬賽克的方式

在面對模糊不是特別嚴重的情況下,傳統的方式可以用插值進行還原。插值通俗講就是把原來一個像素的地方用多個像素代替。

插值算法在 MATLAB 圖像處理工具箱中提供了四種插值的方法:插值最接近原則插值、雙線性插值、雙三次插值、不規則碎片形插值。

下面的例子是一幅 106*40 的圖像放大成 450% 的效果:


最接近原則插值

最接近原則插值是最簡單的插值方法,它的本質就是放大象素。

新圖像的像素顏色是原圖像中與創造的象素位置最接近象素的顏色。如果把原圖像放大200%,1個象素就會被放大成(2*2)4個與原象素顏色相同的象素。多數的圖像瀏覽和編輯軟件都會使用這種插值方法放大數碼圖像,因為這不會改變原圖像的顏色信息,並且不會產生防鋸齒效果。同理,在實際放大照片中這種方法並不合適,因為這種插值會增加圖像的可見鋸齒。


雙線性插值

在雙線性插值中,新創造的象素值,是由原圖像位置在它附近的(2 x -2)4個鄰近象素的值通過加權平均計算得出的。這種平均算法具有放鋸齒效果,創造出來的圖像擁有平滑的邊緣,鋸齒難以察覺。


雙三次插值

雙三次插值是一種更加複雜的插值方式,它能創造出比雙線性插值更平滑的圖像邊緣。從下圖中的眼睫毛部分,在這個地方,軟件通過雙三次插值創造了一個象素,而這個象素的象素值是由它附近的(4 x 4)個鄰近象素值推算出來的,因此精確度較高。


雙三次插值分類:


(1)雙三次插值平滑化 (2)普通雙三次插值 (3)雙三次插值鋭化

不規則碎片形插值

不規則碎片形插值通常被應用於圖像的放大倍率很大的情況(例如製作大幅印刷品)。它能夠讓放大後的圖像無論從形狀、邊緣、顏色都較接近原圖像,而且減少照片的模糊程度,效果比雙三次插值法還要好。讀者可以把下圖於上面的圖片比較,就能知道不規則碎片形插值法的優勢:


如果圖像中的某一區域被嚴重打碼,則可通過下述方式進行還原:

假設原始圖像中,同一紋理會出現多次。模糊部分就用圖像中清晰的部分來填補,或者將多個模糊的同一種紋理進行比較,構造出一個清晰的紋理來替代它們。也就是説,圖像滿足一定條件,可以從臨近的其他部位補全,類似 PS 中的仿製圖章工具。

舉個例子,圖片中有幾隻斑點狗,但其中一隻斑點狗被打碼了,於是去馬賽克算法尋找這個圖像中“最能匹配這個馬賽克的”其它斑點狗的局部圖像,然後用這個局部圖像來填補那個馬賽克。

與此同時,也可在一個圖庫中尋找並組合出最能匹配馬賽克的圖案。

去年九月份,德克薩斯大學的研究者研發了“反馬賽克”技術。研究人員在 Torch 上一些網絡素材進行訓練和測試 ,結果顯示圖片能夠達到極高的準確度。它的原理就是利用算法找到和圖片相符、相似的原始圖像。


而Google這次推出的最新去除馬賽克技術解決方案的原理也是與德克薩斯大學的研究成果相似。

Google解除馬賽克的絕活兒

今日 Google Brain 在提升圖片分辨率方面取得了突破性進展。他們已經成功將 8×8(毫米)網格的像素馬賽克轉換成為肉眼可辨識的人物圖像。


隨着深度學習的發展和圖像數據的劇增,提升低分辨率照片細節的最佳突破口就是神經網路,當我們被照片中所包含的像素信息難倒的時候,深度學習能通過“聯想”的方式增加細節。實質就是軟件基於從其他圖片中學習到的信息對圖片進行猜測。
Google Brain 的研究團隊已經公佈了 Pixel Recursive Super Resolution 技術的最新進展,儘管結果看上去並不完美,但是整體還是非常可觀的。

下面是他們復原的效果案例之一:


右手邊的圖片,是 32 x 32 網格的真實人物頭像。左手邊的圖片,是已經壓縮到 8 x 8 網格的相同頭像,而中間的照片,是 GoogleBrain 基於低分辨率樣片猜測的原圖。

整個復原過程使用了兩種神經網絡。首先介紹的是 Conditioning Network,將低分辨率照片和數據庫中的高分辨率照片進行對比。這個過程中迅速降低數據庫照片中的分辨率,並根據像素顏色匹配一堆同類照片。
接下來介紹的是 Prior Network,它會猜測哪些細節可以作為高分辨率照片的特徵。利用 PixelCNN 架構,該網絡會篩查該尺寸的同類照片,並根據概率優先對高分辨率照片進行填充。例如,在論文提供的例子中,提供的同類照片是名人和卧室,Prior Network 根據優先級最終確認了名人的照片。Prior Network 會在低分辨率和高分辨率照片中做出決定,如果發現鼻子的可能性比較大,就會選擇鼻子。

為了製作出最終的無碼高清圖片,需要融合這兩個神經網絡輸出的數據,最終結果往往會包含一些似是而非的新細節。


下面也是一些通過超像素技術變化的樣本:


這項高清還原技術已經在實際測試中取得了一定的成功。該團隊向人類觀察員呈現真實的高清明星照和經過電腦還原的照片時,觀察員被騙的比例達到10%。而在卧室照片中,人類觀察員被騙的比例達到 28%。這兩個得分都遠高於常規的插值技術,後者沒有騙過任何人類觀察員。

雖然Google這次把去馬賽克技術提高了一個水平,但依舊無法達到“還原”的水準,更多屬於預測,因此Google與微軟之間也不存在“用我的矛戳你的洞”這個問題。雷鋒網雷鋒網

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知


資料來源:雷鋒網
作者/編輯:亞峰

如果喜歡我們的文章,請即分享到︰