1. 程式人生 > >Windows上搭建Tensorflow object detection API 的環境相關操作

Windows上搭建Tensorflow object detection API 的環境相關操作

最近嘗試建立Tensorflow object detection API 的環境,最終成功實現。這個API執行與CPU,沒有做GPU的加速,因此也沒安裝GPU相關的外掛。

1.我的電腦

win7-64位

RAM:4G

CPU:i5-3230M

用到的東西:

Anaconda 3-5.1.0

jupyter對應的瀏覽器:搜狗

TensorFlow

...................

2.參考資料

https://blog.csdn.net/dy_guox/article/details/79081499

https://blog.csdn.net/r1254/article/details/76735740

https://blog.csdn.net/RobertChenGuangzhi/article/details/50499274

https://blog.csdn.net/caicai_zju/article/details/70245099

https://blog.csdn.net/comway_Li/article/details/81434358

3.安裝Anaconda

下載Anaconda3-5.1.0-Windows-x86_64的安裝包,安裝位置可以修改為非C盤,最好不要出現中文路徑吧,一路next,出現下圖的時候把兩個都勾選起來,繼續next

安裝好之後開啟cmd,輸入:conda --version 

如果輸出像下面箭頭那樣,就是安裝成功了。

4.安裝Python

這個版本的anaconda所附帶的Python是3.6版本,但TensorFlow所能適應的版本是3.5版本,所以需要先搞一個3.5的Python環境。操作為:在cmd裡面輸入 

conda create --name python35 python=3.5

  我這裡的python35是代表著可以適應TensorFlow的Python3.5環境,原英文文件的這個名字是TensorFlow,但本質是一樣的。這裡的3.5會令Python選擇3.5.x中的最高版本。等待一段時間,下載安裝完成之後,在cmd輸入:conda info --envs

  如果出現如下圖兩個箭頭所指向的迴應,則代表安裝成功(另外那些非箭頭指向的是我各種安裝嘗試最後拋棄的檔案,無視之)。

5.安裝TensorFlow

TensorFlow一般入門的是CPU版本,稍微高階一點的是GPU版本,這裡我只安裝CPU的。先在cmd裡面輸入

activate python35

來啟用現在的Python35環境,以後想退出這個環境就deactivate,下圖就是進入了Python35環境的效果。

然後在python35的環境下,使用pip安裝tensorflow,輸入:

pip install --upgrade --ignore-installed tensorflow

驗證安裝是否成功,在35環境下輸入python,來在cmd裡面開啟Python,輸入如下程式碼,如果輸出是b'good'那就是初步成功了。

import tensorflow as tf
hello = tf.constant('good')
sess = tf.Session()
print(sess.run(hello))

安裝spyder和ipython等外掛:開啟Anaconda Navigator,在下圖箭頭那裡搜尋spy和ipy找到spyder和ipython進行勾選,然後點左下角綠色的apply,之後會出現一系列要一起安裝的,繼續apply就行了。這裡安裝的外掛可能還是不夠的,等一下的操作會知道那些不夠,然後再來補充。

6.下載Tensorflow object detection API

https://github.com/tensorflow/models

從github上下載專案(右上角“Clone or download”-"DownloadZIP"),解壓,放去沒有中文路徑的資料夾裡面,這裡解壓出來的檔名是models-master。

7.Protobuf 安裝與配置

https://github.com/google/protobuf/releases

在列表的最下面找到Windows版本,我是用了3.4.0版本,之前用過3.6,進行下面的操作的出錯,就用回這個3.4版。解壓,將bin下面的protoc.exe放到C:\Windows。

cmd把預設資料夾進入剛才步驟6的models-master\research目錄,然後輸入:

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

這裡可能報錯,大概是找不到protoc的意思,重啟試試 ,可能剛才放完exe之後Windows還沒更新過來。然後也可能報錯說找不到資料夾或檔案之類,就是什麼的*起不到遍歷的作用,這個時候就要把*換成protos資料夾下面每一個.protos檔案的名字,逐個來手動操作,按了回車之後產生了該檔案對應的.py檔案cmd框裡沒報錯,那就是OK了一個,下圖是我逐個操作出來的結果。

8.PYTHON環境變數配置

在 環境變數-系統變數  中新建名為‘PYTHONPATH’的變數,輸入D:\Py\models-master\research;D:\Py\models-master\research\slim

這個是我電腦的檔案路徑,自己的電腦自己稍微修改一下。然後重啟電腦。

測試這個API,啟用python35(每次都要啟用的),把cmd的預設路徑弄到;D:\Py\models-master\research  然後輸入:

python object_detection/builders/model_builder_test.py

沒報錯就說明是這個api可以。如果出現類似於:ImportError: No module named "xxxxxxxx"  那麼說明anaconda裡面還缺失這個xxxxx外掛,參考步驟5,在Anaconda Navigator介面裡找到這個xxxxx,然後apply。有一個例外,就是缺失pil的時候,有時候會出現問題,用旁邊的pilow外掛來代替apply就行了, 這個相當於升級版。

9.測試自帶案例

開啟Anaconda3-Anaconda Promp,啟用python35,目錄cd到D:\Py\models-master\research\object_detection

輸入jupyter notebook來開啟網頁,網頁檔案中的 object_detection_tutorial.ipynb,然後點選上方的 “Cell”-"Run All",就會執行,In[ ]那裡出現* 就說明正在執行。如果執行成功,兩三分鐘後,會出現下面的景象:

可以出現以上畫面的話,說明Tensorflow object detection API 的環境搭建與測試工作完成。

run-all的時候,可能會出現一些問題:

①在執行時,報import matplotlib; matplotlib.use('Agg') # pylint: disable=multiple-statemen錯誤,將from matplotlib import pyplot as plt 改為import matplotlib.pyplot as plt即可解決這個錯誤。

②報一大串,包括最下面有“ImportError: Could not find 'cudart64_90.dll'. TensorFlow requires that this........”,這個是因為我一開始安裝過GPU版的TensorFlow,去Anaconda3-Anaconda Promp那裡把這個解除安裝掉。

③出現“ImportError: No module named tensorflow ”,可能是這個jupyter有問題,強行在Anaconda3-Anaconda Promp裡重新安裝一次這個jupyter

activate python35 #啟用tensorflow環境
conda install ipython
conda install jupyter
jupyter notebook #重新開啟jupyter notebook

=======================以上就是建立好了這個環境========================

可以對程式碼進行修改一下,改變一下功能

1.加入其它的檢測圖片,在object_detection資料夾下面見建立一個類似於test_images的資料夾,放自己想檢測的照片進去,改下面的這3個地方:新的資料夾的名字、資料夾裡照片簇的名字、照片數量。然後就run-all

2.換模型,預設的模型是最簡單快速的模型,可以在下面那裡改成你想用的模型的名字,然後就直接執行就OK了

注意了,名字一定要是全名,這些可選的模型彙集於:

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

 

3.一個模型的第一次執行會慢很多,因為需要下載這個模型,第一次過後,可以吧Download Model部分的程式碼註釋掉,就會快一些。另外,新模型的第一次也可以在上面的網址那裡下載想要的模型,解壓,解壓出的關鍵資料夾是裡面有包含一個.pb檔案的那個,把整個資料夾複製到detection_objection資料夾下,這樣就可以不下載了,第一次也可以把Download Model註釋掉,直接run-all 。

 

=============================OVER=OVER=====================================