基于Lidar的object檢測模型包括Point-based [PointRCNN(CVPR19), IA-SSD(CVPR22)等], Voxel-based [PointPillars(CVPR19), CenterPoint(CVPR21)等],Point-Voxel-based [PV-RCNN(CVPR20), HVPR(CVPR21)等]和Multi-view-based[PIXOR(CVPR18)等]等。本博客主要記錄,作為菜鳥的我,在KITTI數(shù)據集上(3類)基于PyTorch實現(xiàn)PointPillars的一些學習心得, 訓練和測試的pipeline如Figure 1所示。這里按照深度學習算法的流程進行展開: 數(shù)據 + 網絡結構 + 預測/可視化 + 評估,和實現(xiàn)的代碼結構是一一對應的,完整代碼已更新于github//github.com/zhulf0804/PointPillars
[說明 - 代碼的實現(xiàn)是通過閱讀mmdet3dv0.18.1源碼, 加上自己的理解完成的。因為不會寫cuda, 所以cuda代碼和少量代碼是從mmdet3dv0.18.1復制過來的。]
一、KITTI 3D檢測數(shù)據集
1.1 數(shù)據集信息:
·KITTI數(shù)據集論文:Are we ready for autonomous driving? the kitti vision benchmark suite[CVPR 2012] 和Vision meets robotics: The kitti dataset[IJRR 2013]·KITTI數(shù)據集下載(下載前需要登錄): point cloud(velodyne, 29GB), images(image_2, 12 GB), calibration files(calib, 16 MB)和labels(label_2, 5 MB)。數(shù)據velodyne, calib 和 label_2的讀取詳見utils/io.py
。1.2 ground truth label信息 [file]
對每一幀點云數(shù)據, label是 n個15維的向量, 組成了8個維度的信息。
1)訓練時主要用到的是類別信息(type) 和3d bbox 信息 (location, dimension, rotation_y).2)觀測角(alpha)和旋轉角(rotation_y)的區(qū)別和聯(lián)系可以參考博客blog.csdn.net/qq_161375。
1.3 坐標系的變換
因為gt label中提供的bbox信息是Camera坐標系的,因此在訓練時需要使用外參等將其轉換到Lidar坐標系; 有時想要把3d bbox映射到圖像中的2d bbox方便可視化,此時需要內參。具體轉換關系如Figure 2。坐標系轉換的代碼見utils/process.py
。
1.4 數(shù)據增強
數(shù)據增強應該是Lidar檢測中很重要的一環(huán)。發(fā)現(xiàn)其與2D檢測中的增強差別較大,比如3D中會做database sampling(我理解的是把gt bbox進行cut-paste), 會做碰撞檢測等。在本庫中主要使用了采用了5種數(shù)據增強, 相關代碼在dataset/data_aug.py
。-
采樣gt bbox并將其復制到當前幀的點云
- 從Car, Pedestrian, Cyclist的database數(shù)據集中隨機采集一定數(shù)量的bbox及inside points, 使每類bboxes的數(shù)量分別達到15, 10, 10.
- 將這些采樣的bboxes進行碰撞檢測, 通過碰撞檢測的bboxes和對應labels加到gt_bboxes_3d, gt_labels
- 把位于這些采樣bboxes內點刪除掉, 替換成bboxes內部的點.
-
bbox 隨機旋轉平移
- 以某個bbox為例, 隨機產生num_try個平移向量t和旋轉角度r, 旋轉角度可以轉成旋轉矩陣(mat).
- 對bbox進行旋轉和平移, 找到num_try中第一個通過碰撞測試的平移向量t和旋轉角度r(mat).
- 對bbox內部的點進行旋轉和平移.
- 對bbox進行旋轉和平移.
-
隨機水平翻轉
- points水平翻轉
- bboxes水平翻轉
-
整體旋轉/平移/縮放
- object旋轉, 縮放和平移
- point旋轉, 縮放和平移
- 對points進行shuffle: 打亂點云數(shù)據中points的順序。
二、網絡結構與訓練
2.2 GT值生成
Head的3個分支基于anchor分別預測了類別, bbox框(相對于anchor的偏移量和尺寸比)和旋轉角度的類別, 那么在訓練時, 如何得到每一個anchor對應的GT值呢 ? 相關代碼見model/anchors.py
2.3 損失函數(shù)和訓練
現(xiàn)在知道了類別分類head, bbox回歸head和朝向分類head的預測值和GT值, 接下來介紹損失函數(shù)。相關代碼見loss/loss.py
。
總loss = 1.0*類別分類loss + 2.0*回歸loss + 2.0*朝向分類loss。模型訓練: 優(yōu)化器
torch.optim.AdamW()
, 學習率的調整torch.optim.lr_scheduler.OneCycleLR()
; 模型共訓練160epoches。三、單幀預測和可視化
基于Head的預測值和anchors, 如何得到最后的候選框呢 ? 相關代碼見model/pointpillars.py
。一般經過以下幾個步驟:基于預測的類別分數(shù)的scores, 選出nms_pre (100) 個anchors: 每一個anchor具有3個scores, 分別對應屬于每一類的概率, 這里選擇這3個scores中最大值作為該anchor的score; 根據每個anchor的score降序排序, 選擇anchors。
3. 逐類進行以下操作:
- 過濾掉類別score 小于 score_thr (0.1) 的bboxes
- 基于nms_thr (0.01), nms過濾掉重疊框:
另外, 基于Open3d實現(xiàn)了在Lidar和Image里3d bboxes的可視化, 相關代碼見
test.py
和utils/vis_o3d.py
。下圖是對驗證集中id=000134
的數(shù)據進行可視化的結果。
四、模型評估
評估指標同2D檢測類似, 也是采用AP, 即Precison-Recall曲線下的面積。不同的是, 在3D中可以計算3D bbox, BEV bbox 和 (2D bbox, AOS)的AP。先說明一下AOS指標和Difficulty的定義。
Difficulty: 根據2d框的高度, 遮擋程度和截斷程度, 把bbox分為 difficulty=0, 1, 2 或 其它。相關定義具體查看代碼
pre_process_kitti.py#L16-32
。這里以3D bbox為例, 介紹類別=Car
,difficulty=1
AP的計算。注意, difficulty=1
的數(shù)據實際上是指difficulty<=1
的數(shù)據; 另外這里主要介紹大致步驟, 具體實現(xiàn)見evaluate.py
。1.計算3D IoU (utils/process.pyiou3d(bboxes1, bboxes2)
), 用于判定一個det bbox是否和gt bbox匹配上 (IoU > 0.7)。2.根據類別=Car
,difficulty=1
選擇gt bboxes和det bboxes。-
gt bboxes: 選擇
類別=Car
,difficulty<=1
的bboxes; -
det bboxes: 選擇
預測類別=Car
的bboxes。
五、總結點云檢測, 相比于點云中其它任務(分類, 分割和配準等), 邏輯和代碼都更加復雜, 但這并不是體現(xiàn)在網絡結構上, 更多的是體現(xiàn)在數(shù)據增強, Anchors和GT生成, 單幀推理等。點云檢測, 相比于2D圖像檢測任務, 不同的是坐標系變換, 數(shù)據增強(碰撞檢測, 點是否在立方體判斷等), 斜長方體框IoU的計算等; 評估方式因為考慮到DontCare, difficulty等, 也更加復雜一些.初次接觸基于KITTI的3D檢測, 如有理解錯誤的, 還請指正; 內容太多了, 如有遺漏, 待以后補充。
審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
可視化
+關注
關注
1文章
1198瀏覽量
20989 -
數(shù)據集
+關注
關注
4文章
1208瀏覽量
24749 -
深度學習
+關注
關注
73文章
5510瀏覽量
121338
原文標題:3D點云 (Lidar)檢測入門篇 : PointPillars PyTorch實現(xiàn)
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
3D激光線掃輪廓傳感器在汽車行業(yè)的汽車車縫檢測的應用
在實際應用中,3D激光線掃傳感器可以集成到自動化檢測系統(tǒng)中,與機器人或自動化輸送系統(tǒng)配合,實現(xiàn)對汽車車縫的全面檢測。這些系統(tǒng)通常包括傳感器、控制軟件、數(shù)據處理單元和用戶界面,能夠自動分
安寶特產品 安寶特3D Analyzer:智能的3D CAD高級分析工具
安寶特3D Analyzer包含多種實用的3D CAD高級分析工具,包括自動比對模型、碰撞檢測、間隙檢查、壁厚檢查,以及拔模和底切分析,能夠有效提升3D CAD模型
裸眼3D筆記本電腦——先進的光場裸眼3D技術
隨著科技的不斷進步,裸眼3D技術已經不再是科幻電影中的幻想。如今,英倫科技裸眼3D筆記本電腦將這一前沿科技帶到了我們的日常生活中。無論你是專業(yè)的3D模型設計師,還是希望在視頻播放和模型展示中體驗逼真
蘇州吳中區(qū)多色PCB板元器件3D視覺檢測技術
3D視覺檢測相較于2D視覺檢測,有其獨特的優(yōu)勢,不受產品表面對比度影響,精確檢出產品形狀,可以測出高度(厚度)、體積、平整度等。在實際應用中可以與2
銀牛微電子:集3D視覺感知、AI及SLAM為一體的3D空間計算芯
有限責任公司研發(fā)副總裁周凡在論壇上介紹了“集3D視覺感知、AI及SLAM為一體的3D空間計算芯片NU4500”。 ? 合肥銀牛微電子有限責任公司研發(fā)副總裁周凡 ? 銀牛微電子是一家專注3D
Cognex發(fā)布了In-Sight? L38 3D視覺系統(tǒng),為3D檢測設立新標準
人工智能(AI)驅動的3D視覺系統(tǒng)為自動化制造提供快速部署和可靠的檢測功能。
大陸集團的3D Flash激光雷達有何優(yōu)勢?
在這一技術革命的前沿,激光雷達成為了不可或缺的一環(huán)。而在這其中,大陸集團的3D Flash激光雷達引人矚目。
發(fā)表于 04-11 10:28
?377次閱讀
宏集PLC如何應用于建筑的3D打印?
宏集MC Pi-Prime模塊化PLC采用EtherCat作為通信協(xié)議,有助于實現(xiàn)快速的反應時間和精確的定位控制,為自動化工程師提供靈活的擴展與集成,并縮短實施時間,助力建筑行業(yè)引入3D打印。
Nullmax提出多相機3D目標檢測新方法QAF2D
今天上午,計算機視覺領域頂會CVPR公布了最終的論文接收結果,Nullmax感知部門的3D目標檢測研究《Enhancing 3D Object Detection with 2D De
評論