0
物體檢測作為計算機(jī)視覺領(lǐng)域最廣泛的研究主題之一,雖然2D 物體檢測已在工業(yè)界得到了比較成熟的應(yīng)用,然而實(shí)現(xiàn) 3D 物體檢測目前還困難重重。
一方面是由于現(xiàn)有的3D 數(shù)據(jù)非常匱乏,另一方面則是因?yàn)閱蝹€類別下的物體外觀和形狀本身就非常多樣化。
在當(dāng)前條件下,如何基于現(xiàn)有的 2D 圖像數(shù)據(jù)來做3D 檢測呢?
日前,谷歌發(fā)布了一個針對日常物體的移動實(shí)時 3D 物體檢測管道——MediaPipe Objectron。
該管道可以檢測2D圖像中的物體,然后通過機(jī)器學(xué)習(xí)模型估計物體的姿勢和大小,再在谷歌最新開發(fā)的3D數(shù)據(jù)集上對模型進(jìn)行訓(xùn)練。
其中,MediaPipe 是一個開源跨平臺框架,用于構(gòu)建管道來處理不同模式的感知數(shù)據(jù),而Objectron則是在MediaPipe中實(shí)現(xiàn),能夠在移動設(shè)備中實(shí)時計算面向檢測物體的3D 邊框。
(雷鋒網(wǎng))
單個圖像的 3D 物體檢測。MediaPipe Objectron在移動設(shè)備上實(shí)時確定日常對象的位置、方位和大小。
隨著依賴于激光雷達(dá)等 3D 捕獲傳感器的自動駕駛汽車研究工作的日益普及,目前已有大量的街道場景 3D 數(shù)據(jù),然而針對更細(xì)粒度的日常物體的帶有真實(shí) 3D 標(biāo)注的數(shù)據(jù)集極度有限。
為了解決這一問題,谷歌使用移動增強(qiáng)現(xiàn)實(shí)會話數(shù)據(jù)開發(fā)了一個新的數(shù)據(jù)管道。隨著ARCore 、ARKit等工具的出現(xiàn),數(shù)億部智能手機(jī)現(xiàn)在具備了AR 功能,能夠在 AR會話期間捕捉到額外的信息,包括攝像機(jī)姿勢、稀疏的3D點(diǎn)云、估計的照明和平面。為了標(biāo)注真實(shí)數(shù)據(jù),谷歌還開發(fā)了能夠與AR會話數(shù)據(jù)一同使用的新標(biāo)注工具,讓標(biāo)注者可以快速地給物體標(biāo)注 3D 邊框。
該工具使用分屏視圖顯示 2D 視頻幀,其中左側(cè)放置3D邊框,右側(cè)顯示3D點(diǎn)云、攝像機(jī)位置和檢測到的平面視圖。標(biāo)注者以3D 視圖來繪制3D 邊框,并通過查看其在2D 視頻幀中的投影來檢驗(yàn)其位置。
針對靜態(tài)物體,只需要在單個幀中標(biāo)注物體,然后利用AR 對話數(shù)據(jù)中真實(shí)的攝像機(jī)姿勢信息將其位置傳送到所有幀中,從而提高整個流程的效率。
(雷鋒網(wǎng))
3D物體檢測的真實(shí)世界數(shù)據(jù)標(biāo)注。右圖:使用檢測到的平面和點(diǎn)云在3D 世界中標(biāo)注3D邊框。左圖:標(biāo)注的3D 邊框的投影覆蓋在視頻幀的頂部,從而使得驗(yàn)證標(biāo)注變得更簡單。
在提高預(yù)測準(zhǔn)確性方面,現(xiàn)在常用的一種方法是使用合成數(shù)據(jù)來補(bǔ)充現(xiàn)實(shí)世界的數(shù)據(jù)。然而這種做法往往會產(chǎn)生質(zhì)量差、不現(xiàn)實(shí)的數(shù)據(jù),而在真實(shí)渲染的情況下,則需要進(jìn)行大量的嘗試和消耗計算成本。
谷歌提出的新方法,叫做AR 合成數(shù)據(jù)生成(AR Synthetic Data Generation),將虛擬物體放置到已有 AR 會話數(shù)據(jù)的場景中,可以利用攝像機(jī)姿勢、檢測到的平面以及估計的照明情況來生成物理世界中可能存在以及照明條件能夠與場景匹配的位置。
這種方法可以生成高質(zhì)量的合成數(shù)據(jù),并且渲染的物體不僅順應(yīng)場景幾何體,還能夠無縫匹配適應(yīng)現(xiàn)實(shí)場景。通過結(jié)合現(xiàn)實(shí)世界的數(shù)據(jù)和 AR 合成數(shù)據(jù),能夠提高約10%的準(zhǔn)確度。
(雷鋒網(wǎng))
AR合成數(shù)據(jù)生成的例子。虛擬的白棕色麥片盒被渲染到真實(shí)場景中,挨著一本真實(shí)的藍(lán)色書。
谷歌建立了一個單級模型,能夠從RGB圖像中預(yù)測物體的姿態(tài)和物理大小。具體而言,模型的主干包含基于MobileNetv2構(gòu)建的編解碼器體系結(jié)構(gòu),并采用多任務(wù)學(xué)習(xí)方法通過檢測和回歸聯(lián)合預(yù)測目標(biāo)的形狀。形狀預(yù)測依賴數(shù)據(jù)標(biāo)注的質(zhì)量,如果數(shù)據(jù)中沒有形狀的標(biāo)注,那么此選項(xiàng)可以不選。
對于檢測任務(wù),使用標(biāo)注好的邊界框,并用高斯擬合。其中,中心在框的中間,標(biāo)準(zhǔn)差與框的大小成正比。檢測的目標(biāo)就是預(yù)測這種概率分布,其概率分布的峰值表示目標(biāo)的中心位置。
為了獲得邊界框的最終3D坐標(biāo),谷歌利用了一種完善的姿勢估計算法(EPnP),這個算法能夠在無需了解目標(biāo)大小的情況下,恢復(fù)目標(biāo)的3D 邊界框,只要有了3D邊界框,就可以輕松計算目標(biāo)的姿勢和大小。
下圖是模型的網(wǎng)絡(luò)架構(gòu)和后處理,經(jīng)驗(yàn)證模型可以輕松的在移動設(shè)備上實(shí)時運(yùn)行,例如在Adreno 650移動GPU上為26FPS。
圖注:3D目標(biāo)檢測的網(wǎng)絡(luò)結(jié)構(gòu)和后處理
(雷鋒網(wǎng))
圖注:網(wǎng)絡(luò)樣本結(jié)果:左邊是帶有估計邊界框的原始2D圖像,中間是基于高斯分布的目標(biāo)檢測。右邊是預(yù)測分割掩碼。
在MediaPipe上檢測和跟蹤
讓模型實(shí)際應(yīng)用時,由于針對的是移動設(shè)備捕獲的每一幀,而這些幀的3D邊界框可能是模糊的,所以模型可能會被干擾。為了解決這一問題,谷歌借鑒了其之前2D目標(biāo)檢測的方案,也即使用了之前的檢測+跟蹤框架。
此方案能夠減少模型在每一幀上運(yùn)行網(wǎng)絡(luò)的需要,允許重復(fù)使用,同時保持pipeline移動設(shè)備上的實(shí)時更新。此外,還能跨幀保留目標(biāo)屬性,確保預(yù)測在時間上一致,從而。減少抖動為了提高移動設(shè)備pipeline,每隔幾幀只運(yùn)行一次模型推理。
另外,所采用的預(yù)測方法是實(shí)時運(yùn)動跟蹤和運(yùn)動靜止跟蹤的結(jié)合,當(dāng)做出新預(yù)測時候,會將檢測結(jié)果和跟蹤結(jié)果合并。為了鼓勵研究、開發(fā)人員使用谷歌的pipeline建模,其將在MediaPipe Objectron上發(fā)布基于設(shè)備的實(shí)時3D目標(biāo)檢測的pipeline,內(nèi)容包括端到端的demo移動應(yīng)用,以及兩類訓(xùn)練模型,這兩類訓(xùn)練模式是鞋子和椅子。
項(xiàng)目已經(jīng)開源,下面附上Github地址和博客:
https://github.com/google/mediapipe/blob/master/mediapipe/docs/objectron_mobile_gpu.md
https://ai.googleblog.com/2020/03/real-time-3d-object-detection-on-mobile.html
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。