ADM PV-RCNN 的用法

ADM PV-RCNN 的用法

image

注意

本文件主要介紹 ADM PV-RCNN Docker 容器的使用方式,詳情請參見 這裡

此 Docker 容器包含從雷射雷達到演算法模型的完整流程工作檔案。該 Docker 容器可處理由雷射雷達擷取的 Pcap 格式封包。目前僅支援 Robosense 生產的四種型號雷射雷達所收集的資料:RS-LiDAR-16RS-LiDAR-32RS-LiDAR-64RS-LiDAR-128。未來將會支援更多品牌及型號的雷射雷達。


描述

ADM PV-RCNN 全名為自適應形變模組 PV-RCNN,是基於 PV-RCNN 設計的新型點雲與體素結合的三維物件偵測模型(請參見 github.com/open-mlab/OpenPCDet)。我們在 PV-RCNN 的基礎上加入了自適應形變卷積模組與上下文融合模組。自適應形變卷積模組可解決 PV-RCNN 模型在模糊場景及遠距離場景下辨識精度不足的問題,而上下文融合模組則可降低 PV-RCNN 模型於點雲分布不均區域的誤判率。我們於 KITTI 資料集上測試所提出的 ADM PV-RCNN 模型,結果顯示本模型明顯優於 PV-RCNN 及其他同類型模型。


下載

只需在已安裝 Docker 的電腦上輸入 docker pull 663lab/adm-pv-rcnn:v1.0,即可下載 Docker 容器。


使用方式

1. 解析 LiDAR pcap 封包

進入 Docker 容器,將 Robosense 雷射雷達擷取的 Pcap 格式封包掛載至 Docker 容器中。

a. 切換至 Robosense LiDAR SDK 資料夾

cd ~/catkin_ws/src/rslidar_sdk/

b. 將 Pcap 封包轉換為 Pcd 資料

▪︎ 請將 config 目錄下的 config.yaml 檔案參數修改為對應值,例如將 msg_source 改為 3,pcap_path 改為 pcap 封包的路徑**,lidar_type 改為雷射雷達的型號

▪︎ 執行下列指令將 Pcap 封包轉換為 ROSBag 封包:

roslaunch rslidar_sdk start.launch

▪︎ 切換至存放 Pcap 封包的目錄。

▪︎ 執行下列指令修復 ROSBag 封包:

rosbag reindex xxx.bag.active
rosbag fix xxx.bag.active result.bag

▪︎ 執行下列指令將 ROSBag 封包轉為 Pcd 資料:

rosrun pcl_ros bag_to_pcd result.bag ~/pcdfiles

轉換後的 Pcd 資料檔案將儲存於 /root/pcdfiles/ 目錄下。

2. 將雷射雷達點雲轉換為標準化 bin 檔案

a. 將 Pcd 資料檔轉換為二進位 bin 檔案

▪︎ 切換至 Pcd 轉 bin 專案資料夾

cd ~/pcd2bin/

▪︎ 編輯當前目錄下的 pcd2bin.cpp 檔案,將 pcd_path 與 bin_path 改為對應路徑。

▪︎ 執行下列指令編譯並安裝 Pcd-to-bin 專案:

mkdir build && cd build
cmake ... && make

▪︎ 執行下列指令產生二進位 bin 檔案:

zsh ./bin2pcd

b. 將 bin 檔案轉換為標準化 bin 檔案

▪︎ 進入 Modbin 專案資料夾:

cd ~/modbin/

▪︎ 執行下列指令產生標準化 bin 檔案:

mkdir ~/modfiles
conda activate model
python modbin.py --ori_path ~/binfiles mod_path ~/modfiles

3. ADM PV-RCNN 的使用方式

a. 進入 ADM PV-RCNN 專案資料夾:

cd ~/ADM-PV-RCNN/

b. 將 ADM PV-RCNN src 資料夾複製到 OpenPCDet 中:

zsh ./init.sh

c. 準備 Kitti 資料集:

請下載官方KITTI 3D 物件偵測資料集,並依下列方式整理下載的檔案(道路平面可自[road plane]下載,這對訓練時的資料增強為選用項目):

ADM-PV-RCNN
├── OpenPCDet
│   ├── data
│   │   ├── kitti
│   │   │   │──ImageSets
│   │   │   │──training
│   │   │   │   ├──calib & velodyne & label_2 & image_2 & (optional: planes)
│   │   │   │──testing
│   │   │   │   ├──calib & velodyne & image_2
│   ├── pcdet
│   ├── tools

▪︎ 執行下列指令產生資料資訊:

python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml

d. 使用特定設定檔執行實驗:

▪︎ 測試與評估預訓練模型,可自這裡下載我們的預訓練模型。

• 進入 tools 目錄:

cd OpenPCDet/tools

• 使用預訓練模型進行測試:

python test.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --ckpt ${CKPT}

• 例如:

python test.py --cfg_file cfgs/kitti_models/def_pv_rcnn.yaml --batch_size 4 --ckpt ${SAVED_CKPT_PATH}/def_pv_rcnn.pth

▪︎ 訓練模型:

• 使用多張 GPU 訓練:

sh scripts/dist_train.sh ${NUM_GPUS} --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE}  --epochs 80

• 例如:

sh scripts/dist_train.sh 8 --cfg_file cfgs/kitti_models/def_pv_rcnn.yaml  --batch_size 16  --epochs 100

• 使用單張 GPU 訓練:

python train.py --cfg_file ${CONFIG_FILE} --batch_size ${BATCH_SIZE} --epochs 100

e. 快速展示

▪︎ 執行下列指令,使用預訓練模型與您的自訂點雲資料進行展示:

python demo.py --cfg_file cfgs/kitti_models/adm_pv_rcnn.yaml --ckpt adm_pv_rcnn_epoch_100.pth --data_path ${POINT_CLOUD_DATA}

這裡的 ${POINT_CLOUD_DATA} 可為下列格式:

1). 您轉換的自訂資料,如單一 numpy 檔案 my_data.npy

2). 您轉換的自訂資料,如單一 bin 檔案 my_data.bin

3). 您轉換的自訂資料,如包含多個點雲資料的目錄。

4). 原始 KITTI .bin 資料,如 data/kitti/testing/velodyne/000010.bin

PS: 若有任何問題,請來信 jensen.acm@gmail.com(請於信件主旨註明「ADM PV-RCNN」)。

最後更新於