先说明一点我的配置环境,Dell precision power3620的工作站,GTX1080GPU,CUDA8.0,cudnn7,Opencv3.1,Ubuntu16.04系统,Caffe。Caffe的配置这里就不多介绍了,可以参考这篇博客
http://blog.csdn.net/zouyu1746430162/article/details/54095807
在配置Caffe的过程中,这篇博客写的很详细,这里说明以下几点:
- 1. Makefile.config文件的修改:
在打开Makefile.config文件,如下图红色框里的部分,这部分根据自己电脑GPU的计算能力进行相应的修改,GPU计算能力参考链接:https://developer.nvidia.com/cuda-gpus。GTX1080计算能力是6.1,如果最后两行不是61就要改为61,同时去掉前面sm_20,sm_21。
-下图是针对我的配置环境修改的CUDA_ARCH
- 2. 配置的过程中遇到一个小问题:
在make all -j8 通过之后,进行make runtest -j8测试的时候报错了,大概就是在GPU模块的地方出错了,查了很多的资料,最后的解决方案就是添加sudo 进行sudo make runtest -j8
就可以了。接着执行make pycaffe也通过了。但后来在实际的使用过程中,进行相关的模型生成训练时就有问题了。执行bash脚本文件进行训练的话,也要添加sudo 才能进行训练,例如执行sudo bash examples/mnist/train_lenet.sh
能正常的进行训练,去掉sudo 就不行,就会在GPU模块报错。要是调用python接口进行训练就完全不行了,执行python XXX.py
文件进行训练的话同样在GPU模块报错。于是我参考前面的经验执行sudo python XXX.py
,这时候报错信息就是no module named caffe
。出现这个错误的原因就是我在配置python接口的时候执行的是make pycaffe
,不是执行的sudo make pycaffe
,所以不能加sudo 进行Python接口的调用。踩了这么些个坑之后,我决定重新配置。执行make clean
之后,执行sudo su
获取root权限,然后在root环境下进行Caffe配置,这样配置下来就完全可以正常使用了。当然每次使用的时候都要先获取root权限,然后再使用Caffe。 - 3. 环境变量的配置:
走完上面的步骤后,在环境变量配置的时候,运行vim .bashrc
打开.bashrc文件,在最后添加下面的语句,同样的vim /etc/profile打开profile
文件,在最后也添加下面的语句。
export PYTHONPATH=/home/name/caffe_name/python:$PYTHONPATH #name 修改为你的账户名,caffe_name修改为根目录下你的caffe文件夹名,从github下载caffe不修改文件名称的话这里就是caffe-master。
添加完之后执行source .bashrc和source /etc/profile
使环境变量的配置生效,source,vim命令都是在根目录下执行的。
4. Caffe其他的配置参考上面那篇博客就可以了。(http://blog.csdn.net/zouyu1746430162/article/details/54095807)。cudnn的配置就是复制几个文件,然后再删除几个文件,在把删除的文件建立软链接。
CUDA的下载链接:https://developer.nvidia.com/cuda-toolkit-archive
cudnn的下载链接:https://developer.nvidia.com/rdp/cudnn-download(需要注册账号)
以上就是Caffe的全部配置内容。(如有错误还请大家多多批评指正)
SSD的Caffe配置
SSD的配置可以参考这篇博客:http://blog.csdn.net/jesse_mx/article/details/52769272
SSD的训练参考这篇博客:http://blog.csdn.net/sinat_31802439/article/details/52958791
我在修改ssd_pascal.py文件里面的gpus=’0’,batch_size = 16后开始正常训练。下面是部分截图。
SSD绘制loss曲线
loss曲线的绘制参考这篇博客:http://blog.csdn.net/10km/article/details/71191694
绘制曲线的思路就是将训练过程的输出信息生成log日志文件,文件名的后缀一定要是.log,再使用bash parse_log.sh XXX.log
命令对日志文件解析生成.log.train和.log.test两个解析文件。最后使用gnuplot进行绘制曲线
下面是训练60000次后绘制的loss图形: