【深度相機系列五】腦補了和庫克的對話後,我發現了iPhone X深度相機選擇的祕訣和方法
阿新 • • 發佈:2019-02-07
本文首發於微信公眾號:計算機視覺life
前面的文章分別介紹了三種深度相機的原理:TOF、RGB雙目、結構光。看起來它們都各有利弊,那麼在實際產品研發中如何選擇深度相機呢?
為了讀者能夠有個清晰的思路,我腦補了蘋果公司CEO蒂姆·庫克(Tim Cook)和我的一段對話,我們就iPhone X如何選擇深度相機深入交換了意見。
以下對話內容純屬虛構,如有雷同,肯定是抄我的。 -------------------------------------------------------------------------------------------------- Cook:Hi,sixgod,how are you?
Sixgod:I am fine. Thank you! And you?
Cook:I am fine, too.
我:我英語庫存已經耗盡了。。。接不下去了。。。我們還是用中文吧!
庫克:木問題!我最近在考慮一款新手機iPhone X,想要增加深度相機,我看了你公眾號介紹的三種深度相機,寫的不錯,然而看完了我還是不知道該怎麼選,你有什麼建議嗎?
我:謝謝!我最近正好想寫一下,如何根據自身產品的需求選擇合適的深度相機技術方案。簡單來說,這三種深度相機沒有最好,只有最合適。首先,這款用在手機上的深度相機,你打算放前置還是後置?
庫克:前置。因為我們的深度相機主要是對人臉進行三維建模,然後在此基礎上增加三維人臉識別來解鎖手機,後面還有更多基於三維人臉的有趣應用。
我:要進行三維人臉識別,那看來使用距離很近了。另外,對深度相機的測量精度要求也很高啊!
庫克:是啊,這次我們就是主打三維人臉解鎖,要做就要做到最牛X,不然不好意思拿出手啊!
我:明白!那這麼說,是不是也要隨時隨地人臉解鎖了?不論室內室外,白天夜晚,效果都要槓槓的?
庫克:那是必須,如果人臉解鎖還要看環境條件,那消費者肯定不會買賬的!三維人臉解鎖本來就是要方便的啊,我們的目標是比指紋解鎖還要方便快捷!
我:Got it!那我們現在可以先排除掉RGB的雙目相機了。
庫克:啊!這麼快就排除一個了?那你得告訴我為啥要排除掉RGB雙目方案。
我:RGB雙目相機因為非常依賴純影象特徵匹配,所以在光照較暗或者過度曝光的情況下效果都非常差,另外如果被測場景本身缺乏紋理,也很難進行特徵提取和匹配。你看看下面的圖就懂了。
庫克:嗯,這個點明白了。我們繼續討論吧。 我:我:別急,看下面的表格,我列出了對比結果。
庫克:嗯,知道了。我們手機必須全天候實現三維人臉識別,RGB雙目方案做不到,不考慮了。那還有兩種呢,怎麼選? 我:下面可以從解析度、幀率、軟體複雜度、功耗等方面來考慮吧。畢竟我們要用在移動裝置上。 庫克:OK。我們計劃推出基於人臉的很多實用有趣的應用,比如人臉表情,人像光照,背景虛化等。攻城獅們正在努力加班中。後期可能還會推出AR相關的應用。所以對深度圖解析度還是有較高的要求的。 我:啊?你們也加班啊。。。關於解析度,TOF方案深度圖解析度很難提高,一般都達不到VGA(640x480)解析度。比如Kinect2的TOF方案深度圖解析度只有512x424。而Google和聯想合作的PHAB2手機的後置TOF深度相機解析度只有224x171。TOF方案受物理器件的限制,解析度很難做到接近VGA的,即使做到,也會和功耗呈指數倍增長。 庫克:那結構光的解析度呢? 我:在較近使用範圍內,結構光方案的解析度會大大高於TOF方案。比如目前結構光方案的深度圖最高可以做到1080p左右的解析度了。 庫克:嗯,這個解析度夠用了。那幀率和軟體複雜度呢?我們要實現實時的應用,這點也很重要! 我:幀率的話,TOF方案可以達到非常高的幀率,差不多上百fps吧。結構光方案幀率會低點,典型的是30fps,不過這也基本夠用了。軟體複雜度方面,結構光因為需要對編碼的結構光進行解碼,所以複雜度要比直接測距的TOF高一些。 庫克:嗯,看起來,幀率和軟體複雜度方面TOF更有優勢,不過差別對我們的需求影響不太明顯,我們無所不能的演算法工程師應該可以搞定。那功率呢?三維人臉解鎖使用頻率很高,功率是一個非常重要的考慮因素。 我:確實是啊,我之前用的iphone5s每天都得充電,出遠門都得自帶充電寶,心累啊。 庫克:額。。。 我:扯遠了啊。功耗的話TOF是鐳射全面照射,而結構光是隻照射其中區域性區域,比如PrimeSense的偽隨機散斑圖案,只覆蓋了不到十分之一的空間。另外,TOF發射的是高頻調製脈衝,而結構光投射圖案並不需要高頻調製,所以結構光的功耗要比TOF低很多。還是以偽隨機散斑結構光為例,結構光方案功耗只有TOF的十分之一不到吧。 庫克:Amazing! 有沒有具體的對比表格? 我:有有有。下面是三種方案在解析度,幀率,軟體複雜度和功耗方面的對比結果。
庫克:嗯,看來我只能選擇結構光方案了。其實,結構光方案還有一個優勢在於技術成熟,我們收購的PrimeSense很早就把結構光技術用在kinect一代產品中了。既然技術這麼成熟,想必結構光技術也有很多變種吧。 我:沒錯!目前結構光技術有如下幾種:一種是單目IR+投影紅外點陣,另外一種是雙目IR+投影紅外點陣,這樣相當於結構光+雙目立體融合了,深度測量效果會比前者好一些,比如Intel RealSense R200採用的就是雙目IR+投影紅外點陣,不足之處就是體積較大。而單目IR+投影紅外點陣的方案雖然體積較小,但是效果會差一點。 庫克:等下,體積是重點考慮因素啊!手機上空間本身就非常有限,消費者現在對全面屏也非常著迷。看來只能選擇單目IR+投影紅外點陣的方案了。我們前置深度相機的空間非常狹小,即使這樣設計出來,看起來很可能像是女生的齊劉海。 我:那挺萌的啊! 庫克:額。。。你繼續說說計算複雜度。 我:嗯,計算方式也分幾種:一是直接用ASIC(專用積體電路)進行計算,成本稍微高一點,但是處理速度快,支援高幀率和高解析度深度相機,關鍵是比通用晶片功耗低。二是DSP+軟體演算法,成本跟用ASIC差不多,但支援不了高幀率高解析度,功耗比ASIC稍高。三是直接用手機的AP(Application Processor)進行純軟體計算,這個不需要額外增加硬體成本,但是比較消耗AP的計算資源。同樣也不支援高幀率高解析度,功耗比較大。
庫克:低功耗,計算速度快,高幀率高解析度,嗯,ASIC方案比較適合iPhone X。 我:那您總結一下最後iPhone X的深度相機技術方案? 庫克:嗯。我們最終選擇方案是:結構光原理的深度相機。具體來說是:單目IR+投影紅外點陣+ASIC方案。該方案在深度解析度、深度測量精度上有較大優勢,實時性處理和全天候工作也都有保障,功耗也相對較低,就是成本稍高了一些。 我:額,這麼說,iPhone X的定價會比較高了? 庫克:還好吧,不過是幾杯咖啡的錢。 -------------------------------------------------------------------------------------------------------- 我猛地從夢中驚醒,出了一身冷汗。手裡攥著還沒來得及泡的泡麵,已被我捏的咔咔作響,那分明是心臟被震碎一地聲音。我掐指算了算,嗯,只要再堅持吃半年泡麵,我就能攢夠買iPhone X的錢了。
以下對話內容純屬虛構,如有雷同,肯定是抄我的。 -------------------------------------------------------------------------------------------------- Cook:Hi,sixgod,how are you?
庫克:嗯,這個點明白了。我們繼續討論吧。 我:我:別急,看下面的表格,我列出了對比結果。
庫克:嗯,知道了。我們手機必須全天候實現三維人臉識別,RGB雙目方案做不到,不考慮了。那還有兩種呢,怎麼選? 我:下面可以從解析度、幀率、軟體複雜度、功耗等方面來考慮吧。畢竟我們要用在移動裝置上。 庫克:OK。我們計劃推出基於人臉的很多實用有趣的應用,比如人臉表情,人像光照,背景虛化等。攻城獅們正在努力加班中。後期可能還會推出AR相關的應用。所以對深度圖解析度還是有較高的要求的。 我:啊?你們也加班啊。。。關於解析度,TOF方案深度圖解析度很難提高,一般都達不到VGA(640x480)解析度。比如Kinect2的TOF方案深度圖解析度只有512x424。而Google和聯想合作的PHAB2手機的後置TOF深度相機解析度只有224x171。TOF方案受物理器件的限制,解析度很難做到接近VGA的,即使做到,也會和功耗呈指數倍增長。 庫克:那結構光的解析度呢? 我:在較近使用範圍內,結構光方案的解析度會大大高於TOF方案。比如目前結構光方案的深度圖最高可以做到1080p左右的解析度了。 庫克:嗯,這個解析度夠用了。那幀率和軟體複雜度呢?我們要實現實時的應用,這點也很重要! 我:幀率的話,TOF方案可以達到非常高的幀率,差不多上百fps吧。結構光方案幀率會低點,典型的是30fps,不過這也基本夠用了。軟體複雜度方面,結構光因為需要對編碼的結構光進行解碼,所以複雜度要比直接測距的TOF高一些。 庫克:嗯,看起來,幀率和軟體複雜度方面TOF更有優勢,不過差別對我們的需求影響不太明顯,我們無所不能的演算法工程師應該可以搞定。那功率呢?三維人臉解鎖使用頻率很高,功率是一個非常重要的考慮因素。 我:確實是啊,我之前用的iphone5s每天都得充電,出遠門都得自帶充電寶,心累啊。 庫克:額。。。 我:扯遠了啊。功耗的話TOF是鐳射全面照射,而結構光是隻照射其中區域性區域,比如PrimeSense的偽隨機散斑圖案,只覆蓋了不到十分之一的空間。另外,TOF發射的是高頻調製脈衝,而結構光投射圖案並不需要高頻調製,所以結構光的功耗要比TOF低很多。還是以偽隨機散斑結構光為例,結構光方案功耗只有TOF的十分之一不到吧。 庫克:Amazing! 有沒有具體的對比表格? 我:有有有。下面是三種方案在解析度,幀率,軟體複雜度和功耗方面的對比結果。
庫克:嗯,看來我只能選擇結構光方案了。其實,結構光方案還有一個優勢在於技術成熟,我們收購的PrimeSense很早就把結構光技術用在kinect一代產品中了。既然技術這麼成熟,想必結構光技術也有很多變種吧。 我:沒錯!目前結構光技術有如下幾種:一種是單目IR+投影紅外點陣,另外一種是雙目IR+投影紅外點陣,這樣相當於結構光+雙目立體融合了,深度測量效果會比前者好一些,比如Intel RealSense R200採用的就是雙目IR+投影紅外點陣,不足之處就是體積較大。而單目IR+投影紅外點陣的方案雖然體積較小,但是效果會差一點。 庫克:等下,體積是重點考慮因素啊!手機上空間本身就非常有限,消費者現在對全面屏也非常著迷。看來只能選擇單目IR+投影紅外點陣的方案了。我們前置深度相機的空間非常狹小,即使這樣設計出來,看起來很可能像是女生的齊劉海。 我:那挺萌的啊! 庫克:額。。。你繼續說說計算複雜度。 我:嗯,計算方式也分幾種:一是直接用ASIC(專用積體電路)進行計算,成本稍微高一點,但是處理速度快,支援高幀率和高解析度深度相機,關鍵是比通用晶片功耗低。二是DSP+軟體演算法,成本跟用ASIC差不多,但支援不了高幀率高解析度,功耗比ASIC稍高。三是直接用手機的AP(Application Processor)進行純軟體計算,這個不需要額外增加硬體成本,但是比較消耗AP的計算資源。同樣也不支援高幀率高解析度,功耗比較大。
庫克:低功耗,計算速度快,高幀率高解析度,嗯,ASIC方案比較適合iPhone X。 我:那您總結一下最後iPhone X的深度相機技術方案? 庫克:嗯。我們最終選擇方案是:結構光原理的深度相機。具體來說是:單目IR+投影紅外點陣+ASIC方案。該方案在深度解析度、深度測量精度上有較大優勢,實時性處理和全天候工作也都有保障,功耗也相對較低,就是成本稍高了一些。 我:額,這麼說,iPhone X的定價會比較高了? 庫克:還好吧,不過是幾杯咖啡的錢。 -------------------------------------------------------------------------------------------------------- 我猛地從夢中驚醒,出了一身冷汗。手裡攥著還沒來得及泡的泡麵,已被我捏的咔咔作響,那分明是心臟被震碎一地聲音。我掐指算了算,嗯,只要再堅持吃半年泡麵,我就能攢夠買iPhone X的錢了。