解決方案
要讓電腦從單張小尺寸 2D 影像推斷物件的 3D 形狀,確實很困難,但也很有用:這有助於 AR 與 VR 中的物件追蹤以及創作流程。障礙在於運算量。一張 100×100 像素的影像,對應到 100 立方體積中的一百萬個體素(voxel),而要達到 128 像素,則約需兩百萬個體素,且每個體素都必須透過分析原始影像來判定為空或實。
直觀的做法是計算整個高解析度體積,而這正是從 2D 影像外推 3D 形狀一直受限於成本的原因。Berkeley Artificial Intelligence Research 實驗室的研究員 Christian Häne 意識到,其實從來不需要完整的體積:目標只是描述物件的表面,而物件周圍與內部的空白空間並不重要。
他的系統先從解析度極低的 3D 重建開始,這已經能顯示出例如體積外側三分之一是空的,於是該空間被丟棄。接著,系統以更高解析度算繪保留的區域,找出下一層空白空間、將其丟棄,然後重複。經過幾輪之後,便得到一個高空間解析度的體積,而計算量相對較少,因為它只計算已知含有有意義資訊的部分。
以此方式建立的模型與傳統方法產生的模型相比,整體看來一樣好或更好,同時所需的計算量少得多,論文中還有更多例子。TechCrunch 的報導對其限制相當謹慎:這遠非完整的解決方案,人類仍舊好上幾個數量級,但這個變通做法呼應了人類視覺丟棄它認為多餘之資料的方式。
達成了什麼
先算繪粗略體積,丟棄空白空間,再只精算剩餘部分
為何有效
粗略的一輪幾乎不花成本,卻能可靠地顯示出大片空白區域的位置,因此大多數體素在還未被高解析度計算之前就已排除。
空白空間在包圍體積中佔絕大多數,因此把計算集中在存留區域,就能把昂貴的運算正好放在有結構存在的地方。
品質不會崩壞,因為每次精算只重新算繪前一輪較粗略結果顯示為非空的部分,讓誤差留在演算法持續處理的區域。
這個技巧把一個負擔不起的整體體積問題,轉化為反覆求解的廉價子問題,因此成本隨所描述的表面而擴展,而非隨整個方盒擴展。
可套用之處
當解答空間大部分是空的,先做一輪廉價的粗略計算,丟棄不可能重要的部分,只把昂貴的運算花在存留下來的部分。
後續
論文與一篇 Berkeley AI Research 部落格文章於 2017 年 8 月發表,而 TechCrunch 的報導稱此解決方案在運算上巧妙、簡單到令人拍額,並引發了 161 點的 Hacker News 討論。報導中的比較發現,階層式模型與傳統的完整體積重建一樣好或更好,且計算量少得多。報導稱之為變通做法,而非完成的答案:人類在單張影像的 3D 推斷上仍好上幾個數量級,而該方法之所以有效,是借用了大腦丟棄多餘資料的習慣。
追溯依據
參考來源
- This algorithm cleverly recreates 3D objects from tiny 2D images TechCrunch · techcrunch.com ·
- An algorithm that cleverly recreates 3D objects from tiny 2D images — Hacker News discussion Hacker News · news.ycombinator.com ·