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