首先聲明參考博客:https://blog.csdn.net/beyond_xnsx/article/details/79771690?tdsourcetag=s_pcqq_aiomsgpython
實踐過程主線參考這篇博客,相應地方進行了變通。接下來記載個人實踐過程。git
1、GPU版的TensorFlow的安裝github
準備工做:windows
筆者電腦是Windows10企業版操做系統,在這以前已經經過Anaconda安裝了python3.5.2和CPU版本的TensorFlow1.12.0。Anaconda就跟普通的軟件同樣,下載完圖形化界面引導式安裝就能夠,不會的百度一大堆,這裏就不說這個了。 筆者也不肯定CPU版TensorFlow和GPU版的TensorFlow能夠並存否,不過據我資料搜索顯示能夠並存,不過,筆者也是初學,爲了安全起見,就決定先卸載掉CPU版的TensorFlow,在Anaconda Prompt中輸入pip uninstall TensorFlow,有時候可能顯示沒有找到或沒法卸載之類的提示,爲了保險,筆者進入Anaconda文件系統內部(筆者的路徑:D:\DevelopmentTools\Anaconda3\Lib\site-packages),手動將TensorFlow和TensorBoard兩個文件夾刪除掉了,也就是說這個徹底能夠手動刪除,但要把相關的刪除乾淨爲好,不必定非得要命令行卸載。 下面開始GPU版TensorFlow的安裝:安全
一、英偉達(NVIDIA)CUDA和CuDnn的安裝工具
英偉達顯卡更可能是面向遊戲用戶的,因此並未直接在驅動中內置關於深度學習的組件,因此須要將用於支持深度學習的組件添加進NVIDIA驅動或安裝包,這裏有兩個東西:CUDA和CuDnn。學習
筆者電腦的GPU是NVIDIA GeForce GTX 1060 with Max-Q Design,因此首先查看下本身的GPU是否支持CUDA功能,若是支持,那麼CUDA和CuDnn不一樣版本選擇和GPU型號沒有關係,主要看其和TensorFlow版本的兼容性,若是版本不兼容,會產生一系列問題,使人琢磨不透,這個仍是要弄清楚纔好。筆者最終選擇的是CUDA9.0和CdDnn9.0,對應選擇的TensorFlow版本是1.10.0。下一步來說TensorFlow安裝測試
CUDN網盤連接:連接:https://pan.baidu.com/s/1VAw1bMtSyUmJ4Uv7X44MsA 提取碼:mgam操作系統
CuDnn網盤連接:連接:https://pan.baidu.com/s/175b0OId84-xbzhq24eAv5w 提取碼:q7ni
.net
CUDN的安裝用cuda_9.0.176_win10.exe就和普通軟件安裝同樣,目錄使用默認的,環境變量自動添加。而後將cuda9.0+cudnn-9.0-windows10-x64-v7.1.zip解壓到一個目錄等待使用便可,以下:
這裏,就完成了GPU端的相關內容。 下面進入TensorFlow的安裝。
二、TensorFlow-gpu的安裝
進入Anaconda Prompt命令行下,使用pip install --ignore-installed --upgrade tensorflow-gpu==1.10.0來安裝,會自動下載安裝的。這裏須要注意的是版本號是否兼容,這裏使用的是TensorFlow-gpu-1.10.0和CUDA9.0,其它版本須要查證版本兼容問題,並且這裏安裝會提示不兼容的錯誤的,還有以前如有CPU版TensorFlow可能會有不肯定的問題,我是卸載刪除乾淨以後才進行安裝的。
三、測試
在命令行中,進入python,並輸入如下代碼:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
輸出:
b’ Hello, TensorFlow!
出現如上界面信息,沒有明顯的異常錯誤信息,就表示TensorFlow-gpu安裝成功。 下面進入FasterRCNN相關內容。
2、下載並部署FasterRCNN的源碼
代碼GitHub連接:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5
這裏還有一點,須要安裝cython, python-opencv, easydict三個包,同理,在Anaconda Prompt命令行下,用pip來安裝,若是以有opencv,就不用安裝python-opencv了。
下載完,直接用PyCharm打開便可,
3、數據集
能夠收集本身的數據,進行標註,使用labelImg-master工具進行標註,按照VOC2007規範化數據圖片及標註結果的xml文件。我這裏將組中集體合做標註的數據集修改了又修改,可是最終仍是沒能正確使用起來,我修改的內容就是那些未被標註的圖片和標註不兼容的圖片,前者是直接將未被標註的圖片和相關文件刪除掉,後者是從新標註。 本身標註的數據集老是有問題,目前尚未解決,以後會更新。
最終使用公有數據集進行訓練,以下:
下載數據集
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
將三個文件同時解壓到VOCdevkit2007目錄下(三個都解壓到一個文件夾下),並將VOCdevkit2007目錄存放於data目錄下
文件名和路徑結構必定要設置對,不然會報錯
而後就用此數據集替換項目代碼中的數據集,以本人的pycharm項目路徑爲例,如:D:\IDE\PyCharm\Project\Faster-RCNN-TensorFlow-Python3.5-master\data\VOCdevkit2007\VOC2007
直接替換便可。
4、預訓練模型植入
簡單講,這裏至關於一個遷移學習,由於本身從零開始訓練一個模型很費勁,關鍵是要想訓練出比較準確或者說很準確的模型,那要耗費很高的GPU資源和更多的時間,因此這裏就是運用別人訓練了一部分的一個模型,叫作預訓練模型,選擇Vgg16預訓練模型,下載連接:http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
解壓並更名爲vgg16.ckpt(原來是vgg_16.ckpt)後存放在Faster-RCNN-TensorFlow-Python3.5-master\data\imagenet_weights\
目錄下(注:這個imagenet_weights文件夾並不存在,本身新建一個便可),解壓後必定要更名爲vgg16.ckpt 而不是vgg_16.ckpt不然會報錯:
5、開始訓練
這時,就能夠運行train.py了,我大約訓練了七八個小時吧,我是凌晨12點睡覺前開始訓練,早上起來就訓練好了,
6、運行demo.py
而後運行demo.py,就能夠對文件夾下的六張圖片進行標註並顯示了