caffe 跑deeplab_v2

传送门:传送门

排坑:传送门

传送门

matio安装参考:传送门

排坑记录:

因为没有权限的原因(比较严格,敏感的情况,如公司服务器啥的...),在安装matio的时候遇到生成不了libmatio.so.2的问题(就是make install 时候就报出不是sudoer的bug...),导致后续要导入这个库链接就出问题。

因为在 matio/src 及一些子目录下的Makefile文件里,是默认把这些库文件(如libmatio.so.2)安装到 /usr/include/lib 之类的路径下的,这些都是需要sudo权限的路径.... 

所以解决方法也很简单,就把matio 及其子路径下的一些 Makefile 文件 (如/src/Makefile) 中的 /usr/local/include /usr/include/lib 之类的路径都换掉,换成自己可随意访问的路径即可~

最后,在.bashrc文件末加一下路径。一劳永逸:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ path to /matio-1.5.2/lib     #注意这里不需要把libmatio.so.2写上,只需要指定到lib这里就可以了~

再记一个我遇到的坑:

就是我对conv进行了一些修改,导致caffe中的deconv_layer这一层老冲突。因为它也是继承了base_conv_layer 和 im2col之类的部分函数。。。所以,简单粗暴的,我就直接把deconv_layer.cpp deconv_layer.hpp deconv_layer.cu给删掉得了,反正我现在的业务暂时是不需要它的。。。。。就是这么直接。。。。。

哈哈哈哈  这里就是提供一种处理的思路,其实正确的解决方法应该是修改冲突部分的名字之类的,但是有点耗时。在不影响当前业务的情况下,直接删掉其实是可以的。。。。吧。。。哈哈哈

train 效果 evaluate : 传送门

pascal label color 对比:传送门

再附上几个评价的博客解说:

传送门

传送门2

model传送门:传送门

9.18更新:

补充一个train时候的小细节:

deeplab_v2并非没有可视化出MIOU,只是我之前不会看而已。。。

这3个acc其实是有意义的,并非classifice任务中的acc,在train.prototxt中去看这一层:

layer {
  name: "accuracy"
  type: "SegAccuracy"
  bottom: "fc8_${EXP}"
  bottom: "label_shrink"
  top: "accuracy"
  seg_accuracy_param {
    ignore_label: 255
  }
}

可以看到是SegAccuracy这一层,然后打开源码去看:

看到了吧,top[0]top[1]top[2]分别代表acc,recall,jaccard....分别对应上图的output[0], output[1],output[2]....

所以代码细节还是要仔细弄懂,翻着源码去看~

再补充下caffe中的bottom和top,bottom是数据的输入,top是数据的流出。top不仅仅是简单的和本层layer的名字一致,它的数据流向的一个作用。。在写layer框架的时候,这一层不写top的话,那么这一层是没有输出的~

top: 该层forward函数生成的数据储存的blob的地址
bottom:该层forward函数输入的数据储存的blob的地址

caffe中的数据是用blobs的形式进行数据流动的,每一层用bottom来输入数据,用top来输出数据。如果只有top没有bottom,则此层只有输出,没有输入。反之亦然。如果有多个 top或多个bottom,表示有多个blobs数据的输入和输出。

9.20更新:

用init.caffemodel train_iter_20000.caffemodel initializer train 2w次,超参数不变,baseline大概是0.579-+

用train2_iter_20000.caffemodel initializer train 2w次,超参数不变,baseline大概是0.65-+

猜你喜欢

转载自blog.csdn.net/jiachen0212/article/details/82686641
今日推荐