1
本文作者: 老王 | 2017-02-08 20:52 |
雷鋒網(wǎng)按:上個(gè)月底,微軟研究院推出一套基于AI 技術(shù)的視頻人臉模糊解決方案,通俗講就是為人臉自動(dòng)打碼。而在今日,谷歌發(fā)布了模糊圖片轉(zhuǎn)高清圖片的解決方案,說白了就是去除馬賽克的技術(shù)。
你說谷歌,人家微軟剛整出一套自動(dòng)打碼手藝,你就來個(gè)自動(dòng)解碼絕活,還能不能一起愉快的玩耍。
不少人有個(gè)疑問,那么谷歌是否能解除微軟打的馬賽克,上演一番科技版“用我的矛戳你的洞”?我們先來看下雙方的技術(shù)原理是怎么樣。
根據(jù)微軟亞洲研究院副研究員謝文軒介紹,操作這套解決方案,用戶只需在后臺(tái)用鼠標(biāo)選擇想要打碼的人物,相應(yīng)人物在視頻中的所有露臉區(qū)域都將被打上馬賽克。
大致流程如下:
技術(shù)解決方案背后的邏輯是先找出視頻中全部人臉?biāo)诘奈恢茫诙绞前淹粋€(gè)人的所有人臉連接起來。
這背后涉及到人臉檢測(cè)、追蹤和識(shí)別。
1.人臉檢測(cè)
人臉檢測(cè)的作用是定位人臉出現(xiàn)的位置。為了保證人臉盡量不被漏掉,微軟采用了一套基于深度網(wǎng)絡(luò)的、具有高召回率的人臉檢測(cè)器。該檢測(cè)器對(duì)視頻的每一幀都進(jìn)行檢測(cè),記錄每個(gè)人臉對(duì)應(yīng)的矩形框位置。
2.人臉追蹤
在某一幀中給出一個(gè)人臉框,在其前幾幀和后幾幀都找到與之最相似的框。人臉跟蹤的作用體現(xiàn)在這兩大方面:一是連接相鄰幀的檢測(cè)框,因?yàn)槿四槞z測(cè)只負(fù)責(zé)每一幀的人臉定位,不負(fù)責(zé)幀間的連接;二是將當(dāng)前幀的人臉檢測(cè)框延續(xù)到前后幾幀,這樣即可定位到那些檢測(cè)不到的側(cè)臉。
3.人臉識(shí)別
當(dāng)然,該方案僅僅靠人臉檢測(cè)與追蹤還是不夠的。假設(shè)一個(gè)場(chǎng)景,如果視頻中存在鏡頭切換以及人物遮擋等問題,就需要利用人臉識(shí)別。微軟訓(xùn)練了一套基于深度網(wǎng)絡(luò)的人臉識(shí)別模型,對(duì)于不同鏡頭里的兩張人臉,根據(jù)相似度對(duì)它們進(jìn)行連接。最后系統(tǒng)將整個(gè)視頻中不同人物的人臉都各自連接起來,提供給用戶進(jìn)行挑選。
時(shí)間復(fù)雜度方面,系統(tǒng)在 Azure 的 CPU 服務(wù)器上能夠?qū)崟r(shí)處理 720p 的視頻,并且能夠以 2 倍時(shí)長(zhǎng)處理 1080p 的高清視頻。
在講谷歌的自動(dòng)解除馬賽克絕活前,我們先來了解下馬賽克還原問題。
通常來講,馬賽克是不可逆損失信息的,很難還原。
為何難以還原?
打碼是一個(gè)減少信息量的過程,這些減少的信息已經(jīng)丟失。馬賽克處理相當(dāng)于對(duì)圖像信號(hào)的進(jìn)行比原始數(shù)據(jù)更低頻率的采樣。根據(jù)奈奎斯特采樣定理,如果這個(gè)采樣頻率比原始數(shù)據(jù)的頻率的 2 倍還要低,那么必然產(chǎn)生不可逆的數(shù)據(jù)損失。大部分情況下,“馬賽克”處理都會(huì)產(chǎn)生不可逆的數(shù)據(jù)損失。
打馬賽克的方式有多種,最常見的就是取平均。我們可以把一張圖片想象成一個(gè)方格矩陣,里面不同的數(shù)值(RGB、CMYK數(shù)值)表示不同的顏色。打馬賽克的本質(zhì)就是把那個(gè)區(qū)域的數(shù)字都取周圍數(shù)字的平均數(shù)。
舉個(gè)簡(jiǎn)單的例子,一張 16 個(gè)像素的圖像,用一個(gè)很簡(jiǎn)單的算法打碼,每四個(gè)像素取左上角的像素的值。
廣義的馬賽克可為兩大類:大塊馬賽克模糊和小塊馬賽克模糊。
大塊馬賽克模糊往往更難處理。
而小塊馬賽克模糊相比而言容易一些。
為何小塊的馬賽克容易還原?
馬賽克是一個(gè)抽樣信號(hào),抽樣信號(hào)能否還原取決于采樣間距,也就是每個(gè)色塊的大小。如果采樣間距不是很大的話,將抽樣信號(hào)通過一個(gè)低通濾波器是可以基本還原原始信號(hào)的。上面黑白照片上的馬賽克色塊大小基本上都超過了允許采樣間距。這種信號(hào)通過低通濾波器的話會(huì)導(dǎo)致高頻信號(hào)失真,也就是圖片的細(xì)節(jié)。
近視眼可以看做是一種低通濾波器,你可以試著摘下眼鏡看看上述黑白照片的馬賽克酒壺,比戴眼鏡更能看出輪廓。所以我們?cè)谶h(yuǎn)看馬賽克的時(shí)候反而能看出輪廓,近了就什么都看不出了。
在面對(duì)模糊不是特別嚴(yán)重的情況下,傳統(tǒng)的方式可以用插值進(jìn)行還原。插值通俗講就是把原來一個(gè)像素的地方用多個(gè)像素代替。
插值算法在 MATLAB 圖像處理工具箱中提供了四種插值的方法:插值最接近原則插值、雙線性插值、雙三次插值、不規(guī)則碎片形插值。
下面的例子是一幅 106*40 的圖像放大成 450% 的效果:
最接近原則插值
最接近原則插值是最簡(jiǎn)單的插值方法,它的本質(zhì)就是放大象素。
新圖像的像素顏色是原圖像中與創(chuàng)造的象素位置最接近象素的顏色。如果把原圖像放大200%,1個(gè)象素就會(huì)被放大成(2*2)4個(gè)與原象素顏色相同的象素。多數(shù)的圖像瀏覽和編輯軟件都會(huì)使用這種插值方法放大數(shù)碼圖像,因?yàn)檫@不會(huì)改變?cè)瓐D像的顏色信息,并且不會(huì)產(chǎn)生防鋸齒效果。同理,在實(shí)際放大照片中這種方法并不合適,因?yàn)檫@種插值會(huì)增加圖像的可見鋸齒。
雙線性插值
在雙線性插值中,新創(chuàng)造的象素值,是由原圖像位置在它附近的(2 x -2)4個(gè)鄰近象素的值通過加權(quán)平均計(jì)算得出的。這種平均算法具有放鋸齒效果,創(chuàng)造出來的圖像擁有平滑的邊緣,鋸齒難以察覺。
雙三次插值
雙三次插值是一種更加復(fù)雜的插值方式,它能創(chuàng)造出比雙線性插值更平滑的圖像邊緣。從下圖中的眼睫毛部分,在這個(gè)地方,軟件通過雙三次插值創(chuàng)造了一個(gè)象素,而這個(gè)象素的象素值是由它附近的(4 x 4)個(gè)鄰近象素值推算出來的,因此精確度較高。
雙三次插值分類:
(1)雙三次插值平滑化 (2)普通雙三次插值 (3)雙三次插值銳化
不規(guī)則碎片形插值
不規(guī)則碎片形插值通常被應(yīng)用于圖像的放大倍率很大的情況(例如制作大幅印刷品)。它能夠讓放大后的圖像無論從形狀、邊緣、顏色都較接近原圖像,而且減少照片的模糊程度,效果比雙三次插值法還要好。讀者可以把下圖于上面的圖片比較,就能知道不規(guī)則碎片形插值法的優(yōu)勢(shì):
如果圖像中的某一區(qū)域被嚴(yán)重打碼,則可通過下述方式進(jìn)行還原:
假設(shè)原始圖像中,同一紋理會(huì)出現(xiàn)多次。模糊部分就用圖像中清晰的部分來填補(bǔ),或者將多個(gè)模糊的同一種紋理進(jìn)行比較,構(gòu)造出一個(gè)清晰的紋理來替代它們。也就是說,圖像滿足一定條件,可以從臨近的其他部位補(bǔ)全,類似 PS 中的仿制圖章工具。
舉個(gè)例子,圖片中有幾只斑點(diǎn)狗,但其中一只斑點(diǎn)狗被打碼了,于是去馬賽克算法尋找這個(gè)圖像中“最能匹配這個(gè)馬賽克的”其它斑點(diǎn)狗的局部圖像,然后用這個(gè)局部圖像來填補(bǔ)那個(gè)馬賽克。
與此同時(shí),也可在一個(gè)圖庫中尋找并組合出最能匹配馬賽克的圖案。
去年九月份,德克薩斯大學(xué)的研究者研發(fā)了“反馬賽克”技術(shù)。研究人員在 Torch 上一些網(wǎng)絡(luò)素材進(jìn)行訓(xùn)練和測(cè)試 ,結(jié)果顯示圖片能夠達(dá)到極高的準(zhǔn)確度。它的原理就是利用算法找到和圖片相符、相似的原始圖像。
而谷歌這次推出的最新去除馬賽克技術(shù)解決方案的原理也是與德克薩斯大學(xué)的研究成果相似。
今日 Google Brain 在提升圖片分辨率方面取得了突破性進(jìn)展。他們已經(jīng)成功將 8×8(毫米)網(wǎng)格的像素馬賽克轉(zhuǎn)換成為肉眼可辨識(shí)的人物圖像。
隨著深度學(xué)習(xí)的發(fā)展和圖像數(shù)據(jù)的劇增,提升低分辨率照片細(xì)節(jié)的最佳突破口就是神經(jīng)網(wǎng)路,當(dāng)我們被照片中所包含的像素信息難倒的時(shí)候,深度學(xué)習(xí)能通過“聯(lián)想”的方式增加細(xì)節(jié)。實(shí)質(zhì)就是軟件基于從其他圖片中學(xué)習(xí)到的信息對(duì)圖片進(jìn)行猜測(cè)。
Google Brain 的研究團(tuán)隊(duì)已經(jīng)公布了 Pixel Recursive Super Resolution 技術(shù)的最新進(jìn)展,盡管結(jié)果看上去并不完美,但是整體還是非??捎^的。
下面是他們復(fù)原的效果案例之一:
右手邊的圖片,是 32 x 32 網(wǎng)格的真實(shí)人物頭像。左手邊的圖片,是已經(jīng)壓縮到 8 x 8 網(wǎng)格的相同頭像,而中間的照片,是 GoogleBrain 基于低分辨率樣片猜測(cè)的原圖。
整個(gè)復(fù)原過程使用了兩種神經(jīng)網(wǎng)絡(luò)。首先介紹的是 Conditioning Network,將低分辨率照片和數(shù)據(jù)庫中的高分辨率照片進(jìn)行對(duì)比。這個(gè)過程中迅速降低數(shù)據(jù)庫照片中的分辨率,并根據(jù)像素顏色匹配一堆同類照片。
接下來介紹的是 Prior Network,它會(huì)猜測(cè)哪些細(xì)節(jié)可以作為高分辨率照片的特征。利用 PixelCNN 架構(gòu),該網(wǎng)絡(luò)會(huì)篩查該尺寸的同類照片,并根據(jù)概率優(yōu)先對(duì)高分辨率照片進(jìn)行填充。例如,在論文提供的例子中,提供的同類照片是名人和臥室,Prior Network 根據(jù)優(yōu)先級(jí)最終確認(rèn)了名人的照片。Prior Network 會(huì)在低分辨率和高分辨率照片中做出決定,如果發(fā)現(xiàn)鼻子的可能性比較大,就會(huì)選擇鼻子。
為了制作出最終的無碼高清圖片,需要融合這兩個(gè)神經(jīng)網(wǎng)絡(luò)輸出的數(shù)據(jù),最終結(jié)果往往會(huì)包含一些似是而非的新細(xì)節(jié)。
下面也是一些通過超像素技術(shù)變化的樣本:
這項(xiàng)高清還原技術(shù)已經(jīng)在實(shí)際測(cè)試中取得了一定的成功。該團(tuán)隊(duì)向人類觀察員呈現(xiàn)真實(shí)的高清明星照和經(jīng)過電腦還原的照片時(shí),觀察員被騙的比例達(dá)到10%。而在臥室照片中,人類觀察員被騙的比例達(dá)到 28%。這兩個(gè)得分都遠(yuǎn)高于常規(guī)的插值技術(shù),后者沒有騙過任何人類觀察員。
雖然谷歌這次把去馬賽克技術(shù)提高了一個(gè)水平,但依舊無法達(dá)到“還原”的水準(zhǔn),更多屬于預(yù)測(cè),因此谷歌與微軟之間也不存在“用我的矛戳你的洞”這個(gè)問題。雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。