Google最新親兒子Google Pixel 2系列一發布,拍照效果的好評就已鋪天蓋地。
憑藉著幾乎毫無亮點的單攝像頭,這款手機在DxOMark手機相機評分榜上碾壓iPhone 8和Galaxy Note 8,拿下這個榜單的史上最高分:98。
有這麼好?
Pixel 2拍照的「好」,有兩點可以非常直觀地感受到:一是雖然沒有時下流行的雙攝像頭,卻可以實現背景虛化的人像模式;
二是憑藉HDR+,在弱光下、或者光線強弱差異明顯的情況下也能還原出豐富的細節。
關於人像模式背後的機器學習和計算攝影黑科技,Google今天在官方博客上發文詳解,另外還宣布了一點與HDR+相關的小驚喜。
一起來學習一下吧~
單攝如何搞定背景虛化和iPhone等對手一樣,背景虛化應用在「人像模式」的拍照中。吶,下面這張圖顯示的就很直觀了。
△ 沒有經過人像模式處理(左)經過處理後(右)的同一張HDR+照片Pixel 2上的人像模式到底是如何加工圖片的?這還得分四步走。
第一步:生成HDR+圖片人像模式始於一張清晰的圖片。
因此,谷歌使用了計算攝影技術HDR+提升拍攝到圖片的質量,幾乎所有的Nexus/Pixel手機都自帶這個功能。
HDR+技術通過拍攝一系列曝光不足的圖片避免強光過強,調整和平衡這些幀減少陰影中的噪音。在保持局部對比度、合理減少整體對比度的同時,還增加了這些區域裡的陰影。
即使在昏暗的燈光下,此階段最終生成的圖片仍是一幅動態範圍高、噪音低、細節清晰的圖片。
通過調整和平衡幀來減少噪音在天文攝影技術中已經應用了很多年了,但谷歌Pixel的實現方式不太一樣。因為照片是在手機上拍攝的,因此需更加小心避免移動時產生的重影。下面就是一個用HDR+捕捉到的高動態範圍的場景。
△ 應用了HDR+技術(右)和沒有應用(左)圖像對比,兩圖均為Pixel 2拍攝。HDR+避免了天空處的過度曝光,並且增加了拱廊中的細節第二步:基於機器學習的前後景分割得到一張清晰的HDR+圖像後,下一步需要確定照片中哪些像素屬於前景(通常為人物)、哪些屬於背景。
看似簡單的一個步驟實際非常棘手,因為它與電影中的色鍵技術(chroma keying)不同,我們無法推測照片中的背景是什麼顏色。在此種艱難情況下,機器學習登場。
研究人員用TensorFlow訓練了一個神經網絡,負責分辨照片中的哪些像素屬於人物。這個卷積神經網絡(CNN)帶有skip connection,讓信息在網絡的早期和後期階段之間輕鬆傳輸,在早期階段,網絡推理顏色、邊緣等low-level特徵,而在後期階段,網絡推理面貌和身體部位等high-level特徵。
像這種結合至關重要,神經網絡不僅需要推斷照片中是否有人,還需要準確識別哪些像素屬於這個人。
在此之前,這個CNN已經接受過近百萬人照片數據的訓練,研究人員甚至讓它識別圖像中的帽子和太陽鏡等物件。
△ 左圖為HDR+處理的照片,右圖分出了神經網絡輸出的處理後圖像,其中分出了圖像的前景和背景。欣慰的是,CNN清晰劃出了女主人公的頭髮和茶杯的邊緣,將之與背景區分開。如果在此基礎上將背景進行模糊處理,可以下圖效果:
△ 合成的淺景深圖像圖像中特別需要注意的有幾點。
首先,雖然背景包含了不同景深的物體,模糊的程度是一致的。
其次,如果用單反來拍,圖中的盤子和餅乾比較靠近鏡頭,也會出現模糊的效果,而Google的神經網絡雖然知道餅乾不是人像的一部分,但是因為它在人像下方,也不能認作是背景的一部分,Google團隊對這種情況進行了特別處理,讓這部分像素保持相對清晰。可惜這種處理有時候就不太對,比如說這張照片中,盤子和餅乾相關的像素就應該更模糊一點。
第三步:從雙像素到深度映射現在有必要了解一下每個點圖像中的深度了,在這裡可以用立體算法計算深度。
Pixel 2非雙攝手機但也能拍出帶景深的圖片,因為它裡面添加了一種叫Phase-Detect Auto-Focus (PDAF)的像素技術,也可以稱為雙像素自動對焦(dual-pixel autofocus)。它的原理很容易理解。
想像一下,如果強行將手機的後置攝像頭的鏡頭分成兩半,那麼鏡頭左側的視角和右側略有不同。雖然這兩種視角相差不足1毫米(大概鏡頭直徑),但這細微的不同足以計算出立體程度,並生成深度映射。
這相當於將圖像傳感器晶片上的每個像素分割成兩個較小的並排像素,並分別從晶片上讀取它們,原理如圖所示:
△ 在Pixel 2的後置攝像頭上,每個像素的右側都會通過鏡頭左側來觀察,每個像素的左側都會通過鏡頭右側觀察如上圖所示,在一張照片中,PDAF像素通過鏡頭左右兩側給你不同的視角,如果你是豎著拿手機拍照,它就是鏡頭的上下兩半部分。
舉個例子吧,下圖中分別為上部分(左)和下部分(右)捕捉的圖片效果。
△ 考驗眼力的時刻到了單肉眼確實很難將這兩張圖片分開,從最右邊的GIF能看到細小的差別。
目前,PDAF技術已經應用在很多手機相機和單眼相機中,在錄製視頻時幫助使用者更快聚焦。在Pixel 2中,該技術被用於計算深度映射。
具體地說,研究人員用左側和右側圖像作為立體算法的輸入,類似於谷歌處理360°全景視頻所用的Jump Assembler。這種算法首先執行基於子像素的精確定位,生成低解析度深度圖,然後使用雙邊求解器將其插入到高解析度中。
這類似於之前應用到谷歌的鏡頭模糊特徵中的技術。
由於Pixel 2相機拍攝的左右視圖非常相近,所以得到的深度信息不準確,尤其是在光線較暗的情況下,圖像的噪聲很高。
為了減少這種噪聲,提高深度精度,研究人員將左右兩部分圖像進行了調整和平衡,之後再應用於立體算法中。
△ 左:用上下兩部分圖像計算深度映射。右:黑色表示無需模糊,紅色越亮就表示越需模糊,藍色表示焦點平面前的特徵第四步:拼合上述處理形成完整圖像終於可以將模糊分隔與深度映射結合起來了,它們共同決定在HDR+圖片中對哪些像素進行模糊處理。
我們希望圖像中的人像(上圖淺色區域)清晰,背景(深色區域)按照比例模糊。上圖中紅色區域顯示了每個像素的模糊程度。
模糊的概念理解起來很容易,每個像素都被替換為一個顏色相同但大小不同的半透明disk。如果這些disk像之前描述的那樣按深度排序,得到近似於真實的光學模糊效果。
△ 結合HDR圖像、模糊分隔和深度映射生成的最終淺景深圖像彩蛋:第一款自研移動晶片除了上述種種,萬萬沒想到的是,Google還在親兒子體內還潛藏了個彩蛋:
Pixel Visual Core
Google今天在官方博客上透露了這個小秘密:Pixel 2隱藏著一個尚未激活的圖像處理和機器學習協處理器,也是Google自研的第一款移動晶片,用來加速相機的HDR+計算。這款處理器就叫Pixel Visual Core。
上面其實已經提到過,沒有HDR的情況下,你在晴朗明亮的天空下拍張照片,會有兩種結果:要麼天空曝光成一片白,要麼你的臉黑黑一片、看不清五官。HDR的出現,讓相機能在同一張照片中,儘可能豐富地記錄下不同亮度物體的細節。
而Google的HDR+除了應對這種情況之外,還能解決陰暗環境中拍攝照片模糊或者滿是噪點的問題。
早在2014年,Google就在Nexus 5和Nexus 6的相機App中推出了這項功能。它的實現方式說起來有點簡單粗暴:你按下拍照按鈕,相機瞬間拍下一組照片,然後快速將它們合併成一張,存儲起來。
和其他相機上的HDR一樣,HDR+也有一個缺陷:處理速度。而這一代親兒子內置的Pixel Visual Core就為HDR+計算提供了加速。
Google在官方博客上介紹說,他們開發Pixel Visual Core,是為了「擴展HDR+的使用範圍,處理最具挑戰的圖像和機器學習應用,降低HDR+處理的延遲,甚至提高能效。」
△ Pixel Visual Core結構圖解如上圖所示,Pixel Visual Core的中心部分是Google設計的圖像處理單元(Image Processing Unit, IPU)。IPU是從零開始設計的特定領域可編程處理器,共有8個核心,每個核心有512算術邏輯單元(ALU)。
在行動裝置上,ALU每秒能進行超過3萬億次運算。Pixel Visual Core將HDR+計算的速度提升了5倍,與在應用處理器上運行相比,功耗只有1/10。
Google介紹稱,IPU有這樣的能效,關鍵在於硬體和軟體的緊密耦合。與傳統的處理器相比,IPU用軟體控制了硬體的更多細節,這帶來了更簡潔的設計和更高的能效。
但是,這種緊密耦合也讓IPU難以用傳統的程式語言進行編程。為此,IPU利用特定領域的語言來減輕開發人員和編譯器的負擔:用Halide來進行圖像處理,用TensorFlow處理機器學習。 Google還做了一個編譯器,來y歐化硬體代碼。
定義的Google編譯器優化底層硬體的代碼。
不過,Pixel Visual Core現在依然在休眠,要等到Android 8.1推送之後,這款處理器就能用了。之後,Google會第三方開發者開放Pixel Visual Core,開發者也可以通過Android Camera API,讓自己的App用上Pixel 2的HDR+技術。
Google還強調,HDR+加速只是Pixel Visual Core的第一項應用,接下來的各種其他應用也都已經在開發中。
小視頻關於Pixel 2攝像頭的情況,還可以看看上面這段來自YouTube的視頻+繁體字幕(字幕的細調沒搞定……就當個參考看吧),其中主要講述了如下幾個重點內容。
量子位AI社群10群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot3入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微信號qbitbot3,並務必備註相應群的關鍵詞~通過審核後我們將邀請進群。(專業群審核較嚴,敬請諒解)
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。