1. 程式人生 > >谷歌開源Tensorflow Object Detection API學習筆記

谷歌開源Tensorflow Object Detection API學習筆記

谷歌宣佈開源其內部使用的 TensorFlow Object Detection API 物體識別系統。本教程針對ubuntu16.04系統,快速搭建環境以及實現視訊物體識別系統功能。

https://yq.aliyun.com/ziliao/405237

https://www.cnblogs.com/wmr95/p/7563173.html

https://blog.csdn.net/pkokocl/article/details/82596089

1、安裝Tensorflow

請參考官方說明及其它部落格安裝tensorflow,要使用Tensorflow Object Detction API,tensorflow版本需1.4及以後版本。

我的系統已經安裝Ubuntu 16.04系統,基礎軟體安裝如下表,tensorflow,opencv均正常工作

2、安裝必要的包及庫

    sudo apt-get install protobuf-compiler
    sudo apt-get install python-pil
    sudo apt-get install python-lxml
    sudo pip3 install jupyter
    sudo pip3 install matplotlib

3、安裝TensorFlow Object Detection API

在home目錄下新建tensroflow目錄。TensorFlow Object Detection API 存放在 tensorflow /models 專案下的。(地址: https://github.com/tensorflow/models)

    mkdir tensorflow
    cd tensorflow
    git clone https://github.com/tensorflow/models.git

 在clone的時候有可能比較慢,或提示網路超時。多試幾次即可。clone完成後在tensorflow資料夾下有名為models的資料夾,在models資料夾下有research資料夾

~~~~~~~~~~`

下載TensorFlow Model模型庫

TensorFlow 模型庫包含了很多開源的模型,包括影象分類、檢測、自然語言處理NLP、視訊預測、影象理解等等,我們要學習的物件檢測API也包括在這裡面,可以用git checkout到本地,也可以直接在github下載zip包,本文直接下載的zip包(大概415M,雖然我們只會用到裡面很少一部分內容)

下載後,解壓到~/tensorflow目錄下,為了與github目錄結構一致,我們將models-master目錄重新命名為models

得到如下目錄結構~/tensorflow/models/research/object_detection


原文:https://blog.csdn.net/chenmaolin88/article/details/79371891  
 

~~~~~~~~~~~~~~~

 

~~~~~~~~~~~~~~~

 


4、protobuf編譯

在research/object_detection/protos目錄下有很多.proto檔案,需要將這些.ptoto檔案編譯成.py檔案。使用protoc對proto檔案進行編譯

protoc ~/tensorflow/models/research/object_detection/protos/*.proto --python_out=.

執行上述命令後,提示如下錯誤:

object_detection/protos/ssd.proto:104:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:104:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.


檢視protoc的版本是2.6.1,在以前的文章中說明2.6.1版本上OK的。但我下載的TensorFlow Object Detection API是2018年9月初的版本,protoc的2.6.1版本太低了。

    protoc --version
    libprotoc 2.6.1

需要升級protoc版本。首先解除安裝protoc舊版本。注意與第1步驟中安裝protoc的命令引數對應

    sudo apt-get remove protobuf-compiler
    protoc --version
    bash: /usr/bin/protoc: No such file or directory

到 https://github.com/google/protobuf/releases 下載最新的protoc安裝包 protobuf-all-3.6.1.tar.gz

下載完後解壓,然後執行下面的命令編譯安裝:

    $ cd protobuf-3.6.1
    $ ./configure --prefix=/usr
    $ make -j15
    $ make check -j15
    $ sudo make install -j15
    $ sudo ldconfig
    $ protoc --version
    libprotoc 3.6.1
      
     

安裝後檢視protoc版本為3.6.1 版本。再重新執行編譯命令

$ protoc ./object_detection/protos/*.proto --python_out=.

命令執行成功,沒再報錯。檢視protos目錄下,有相應的.py檔案

anchor_generator_pb2.py
anchor_generator.proto
argmax_matcher_pb2.py
 argmax_matcher.proto
bipartite_matcher_pb2.py
bipartite_matcher.proto
5、將slim新增到PYTHONPATH

TensorFlow Object Detection API 是以 Slim 為基礎實現的,需要將 Slim 的目錄加入 PYTHONPATH 後才能正確執行。為方便起見,直接在.bashrc  檔案中新增如下一行。

export PYTHONPATH=$PYTHONPATH:/your home path/tensorflow/models/research:/your home path/tensorflow/models/research/slim

其中/your home path/請根據你自己的安裝目錄修改。然後執行

source ~/.bashrc
6、驗證測試

執行如下命令:(注意,下述命令必須是python3 ,而不能是python)

[email protected]:~/tensorflow/models/research$ python3 object_detection/builders/model_builder_test.py

執行結果:

......................
----------------------------------------------------------------------
Ran 22 tests in 0.098s

OK

 

---------------------  
作者:pkokocl  
來源:CSDN  
原文:https://blog.csdn.net/pkokocl/article/details/82596089  
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

 

7、跑demo:https://blog.csdn.net/chenmaolin88/article/details/79371891

接下來,我們跑一個demo,你可以在這個路徑下執行jupyter notebook開啟筆記本,然後用筆記本開啟/object_detection/object_detection_tutorial.ipynb

(然後輸入jupyter notebook,就會呼叫瀏覽器(Chrome)開啟當前資料夾,點開 object_detection_tutorial.ipynb,

在新標籤頁中開啟 Object Detection Demo,點選上方的 “Cell”-"Run All",就可以直接看到結果,最後輸出的是兩張圖片的識別結果,分別是狗,以及沙灘。第一次執行由於需要下載訓練好的模型,耗時較長。第二次之後可以將 .ipynb檔案中 Download Model 即 in[5]部分的程式碼註釋掉,以加快執行速度。)

 

注意,下面這個demo裡第4步是從網路中下載預訓練模型檔案,若執行的時候速度很慢,可以單獨去下載這個模型檔案,然後解壓到相應目錄,確保存在object_detection/ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb 檔案,然後遮蔽到程式碼中下載指令,如圖所示,把Download Model程式碼塊設定MarkDown或直接註釋掉也可以。
 

 

接下就一步步執行裡面的程式碼,看看最後的結果是否如下圖,更多的細節和功能大家自己去研究研究吧:

 

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~`

https://blog.csdn.net/pkokocl/article/details/82596089

報錯:解決辦法見上述部落格

[email protected]:/usr/local/lib/python3.5/dist-packages/tensorflow/models/research$ sudo protoc object_detection/protos/*.proto --python_out=.
[sudo] password for liuliu:
object_detection/protos/ssd.proto:110:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:110:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.

報錯分析:

檢視protoc的版本是2.6.1,在以前的文章中說明2.6.1版本上OK的。但我下載的TensorFlow Object Detection API是2018年9月初的版本,protoc的2.6.1版本太低了。

    protoc --version
    libprotoc 2.6.1

需要升級protoc版本。首先解除安裝protoc舊版本。注意與第1步驟中安裝protoc的命令引數對應

    sudo apt-get remove protobuf-compiler
    protoc --version
    bash: /usr/bin/protoc: No such file or directory

到 https://github.com/google/protobuf/releases 下載最新的protoc安裝包 protobuf-all-3.6.1.tar.gz

下載完後解壓,然後執行下面的命令編譯安裝:

    $ cd protobuf-3.6.1
    $ ./configure --prefix=/usr
    $ make -j15
    $ make check -j15
    $ sudo make install -j15
    $ sudo ldconfig
    $ protoc --version
    libprotoc 3.6.1
      
     

安裝後檢視protoc版本為3.6.1 版本。再重新執行編譯命令

$ protoc ./object_detection/protos/*.proto --python_out=.

命令執行成功,沒再報錯。檢視protos目錄下,有相應的.py檔案

anchor_generator_pb2.py
anchor_generator.proto
argmax_matcher_pb2.py
 argmax_matcher.proto
bipartite_matcher_pb2.py
bipartite_matcher.proto
 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

https://blog.csdn.net/Allen__Iverson/article/details/84038113

解決Failed to get convolution algorithm. cudnn failed to initialize...

伺服器環境

Ubuntu16.04、cuda9.0、cudnn7.0、tensorflow1.12.0、python3.5、1080ti
錯誤

Failed to get convolution algorithm. cudnn failed to initialize…
原因

tensorflow版本太高
解決方案

sudo pip3 install --upgrade --force-reinstall tensorflow-gpu==1.9.0 --user
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·