網(wǎng)站建設管理關于友誼的連接
分享嘉賓 |?楊澤同
文稿整理 |?William
嘉賓介紹
Introduction
3D檢測是在三維世界中去定位和分類不同的物體,與傳統(tǒng)2D檢測的區(qū)別在于它有一個深度信息。目前,大部分的工作是傾向于用點云去做三維檢測,點云實際上是通過傳感器去掃描出來的一系列點,這些點是分布在物體的表面,所以通過點云可以清楚的觀察到一個物體的形狀,所以最終做三位檢測的準確率也會更高。
點云實際上有三個特點,首先是無序性,其次是稀疏性,第三是無法準確的描述一個物體。所以,現(xiàn)在的基于點云的3D檢測框架可以分成兩大類:一類是先把點云變成圖片似的密集表示,然后再去像圖片一樣去處理點云,另一類是先處理成有序的、密集的表示,叫做基于體素的檢測器。它的思路是把點云轉(zhuǎn)換成均勻分布的體素,然后采用CNN的方式去處理,使用的特征提取的網(wǎng)絡用的是類似于稀疏卷積網(wǎng)絡。
介紹一下基于體素檢測一個相關的工作,它叫做pointpillars,速度很快,如圖1所示。在得到稀疏點云之后去做體素化,跟一般的體素化的區(qū)別在于它是把三維點云分成無數(shù)個pillars,即無限高的體素,但是忽略高度這一維,在這之后,可以用2DCNN去提取特征,然后再用圖片上常用的2D檢測器的頭部去做最后的預測。
圖1 PointPillars結(jié)構?
Point-based Detector:3DSSD
對于在點云中為什么需要上采樣層,是因為原先點云在特征提取網(wǎng)絡之后只剩下少量的點,那少量的點不一定會出現(xiàn)在物體的框里。如果最后選到的少量點不出現(xiàn)在物體的框里,那對于檢測器來講,是一個很不好的情況,因為很難去回歸出此框。
假如檢測器沒有上采樣層,實際上只可以回歸出來兩個紅色框,對于其他的黃色框來講,由于它們內(nèi)部不存在選到的點,所以,這些框就相當于直接被檢測器給Miss掉,如圖2所示。圖1右邊是統(tǒng)計了一些數(shù)據(jù),發(fā)現(xiàn)看在取4096個點時,有99.7%的物體是屬于紅色框,即存在內(nèi)部點被選中。取1024個點時,只有65.9%的內(nèi)部點被選中。到512個點時,就只有51.8%了。所以,實際上如果是用這種方式來去設計檢測器,光從選點角度來看,就已經(jīng)有48.2%的框完全沒有機會檢測到。
圖2 上采樣與框
但目標是建立一個非常簡單的檢測器,所以希望刪掉上采樣層。那么考慮一種方式在選點只有512或更少的情況下,也能召回這些框,這里是提出Feature Furthest Point Sampling(F-FPS)。實際上,它是基于特征的選點策略,還是圖1所示的場景,絕大多數(shù)的背景點實際上都是地面,特征具有一定的類似。前景點是屬于車或人或一些其他的前景物體,特征與背景是有一定的區(qū)別。因為它們之間特征存在區(qū)別,然后再加上最遠點采樣,就可以直接根據(jù)特征去做采樣,這樣可以盡可能的去采到特征不同的點。所以,它的優(yōu)勢在于可以去刪掉大量的背景點,另外是可以為前景去拿到它的內(nèi)部點。
下面來介紹3DSSD框架,如圖3所示。它最主要的改進點在于之前提到的F-FPS,然后加上D-FPS去做采樣,采樣完成之后,里面的每個模塊都用類似于pointnet去對采樣到的點做特征提取。特征提取層最終采的點處于物體邊界上的點,對回歸不太友好,這里目標是采樣點在物體中心。所以,提出了一個Kennedy generation layer,這個layer的目的是把一個個在邊界的采樣點給移動到物體的中心,再這之后去進行最后的檢測。最后生成預測框或生成分類分數(shù)去產(chǎn)生最后的結(jié)果。
?
圖3 3DSSD框架
Voxel-based Dector:3D-MAN
3D-MAN是為了解決單幀點云不能正確描述物體形狀的特點而設計出來的,框架如圖4所示。拿到單幀點云之后,經(jīng)過一個檢測器,得到檢測結(jié)果并存到memory bank里面。這個memory bank里面存的是這一幀和這一幀之前的前N幀所有對應的內(nèi)部物體和對應的物體特征。需要這些物體和物體特征是希望拿到同一個物體在不同幀的特征,然后進行融合,從而去解決單幀的問題,融合之后去做檢測。
圖4 3D-MAN框架
對于生成物體的特征,首先是采用pillar檢測器,所以實際上拿到了一個經(jīng)過backbone的2D特征圖。在拿到物體后,先把物體平均分成2乘3的網(wǎng)格,且均勻分布在物體內(nèi)部。在拿到great center之后,去計算它在feature map上的位置,然后通過雙線性插值去獲得它在featuremap上的位置和特征,在拿到六個網(wǎng)格的特征之后,去做平均池化,得到所對應的proposal,將proposal對應的特征去存到memory bank里。
當產(chǎn)生完一個個proposal的feature之后,就能拿到當前幀proposal的feature和存在memory bank里面不同幀proposal的feature,接著使用cross attention去計算相似度,然后利用相似度去組合當前幀所對應的proposal和特征。最后使用不同幀的特征進行融合,生成最后的預測結(jié)果。
圖5是同一個物體在不同幀feature的attention map,因為cross attention實際上是基于相似度進行的,然后把相似度就暫時簡稱為attention map。然后測試attention map可以發(fā)現(xiàn)它的對角線相比于其他位都是有更加大的亮度,也就是表示它的相似度很高。所以,實際上這個模塊是在做隱式的track,也就是可以從其他具有相似角度和大小的物體上找一些信息,理論上就可能會得到更好的效果
圖5 attention map
Unified Paradigm
現(xiàn)在3D檢測里面是存在基于體素和基于點的方法,這是兩個完全分開的研究領域,而實際上是希望提出一個統(tǒng)一的框架來進行3D檢測,所以來介紹下這篇《A Unified Query-based Paradigm for Point Cloud Understanding》簡稱為EQ-paradigm。
EQ-paradigm的整個流程如圖6所示。首先是輸入點云,然后經(jīng)過特征提取網(wǎng)絡,這個特征提取網(wǎng)絡既可以是基于體素的,也可以是基于點的,最后通過查詢?nèi)ミB接不同的head,即可以任意切換head去做分類、分割、基于體素的檢測或是基于點的檢測等等。
圖6 EQ-paradigm框架
流程中首先是Embedding Stage,這個希望它可以是任何一個存在的、頂尖的、基于體素或基于點的特征提取網(wǎng)絡,也就是不管head和task,這個地方可以隨意選擇。而EQ-paradigm里最重要的設計是Query Stage,它的目標是為一些query position提取特征,那這些query position實際上是連接特征提取網(wǎng)絡和對應的頭部的重要組件。query stage的作用是為query position去提取它對應的特征,這里簡稱為representation。然后,不同的頭部去根據(jù)representation生成所對應的最后檢測結(jié)果。
Quary position的選取是根據(jù)任務和所需要的head,比方如圖7所示,橙色的點是點云里面的一些點,如果希望去做語義分割, query position是這個點云場景下所有的點,因為語義分割是需要對所有的點做一個分類。如果要做分類,那position是物體所對應的中心點。
圖7 Quary position
那如何為query position生成特征,這里所用的方式其實是transform,因為transform實際上非常好去做query。具體如圖7所示,拿到一些query position后,初始化它們的特征為零,然后用query position和它對應的初始化特征去從support features和support point里面去拿到它所對應的特征,這些support實際上是前面選擇網(wǎng)絡所生成得一些特征。之后,會通過Q-decode layer將support feature和support point作為K和V,然后把這些query作為Q,輸入到里面去生成它所對應attention的特征,然后會多疊幾層qblock,這里是有6層,然后不斷迭代式的更新它所對應的query feature。然后,拿到了最后的query feature之后,就會經(jīng)過一些MLP層完成任務。
圖7 Q-Net結(jié)構
Future Works
在EQ-paradigm之后,可以把不同的模型及不同的backbone統(tǒng)一到同一個框架里面,所以在有了這個框架之后,可以像2D一樣去真正的做一個類似于2D里面的restnet等所有檢測器都可以去用的特征提取網(wǎng)絡,這個現(xiàn)在其實還沒有文章去做這件事情。第二個是當有了一個統(tǒng)一的特征提取網(wǎng)絡之后,實際上就可以去真正的做一個對于所有基于點云模型統(tǒng)一的pretraining網(wǎng)絡,無論是基于體素還是基于點。最后一個是可以去用基于圖片的特征網(wǎng)路去提取特征,這些都是未來可以做的一些方面。