# rddc2020 **Repository Path**: ccf_qq_com/rddc2020 ## Basic Information - **Project Name**: rddc2020 - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-05-30 - **Last Updated**: 2021-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rddc2020 road damage detection challenge 2020 # road damage detection challange 2020 IMSC submission This repository contains source code and trained models for [Road Damage Detection and Classification Challenge](https://rdd2020.sekilab.global/overview/) 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: ![]() ![]() ![]() ![]() ## Table of contents - [Prerequisites](#prerequisites) - [Quick start](#quick-start) - [RDCC Dataset Setup for YOLOv5](#RDCC-Dataset-Setup) - [IMSC YOLOv5 Model zoo](#IMSC-YOLOv5-Model-zoo) - [Detection / Submission](#Detection) - [Performance on RDDC test datasets](#Performance-on-RDDC-test-datasets) - [Training](#Training) ## Prerequisites You need to install: - [Python3 >= 3.6](https://www.python.org/downloads/) - Use `requirements.txt` to install required python dependencies ```Shell # Python >= 3.6 is needed pip3 install -r requirements.txt ``` ## Quick-start 1. Clone the road-damage-detection repo into $RDD: ```Shell git clone https://github.com/USC-InfoLab/rddc2020.git ``` 2. Install python packages: ```Shell pip3 install -r requirements.txt ``` ## [RDCC](https://github.com/sekilab/RoadDamageDetector#dataset-for-global-road-damage-detection-challenge-2020) 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`** ```Shell bash yolov5/scripts/dataset_setup_for_yolov5.sh ``` OR 1. Go to `yolov5` directory ```Shell cd yolov5 ``` 2. execute `download_road2020.sh` to downlaod train and test dataset ```Shell bash scripts/download_road2020.sh ``` 3. **Detection:** strcutre test datasets for inference using yolov5 ```Shell bash scripts/prepare_test.sh ``` 4. **Training:** Generate the label files for yolov5 using [scripts/xml2Yolo.py](https://github.com/USC-InfoLab/rddc2020/tree/master/yolov5/scripts/xml2Yolo.py) ```Shell python3 scripts/xml2yolo.py ``` - Use `python3 scripts/xml2Yolo.py --help` for command line option details ## IMSC YOLOv5 Model zoo 1. Go to `yolov5` directory ```Shell cd yolov5 ``` 2. download YOLOv5 model zoo: ```Shell bash scripts/download_IMSC_grddc2020_weights.sh ``` ## Detection / Submission 1. Download weights as mentioned in [IMSC YOLOv5 Model zoo](#IMSC-YOLOv5-Model-zoo) 2. Go to `yolov5` directory ```Shell cd yolov5 ``` 3. Execute one of the follwoing commands to generate `results.csv`(competition format) and predicated images under `inference/output/`: ```Shell # 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 ``` ```Shell # 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 ``` ```Shell # 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 ``` ```Shell # 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 ``` ## Performance on RDDC test datasets | 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 | |------- |------------------- |------------------- |------------------- |------------------- |------------------- |------------------- |------------------- | | | :heavy_check_mark: | | | | | 0.66697383879131 |0.651389430313506 | | :heavy_check_mark: | :heavy_check_mark: | | | | :heavy_check_mark: |**0.674878682854973** | 0.665632401648316 | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | :heavy_check_mark: |0.674198239966431 | **0.666213894130645** | ## Training 1. download pre-trained weights from yolov5 repo ```Shell bash weights/download_weights.sh ``` 2. run following command ```Shell python3 train.py --data data/road.yaml --cfg models/yolov5x.yaml --weights weight/yolov5x.pt --batch-size 64 ``` visit [yolov5](https://github.com/ultralytics/yolov5) official source code for more training and inference time arguments