原作者的source配不好,用了martinkersner的版本
https://github.com/martinkersner/train-DeepLab
1. Make Caffe报错:
/include/caffe/common.cuh(9): error: function "atomicAdd(double *, double)" has already been defined
#ifndef CAFFE_COMMON_CUH_ #define CAFFE_COMMON_CUH_ #include <cuda.h> #if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600 #else 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
2. Make densecrf报错: /usr/bin/ld cannot find -lhdf5
进入/usr/lib/x86_64-linux-gun/后,sudo ln -s libhdf5_serial.so libhdf5.so
很多软件都找libhdf5都是找libhdf5.so
3. 如何test
使用 : python deeplab.py GPU_ID NET MODEL IMAGE
GPU_ID GPU序号
NET file 测试用的网络文件,prototxt格式,通常是*deploy*.prototxt命名
MODEL 训练得到的网络参数,caffemodel文件
IMAGE 一张图像或多张图像的路径
举个栗子
python deeplab.py 0 ./DeepLab-LargeFOV/deploy21.prototxt ./exper/voc12/model/DeepLab-LargeFOV/train_iter_6000.caffemodel IMG_20160607_235823.jpg IMG_20160613_210417.jpg IMG_20160613_210433.jpg IMG_20160613_210434_1.jpg IMG_20160616_115046.jpg IMG_20160618_195858.jpg IMG_20160618_195901.jpg IMG_20160619_144057.jpg IMG_20160626_183557.jpg IMG_20160710_151846.jpg IMG_20160801_214946.jpg IMG_20161009_191504.jpg IMG_20161207_123751.jpg IMG_20161218_114822.jpg IMG_20170106_190733.jpg IMG_20170111_153112.jpg IMG_20170111_153932.jpg IMG_20170115_183921.jpg
0号GPU,网络 ./DeepLab-LargeFOV/deploy21.prototxt,以及训练好的参数./exper/voc12/model/DeepLab-LargeFOV/train_iter_6000.caffemodel,去测试后面的图片
deeplab.py代码所遇到的问题
(年前测的,过了20多天忘了什么问题了。。好像是np.pad返回负值导致的,想起来再补)
4. 在自己的数据集上测试