您的位置:首页 > 其它

DeepLab v2 配置

2017-04-15 17:18 211 查看
DeepLab v2配置过程不是很麻烦,但资料很少,此处详解一下:

1)cudnn降级:因为Caffe版本所导致的问题,DeepLab的作者推荐使用cudnn v4,如果不是的话,可以考虑降级或者文件移植。先说降级;

到英伟达官网下载nudnn v4(注册即可下载),随便找个地方解压。

以v5将v4为例

sudo rm /usr/local/include/cudnn.h

sudo rm /usr/local/lib/libcudnn.so*

降级

sudo cp ./include/cudnn.h /usr/local/include

sudo cp ./lib64/libcudnn.so*  /usr/local/lib

链接cuDNN的库文件

sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4

sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so

sudo ldconfig -v

按照自己的版本修改

除此之外,也可以在新的版本的Caffe中拷贝以下文件,将Deeplab中的对应文件覆盖而不执行降级操作,个人建议选择降级。

include/caffe/layers/cudnn_relu_layer.hpp, src/caffe/layers/cudnn_relu_layer.cpp, src/caffe/layers/cudnn_relu_layer.cu
include/caffe/layers/cudnn_sigmoid_layer.hpp, src/caffe/layers/cudnn_sigmoid_layer.cpp, src/caffe/layers/cudnn_sigmoid_layer.cu

include/caffe/layers/cudnn_tanh_layer.hpp, src/caffe/layers/cudnn_tanh_layer.cpp, src/caffe/layers/cudnn_tanh_layer.cu

(2)matio.h no such file or directory问题

sudo apt-get install libmatio-dev  

(3)atomicAdd的重写问题,cuda8中出现了atomicAdd的定义,从而产生bug

将这个文件修改下common.cuh,修改如下,注意最后的endif

#ifndef CAFFE_COMMON_CUH_
#define CAFFE_COMMON_CUH_

#include <cuda.h>
#if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600
#else
// CUDA: atomicAdd is not defined for doubles
static __inline__ __device__ double atomicAdd(double *address, double val) {
unsigned long long int* address_as_ull = (unsigned long long int*)address;
unsigned long long int old = *address_as_ull, assumed;
if (val==0.0)
return __longlong_as_double(old);
do {
assumed = old;
old = atomicCAS(address_as_ull, assumed, __double_as_longlong(val +__longlong_as_double(assumed)));
} while (assumed != old);
return __longlong_as_double(old);
}
#endif
#endif
至此基本就可以make通过了,接下来就可以阅读run.py文件,了解数据集该如何放置,注意在config文件夹下有相关配置文件(不是voc12下的那个)
在运行的过程中可能会出现
CUDN_MAP_ERROR,这种情况下是数据集没做好,VOC的数据集不能拿来直接跑,而是要标定到0-20内的灰度图,标好后就不会报错了,现在我的DeepLab
v2感觉训练没啥问题,就是测试时会出现LOSS为0的情况,欢迎交流!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息