road damage detection challenge 2020
This repository contains source code and trained models for Road Damage Detection and Classification Challenge that was held as part of 2020 IEEE Big Data conference.
The best model achieved mean F1-score of 0.674878682854973 on test1 and 0.666213894130645 on test2 dataset of the competition.
Sample predictions:
- Prerequisites
- Quick start
- RDCC Dataset Setup for YOLOv5
- IMSC YOLOv5 Model zoo
- Detection / Submission
- Performance on RDDC test datasets
- Training
You need to install:
-
Use
requirements.txt
to install required python dependencies# Python >= 3.6 is needed pip3 install -r requirements.txt
-
Clone the road-damage-detection repo into $RDD:
git clone https://github.com/USC-InfoLab/rddc2020.git
-
Install python packages:
pip3 install -r requirements.txt
RDCC Dataset Setup for YOLOv5
NOTE: Entire process (step 1-4 explained in this section) of downloading and preparing GRDDC 2020 dataset can be done by executing yolov5/scripts/dataset_setup_for_yolov5.sh
bash yolov5/scripts/dataset_setup_for_yolov5.sh
OR
-
Go to
yolov5
directorycd yolov5
-
execute
download_road2020.sh
to downlaod train and test datasetbash scripts/download_road2020.sh
-
Detection: strcutre test datasets for inference using yolov5
bash scripts/prepare_test.sh
-
Training: Generate the label files for yolov5 using scripts/xml2Yolo.py
python3 scripts/xml2yolo.py
- Use
python3 scripts/xml2Yolo.py --help
for command line option details
- Use
-
Go to
yolov5
directorycd yolov5
-
download YOLOv5 model zoo:
bash scripts/download_IMSC_grddc2020_weights.sh
-
Download weights as mentioned in IMSC YOLOv5 Model zoo
-
Go to
yolov5
directorycd yolov5
-
Execute one of the follwoing commands to generate
results.csv
(competition format) and predicated images underinference/output/
:# inference using best ensemble model for test1 dataset python3 detect.py --weights weights/IMSC/last_95_448_32_aug2.pt weights/IMSC/last_95_640_16.pt weights/IMSC/last_120_640_32_aug2.pt --img 640 --source datasets/road2020/test1/test_images/ --conf-thres 0.22 --iou-thres 0.9999 --agnostic-nms --augment
# inference using best ensemble model for test2 dataset python3 detect.py --weights weights/IMSC/last_95_448_32_aug2.pt weights/IMSC/last_95_640_16.pt weights/IMSC/last_120_640_32_aug2.pt weights/IMSC/last_100_100_640_16.pt --img 640 --source datasets/road2020/test2/test_images/ --conf-thres 0.22 --iou-thres 0.9999 --agnostic-nms --augment
# inference using best non-ensemble model for test1 dataset python3 detect.py --weights weights/IMSC/last_95.pt --img 640 --source datasets/road2020/test1/test_images/ --conf-thres 0.20 --iou-thres 0.9999 --agnostic-nms --augment
# inference using best non-ensemble model for test2 dataset python3 detect.py --weights weights/IMSC/last_95.pt --img 640 --source datasets/road2020/test2/test_images/ --conf-thres 0.20 --iou-thres 0.9999 --agnostic-nms --augment
YOLOv5x_448_32_aug2 | YOLOv5x_640_16_95 | YOLOv5x_640_16_100 | YOLOv5x_640_32 | YOLOv5x_640_16_aug2 | YOLOv5x_640_32_aug2 | test1 F1-score | test2 F1-score |
---|---|---|---|---|---|---|---|
✔️ | 0.66697383879131 | 0.651389430313506 | |||||
✔️ | ✔️ | ✔️ | 0.674878682854973 | 0.665632401648316 | |||
✔️ | ✔️ | ✔️ | ✔️ | 0.674198239966431 | 0.666213894130645 |
-
download pre-trained weights from yolov5 repo
bash weights/download_weights.sh
-
run following command
python3 train.py --data data/road.yaml --cfg models/yolov5x.yaml --weights weight/yolov5x.pt --batch-size 64
visit yolov5 official source code for more training and inference time arguments