天天看點

tensorflow(3):Object Detection API使用

TensorFlow Object Detection API 可實作基于給定模型檢測圖像中的特定目标,是典型的深度學習在計算機視覺中的應用。本文以此為例,開始應用TensorFlow解決實際問題。

首先,需要下載下傳TensorFlow的model檔案,可在GitHub的Tensorflow/models上找到,下載下傳models檔案。

tensorflow(3):Object Detection API使用

可通過git clone下載下傳,或者在頁面上直接點選綠色的Clone or Download按鈕,下載下傳master分支。在此分支中,存在research檔案夾。research檔案夾下,可以找到object_detection檔案夾,Object Detection API 就在其中。

tensorflow(3):Object Detection API使用

在應用Object Detection API 之前,需要進行一下依賴環境的安裝,可參考官方的安裝說明。如果僅跑目标檢測執行個體,也不用都安裝,以後用到了随時安裝即可。

首先要安裝tensorflow,我安裝的是gpu版本,可以參考我的部落格tensorflow(2):Ubuntu 16.04安裝(GPU版本)。我的系統是Ubuntu 16.04,需要安裝如下環境:

sudo apt-get install protobuf-compiler python-pil python-lxml python-tk
sudo pip install Cython
sudo pip install jupyter
sudo pip install matplotlib
           

然後是對Protobuf libraries進行編譯,剛才安裝了protobuf-compiler編譯環境,指令如下。

這裡注意object_detection的路徑不要寫錯。編譯之後,protos檔案夾下的.proto檔案會生成同名的.py檔案,後期再應用程式中,需要調用這些python包。

本文通過PyCharm編寫Object Detection API的應用程式,可參考Ubuntu16.04環境下PyCharm安裝和配置進行基本配置。建立一個python project,将編譯過Protobuf libraries的object_detection檔案夾拷貝到project目錄下,在工程根目錄下,建立python file,“TestTFImg.py”,用于調用Object Detection API 。

tensorflow(3):Object Detection API使用

然後,即可參考官方簡明使用文檔編寫程式了。

這裡說明幾點需要個性化修改的地方:

  • model并不在下載下傳的models檔案夾中,需要單獨從model zoo中下載下傳,我下載下傳的是ssd_mobilenet_v2_coco,下載下傳之後解壓檔案,放到object_detection檔案夾下,要将MODEL _ NAME寫成下載下傳的model的目錄名。
  • 還要修改CKPT和LABELS的路徑,使其指向真正存在的路徑,這裡我設定了一個系統路徑變量,通過os.getcwd()獲得目前路徑,然後拼接得到兩個路徑。
    tensorflow(3):Object Detection API使用
  • 測試圖檔路徑,也要根據目前路徑修改,同上。
    tensorflow(3):Object Detection API使用
  • 由于PyCharm不支援IPython的%matplotlib inline指令,是以在plt.imshow之後,要通過plt.show将圖檔顯示出來。
    tensorflow(3):Object Detection API使用

這樣程式就可以正常運作了,運作結果如下。

tensorflow(3):Object Detection API使用
tensorflow(3):Object Detection API使用