利用deeplab v3+開原始碼訓練PASCAL VOC 2012資料集
阿新 • • 發佈:2018-12-15
deeplab v3+環境配置好之後則可以進行模型的訓練
1、準備PASCAL VOC 2012資料集:可以在ubantu命令列上執行
#From the tensorflow/models/research/deeplab/datasets directory.
sh download_and_convert_voc2012.sh
下載並把資料集轉換成 TFRecord格式
我已有VOC 2012資料集壓縮包,所以省了下載步驟。因此手動在\research\deeplab\datasets目錄下建立一個名為pascal_voc_seg的資料夾,把壓縮包放進該資料夾裡,再執行 sh download_and_convert_voc2012.sh(程式碼無需改動),執行後會多了下圖紅色方框裡的檔案(在虛擬機器ubantu 16.04執行的程式,一下截圖為虛擬機器共享資料夾裡的截圖):
至此,可以執行 train.py開始訓練模型
# From tensorflow/models/research/ python deeplab/train.py \ --logtostderr \ --training_number_of_steps=30000 \ --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=256 \ # 當主機記憶體不夠大時會出現記憶體不夠的錯誤,因此可根據情況適當減小數值 --train_crop_size=256 \ --train_batch_size=1 \ --dataset="pascal_voc_seg" \ --tf_initial_checkpoint='./deeplabv3_pascal_trainval/model.ckpt' \ # 載入權重(路徑用單引號引起來) --train_logdir='./PATH_TO_TRAIN_DIR' \ # 儲存訓練的中間結果的路徑,該資料夾為手動建立,如果之前的訓練結果不要想重新訓練,直接清空該資料夾 --dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord' # 第二步生成的tfrecord的路徑
注意點:(1)上述命令中=後面不能有空格
踩過的坑:PC記憶體太小時會出現以下錯誤,我把 --train_crop_size=513 改為256可以正常訓練:
至此模型訓練完成
執行命令:
python deeplab/eval.py \ --logtostderr \ --eval_split="val" \ --model_variant="xception_65" \ --atrous_rates=6 \ --atrous_rates=12 \ --atrous_rates=18 \ --output_stride=16 \ --decoder_output_stride=4 \ --eval_crop_size=513 \ --eval_crop_size=513 \ --dataset="pascal_voc_seg" \ --checkpoint_dir='./PATH_TO_TRAIN_DIR' \ #上述訓練中間結果儲存路徑 --eval_logdir='./result_test_output' \ # 結果輸出路徑,該資料夾需手動建立 --dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord' # 驗證集tfrecord檔案所在路徑
踩過的坑:把–eval_crop_size=513 改為128則會出錯,原因不明,錯誤如下圖所示,不改則不會出錯。
執行成功截圖:
執行命令:
# From tensorflow/models/research/
python deeplab/vis.py \
--logtostderr \
--vis_split="val" \
--model_variant="xception_65" \
--atrous_rates=6 \
--atrous_rates=12 \
--atrous_rates=18 \
--output_stride=16 \
--decoder_output_stride=4 \
--vis_crop_size=513 \
--vis_crop_size=513 \
--dataset="pascal_voc_seg" \
--checkpoint_dir='./PATH_TO_TRAIN_DIR' \ #上述訓練中間結果儲存路徑
--vis_logdir='./vis_output' \ # 視覺化預測結果儲存路徑,手動建立
--dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord' # 生成的tfrecord資料集所在路徑
執行效果圖:
圖片處理結果:
原圖:
分割圖: