The PyTorch Implementation based on YOLOv4 of the paper: "Complex-YOLO: Real-time 3D Object Detection on Point Clouds"
The PyTorch Implementation based on YOLOv4 of the paper: "Complex-YOLO: Real-time 3D Object Detection on Point Clouds"
The PyTorch Implementation based on YOLOv4 of the paper: Complex-YOLO: Real-time 3D Object Detection on Point Clouds
Realtime 3D object detection based on YOLOv4
Tensorboard
Mosaic/Cutout augmentation for training
Use GIoU loss of rotated boxes for optimization.
Update 2020.08.26: Super Fast and Accurate 3D Object Detection based on 3D LiDAR Point Clouds
Faster training, faster inference
An Anchor-free approach
No need for Non-Max-Suppression
Demonstration (on a GTX 1080Ti) Youtube link
pip install -U -r requirements.txtFor mayavi and shapely
libraries, please refer to the installation instructions from their official websites.
Download the 3D KITTI detection dataset from here.
The downloaded data includes:
Please make sure that you construct the source code & dataset directories structure as below.
For 3D point cloud preprocessing, please refer to the previous works:
This work has been based on the paper YOLOv4: Optimal Speed and Accuracy of Object Detection.
Please refer to several implementations of YOLOv4 using PyTorch DL framework:
cd src/data_processoutput-width param can be changed to
show the images in a bigger/smaller window):python kitti_dataloader.py --output-width 608python kitti_dataloader.py --show-train-data --mosaic --output-width 608 By default, there is no padding for the output mosaics, the feature could be activated by executing:
python kitti_dataloader.py --show-train-data --mosaic --random-padding --output-width 608 python kitti_dataloader.py --show-train-data --cutout_prob 1. --cutout_nholes 1 --cutout_fill_value 1. --cutout_ratio 0.3 --output-width 608Download the trained model from here,
then put it to ${ROOT}/checkpoints/ and execute:
python test.py --gpu_idx 0 --pretrained_path ../checkpoints/complex_yolov4/complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4.cfg --show_imagepython evaluate.py --gpu_idx 0 --pretrained_path --cfgfile --img_size --conf-thresh --nms-thresh --iou-thresh (The conf-thresh, nms-thresh, and iou-thresh params can be adjusted. By default, these params have been set to 0.5)
python train.py --gpu_idx 0 --batch_size --num_workers ...We should always use the nccl backend for multi-processing distributed training since it currently provides the best
distributed training performance.
python train.py --dist-url 'tcp://127.0.0.1:29500' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0First machine
python train.py --dist-url 'tcp://IP_OF_NODE1:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 2 --rank 0Second machine
python train.py --dist-url 'tcp://IP_OF_NODE2:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 2 --rank 1To reproduce the results, you can run the bash shell script
./train.shlogs/ folder andcd logs//tensorboard/
tensorboard --logdir=./| Backbone | Detector | |
|---|---|---|
| BoF | [x] Dropblock | |
| [x] Random rescale, rotation (global) | ||
| [x] Mosaic/Cutout augmentation | [x] Cross mini-Batch Normalization | |
| [x] Dropblock | ||
| [x] Random training shapes | ||
| BoS | [x] Mish activation | |
| [x] Cross-stage partial connections (CSP) | ||
| [x] Multi-input weighted residual connections (MiWRC) | [x] Mish activation | |
| [x] SPP-block | ||
| [x] SAM-block | ||
| [x] PAN path-aggregation block | ||
| [x] GIoU loss | ||
| [ ] CIoU loss |
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: [email protected]).
Thank you!
@article{Complex-YOLO,
author = {Martin Simon, Stefan Milz, Karl Amende, Horst-Michael Gross},
title = {Complex-YOLO: Real-time 3D Object Detection on Point Clouds},
year = {2018},
journal = {arXiv},
}
@article{YOLOv4,
author = {Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao},
title = {YOLOv4: Optimal Speed and Accuracy of Object Detection},
year = {2020},
journal = {arXiv},
}……No open issues yet, or sync has not completed.