传送门:传送门
排坑:传送门
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 对比:传送门
再附上几个评价的博客解说:
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-+