概述
前邊我曾經寫了一篇名為《語義分割之deeplab v3+ 》的文章,在那篇文章中我主要講了deeplab v3+的原理--當然主要也就是論文上邊的內容。因此在開始閱讀本篇文章之前,建議首先閱讀一下上邊那篇文章。
本文我主要講環境搭建以及pascal_voc_2012的訓練以及可視化相關的內容。關於deeplab v3+遷移學習部分的內容--即如何使用deeplab v3+訓練自己的個人數據,我后續后單獨寫一篇文章來講。好,話不多少,我們下邊正式開始。
環境搭建
關於環境搭建部分,其實官方給了一些說明,感興趣可以參考官方說明《Installation》。雖然說官方給了環境搭建的 指南,但是某些細節部分它並沒有具體進行說明,因此如果我們只是一味按照官方說明來搭建環境的話,中間也可能會出現這樣或者那樣的問題。因此,在該部分我會以官方的指南作為主體,結合自己在搭建環境過程中的一些細節問題,來記錄deeplab v+環境搭建的整個過程。
第一步 創建python環境
使用conda
創建python環境,應該是我們復現算法的時候必須先做的一步。通過conda創建的新環境我們事先和本地環境的隔離,可以更擺弄各種變量(😄 )。
關於conda
安裝的部分內容,我這里就不在進行詳述,網上有許多相關的教程。在這里我就簡單說一下如何使用conda創建滿足deeplab v3+算法運行的基礎環境。
執行如下命令,創建python3.6基礎環境:
conda create -n deeplab python=3.6
- 其中 -n后邊的參數指的是環境的名稱,此處我使用的是deeplab,你可以換成任意你喜歡的名稱。
- 等號后邊的3.6指的是創建python環境的版本,此處建議使用python3.6(因為我之前使用3.7總出現各種各樣的錯誤)。
執行完成之后會出現如下執行結果
輸入y
之后基礎環境就創建完成。
然后通過命令
conda activate deeplab
進入到剛剛創建的名字為deeplab的環境中。
執行的結果如下:
從圖中我們可以看到執行完成之后,括號里邊的名稱由base變成了環境名稱(deeplab)。
至此python的基礎環境搭建完成。
第二步 安裝依賴
- Numpy
- Pillow 1.0
- tf Slim (which is included in the "tensorflow/models/research/" checkout)
- Jupyter notebook
- Matplotlib
- Tensorflow(建議使用1.14,不推薦使用2.0以上版本,否則后邊總出各種問題)
安裝TensorFlow:
執行如下命令(二選一):
# 使用cpu版本
pip install tensorflow==1.14
# 使用GPU版本
pip install tensorflow-gpu
安裝python依賴庫(安裝默認版本即可)
sudo apt-get install python-pil python-numpy
pip install --user jupyter
pip install --user matplotlib
pip install --user PrettyTable
第三步 設置python的依賴路徑
由於官方給的deeplab代碼是在一個TensorFlow的model庫中,因此它的代碼使用了一些其他位置的代碼文件。如果不進行環境變量的設置,在運行的過程中會報“slim模塊或者deeplab模塊找不到的錯誤”。因此我們需要執行如下命令對代碼所用的依賴路徑進行設置:
#進入代碼的research目錄里邊
cd ~/models/research
# 將slim以及deeplab目錄添加到python的依賴環境目錄中
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim:`pwd`/deeplab
首先執行命令之前必須要保證在代碼的research
目錄中。
接着我們執行如下命令,來對環境進行測試,看環境是否已經滿足要求。
# 進入/research/deeplab目錄下
cd ~/models/research/deeplab
# 執行model_test.py
python model_test.py
如果執行過程中沒有出現錯誤或者異常,並且最終出現如下結果,則證明基礎環境搭建成功。
訓練與可視化
在前邊,我們基礎環境搭建完成之后,我們便可以進行訓練以及可視化操作。由於pascal voc 2012是官方認定的測試集之一,因此官方給了一個腳本,直接運行之后,可以自動下載預訓練權重,訓練,評估,以及對結果進行可視化等一系列步驟。
執行命令如下:
#在tensorflow/models/research/deeplab目錄下執行
bash local_test.sh
執行完成之后我們進入deeplab/datasets目錄下
我們發現多了一個名為pascal_voc_seg的目錄,該目錄里面包含了pascal端原始數據集、預訓練權重、導出的checkpoint文件、以及訓練結果等。
下邊我們對其常用的目錄進行一些說明
tfrecord
目錄名稱 | 含義 |
---|---|
exp | 結果文件夾,包含訓練后的權重、評估的結果、可視化后的圖片等 |
init_models | 下載的預訓練權重位置 |
tfrecord | 轉換成的tfrecord文件所在目錄 |
VOCdevkit | pascal voc 2012原本的數據集 |
總結
本文主要寫了關於deeplab v3+使用pascal voc 2012數據集進行訓練的過程,並且在官方文檔的基礎結合自己在訓練過程中所踩的坑來寫了這篇文章。希望能給那些訓練deeplab v3+模型的伙伴以幫助
擴展
同時我們學習一個模型之后,進行遷移學習可能也是一個必不可少的環節。因此在后續我也寫一篇關於如何使用deeplabv3+訓練自己數據集的文章--《deeplab v3+訓練個人數據集》,歡迎諸位閱讀、批評與指正。