ADM PV-RCNN 的用法
注意
本文件主要介紹 ADM PV-RCNN Docker 容器的使用方式,詳情請參見 這裡。
此 Docker 容器包含從雷射雷達到演算法模型的完整流程工作檔案。該 Docker 容器可處理由雷射雷達擷取的 Pcap 格式封包。目前僅支援 Robosense 生產的四種型號雷射雷達所收集的資料:RS-LiDAR-16、RS-LiDAR-32、RS-LiDAR-64 及 RS-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」)。