前面的文章TensorFlow 上基於 Faster RCNN 的目標檢測已經介紹過目標檢測概念,直觀表述是用算法在圖片中用框框標記各種各樣的目標,讓機器能像人眼一樣迅速發現場景中物體的位置和大小,從而做出進一步判斷(例如自動駕駛汽車要主動避讓障礙物,沿正確路線前行)。
然而構建準確率高的、能定位和識別單張圖片裡多種物體的模型仍然是計算機視覺領域一大挑戰。TF Object Detection API 【1】是一個構建在 TensorFlow 之上的可以簡化構建、訓練、部署目標檢測模型的開源框架。
TF Object Detection API 安裝步驟參考【2】。
獲取 TensorFlow Models 源碼:
git clone https://github.com/tensorflow/models --recursive
cd models/接下來的步驟,默認都在 models/ 目錄下進行。
安裝最新版 TensorFlow,懶人步驟:
接著安裝必要的 Python 包:
TF Object Detection API 使用 Protobuf 配置模型、訓練參數。為了正確編譯 proto 文件,需要手動編譯安裝 Protobuf 3.3:
wget https://github.com/google/protobuf/archive/v3.3.0.tar.gz
tar zxvf v3.3.0.tar.gz
cd protobuf-3.3.0/./autogen.sh./configure
make -j
make install編譯 proto :
設置 PYTHONPATH 環境變量
通過這一步,可以看到 TF Object Detection API 使用了 TF-Slim API,我們上篇文章使用 TF-Slim 設計複雜網絡已介紹過如何使用該 API 設計複雜網絡。
測試安裝是否成功:
今天我們利用 TF Object Detection API 從頭訓練一個 Faster RCNN 目標檢測模型,使用 ResNet-152 網絡和 Oxford-IIIT 寵物數據集。
下載訓練數據
將訓練數據轉換為 tfrecord 格式
運行結束後,你會看到 pet_train.record 和 pet_val.record 兩個文件。
準備工作目錄 20170820,將轉換的 tfrecord 文件放入這個目錄。將 object_detection/data/pet_label_map.pbtxt 和 object_detection/samples/configs/faster_rcnn_resnet152_pets.config 兩個文件也拷貝到這個目錄。該目錄內容如下:
運行訓練
其中--train_dir 指向 20170820/,訓練產生的中間結果都存放在該目錄。 ${PATH_TO_YOUR_PIPELINE_CONFIG} 指向配置文件 20170820/faster_rcnn_resnet152_pets.config,該文件內容中幾個 「PATH_TO_BE_CONFIGURED」 都替換為 「20170820」,第 110 和 111 行內容改為:
#fine_tune_checkpoint: "20170820/model.ckpt"
from_detection_checkpoint: false
訓練中
查看 TensorBoard
先啟動 tensorboard 服務
這裡 --logdir= 路徑與前面訓練目錄 --train_dir 相同。
通過網頁 localhost:6006 打開後,查看訓練 loss 曲線如下圖所示。
評估訓練好的網絡
這裡 --eval_dir= 路徑與之前 --train_dir 相同。
進階
完成這些任務之後,可以嘗試(1)將訓練數據改為自己的數據集;(2)將模型改為使用其他網絡如 VGG、MobileNets;(3)利用 TF Object Detection API 實現 YOLOv2 。
參考文獻
【1】 https://github.com/tensorflow/models/tree/master/object_detection
【2】https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md
【3】 "Speed/accuracy trade-offs for modern convolutional object detectors." Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z, Song Y, Guadarrama S, Murphy K, CVPR 2017
如果你覺得本文對你有幫助,請關注公眾號,將來會有更多更好的文章推送!