DeepLab V3+ 訓練ade20k資料集
仿造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不同
注意:仔細檢查引數名是否正確,有時候引數名就算錯了,並不會立刻報錯,而是後面使用時報錯