pytorch implementation of Weakly Supervised Patch Label Inference Networks for Efficient Pavement Distress Detection and Recognition in the Wild
For more details of this task, See Pavement Distress Classification.
# 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/crack500/crack500_effi_b3.yaml ../configs/crack500/crack500_ioplin.yaml --title=ioplin_crack500 --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/crack500/crack500_effi_b3.yaml ../configs/stn_effi_b3.yaml --title=stn_crack500
# you can change the $STN_NAME to train different stn
# $STN_NAME = {stn_1_bn,stn_1,stn_2,stn_3}
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/crack500/crack500_effi_b3.yaml ../configs/stn_effi_b3.yaml --title=stn_crack500 --opts MODEL.NAME $STN_NAME
# you can change the config file to train different baselines
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/crack500/crack500_effi_b3.yaml --title=effi_b3_crack500
# 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/crack500/crack500_effi_b3.yaml ../configs/crack500/crack500_wsplin.yaml --title=wsplin_ip_crack500 --opts MODEL.BACKBONE_INIT $PRETRAINED_WEIGHT_PATH
These examples are in the I-DET setting. For other settings, please change the config file.
# 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
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml ../configs/stn_effi_b3.yaml --title=stn
# you can change the $STN_NAME to train different stn
# $STN_NAME = {stn_1_bn,stn_1,stn_2,stn_3}
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml ../configs/stn_effi_b3.yaml --title=stn --opts MODEL.NAME $STN_NAME
# effi_b3
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml --title=effi_b3
# you can change the model name $MODEL_NAME_TIMM to train different baselines. the model name can be referd to timm repo
python3 main.py --data-path=$DATA_PATH --output=$OUTPUT_PATH --project=wsplin --cfg ../configs/baseline/effi_b3_1det.yaml --title=other_baseline --opts MODEL.NAME $MODEL_NAME_TIMM
# 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 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
# 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