1. 程式人生 > >windows7 + python3.6 + TensorFlow實現FCN

windows7 + python3.6 + TensorFlow實現FCN

    隨記:新的工作開始研究基於深度學習的影象分割了,在入職之前自己先看了一下影象分割方面的論文和視訊,在自己動手訓練樣本的時候,由於剛開始接觸python 和TensorFlow,以至於出現了很多小問題,如今相關的工程總算是跑起來了,為了給自己留下筆記,供以後參考,現整理一下,也歡迎大家翻閱,提出寶貴意見。

    正題開始

    該文章旨在介紹windows7 如何利用tesnforflow來實現全卷積神經網路FCN的訓練和測試。

    準備工作

    安裝工具:python3.6cudacudnnTensorFlow1.7git、matplotlib、numpy+mkl、 pillow、scipy、

    由於本人電腦安裝的是python3.6、 TensorFlow1.7 所以在此直接當做執行樣本來使用,其它的工具,去連結出下載最新版本的安裝就可以(前提是版本要適配系統哈)。關於安裝這一塊,本人即將整理一個完整的博文來介紹自己的安裝過程,也會提供自己安裝工具的網盤地址,以便有些網站打不開的的童鞋下載使用。好了,言歸正傳,開始

https://github.com/shekkizh/FCN.tensorflow.git
https://github.com/shekkizh/FCN.tensorflow.git

     首先非常感謝創作該原始碼的,無私的共享自己的勞動成果供大家一起學習研究,也希望深度學習的小夥伴們在自己的工作和學習當中,積極貢獻自己的小力量,為人工智慧事業添磚加瓦,扯遠了哈,立馬回來。

    上面的原始碼地址,是作者github上的原始碼地址,裡面沒有包含訓練所需要的資料,我自己即將整理後的完整專案檔案在網盤裡面有備份,不嫌檔案大的小夥伴可以去網盤地址下載(下載後,在以上工具安裝都正確的情況下,可以直接執行)

    操作說明:

    操作起來很簡單,訓練的時候,只需要執行python FCN.py 就可以了,當然在資料預處理階段,你的機器不行的話,可能會慢到讓你懷疑出錯了,不要擔心,只要python不閃退或者不出現紅色的error提示,你就耐心的等著就行。    

原作者是在12GB TitanX進行的training  用時大概是6-7個小時,我的機器是GTX770(很老的一款了,視訊記憶體4G,跑起來有點吃力了,迭代4000次 大概花了半小時的時間,作者是100001次迭代,現在我的機器還在吃力的訓練著,我才有時間來整理文件)

    問題集錦

    1、執行原始碼地址現在的專案,會有兩個檔案要下載:



    以上兩個資料夾Model_zoo和Data_zoo原始碼專案裡是沒有的,需要線上下載,有可能會很慢哈,所以在網盤地址裡面打包的原始碼,直接都封裝到一起了,方便使用。

    2、這個問題搞了我一下午,就是執行到sess.run()時,python直接報錯,閃退


    這個時候,觀察CPU和GPU,發現GPU記憶體已經被爆掉了,一開始以為是視訊記憶體太小了,就加了抑制視訊記憶體的方式,發現還是不行,會視訊記憶體溢位,在網上也只找到了同樣問題的提問,但是沒有找到答案,在指令碼除錯的時候,發現問題出現在cuda上,準確的說是cudnn上,不過,這個問題出現的概率因人而異,還是把解決方案放出來吧,我電腦一開始安裝的cuda9.0 + cudnn7.1,cuda目前已經出了9.1了,但是TendowFlow最新的版本(截止發稿)不支援9.1  我就安裝了9.0發現可以,cudnn當時也是安裝的最新的版本,但是問題2報錯的日誌顯示,程式碼執行需要的cudnn環境是7.0,於是我就又去下載了cudnn7.0,覆蓋7.1,哦了可以正常訓練了

3、在TensorFlow裡面,經常會涉及到網址和檔案目錄的拼寫,兩者的分隔符是完全不一樣的,比如網址的分隔符為'/',本地檔案目錄的分隔符為'\',注意不要混淆,否則會出現連結錯誤和找不到檔案的錯誤,

4、OOM when allocating tensor with shape[4096,512,7,7] and type float o/job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc……

出現上述問題是因為視訊記憶體不夠, batch_size太大,記憶體不夠造成的,可以先排查一下有沒有其他程式在佔用視訊記憶體,然後考慮降低batch_size 的值

總結:

從安裝TensorFlow開始到成功訓練FCN模型,期間還出現了一些其它的小問題,但是當時時間比較緊湊,就沒有來的及記錄問題,要是哪位朋友在執行的時候遇到了新的問題,歡迎留言交流討論,總之深度學習自己也是剛入門的小白,希望在接下來的幾年裡,自己能夠在深度學習的某一個領域學習、成長並深耕下去。