使用caffe訓練faster-rcnn時遇到的問題總結
經過今天一天的實驗,充分了解了在深度學習領域,視訊記憶體大的重要性。
不得不承認,有了N卡以後,效率提高了很多,當然這也得益於糾纏於cpu訓練faster rcnn的日子....
(1)今天早上,主要解決了faster rcnn 下的caffe不能編譯的問題。
問題產生的原因是faster rcnn下的caffe不支援cudnn5.1,當時就單純的把Makefile.config下的 USE_CUDNN:=1 註釋掉了 #USE_CUDNN:=1。編譯成功,感覺距離成功又近了一步。
(2)編譯接下來開始嘗試訓練資料。
訓練資料的教程是python-faster-rcnn的官方教程。
https://github.com/rbgirshick/py-faster-rcnn#beyond-the-demo-installation-for-training-and-testing-models
任何事情都沒有一帆風順的時候....基礎不夠就會出現很多難以預料的問題。那就是按照步驟來,下載的資源還好,baidu都有,依照教程操作,最後訓練的命令為:
cd $FRCN_ROOT ./experiments/scripts/faster_rcnn_alt_opt.sh [GPU_ID] [NET] [--set ...] # GPU_ID is the GPU you want to train on # NET in {ZF, VGG_CNN_M_1024, VGG16} is the network arch to use # --set ... allows you to specify fast_rcnn.config options, e.g.# --set EXP_DIR seed_rng1701 RNG_SEED 1701
因此需要輸入:
./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc
我遇到的問題:
× ZF大寫
× imagenet_models 不能放在model資料夾下,要放在data資料夾下,下載比較簡單
(3)AttributeError: 'module' object has no attribute 'text_format'
需要再lib/fast_rcnn/train.py中新增:
import google.protobuf.text_format
(4)解決了這個問題,又出現了另一個問題,如圖:
Check failed: error == cudaSuccess (2 vs. 0) out of memory
視訊記憶體不足...經過查閱資料,有兩種解決辦法:
1. 安裝cudnn
解決辦法看之前的博文:
http://blog.csdn.net/u012283902/article/details/63254906
由於是2G視訊記憶體,還是不夠用。可能這種方法比較適用於4G視訊記憶體的情況下。2. 修改配置檔案
/lib/fast_rcnn/config.py
(1)首先修改
# Minibatch size (number of regions of interest [ROIs])
__C.TRAIN.BATCH_SIZE = 128
將這個值調小,比如64,32,16,8.....
進行訓練看是否可行
(2)還可以修改
# Scales to use during training (can list multiple scales)
# Each scale is the pixel size of an image's shortest side
__C.TRAIN.SCALES = (600,)
將600改為,如500,400,300....等
檢視效果
注意:不一定全更改,更改後可執行即可。
然後神奇的事情就發生啦!!!!
至此可以使用影象進行訓練了,接下來就要深入的理解這些步驟,可以往下進行了,在這裡糾結了好久,比如是否要顯示卡,是否要N卡,是否裝雙系統,是否用caffe,好多坑,希望大家可以少走彎路,以下幾點在我看來是必須的:
1. 純淨的linux系統,14.04,16.04均可
2. 需要顯示卡,需要N卡,最好大於2G視訊記憶體。(我有RX480,在opencl環境下 訓練 faster-rcnn還沒有出現,坑一定非常多,我這種新手也糾結在這裡好幾天)
3. caffe或者tensorflow都可以,熟悉其中一個就可以,這裡行動比選擇更重要,無需糾結太多。
如果單純分類也許用不到這麼大視訊記憶體,只怪我接觸的是faster rcnn,可能對顯示卡視訊記憶體要求比較高,坑也多,這一系列的檔案記錄下來,以備時常回顧走過的路,提醒自己,遇到任何事情不拋棄,不放棄,勇敢前行。