首先從 PASCAL VOC 2012 的網站上下載該資料集,整個資料集的大小大約是 2GB,下載時要稍微等一下:
cd models/research/ # 下載 PASCAL VOC 2012 資料集(2GB) wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
使用 create_pascal_tf_record.py
將 PASCAL VOC 2012 資料轉為 TFRecord 格式:
# 將 PASCAL VOC 2012 資料轉為 TFRecord 格式(training set) python object_detection/dataset_tools/create_pascal_tf_record.py --data_dir=VOCdevkit --year=VOC2012 --set=train --label_map_path=object_detection/data/pascal_label_map.pbtxt --output_path=object_detection/data/pascal_train.record # 將 PASCAL VOC 2012 資料轉為 TFRecord 格式(validation set) python object_detection/dataset_tools/create_pascal_tf_record.py --data_dir=VOCdevkit --year=VOC2012 --set=val --label_map_path=object_detection/data/pascal_label_map.pbtxt --output_path=object_detection/data/pascal_val.record
這裡同樣以 Faster RCNN + Resnet101 + COCO 的模型作為預訓練模型,下載後放進 object_detection/data/
目錄:
# Faster RCNN + Resnet101 以 COCO 資料集訓練好的模型 wget http://storage.googleapis.com/download.tensorflow.org/models/object_detection/faster_rcnn_resnet101_coco_11_06_2017.tar.gz # 將模型參數放入 object_detection/data/ tar zxvf faster_rcnn_resnet101_coco_11_06_2017.tar.gz cp faster_rcnn_resnet101_coco_11_06_2017/model.ckpt.* object_detection/data/
接下來要建立一個 .config
設定檔,這部分可參考 faster_rcnn_resnet101_voc07.config
這個內建的範例,將包含 PATH_TO_BE_CONFIGURED
的路徑修改一下,其餘的設定可以不需要更改,編輯完成後同樣儲存於 models/research/object_detection/data/
之中,由於我們這裡使用的資料是 2012 年的,所以我把新的檔名變更為 faster_rcnn_resnet101_voc12.config
。
接著就可以開始訓練模型,訓練模型的方式跟之前相同:
# 設定檔路徑 PIPELINE_CONFIG="object_detection/data/faster_rcnn_resnet101_voc12.config" # 訓練結果放置路徑 MY_MODEL_DIR="my_voc_model" # 使用第一張 GPU 卡進行訓練 CUDA_VISIBLE_DEVICES=0 python object_detection/train.py --logtostderr --pipeline_config_path=${PIPELINE_CONFIG} --train_dir=${MY_MODEL_DIR}/train # 使用第二張 GPU 卡進行驗證 CUDA_VISIBLE_DEVICES=1 python object_detection/eval.py --logtostderr --pipeline_config_path=${PIPELINE_CONFIG} --checkpoint_dir=${MY_MODEL_DIR}/train --eval_dir=${MY_MODEL_DIR}/eval # 啟動 TensorBoard tensorboard --port=16006 --logdir=${MY_MODEL_DIR}
在訓練的過程中,同樣可以使用 TensorBoard 監看模型的狀況:
模型訓練好之後,依照同樣的方式匯出模型:
# 設定檢查點檔案路徑 CHECKPOINT_NUMBER=800000 CKPT_PREFIX=${MY_MODEL_DIR}/train/model.ckpt-${CHECKPOINT_NUMBER} # 將訓練好的模型匯出 python object_detection/export_inference_graph.py --input_type image_tensor --pipeline_config_path ${PIPELINE_CONFIG} --trained_checkpoint_prefix ${CKPT_PREFIX} --output_directory my_exported_graphs
並將新模型套用至前一篇教學的程式碼,跑出來的結果會像這樣:
參考資料:PythonProgramming.net、LEARNING BY HACKING、Priya Dwivedi、Dat Tran、Jiancheng Li
Page: 1 2