使用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.****.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,可能对显卡显存要求比较高,坑也多,这一系列的文件记录下来,以备时常回顾走过的路,提醒自己,遇到任何事情不抛弃,不放弃,勇敢前行。