當前位置:
首頁 > 科技 > 5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

由於鏡頭尺寸的限制,較高質量人像拍攝任務我們往往得交給雙攝甚至多攝像頭來完成。但就像你看到本文標題的主語後心裡所想的那樣:「不,對 Google 這樣的公司而言,還有另一條路可以走」。

這條路叫做演算法。

如果說去年發布的 Pixel 2 是迎難而上,巧妙地通過雙像素對焦和基於機器學習的圖像分割扛住了「雙攝」潮流的衝擊,那今年的 Pixel 3 顯然就是在逆境求生——一款發佈於 2018 年下半年的單攝手機,在看到「雙攝人像」千元機遍地走、四攝五攝機型前赴後繼的情景時,一般反應應該和 Pixel 3 XL 的劉海神似(o皿o)。但 Google 卻 明確表示,Pixel 3 的人像模式效果比 Pixel 2 更好。

這是怎麼做到的?


弗蘭肯斯「機」

一切謎底都與這台名為「弗蘭肯斯『機』(Frankenphone)」的手機有關,如果它還能被叫做「手機」的話——和西方文學史上首部科幻小說《弗蘭肯斯坦》中維克多·弗蘭肯斯坦用屍塊拼湊而成的那隻「怪物」一樣,這台特別的手機由五台 Pixel 3 組合而成。藉助一套特別開發的、基於 Wi-Fi 通信的拍攝方案,這五台 Pixel 3 能夠以小於 2ms 的誤差同時進行拍攝。

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

打開今日頭條,查看更多圖片

五攝 Pixel 3

因此當我們把五張用這台「弗蘭肯斯『機』」拍攝的照片疊在一起觀察時,所拍攝場景能夠以一種十分立體的效果進行呈現。

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

這可是用來訓練深度估計演算法的絕佳素材

因此從某種程度上來說,Google 做了一台搭載五攝方案的 Pixel 3,但 Google 並沒有將這台「怪物」應用到最終產品——在演算法工程師們看來,用這個方案拍出來的照片中所包含的數據簡直就是用來進行演算法訓練絕佳素材。


為何要改進演算法?

Google 軟體工程師打算用「五攝」Pixel 3 獲取的圖像數據來進行演算法訓練,訓練的對象就是此前曾用在 Pixel 2 上進行景深映射的深度估計(depth estimation)演算法。

為什麼要改進這個演算法?

在 Pixel 2 的人像模式下,相機先藉助卷積神經網路(CNN)對 HDR+ 生成的圖像進行主體與背景分割,然後經由雙像素自動對焦技術(dual pixel auto focus)獲取到的景深數據進行景深映射,最後根據生成的景深映射圖進行不同程度的背景虛化處理。

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

Pixel 2 人像模式的處理流程

這種基於立體景深(stereo depth)的人像模式處理流程能為採用單攝方案的 Pixel 2 帶來不俗的人像拍攝效果,但這個方法並非百試百靈。

在一篇介紹 Pixel 3 人像模式的 官方博文 中 Google 舉了這麼一個例子:

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

左側為原圖,右側為立體景深和學習景深效果對比

上圖左側為使用 HDR+ 拍攝的原始照片,右側則是基於立體景深(stereo depth)和學習景深(learned depth)兩種方式生成的人像對比。仔細觀察不難看出,採用立體景深進行人像模式合成的照片對背景中橫向條紋的虛化處理效果遠不及採用學習景深進行人像模式合成。

事實上,這也是 Pixel 2 基於立體景深進行人像模式合成的天然劣勢——藉助雙像素感測器從兩個角度捕捉同一畫面的過程一方面獲取了景深數據,另一方面也可以被看作是同一個感測器在水平或豎直方向通過位移拍攝了兩次。在這個過程中,由於孔徑問題(aperture problem)的存在,畫面中橫向和縱向內容將很難進行判斷和計算,最終也就難以將其作為背景進行虛化處理。

這裡提到的孔徑問題,最佳實例可以參考下圖。從圖中可以看出,三個圓圈中的斜線在視覺效果上有著相同的運動軌跡(左上方向),但實際卻可以由三種運動方式來完成。

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

這也是髮廊門口那個彩帶燈的原理

這其實也是「區域(local)」視覺和「全域(global)」視覺處理方式的差別,而一般情況下的手機成像都會受到區域視覺的影響,因此 Google 此前的人像模式演算法自然也存在其局限性。

但這正是「弗蘭肯斯『機』」訓練數據大展身手的地方。


更有根據地「猜」

在了解「弗蘭肯斯『機』」如何改進人像照片合成演算法之前,我們還必須知道的一點是,基於不管是雙像素感測器還是立體景深合成,這些方法的核心理念都在於對深度信息(depth cues)的捕捉和利用。

而除了深度信息,同一幅畫面中可以用來判斷景深的數據其實還有很多——即便是一張沒有經過景深計算和背景虛化處理的普通照片,我們依然能夠憑藉肉眼觀察來區分畫面中不同物體的位置關係,甚至能夠根據畫面中人臉所佔的像素麵積來對畫面中人物與鏡頭的距離進行估算(即以物體常見尺寸為參考進行肉眼測距)。

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

即便沒有明顯的背景虛化,我們也能憑肉眼區分前景與背景/圖:廣陵止息

這種測距方式用到的不是深度信息,而是場景語義信息(semantic cues),換句話說,靠的是我們對場景基於常識的判斷和理解。

但演算法是不具備這種常識的,這就是為什麼我們要用上面提到的「弗蘭肯斯『機』」的訓練數據改進演算法的根源

具體而言,「弗蘭肯斯『機』」獲取到的數據有這麼幾個優勢:

  1. 五台 Pixel 3 以不同位置進行拍攝,營造出多角度時差效果的同時,也能消除演算法執行過程中孔徑效應的限制
  2. 鏡頭以不同位置進行排列並拍攝,可以保證同一個像素點在至少兩張照片中都能找到與之對應的像素點。這可以消除單張照片通過雙像素感測器數據進行合成的過程中,部分像素難以對應的情況。
  3. 相機之間的實際位置差距也要比雙像素對焦中上下兩個像素感測器的位置差距更大,進行深度測算時自然就更加準確(可以理解為變相增加了雙像素感測器數量和尺寸)。

當然,Google 軟體工程師還表示,「弗蘭肯斯『機』」本身就是一個不錯的設計,他們很方便地將這五台 Pixel 3 捧在手裡或帶出門去,模擬用戶進行室外拍攝或動態拍攝(多攝方案其實還是「真香」嘛)……

5 個攝像頭才能拍出來的效果,谷歌憑什麼用「單攝」就做到了

卷積神經網路前後景分割的過程中加入了改進的深度估計演算法

最後,當我們再把原始數據送給這個人像模式演算法進行處理時,這個演算法就能更加準確地判斷畫面中不同物體之間的相互位置關係了,這也正是學習景深相比立體景深演算法的優勢所在(這裡 還有更多這兩種演算法的合成結果對比)。

不過代價也有點昂貴——基於深度學習並利用海量數據進行改進後的深度估計演算法加上基於神經網路的圖像分割演算法,需要的運算量似乎已經超過了 Pixel Visual Core 的承載能力。因此 Google 也在 博文 中承認,Pixel 3 人像模式的合成過程其實也調用了驍龍 845 的 GPU 算力。

參考文獻:

  • https://ai.googleblog.com/2018/11/learning-to-predict-depth-on-pixel-3.html
  • https://ai.googleblog.com/2017/10/portrait-mode-on-pixel-2-and-pixel-2-xl.html
  • https://wolfe4e.sinauer.com/wa08.02.html

(題圖來自 Macworld UK,@廣陵止息 對本文也有貢獻 )

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |