2nd place solution for Pose Bowl: Spacecraft Detection Challenge
- Competition Purpose: identify the boundaries of generic spacecraft in photos.
- Type: Object detection
- Host: NASA
- Platform: Drivendata
- Competition link: https://www.drivendata.org/competitions/260/spacecraft-detection/
- Placement: 2nd (2/651) + speed bonus prize
- User Name: dungnb
- Solution: SolutionDocumentation_SpacecraftDetection_DungNB.pdf
The key of solution is based on synthetic data generation and yolov8 model.
- Operating System: Ubuntu 22.04
- Nvidia Driver Version: 545.23.08
- Cuda: Version 11.3
- GPU: 1xNvidia A100 40GB
- RAM: 64GB
- Train duration: yolov8s 1280 (~60 hours), yolov8n 1280 (~24hours)
- Inference duration: yolov8s 1280(1 hour 40 minutes), yolov8n 1280(46 minutes)
conda create -n venv python=3.9.6
conda activate venv
conda install pytorch=1.12.1 torchvision=0.13.1 torchaudio=0.12.1 cudatoolkit=11.3 -c pytorch
pip install -r requirements.txt
-
Download competition dataset and extract to folder ./dataset/drivendata
-
Download public dataset in paper at repo or google drive to folder ./dataset/satellite_external
Note: This data has been confirmed at discussion -
dataset structure should be ./dataset/dataset_structure.txt
And run following scripts
cd src
python prepare_drivendata_spacecraft.py
python prepare_external_data.py
python generate_synthetic_data.py
Change line 1 in file ./src/spacecraft_data.yaml to absolute path of folder ./dataset/ in your system
And run following scripts
cd src
rm -rf runs
python train.py
Change path of trained model in file ./src/export_to_openvino.py
cd src
python export_to_openvino.py
Step by step to generate submission file
Public LB | Private LB | Runtime | |
---|---|---|---|
yolov8s 1280 | 0.9285 | 0.9226 | 1 hour 40 minutes |
yolov8n 1280 | 0.9173 | 0.9098 | 46 minutes |