打包TensorFlow Object Detection API

問題來源

TensorFlow Object Detection API的安裝與使用比較麻煩,表現在:

  1. 安裝: 官方安裝指導要求使用者先克隆下整個models倉庫,然後安裝Protobuf,編譯解壓出object_detection模塊。最後還要將object_detection模塊與slim模塊的目錄export到PYTHONPATH中,這一操作在新打開Shell後都需要重新進行(當然,添加到環境變量配置文件中可以免除此麻煩)。整個過程是十分繁瑣的。特別的,在Windows系統上,安裝配置protobuf相對麻煩(安裝指導中就沒有給出Windows平臺的情況),同時還存在bug,識別一些模型時會出問題【參見 Issue3002】。

  2. 使用:在object_detection的ipython tutorial中,使用瞭如下語句:

from utils import label_map_util, visualization_utils

這裏的utils是object_detection下的子模塊。如果按照這個寫法,運行腳本不在object_detection目錄下就無法找到utils。

解決方法

鑑於以上問題,我們可以將object detection api打包成whl包或egg包,然後使用pip或者easy_install安裝到site-packages中即可。

我將打包好的whl包與egg包分享出來,打包環境爲Raspbian 9 Stretch(Python環境是3.5.3和Python2.7.13)、Win10 64位(Python環境是3.6.6和Python2.7.15)、Manjaro Linux 64位(Python環境是3.6.6和Python2.7.15)。下載地址:Pyhton_Packages_of_TensorFlow_Object_Detection_API

  1. 安裝依賴
    Tensorflow Object Detection API 需要如下依賴:

[使用包管理工具安裝(Linux)/系統級安裝(Windows)]

  • protobuf
  • python-tk (Manjaro上叫tk)

[使用pip安裝]

  • tensorflow
  • pillow
  • lxml
  • jupyter
  • matplotlib
  • cython
  • contextlib2
  1. 安裝下載的whl包或者egg包
    安裝whl只需執行:
pip install xxx.whl

安裝egg只需執行:

easy_install xxx.egg
  1. 使用
    使用時,請使用標準的引用Python模塊的子模塊的用法,對於object_detection的utils或是其他子模塊,請使用:
from object_detection.utils import label_map_util, visualization_utils

這樣運行腳本不管放在哪裏,都是可以搜索到utils並執行的。

打包方法

其他平臺的用戶如需打包,請按照以下步驟進行:

  1. 準備源文件:克隆下整個models倉庫,然後安裝Protobuf,編譯解壓出object_detection模塊。
# From models/research/
protoc object_detection/protos/*.proto --python_out=.
  1. 打包Whl(生成文件在dist目錄下)
# From models/research/
python setup.py bdist_wheel
  1. 打包egg(生成文件在dist目錄下)
# From models/research/
python setup.py install
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章