物體檢測TensorFlow Object Detection API (一)安裝
在計算機視覺任務中,區分一下圖像分類和物體檢測,一部分任務的數據標注形式是
圖片-標簽1,標簽2,標簽3
這種類型的數據,我們最終的目的,也是測試的圖片,打標簽,姑且將其認為屬于圖片分類任務。
而另外一種數據
圖片中的某一塊-標簽1
圖片中的另一塊-標簽2
這種任務,我們的目的是在某張圖片中檢測(查找)某物體。
TensorFlow Object Detection API 是 TensorFlow models 里的一個 research project 其中預設了很多網絡模型可供我們直接調用和調參,也可以根據其自定義模型。大大簡化了我們進行實驗的流程。然而,即便如此,TensorFlow 依然不是一個新 friendly 的一個項目。在開發過程中可能遇到各種各樣的問題。在此做此記錄。
——2018.8.10
安裝
此處參考了 Installation TensorFlow models 官方 GitHub doc.
依賴
- Protobuf >= 3.0.0
- Python-tk
- Pillow
- lxml
- tf Slim
- Jupyter notebook
- matplotlib
- TensorFlow
- Cython
- contextlib2
- cocoapi
TensorFlow 如何安裝不再說明,Protobuf 可通過 brew 安裝。
coco api 選裝
其余通過 pip 安裝
其中 probuf 被用來設置模型和訓練參數,在正式使用前,需要將 protobuf 庫進行編譯
# From tensorflow/models/research/
protoc object_detection/protos/*.proto --python_out=.
注意看好路徑。
jupyter notebook 是交互式的筆記本應用,可以邊寫代碼邊記筆記。非常實用的工具,使用它可以看作者預設的一個最簡單的模型。
將 slim directories 加入 PYTHONPATH
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
任何位置使用此 api 都要首先運行此命令。
如果沒有運行此命令可能會出現
ModuleNotFoundError: No module named 'object_detection'
這樣的錯誤
測試安裝效果
python object_detection/builders/model_builder_test.py
因為在本人機器上 python 命令默認調用 python2, python3 命令才會調用 python3 所以在測試命令改為:
python3 object_detection/builders/model_builder_test.py
如果出現以下場景,表明運行成功。
代表安裝成功了。
一件趣事:
在測試這個8月6號,7號測試時候,總是出現錯誤,后來發現是一處 xrange(python2)用法沒有改成 range。 然后我把它改了就能運行了,發了 pull request 被 Google 的哥哥回復了,說他們正在更新一個大版本,里面已經改了這個錯誤,然后 8月8號就確實更新了一個新版本,改了很多地方。