Awesome
Pavement Distress Classification
With the rapid growth of transport infrastructures such as airports, bridges, and roads, pavement maintenance is deemed as a crucial element of sustainable pavement today. It is a trend to automate this process via machine learning and pattern recognition techniques, which can significantly reduce the cost of labor and resources. One of the core tasks in pavement maintenance is pavement distress classification (PDC), which aims to detect the damaged pavement and recognize its specific distress category. These two steps are also referred to as pavement distress detection and pavement distress recognition, respectively.
This repo collects related datasets and some papers. Moreover, all code will be integrated into this repo.
Table of Contents
Dataset
CQU-BPDD
<img src=".\doc\cqu_bpdd.png" alt="cqu_bpdd" width="500px" />This dataset consists of 60,056 bituminous pavement images, which were automatically captured by the in-vehicle cameras of the professional pavement inspection vehicle at different times from different areas in southern China . Each pavement image is corresponding to a 2 × 3 meters pavement patch of highways and its resolution is 1200×900. The CQU-BPDD involves seven different distresses, namely transverse crack, massive crack, alligator crack, crack pouring, longitudinal crack, ravelling, repair, and the normal ones.
Downloading the dataset, Password:mq0a. (Please note: CQU-BPDD can be only used in the uncommercial case.)
CFD-PDD、CrackTree200-PDD、Crack500-PDD
<img src=".\doc\cfd.png" alt="cfd" width="500px" />Three public pavement crack segmentation (pixel-level pavement crack detection) datasets, namely Crack Forest Dataset (CFD), CrackTree200, and Crack500, are adopted for validation. We automatically produce the normal version of each diseased images via replacing the disease pixels with their neighbor normal pixels. However, such an automatic normal image fashion does not always work well for all samples. We manually filter out some low-quality generated normal images and only retain the high-quality ones. Finally, we have 155 diseased images and 114 recovered normal images on CFD dataset, 206 diseased images and 191 recovered normal images on CrackTree200 dataset, while 494 diseased images and 286 recovered normal images.
Download CFD-PDD: Baidu Cloud
Download CrackTree200-PDD: Baidu Cloud
Download Crack500-PDD: Baidu Cloud
Method
Requirement
Core:
torch == 1.11+cu11.5
(Not required, but recommended.)timm == 0.67
- ...
Docker:
Download Docker image via Baidu Cloud.
IOPLIN (IEEE T-ITS)
<img src=".\doc\ioplin.png" alt="ioplin" width="500px" />This paper first proposes the main PDC datasets: CQU-BPDD、CFD-PDD、CrackTree200-PDD, and achieves a good performance based on the E-M optimization strategy.
Code: Github
Train IOPLIN
# IOPLIN use the pretrained efficientnet_b3 weight to init the model
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml ../configs/ioplin.yaml --title=ioplin --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH
PicT (ACMMM 2022)
<img src=".\doc\pict.png" alt="image-20221020105610479" width="500px" />This paper first introduces the Vision Transformer into the PDC, and achieves 2.4% more detection performance gains in P@R, 3.9% recognition performance gains in F1, 1.8x higher throughput, and 7x faster training speed.
arXiv version: PicT
Code: Github
Train Swin-S
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=pict --cfg ../configs/baseline/swin_small_1rec.yaml --title=swin_s
Train PicT
# PicT uses the pretrained swin_s weight to init the teacher model
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=pict --cfg ../configs/baseline/swin_small_1rec.yaml ../configs/pict_1rec.yaml --title=pict --opt PICT.TEACHER_INIT $PRETRAINED_WEIGHT_PATH
WSPLIN-IP (ICASSP 2021)
<img src=".\doc\wsplin_ip.png" alt="wsplin_ip" width="500px" />This paper proposes an end-to-end training framework based on the weakly supervised patch label inference network.
Code: Github
Train WSPLIN-IP
# WSPLIN use the pretrained efficientnet_b3 weight to init the model
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml ../configs/wsplin_1det.yaml --title=wsplin --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH
WSPLIN (IEEE T-ITS)
<img src=".\doc\wsplin.png" alt="wsplin" width="500px" />This paper is an extension of WSPLIN-IP. It rethinks the patch collection strategy, and finds a good trade-off between performance and efficiency.
arXiv version: WSPLIN
Code: Github
Train WSPLIN-SW
# WSPLIN use the pretrained efficientnet_b3 weight to init the model
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml .../configs/wsplin_1det.yaml --title=wsplin --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH DATA.IS_IP False NUM_PATCHES 12
Train WSPLIN-SP
# WSPLIN use the pretrained efficientnet_b3 weight to init the model
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml ../configs/wsplin_1det.yaml --title=wsplin --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH WSPLIN.SPARSE_RATIO 0.5
DPSSL (Electronics Letters)
<img src=".\doc\dpssl.png" alt="dpssl" width="500px" />This paper try to rethink PDC from the perspective of Multi-Instance Learning, and leverages attention mechanism and Knowledge Distillation to improve the performance and efficiency.
Train DPSSL
# WSPLIN use the pretrained efficientnet_b3 weight to init the model
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml ../configs/dpssl.yaml --title=dpssl --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH
Application
Intelligent Road Distress Identification Platform Web
A good web
and android
app for pavement distress detection and recognition based on PicT
and WSPLIN series
. Homepage.
Thanks for contribution:
Citations
Citing IOPLIN、CQU-BPDD、CFD-PDD、CrackTree200-PDD
@article{tang2021iteratively,
title={An iteratively optimized patch label inference network for automatic pavement distress detection},
author={Tang, Wenhao and Huang, Sheng and Zhao, Qiming and Li, Ren and Huangfu, Luwen},
journal={IEEE Transactions on Intelligent Transportation Systems},
year={2021},
publisher={IEEE}
}
Citing WSPLIN、Crack500-PDD
@article{huang2022weakly,
title={Weakly Supervised Patch Label Inference Networks for Efficient Pavement Distress Detection and Recognition in the Wild},
author={Huang, Sheng and Tang, Wenhao and Huang, Guixin and Huangfu, Luwen and Yang, Dan},
journal={arXiv preprint arXiv:2203.16782},
year={2022}
}
Citing PicT
@inproceedings{tang2022pict,
title={PicT: A Slim Weakly Supervised Vision Transformer for Pavement Distress Classification},
author={Tang, Wenhao and Huang, Sheng and Zhang, Xiaoxian and Huangfu, Luwen},
booktitle={Proceedings of the 30th ACM International Conference on Multimedia},
pages={3076--3084},
year={2022}
}
Citing WSPLIN-IP
@inproceedings{huang2021weakly,
title={Weakly supervised patch label inference network with image pyramid for pavement diseases recognition in the wild},
author={Huang, Guixin and Huang, Sheng and Huangfu, Luwen and Yang, Dan},
booktitle={ICASSP 2021-2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={7978--7982},
year={2021},
organization={IEEE}
}
Citing DPSSL
@article{zhang2022efficient,
title={Efficient pavement distress classification via deep patch soft selective learning and knowledge distillation},
author={Zhang, Shizheng and Tang, Wenhao and Wang, Jing and Huang, Sheng},
journal={Electronics Letters},
year={2022},
publisher={Wiley Online Library}
}
Citing CFD
@article{shi2016automatic,
title={Automatic road crack detection using random structured forests},
author={Shi, Yong and Cui, Limeng and Qi, Zhiquan and Meng, Fan and Chen, Zhensong},
journal={IEEE Transactions on Intelligent Transportation Systems},
volume={17},
number={12},
pages={3434--3445},
year={2016},
publisher={IEEE}
}
Citing CrackTree200
@article{zou2012cracktree,
title={CrackTree: Automatic crack detection from pavement images},
author={Zou, Qin and Cao, Yu and Li, Qingquan and Mao, Qingzhou and Wang, Song},
journal={Pattern Recognition Letters},
volume={33},
number={3},
pages={227--238},
year={2012},
publisher={Elsevier}
}
Citing Crack500
@article{yang2019crack500,
title={Feature pyramid and hierarchical boosting network for pavement crack detection},
author={Yang, Fan and Zhang, Lei and Yu, Sijia and Prokhorov, Danil and Mei, Xue and Ling, Haibin},
journal={IEEE Transactions on Intelligent Transportation Systems},
volume={21},
number={4},
pages={1525--1535},
year={2019},
publisher={IEEE}
}