MMDetection3D:新一代通用3D目標檢測平臺

智源社區 2022-01-08 00:37:39 阅读数:400

mmdetection3d mmdetection 新一代 一代 通用

伴隨著自動駕駛科技的飛速發展和激光雷達的普及,3D目標檢測近年來逐漸成為業界和學術界的研究熱點。然而,目前在3D目標檢測領域卻不像2D目標檢測那樣,有著像MMDetection這樣簡單通用的代碼庫和benchmark。所以,我們决定發布MMDetection3D(簡稱MMDet3D)來彌補這一空白。今天,很高興MMDetection3D 和大家見面了,希望大家喜歡。

太長不看版

  • MMDetection3D 支持了VoteNet, MVXNet, Part-A2,PointPillars等多種算法,覆蓋了單模態和多模態檢測,室內和室外場景SOTA; 還可以直接使用訓練MMDetection裏面的所有300+模型和40+算法,支持算法的數量和覆蓋方向為3D檢測代碼庫之最。
  • MMDetection3D 支持了SUN RGB-D, ScanNet, nuScenes, Lyft, 和KITTI共5個主流數據集,支持的數據集數量為3D檢測代碼庫之最。
  • MMDetection3D 擁有最快的訓練速度,支持pip install一鍵安裝,簡單易用。

下面簡單介紹下 MMDetection3D,更具體的細節見文檔

支持多模態/單模態3D檢測

3D檢測領域的多套codebase大多聚焦在基於點雲的單模態檢測上,而多模態檢測的代碼庫也不怎麼支持單模態的檢測。由於多模態3D檢測任務的重要性愈發凸顯,我們在MMDetection3D裏面支持了多模態(圖像+點雲)的3D檢測,目前已經支持了MVX-Net在KITTI 上的模型。從此,新的工作可以基於MMDetection3D和其他單模態或者多模態方法進行直接的比較,减輕了不少codebase遷移和文章複現等帶來的負擔。

支持室內/室外主流數據集

由於室內和室外3D檢測數據集的差异性,一直以來很少有工作會同時在這兩類數據集上進行實驗和比較,因此目前也沒有codebase能較好地同時支持室內外的數據集及相關方法。 MMDetection3D目前支持了ScanNet和SUNRGBD兩個主流室內數據集,還同時支持了KITTI,nuScenes和Lyft三個室外數據集。在模型層面,我們複現了VoteNet 這一室內數據集中的state of the art,以及PartA2-NetPointPillars 等室外數據集中的常見方法。MMDetection3D將室內外數據集的預處理流程抽象成了一套data pipeline,同時在模型層面已經實現了部分model是與坐標系無關的。我們的目標是以後新的工作可以較輕松地同時在室內和室外數據集上進行試驗和比較,以驗證方法的普適性並提高其影響力。

直接支持MMDetection的model zoo

目前,還沒有哪套3D檢測的codebase可以直接在自己的codebase裏支持2D檢測的SOTA,但MMDetection3D 就做到了這一點。MMDetection3D基於MMDetection和MMCV,使用了和MMDetection一致的外層API並直接使用了很多MMDetection的代碼(例如,訓練相關的hook都實現在MMCV裏面了,而train_detector等函數因為都是檢測所以MMDetection3D 壓根不用寫),所以只要有正確的config文件, MMDetection model zoo裏的300+模型和40+算法都可以在MMDetection3D裏面正常使用(考慮到MMDetection不支持3D檢測,MMDetection3D支持的模型和算法其實比MMDetection多,MMDetection3D可以claim是目前圈內最大、最全的檢測算法庫了嗯…)。

這樣帶來的好處有至少以下兩點:

  1. 以後大家要嘗試多模態的檢測算法可以複用幾乎所有MMDetection裏的2D檢測器和實例分割模型,選項多多,排列組合多多。
  2. MMDetection和MMCV裏實現了很多通用的模塊,如GCBlock,DCN,FPN,FocalLoss等,也可以直接在MMDetection3D裏面拿來使用(現在就是這麼做的),减小了2D檢測和3D檢測之間的gap。也歡迎大家以後在嘗試新的通用檢測技術時(如Loss,神經網絡模塊等)可以來MMDetection3D裏試一錘子,說不定也是work的,這樣實驗也會更加solid。

最快的訓練速度

我們和已開源的多個3D檢測代碼庫都進行了比較,在VoteNet,SECOND,PointPillars等模型上的訓練速度都比其他代碼庫要快。在8卡分布式訓練並使用相同超參的情况下,訓練速度(樣本數/秒)的對比如下圖;其他codebase中不支持的對應模型我們就打了x。

簡單易用

除了上述優勢以外,由於MMDetection3D的實現基於MMDetection,設計上的思路也是一脈相承,比如config系統和MMDetection一致,modular design等也像MMDetection一樣是codebase的標配,大家要上手MMDetection3D應該都很簡單。 MMDetection3D也支持像MMDetection 或者detectron2那樣作為一個package來使用,因此也方便大家基於MMDetection3D 快速啟動一個新的project。直接 pip install mmdet3d 就可以安裝最新release 的MMDetection3D,在新的project裏面直接 import mmdet3d 就可以輕松使用mmdet3d 的所有功能。

MMDetection3D在工程上也做了不少優化。眾所周知,最初的SECOND.Pytorch在Target assign等方面都使用NumPy算子,並且將很多運算放進了Dataloader裏面,既不高效也不靈活。MMDetection3D直接使用了MMDetection裏的assigner等模塊(是的,MMDetection3D並不需要實現這些函數),基於PyTorch將這些複雜的計算放到了CUDA上進行,這大概也是MMDetection3D更快的原因。在其他codebase中,安裝spconv也時常是一大障礙,現在spconv也被直接集成進了MMDetection3D的自定義算子裏,使得MMDetection3D的安裝流程和MMDetection一樣流暢。

MMDetection3D 要刷到SOTA 的方式也非常簡單。比如我們在nuscenes上使用PointPillars + RegNet3.2GF + FPN + FreeAnchor + Test-time augmentation,不需要使用CBGS 或GT-sampling,只使用普通的數據增强,就能够達到NDS 65, mAP 57,是榜單上LiDAR單模態單模型第一的結果。這個模型在release的時候就在我們的 model zoo 裏。

總結:

MMDetection3D填補了目前3D檢測領域codebase的一些空白,支持多種多模態/單模態檢測器和室內/室外數據集SOTA,為community未來的free style提供了一個强大易用的codebase。歡迎大家前來fork,star,體驗,開發,提PR。

版权声明:本文为[智源社區]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080037390089.html