# VPFNet
**Repository Path**: aiacLab/VPFNet
## Basic Information
- **Project Name**: VPFNet
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-22
- **Last Updated**: 2023-11-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# VPFNet
This is the official implementation of [**VPFNet: Improving 3D Object Detection with Virtual Point based LiDAR and Stereo Data Fusion**](https://arxiv.org/abs/2111.14382), built on [`OpenPCDet`](https://github.com/open-mmlab/OpenPCDet).
@ARTICLE{VPFNet,
author={Zhu, Hanqi and Deng, Jiajun and Zhang,
Yu and Ji, Jianmin and Mao, Qiuyu and Li, Houqiang
and Zhang, Yanyong},
journal={IEEE Transactions on Multimedia},
title={VPFNet: Improving 3D Object Detection
with Virtual Point based LiDAR and Stereo Data
Fusion},
year={2022}
}
### Installation
1. Prepare for the running environment.
For snake, follow the installation steps in [snake](https://github.com/zju3dv/snake).
For VPFNet, use the docker image provided here, or follow the installation steps in [`OpenPCDet`](https://github.com/open-mmlab/OpenPCDet).
```
docker pull djiajun1206/pcdet-pytorch1.5
```
2. Prepare for the data.
Please download the [Kins dataset](https://github.com/qqlu/Amodal-Instance-Segmentation-through-KINS-Dataset) and official [KITTI 3D object detection](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d) dataset. Train the snake model using the split in /data/kitti/ImageSets/train.txt,
then generate the 2D bounding box and 2D instance mask.
```
python run.py --type evaluate --cfg_file configs/kins_snake.yaml test.dataset KinsVal
```
Then organize the files as follows (the road planes could be downloaded from [[road plane]](https://drive.google.com/file/d/1d5mq0RXRnvHPVeKx6Q612z0YRO1t2wAp/view?usp=sharing):
```
VPFNet
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├──calib & velodyne & label_2 & image_2 & image_3 & planes & image_2_box & image_2_snake & image_3_box & image_3_snake
│ │ │── testing
│ │ │ ├──calib & velodyne & image_2 & image_3
├── pcdet
├── tools
```
Generate the data infos by running the following command:
```
python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml
```
3. Setup.
```
python setup.py develop
```
### Getting Started
1. Training.
The configuration file is in tools/cfgs/kittimodels, and the training scripts is in tools/scripts.
```
cd tools
bash ./scripts/dist_train.sh 8 --cfg_file ./cfgs/kitti_models/VPFNet.yaml --batch_size 16 --epochs 80 --workers 8
```
2. Evaluation.
The configuration file is in tools/cfgs/VPFNet, and the training scripts is in tools/scripts.
```
cd tools
python test.py --cfg_file ./cfgs/kitti_models/VPFNet.yaml --batch_size 4 --eval_all
```
### Acknowledge
Thanks to the strong and flexible [`OpenPCDet`](https://github.com/open-mmlab/OpenPCDet) codebase maintained by Shaoshuai Shi ([@sshaoshuai](http://github.com/sshaoshuai)) and Chaoxu Guo ([@Gus-Guo](https://github.com/Gus-Guo)).
### Contact
This repository is implemented by Hanqi Zhu (zhuhanqi@mail.ustc.edu.cn).