1. 程式人生 > >使用caffe訓練faster-rcnn時遇到的問題總結

使用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,可能對顯示卡視訊記憶體要求比較高,坑也多,這一系列的檔案記錄下來,以備時常回顧走過的路,提醒自己,遇到任何事情不拋棄,不放棄,勇敢前行。