1. 程式人生 > >TensorFlow Object Detection API 在Windows10和Ubuntu上的配置

TensorFlow Object Detection API 在Windows10和Ubuntu上的配置

前言

好久沒用部落格了,因為伺服器原因重灌了好幾次,tensorflow也一直跟著重灌,這篇博文相比上一篇會更完善點,用的版本也會新一些。主要記錄在win10和ubuntu上配置Tensorflow目標檢測介面的過程和一些遇到的問題,也會記錄gpu版tensorflow的安裝過程(CUDA和cuDNN)。在使用介面之前,請先確認自己能使用GPU版本的tensorflow!這篇只有配置,以後有時間記錄下如何訓練自己的資料集。最近tensorflow還開放了例項分割的介面,還得弄一弄,跟不上了呀~哈哈

Windows10

環境配置:Anaconda3+Tensorflow1.6.0(gpu)+Keras2.1.5(可選)

注:還沒安裝CUDA和cuDNN的先看最下面的附

  • 安裝Tensorflow: pip install tensorflow-gpu (pip install –upgrade tensorflow-gpu)

    現在沒有說必須要python3.5才有tensorflow了,所以Anaconda也能裝最新的

  • 安裝keras:pip install keras (pip install –upgrade keras)

Protobuf 編譯

下載(protoc-3.4.0-win32.zip)

  • 請下載3.4.0版本的protobuf,3.5+版本會出現一個bug:在win10下無法理解*.proto ,所以輸入下面的指令後會提示no such fileXXX 。

解壓後將bin資料夾中的【protoc.exe】放到C:\Windows

  • 此步驟需要windows資料夾的寫入許可權,但其實只要protoc.exe 在某個環境變數的目錄下即可,不一定要在c:\wiindows。放在tensorflow\model\research,然後新增環境變數也可以。

在models\research目錄下shift+右鍵開啟Powershell視窗,輸入:
protoc object_detection/protos/*.proto --python_out=.
不報錯即可。

Python路徑的新增

在Anaconda的包目錄:C:\Users\LXY\Anaconda3\Lib\site-packages


新建.pth檔案,加入以下兩行路徑:

C:\Users\LXY\TensorFlow\models\research
C:\Users\LXY\TensorFlow\models\research\slim
  • 避免出現錯誤:no module name ‘object detection’,在Ubuntu的配置上也有類似步驟。

測試

python object_detection/builders/model_builder_test.py
不報錯即可
這裡寫圖片描述

附:CUDA和cuDNN安裝

注:不同的TensorFlow版本要求不同的CUDA及其對應的cuDNN,eg. tensorflow1.3.0要求CUDA8.0
但是tensorflow1.6.0要求CUDA9.0,如果強行要CUDA9.1或者CUDA8.1請用大神們編譯的.whl

因為用的Tensorflow1.6.0,所以下載CUDA9.0以及對應的cuDNN7.1.1(更正一下,只能用v7.0,在訓練資料的時候才發現)

  • 安裝CUDA的時候,第一步是系統相容性檢查,如果這步出現Warning,沒檢查到合適硬體,先跳過,看能不能安裝成功,可以成功的話就不用管這個相容檢查問題了。
  • 新安裝的CUDA不會覆蓋原有CUDA的環境變數,而是排在原有變數的前面,所以當需要CUDA時,會優先檢索新安裝的CUDA。

安裝完CUDA後,將cuDNN的檔案複製過去

  • 安裝完的CUDA在目錄: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\,我們一開始選的目錄是用來暫放提取檔案的,安裝完後就自動刪除了。
C:\cuda\bin\cudnn64_5.dll —> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin 
C:\cuda\include\cudnn.h —> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include 
C:\cuda\lib\x64\cudnn.lib —> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64

檢視CUDA版本

nvcc -V
這裡寫圖片描述

測試

需要安裝好tensorflow-gpu

source activate tensorflow #(可選,如果在虛擬環境的話)
python
import tensorflow as tf
hello=tf.constant('hello,tensorflow')
sess=tf.Session()
print(sess.run(hello))

這裡寫圖片描述

檢視GPU佔用

C:\Program Files\NVIDIA Corporation\NVSMI加入環境變數
然後就可以跟Ubuntu一樣,在cmd輸入:nvidia-smi

Ubuntu16.0.4

Ubuntu裝得會早些,Tensorflow版本是1.4.0,要下載的東西跟Windows類似,很多配置步驟也跟WIndows類似。
注:還沒安裝CUDA和cuDNN的先看最下面的附

安裝Anaconda
sudo bash Anaconda3-4.4.0-Linux-x86_64.sh

重新整理環境變數
source /etc/profile或者 source ~/.bashrc #(全域性的環境變數)

檢視conda版本
conda –V

建一個tensorflow環境(可選)
conda create -n tensorflow python=3.6
啟用環境(根據上一條可選)
source activate tensorflow

安裝tensorflow
注:如果是在Anaconda開闢的環境env裡,安裝都不用加sudo,如果使用sudo意味使用的是系統預設的python環境(也是Anaconda的),不確定的可以在安裝完後pip list看看是否安裝成功。

pip install tensorflow-gpu

安裝必要的包和工具

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

或者使用(可選)

sudo pip install pillow
sudo pip install lxml
sudo pip install jupyter
sudo pip install matplotlib

如果要使用coco的api(可選)

git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
cp -r pycocotools <path_to_tensorflow>/models/research/

Protobuf編譯

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

加入環境變數

vim ~/.bashrc
export PYTHONPATH=$PYTHONPATH:'/home/ai902/Tensorflow/models/research':'/home/ai902/Tensorflow/models/research/slim'

測試

  • python object_detection/builders/model_builder_test.py
  • 從navigator裡面安裝啟動jupyter notebook,執行例程

附:CUDA和cuDNN安裝

安裝CUDA

sudo sh cuda_8.0.61_375.26_linux.run  # 安裝的cuda在/usr/local/cuda下面

注意:安裝顯示卡驅動的時候選擇no!!!

安裝cuDNN(也可以用.deb檔案安裝)

cd /usr/local/cuda # cuDNN放在這個目錄下解壓
sudo tar -xzvf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

新增環境變數,將以下程式碼放入~/.bashrc檔案儲存後source ~/.bashrc

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda

測試

source activate tensorflow #(可選,如果在虛擬環境的話)
python
import tensorflow as tf
hello=tf.constant('hello,tensorflow')
sess=tf.Session()
print(sess.run(hello))