Deeplab Training notes

原作者的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 

  #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. 在自己的数据集上测试

实践步骤:
1. 把数据集做成VOC12的格式,jpg在images文件夹下,Channel为1的png文件在labels文件夹下,然后写list,格式每行一个jpg一个png路径:/images/xxxx.jpg /lables/xxxx.jpg
2. 修改 get_DeepLab_LargeFOV_voc12_data.sh, 主要是实验路径,并且注释掉下载init.caffemodel的语句
3. train和test网络不用修改
4. list前面自己做好就不用prepareXX.sh语句准备了,复制一个run_pascal_strong,修改里面的对应语句,并且注意list文件名的对应
5. 运行修改的run_xxxx.sh开始训练
6. 测试:deploy prototxt中改成两类,另外fc8和interp层的名字要手动改,改好后用Deeplab.py跑结果







你可能感兴趣的:(Deeplab Training notes)