無監督新框架!Depth Anywhere:增強任何單目360圖像的深度估計
本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。
寫在前面
準確估計360度圖像中的深度對于虛擬現實、自主導航應用至關重要?,F有的為透視視圖圖像設計的深度估計方法,在應用于360度圖像時,由于不同的相機投影和畸變而失效,而360度方法則因為缺乏標注數據對而表現不佳。這里提出了一種新的深度估計框架,該框架能夠有效利用未標注的360度數據。
提出的方法采用最先進的透視深度估計模型作為教師模型,通過六面體投影技術生成偽標簽,從而實現對360度圖像中深度的有效標注。這種方法利用了大型數據集日益增加的可用性。我們的方法包括兩個主要階段:離線無效區域mask生成和在線半監督聯合訓練方案。在Matterport3D和Stanford2D3D等基準數據集上測試了提出的方法,結果顯示在深度估計準確性方面取得了顯著改進,特別是在zero-shot學習場景中。提出的訓練流程可以增強任何360度單目深度估計器,并在不同的相機投影和數據類型之間實現有效的知識遷移。
背景介紹
近年來,計算機視覺領域涌現出大量研究,專注于解決處理360度圖像所面臨的挑戰。隨著全景圖像在虛擬現實、自主導航和沉浸式媒體等各個領域的廣泛應用,針對360度圖像量身定制的準確深度估計技術的需求日益凸顯。然而,直接將針對透視視圖圖像開發的現有深度估計方法應用于360度數據時,由于相機投影和畸變的差異,會遇到顯著困難。盡管許多方法旨在解決這種相機投影下的深度估計問題,但由于標注數據集的有限可用性,它們往往難以應對。
為了克服這些挑戰,這里提出了一種在360度圖像上訓練最先進(SOTA)深度估計模型的新方法。隨著可用數據量的顯著增加,數據量和質量的重要性變得顯而易見。關于透視感知模型的研究越來越多地集中在增加數據量和發展能夠跨不同類型數據泛化的基礎模型上。提出的方法利用SOTA透視深度估計基礎模型作為教師模型,并通過六面體投影方法為未標注的360度圖像生成偽標簽。通過這種方式,我們有效地解決了利用透視模型和大量未標注數據來標注360度圖像中深度信息的挑戰。
提出的方法包括兩個關鍵階段:離線mask生成和在線聯合訓練。在離線階段,結合檢測和分割模型,為未標注數據中的無效區域(如天空和水印)生成mask。隨后,在在線階段,采用半監督學習策略,將一半批次加載標注數據,另一半加載偽標注數據。通過聯合訓練標注數據和偽標注數據,我們的方法在360圖像上實現了穩健的深度估計性能。
為了驗證提出方法的有效性,在基準數據集(如Matterport3D和Stanford2D3D)上進行了廣泛的實驗。我們的方法在深度估計準確性方面表現出了顯著的改進,特別是在zero-shot學習場景中,即模型在一個數據集上訓練并在另一個數據集上評估時。此外,我們還通過不同的SOTA 360度深度模型和多種未標注數據集展示了我們的訓練技術的有效性,這凸顯了我們的方法在應對360度圖像帶來的獨特挑戰方面的靈活性和有效性。
主要貢獻可以總結如下:
? 提出了一種針對360度圖像的全新訓練技術,該技術通過透視基礎模型的蒸餾來利用未標注數據的潛力。? 引入了一種在線數據增強方法,該方法有效地在不同相機投影之間建立了知識蒸餾的橋梁。? 提出的訓練技術顯著地促進了并啟發了未來關于360度圖像的研究,通過展示最先進(SOTA)360度模型、透視教師模型和未標注數據集之間的可互換性。這使得即使在未來新的SOTA技術出現時,也能實現更好的結果。
Depth Anywhere方法介紹
本文提出了一種用于360度單目深度估計模型的新型訓練方法。方法利用透視深度估計模型作為教師,并使用六面體投影為未標注的360度圖像生成偽標簽。圖2展示了訓練流程,包括在離線階段使用“Segment Anything”來屏蔽未標注數據中的天空和水印區域。隨后,使用標注數據和未標注數據進行聯合訓練,每個批次分配一半給每種數據。未標注數據通過“Depth Anything”生成的偽標簽進行監督,這是一種最先進的透視單目深度基礎模型。借助教師模型的幫助,360度深度模型在zero-shot學習數據集上表現出了可觀的改進。
數據集統計。近年來,360數據變得越來越容易獲取。然而,與透視視圖深度數據集相比,為360度數據標注深度真實值面臨更大的挑戰。因此,360度數據的已標注數據集可用性遠小于透視數據集。表1列出了一些最流行的360度數據集的數據量,包括Matterport3D、Stanford2D3D和Structured3D。此外還列出了一個多模態數據集SpatialAudioGen,它由我們實驗中使用的未標注360度數據組成。值得注意的是,用于透視基礎模型Depth Anything的標注和未標注數據數量顯著更大,有150萬張標注圖像和6200萬張未標注圖像,使得360度數據集中的數據量大約小了170倍。
數據清洗和有效像素mask生成:未標注數據通常在天空和水印等區域包含無效像素,這會導致訓練不穩定或收斂不理想。為了解決這個問題,我們應用了GroundingSAM方法來屏蔽無效區域。這種方法利用Grounded DINOv2來檢測問題區域,并通過在邊界框內進行分割,應用Segment Anything模型來屏蔽無效像素。雖然Depth Anything也使用了一個預訓練的分割模型DINOv2來選擇天空區域,但魚眼相機拼接后經常會出現品牌標志和水印。因此,我們應用了額外的標簽來增強我們訓練過程的魯棒性。除此之外,還移除了所有有效像素少于20%的圖像,以穩定訓練過程。
透視基礎模型(教師模型):為了應對360度數據集中數據有限和標注困難帶來的挑戰,我們利用了大量未標注數據以及最先進的透視深度基礎模型。由于相機投影和畸變的顯著差異,直接將透視模型應用于360度數據通常會產生較差的結果。之前的工作已經探索了將等距投影轉換為透視深度的各種投影方法。其中,立方體投影和切線投影是最常見的技術。這里選擇了立方體投影,以確保每個patch具有更大的視場,從而在透視基礎模型的推斷過程中更好地觀察像素或物體之間的相對距離,并增強知識蒸餾。
在提出的方法中,首先將未標注的360度數據進行投影,然后在這些投影的透視圖像塊上運行Depth Anything以生成偽標簽。我們探索了兩種偽標簽監督的方向:將塊投影到等距投影上并在360度域中進行計算,或者將360度模型的360度深度輸出投影到塊上并在透視域中進行計算。由于訓練是以縮放后的相對深度方式進行的,因此將透視圖像塊重新拼接回等距投影并調整對齊的尺度是一個額外的研究方面。我們選擇在透視域中計算損失,這使得訓練更快更容易,無需額外的對齊優化。
直接將Depth Anything應用于立方體投影的未標注數據并不會帶來改進,因為忽略了跨立方面的關系,從而導致立方體偽影(圖4)。這個問題是由于對透視立方體面進行了單獨估計,其中單目深度是基于語義信息進行估計的,可能缺乏對整個場景的全面理解。為了解決這個問題,我們提出了在透視基礎模型之前進行隨機旋轉預處理的步驟。如圖2所示,使用隨機旋轉矩陣對等距投影的RGB圖像進行旋轉,然后進行立方體投影。這將產生更多樣化的立方體面集合,更有效地捕捉天花板、墻壁、窗戶和其他物體之間的相對距離。通過提出的隨機旋轉技術,由于觀察點不是靜態的,因此知識蒸餾變得更加全面。透視基礎模型的推理是即時進行的,在360模型訓練期間參數是凍結的。
為了執行隨機旋轉,我們在等距坐標(記為(θ, ?))上應用一個旋轉矩陣,記作 R。
對于等距投影到立方體投影,每個立方體面的視場(FoV)等于90度,每個面都可以被視為一個焦距為w/2的透視相機,并且所有面在世界坐標中共享同一個中心點。由于六個立方體面共享同一個中心點,因此每個相機的外參矩陣可以通過旋轉矩陣Ri來定義。p是立方體面上的像素點。
訓練過程與MiDaS、Depth Anything和其他跨數據集方法非常相似。我們的目標是為任何360度圖像提供深度估計。遵循之前在多個數據集上進行訓練的方法,我們的訓練目標是估計相對深度。首先,使用公式1/d將深度值轉換為視差空間,然后將每個視差圖歸一化到[0, 1]的范圍內。
為了適應跨數據集訓練和來自基礎模型的偽真實標簽,我們采用了仿射不變損失,這與先前的跨數據集方法一致。這種損失函數忽略了每個域的絕對尺度和偏移,從而允許在不同數據集和模型之間進行有效適應。