95 FPS!超快速3D目標檢測網絡開源了!SFA3D:基於LiDAR的實時、準確的3D目標檢測模型

2021-03-02 CVer

點擊上方「CVer」,選擇加"星標"置頂

重磅乾貨,第一時間送達

Amusi 發現了一個超快速3D目標檢測網絡!SFA3D:基於LiDAR的實時、準確的3D目標檢測模型,在GTX 1080 Ti上速度高達95 FPS!代碼現已開源!

主要特性:

1. 快速訓練和推理;

2. Anchor-free的方法;

3. 無NMS;

4. 支持分布式數據並行訓練 演示Demo詳見視頻

項目連結:https://github.com/maudzung/SFA3D

點擊下面該視頻,皆可查看演示Demo

Super Fast and Accurate 3D Object Detection based on 3D LiDAR Point CloudsFeaturesSuper fast and accurate 3D object detection based on LiDARFast training, fast inferenceSupport distributed data parallel trainingRelease pre-trained models

The technical details are described here

Update 2020.09.06: Add ROS source code. The great work has been done by @AhmedARadwan.The implementation is here

Demonstration (on a single GTX 1080Ti)2. Getting Started2.1. Requirement

The instructions for setting up a virtual environment is here.

git clone https://github.com/maudzung/SFA3D.git SFA3D
cd SFA3D/
pip install .

2.2. Data Preparation

Download the 3D KITTI detection dataset from here.

The downloaded data includes:

Velodyne point clouds (29 GB)Training labels of object data set (5 MB)Camera calibration matrices of object data set (16 MB)Left color images of object data set (12 GB) (For visualization purpose only)

Please make sure that you construct the source code & dataset directories structure as below.

2.3. How to run2.3.1. Visualize the dataset

To visualize 3D point clouds with 3D boxes, let's execute:

cd sfa/data_process/
python kitti_dataset.py

2.3.2. Inference

The pre-trained model was pushed to this repo.

python test.py --gpu_idx 0 --peak_thresh 0.2

2.3.3. Making demonstration
python demo_2_sides.py --gpu_idx 0 --peak_thresh 0.2

The data for the demonstration will be automatically downloaded by executing the above command.

2.3.4. Training2.3.4.1. Single machine, single gpu
python train.py --gpu_idx 0

2.3.4.2. Distributed Data Parallel TrainingSingle machine (node), multiple GPUs
python train.py --multiprocessing-distributed --world-size 1 --rank 0 --batch_size 64 --num_workers 8

Two machines (two nodes), multiple GPUs

python train.py --dist-url 'tcp://IP_OF_NODE1:FREEPORT' --multiprocessing-distributed --world-size 2 --rank 0 --batch_size 64 --num_workers 8

python train.py --dist-url 'tcp://IP_OF_NODE2:FREEPORT' --multiprocessing-distributed --world-size 2 --rank 1 --batch_size 64 --num_workers 8

TensorboardTo track the training progress, go to the logs/ folder and
cd logs/<saved_fn>/tensorboard/
tensorboard --logdir=./

Then go to http://localhost:6006/Contact

If you think this work is useful, please give me a star!
If you find any errors or have any suggestions, please contact me (Email: nguyenmaudung93.kstn@gmail.com).
Thank you!

Citation
@misc{Super-Fast-Accurate-3D-Object-Detection-PyTorch,
  author =       {Nguyen Mau Dung},
  title =        {{Super-Fast-Accurate-3D-Object-Detection-PyTorch}},
  howpublished = {\url{https://github.com/maudzung/Super-Fast-Accurate-3D-Object-Detection}},
  year =         {2020}
}

References

[1] CenterNet: Objects as Points paper, PyTorch Implementation
[2] RTM3D: PyTorch Implementation
[3] Libra_R-CNN: PyTorch Implementation

The YOLO-based models with the same BEV maps input:
[4] Complex-YOLO: v4, v3, v2

3D LiDAR Point pre-processing:
[5] VoxelNet: PyTorch Implementation

Folder structure
${ROOT}
└── checkpoints/
    ├── fpn_resnet_18/    
        ├── fpn_resnet_18_epoch_300.pth
└── dataset/    
    └── kitti/
        ├──ImageSets/
        │   ├── test.txt
        │   ├── train.txt
        │   └── val.txt
        ├── training/
        │   ├── image_2/ (left color camera)
        │   ├── calib/
        │   ├── label_2/
        │   └── velodyne/
        └── testing/  
        │   ├── image_2/ (left color camera)
        │   ├── calib/
        │   └── velodyne/
        └── classes_names.txt
└── sfa/
    ├── config/
    │   ├── train_config.py
    │   └── kitti_config.py
    ├── data_process/
    │   ├── kitti_dataloader.py
    │   ├── kitti_dataset.py
    │   └── kitti_data_utils.py
    ├── models/
    │   ├── fpn_resnet.py
    │   ├── resnet.py
    │   └── model_utils.py
    └── utils/
    │   ├── demo_utils.py
    │   ├── evaluation_utils.py
    │   ├── logger.py
    │   ├── misc.py
    │   ├── torch_utils.py
    │   ├── train_utils.py
    │   └── visualization_utils.py
    ├── demo_2_sides.py
    ├── demo_front.py
    ├── test.py
    └── train.py
├── README.md 
└── requirements.txt

項目代碼下載

後臺回覆:SFA3D,即可下載上述項目代碼

下載:CVPR /  ECCV 2020開原始碼

在CVer公眾號後臺回覆:CVPR2020,即可下載CVPR 2020代碼開源的論文合集

在CVer公眾號後臺回覆:ECCV2020,即可下載ECCV 2020代碼開源的論文合集

重磅!CVer-論文寫作與投稿交流群成立

掃碼添加CVer助手,可申請加入CVer-論文寫作與投稿 微信交流群,目前已滿2400+人,旨在交流頂會(CVPR/ICCV/ECCV/NIPS/ICML/ICLR/AAAI等)、頂刊(IJCV/TPAMI/TIP等)、SCI、EI、中文核心等寫作與投稿事宜。

同時也可申請加入CVer大群和細分方向技術群,細分方向已涵蓋:目標檢測、圖像分割、目標跟蹤、人臉檢測&識別、OCR、姿態估計、超解析度、SLAM、醫療影像、Re-ID、GAN、NAS、深度估計、自動駕駛、強化學習、車道線檢測、模型剪枝&壓縮、去噪、去霧、去雨、風格遷移、遙感圖像、行為識別、視頻理解、圖像融合、圖像檢索、論文投稿&交流、PyTorch和TensorFlow等群。

一定要備註:研究方向+地點+學校/公司+暱稱(如論文寫作+上海+上交+卡卡),根據格式備註,可更快被通過且邀請進群

▲長按加微信群


▲長按關注CVer公眾號

整理不易,請給CVer點讚和在看

相關焦點

  • MMDetection3D:新一代通用3D目標檢測平臺
    伴隨著自動駕駛科技的飛速發展和雷射雷達的普及,3D目標檢測近年來逐漸成為業界和學術界的研究熱點。然而,目前在3D目標檢測領域卻不像2D目標檢測那樣,有著像MMDetection這樣簡單通用的代碼庫和benchmark。
  • 資源 | 一個基於PyTorch的目標檢測工具箱,商湯聯合港中文開源mmdetection
    近日,商湯和港中文聯合開源了 mmdetection,這是一個基於 PyTorch 的開源目標檢測工具包,屬於香港中文大學多媒體實驗室 open-mmlab
  • 1.8M超輕量目標檢測模型NanoDet,比YOLO跑得快,上線兩天Star量超200
    如何把 anchor-free 模型移植到移動端或嵌入式設備?這個項目對單階段檢測模型三大模塊(Head、Neck、Backbone)進行輕量化,得到模型大小僅 1.8m、速度超快的輕量級模型 NanoDet-m。目標檢測一直是計算機視覺領域的一大難題,其目標是找出圖像中的所有感興趣區域,並確定這些區域的位置和類別。
  • 1.8M 超輕量目標檢測模型 NanoDet,比 YOLO 跑得快,上線兩天 Star 量超 200
    目前,深度學習目標檢測方法主要分為兩大類,分別是兩階段式和單階段式目標檢測算法。兩階段式目標檢測框架首先生成候選區域,然後將其分類成不同的目標類別,代表模型有 R-CNN、Fast R-CNN 等;單階段式目標檢測框架將目標檢測任務視為一個統一的端到端回歸問題,代表模型有 MultiBox、YOLO、SSD 等。這類框架通常結構更簡單,檢測速度也更快。
  • 本周優秀開源項目分享:基於yolov3的輕量級人臉檢測、增值稅發票OCR識別 等8大項目
    可用作庫來支持基於它的不同項目。我們將以這種方式開源更多的研究項目。訓練得更快。通常會根據對ImageNet分類任務進行預訓練的骨幹模型進行初始化。提供以下主幹模型:R-50.pkl:MSRA原始ResNet-50模型的轉換副本。R-101.pkl:MSRA原始ResNet-101模型的轉換副本。
  • 僅需一部攝像機即可實現基於AI的3D重建
    本文轉自3D視覺工坊Magic Leap研究人員提出了一種基於AI的方法,只需一個RGB相機即可捕獲3D場景。研究人員認為,基於AI的2D圖像的重建比基於3D數據的方法更有效。在左側,你可以看到完整的3D模型,在圖集重建的中間,正3D模型是使用MVDepthNet創建的。為圖像分析而優化的神經網絡將各個2D圖像彼此獨立地分割,並基於相機數據創建簡單的3D模型。AI重建:比3D掃描儀更好?神經網絡可以完善和補充3D模型,這使研究人員可以更好的完整創建場景的3D模型,甚至可以創建一些在掃描過程中隱藏的區域。
  • YOLO之外的另一選擇,手機端97FPS的Anchor-Free目標檢測模型NanoDet現已開源~
    ,從Two-stage到One-stage,從Anchor-base到Anchor-free,再到今年的用Transformer做目標檢測,各種方法百花齊放,但是在移動端目標檢測算法上,yolo系列和SSD等Anchor-base的模型一直佔據著主導地位。
  • 33個最好的免費3D列印模型STL檔案下載網站
    GrabCADhttps://grabcad.com/GrabCAD以提供"幫助機械工程師更快速地打造精品"為使命。用戶可以關注他們喜歡的設計師或在發布新創作時獲得實時更新。他們還提供基於流行大牌品牌(即宜家黑客,樂高配件,GoPro或無人機配件)的精選系列。整潔的觸摸:該網站支持英語,法語和西班牙語。
  • 谷歌3D混合地圖
    谷歌3d地圖功能介紹:一、全球衛星圖像下載1.1支持行政區域、框選矩形、多邊形區域範圍高清衛片下載,支持沿路線高清衛片下載。所有下載衛片1.2高清、準確、無水印,讓你嘆為觀止。5.13三維地勢渲染,三維地形顯示;5.14框選矩形區域的三維地形模型文件導出3D模型;六、地圖發布服務,支持實時緩存發布、離線發布6.1離線網站製作、離線金字塔瓦片導出。
  • 基於深度學習的目標檢測算法研究進展
    目標檢測(Object Dection,OD)是一種從視頻或者圖片中找到感興趣的區域並標記出來的行為動作,可以通過算法提取特徵來識別定位特定類別的對象。目標檢測主要應用在人臉識別、無人駕駛、指揮以及安防等領域。目標檢測功能的核心不在於硬體設備,而在於算法設計的優劣。不同算法性能的優劣將直接導致目標檢測在不同場景下的檢測效果。
  • 收藏 | YOLO 系目標檢測算法家族全景圖!
    (Better),更快速(Faster)。Star | 442(基於 v4)時間:2018 年 3 月 16 日基於YOLOv2的一個變種,用於點雲3D目標檢測。YOLO的密集連接和空間金字塔池化技術)的方法來改善YOLOv2的目標檢測精度。
  • 使用Detectron2分6步進行目標檢測
    如果我們選擇基於區域建議的方法,如更快的R-CNN,或者我們也可以使用SSD和YOLO等一次性檢測器算法,我們需要從使用特徵金字塔網絡和區域建議網絡來構建模型。如果我們想從頭開始實現的話,它們中的任何一個都有點複雜。我們需要一個框架,在這個框架中,我們可以使用最先進的模型,例如Fast,Faster和Mask R-CNN。
  • 教程 | 如何使用Docker、TensorFlow目標檢測API和OpenCV實現實時目標檢測和視頻處理
    API,通過網絡攝像頭執行實時目標檢測,同時進行視頻後處理。此外,我還在項目中添加了視頻後處理功能,這一功能也使用了多進程,以減少視頻處理的時間(如果使用原始的 TensorFlow 目標檢測 API 處理視頻,會需要非常非常長的時間)。在我的個人電腦上可以同時進行高性能的實時目標檢測和視頻後處理工作,該過程僅使用了 8GB 的 CPU。
  • 谷歌發布Tensorflow 3D工具包,助力三維場景理解
    用戶可以利用預處理工具將KITTI或NuScenes等其他數據集轉換為相似的數據格式來使用,從而將 TF 3D 應用於更廣泛的3D深度學習研究中,加速從想法實驗原型到實時推理系統部署的過程。左圖顯示了 TF 3D 中的3D目標檢測模型在Waymo Open Dataset中的一幀輸出結果。右圖顯示了實例分割模型在ScanNet數據集中的輸出結果。
  • 如何基於Flutter和Paddle Lite實現實時目標檢測
    其作為開源移動UI框架已然成為跨平臺移動開發一大趨勢,在開發時可以保留狀態進行熱重載,內置許多令人眼前一亮的組件和漂亮的動畫,同時還能保證性能達到和原生應用一樣。也正因為這樣,不少公司開始把自己的應用向Flutter遷移,有許多我們耳熟能詳的App其實已經是基於Flutter開發。假如你已經對安卓原生開發十分熟悉的話,不妨去試試。
  • 深度學習應用--基於 2D輸入的3D合成
    圖像特徵網絡負責從輸入的 2D 圖像中提取感知特徵,並逐步將這些特徵傳遞給基於圖的級聯網格變形網絡,從而逐步將橢球網格的幾何形狀變形為目標物體的 3D 網格。網格形變網絡的圖卷積網絡由三個變形塊和兩個中間圖上池化層組成。變形塊逐步處理網格模型的輸入圖,而中間圖上池化層逐步增加圖頂點,以增加圖的信息容納能力,同時保持數據的三角形網格形成。
  • Verge3D — 3D Web實戰框架
    Verge3D是一款旨在基於常用的三維軟體來創建沉浸式
  • 基於卷積神經網絡的遙感圖像目標檢測與識別
    然而,現有的基於卷積祌經網絡的遙感圖像目標檢測方法依賴大量bounding box數據(位置信息數據)進行訓練,需要耗費大量人工標註成本,同時由於遙感圖像的目標樣本數量有限,不足以支撐大規模訓練;另外現有的基於卷積神經網絡的遙感圖像目標識別方法僅考慮網絡的深層語義特徵,導致識別性能達到瓶頸。為解決上述問題,本文基於卷積神經網絡對遙感圖像目標檢測與識別算法進行研究。
  • 谷歌更新TensorFlow目標檢測API
    ,支持實例分割[8],在谷歌的超大數據集Open Images上訓練的新模型等。從此有很多有趣的應用被開發出來,比如在紐約街頭尋找傻瓜(finding scofflaws on the streets of NYC[2]),診斷坦尚尼亞木薯植物的疾病(diagnosing diseases on cassava plants in Tanzania[3])。谷歌這次的更新又帶來了哪些新特性呢?
  • 實戰:使用 PyTorch 和 OpenCV 實現實時目標檢測系統
    自動駕駛汽車可能仍然難以理解人類和垃圾桶之間的區別,但這並沒有使最先進的物體檢測模型在過去十年中取得的驚人進步相去甚遠。將其與 OpenCV 等庫的圖像處理能力相結合,如今在數小時內構建實時對象檢測系統原型要容易得多。在本指南中,我們將嘗試向您展示如何開發用於簡單對象檢測應用程式的子系統,以及如何將所有這些組合在一起。