仿造local_test.sh写个local_ade20k_test.sh
将line45: download_and_convert_voc2012.sh => download_and_convert_ade20k.sh
将line51: PASCAL_FOLDER="pascal_voc_seg" => ROOT_FOLDER="ADE20K" ,并将下面所有用到PASCAL_FOLDER都替换为ADE20K
训练参数改为
python "${WORK_DIR}"/train.py \
--logtostderr \
--train_split="train" \
--model_variant="xception_65" \
--atrous_rates=6 \
--atrous_rates=12 \
--atrous_rates=18 \
--output_stride=16 \
--decoder_output_stride=4 \
--train_crop_size=513 \
--train_crop_size=513 \
--train_batch_size=1 \
--min_resize_value=350 \
--max_resize_value=500 \
--resize_factor=16 \
--training_number_of_steps=12000 \
--fine_tune_batch_norm=False \
--dataset="ade20k" \
--initialize_last_layer=False \
--last_layers_contain_logits_only=True \
--tf_initial_checkpoint="${INIT_FOLDER}/deeplabv3_pascal_train_aug/model.ckpt" \
--train_logdir="${TRAIN_LOGDIR}" \
--dataset_dir="${TF_DATASET}"
training_number_of_steps是训练次数,可以先小一些验证一下。
initialize_last_layer=False和last_layers_contain_logits_only=True表示用下载的模型去初始化除了logits之外的参数,logits重新训练,这是因为ade20k和voc的classes num不同
注意:仔细检查参数名是否正确,有时候参数名就算错了,并不会立刻报错,而是后面使用时报错