Facebook 新研究:使用CNN將任何2D照片轉換爲3D

Facebook 的 3D 照片功能於 2018 年推出,是一種全新的、沉浸式的照片格式,用於與朋友和家人分享照片。不過,在當時,這一功能依賴於只有新款高端智能手機纔有的雙鏡頭“肖像模式”功能。因此,這一功能無法在只有一個後置鏡頭的典型移動設備上使用。爲了讓更多的人能夠用上這種全新的視覺形式,Facebook近日發佈了一項研究,使用了最先進的機器學習技術,能夠將幾乎任何標準的 2D 照片轉換爲3D 照片。這個系統可以推斷出任何圖像的 3D 結構,無論是用標準單鏡頭在 Android 和 iOS 設備拍攝的新照片,還是最近上傳到手機或筆記本電腦上的幾十年前的老照片。

以下內容整理自Facebook AI博客:

這一技術進步使得數以百萬計使用單鏡頭照相手機或平板電腦的人們第一次可以輕鬆地接觸到 3D 照片技術。它還可以讓每個人以一種全新的方式體驗幾十年前的家庭照片和其他珍貴的圖像,將它們轉換成 3D 照片。擁有最先進的雙鏡頭設備的人也能從中受益,因爲他們現在可以使用唯一的前置鏡頭進行 3D 自拍。任何擁有 iPhone 7 或更高版本,或者最近的中端或更好的 Android 設備的人,現在都可以在 Facebook 的應用程序中嘗試這些選項這項技術。

image

構建這種增強的 3D 照片技術需要克服各種技術挑戰,例如,訓練模型,以正確推斷出極其廣泛主題的 3D 位置,並優化系統,使其能夠在不到一秒的時間內,就能在典型移動處理器的設備上運行。爲了克服這些挑戰,研究人員在數百萬對公共 3D 圖像及其相應的深度圖上訓練了卷積神經網絡,並利用了 Facebook AI 之前開發的各種移動優化技術,如 FBNetChamNet 等。(技術團隊還討論了最近在 3D 理解方面的相關研究,參見:《推動 3D 內容理解的最新進展》(Pushing the state of the art in 3D content understanding))

現在,這一功能對所有 Facebook 的用戶都是可用的,本文將分享如何構建這一功能的細節。

image

小狗的原始照片是用單鏡頭相機拍攝的,並不包含任何深度圖的數據。系統將其轉換成 3D 圖像,如圖所示。

在移動設備上提供高效性能

給定一幅標準的 RGB 圖像,3D Photos CNN (3D 照片卷積神經網絡)可以估計每個像素到相機的距離。技術團隊通過以下四種方式實現了這一點:

  • 使用一組可參數化的、可移動優化的神經構建塊來構建的網絡架構。

  • 將架構搜索自動化以查找這些塊的有效配置,使系統能夠在不到一秒的時間在各種設備上執行任務。

  • 量化感知訓練,可在移動設備上利用高性能的 int8 量化,同時最大限度降低量化過程帶來的潛在質量下降。

  • 大量的訓練數據源自公開的 3D 照片。

神經構建塊

該項目的架構使用了受 FBNet 啓發的構件塊,FBNet 是一個用於優化移動設備和其他資源受限設備的 ConvNet 架構的框架。一個構建塊由逐點卷積(pointwise convolution)、可選上採樣、$K \times K$ 深度卷積和一個額外的逐點卷積組成。團隊實現了一個 U-net 風格的架構,該架構已經被修改爲沿着殘差連接(skip connection)放置 FBNet 構建塊。U-net 編碼器和解碼器各包含五個階段,每個階段對應不同的空間分辨率。

image

網絡架構概述。該網絡架構是一個 U-net,沿着殘差連接放置了額外的宏級構建塊。

自動架構搜索

爲了找到一個有效的架構配置,研發人員使用 ChamNet 將搜索過程自動化,這是 Facebook AI 開發的一個算法。ChamNet 算法迭代地從搜索空間中採樣點來訓練正確度預測器。該正確度預測器用於加速遺傳搜索,以找到在滿足特定資源約束的前提下,使預測正確度最大化的模型。在這個設置中,使用一個搜索空間,該搜索空間改變了通道擴展因子和每個塊的輸出通道數,從而產生了 $3.4 \times 10^{22}$ 個可能的架構。然後,使用 800 塊 Tesla V100 GPU,在大約三天內完成了搜索,設置並調整了模型架構上的 FLOP 約束,以實現不同的操作點。

量化感知訓練

默認情況下,模型使用單精度浮點權重和激活進行訓練,但研究人員發現,將權重和激活量化爲僅 8 位具有顯著的優勢。特別是,int8 權重只需 float32 權重所需存儲空間的四分之一,從而減少了首次使用時必須傳輸到設備的字節數。

image

這些圖像都是從普通的 2D 圖像開始,然後通過深度估計神經網絡轉換成 3D 圖像。

由於 Facebook AI 的 QNNPACK 等經過調優的庫已經整合到 PyTorch 中,因此與 float32 相比,基於 int8 的運營商的吞吐量要高得多。團隊通過使用量化感知訓練(quantization-aware training,QAT)來避免由於量化導致的不可接受的質量下降。QAT(現已作爲 PyTorch 的一部分提供)在訓練過程中模擬量化並支持反向傳播,從而消除了訓練和生產性能之間的差距。

image

神經網絡可處理各種內容,包括場景複雜的繪畫和圖像。

尋找創造 3D 體驗的新方法

除了完善和改進深度估計算法,Facebook AI團隊還致力於爲移動設備拍攝的視頻提供高質量的深度估計。視頻是一個值得注意的挑戰,因爲視頻中每一幀的深度必須與下一幀保持一致。但這也是提高性能的一個機會,因爲對同一目標的多次觀測可以爲高正確度的深度估計提供額外的信號。視頻長度深度估計將向用戶開放多種創新的內容創作工具。隨着團隊不斷提高神經網絡的性能,未來還將探索利用深度估計、表面法線估計(surface normal estimation)、和空間推理在實時應用(如增強現實)中的應用。

除了這些潛在的新體驗外,這項工作還將幫助技術團隊更好地全面理解 2D,提高對 3D 場景的理解也可以幫助機器人導航並與現實世界進行互動。作者表示,希望通過分享3D 照片系統的細節,能夠幫助人工智能社區在這些領域取得進展,並創造利用先進的 3D 理解的新體驗。

作者介紹:

Kevin Matzen、Peizhao Zhang,研究科學家;Matthew Yu、Jonathan Lehman,軟件工程師;Jan-Michael Frahm、Peter Vajda、Johannes Kopf,研究科學主管;Matt Uyttendaele,工程總監。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章