自己跑caffe 反卷积实验(图像去噪)总结

1、在复原韩国Hyeonwoo Noh 的Learning Deconvolution Network for Semantic Segmentation的实验过程中,运行训练网络的指令是报错:...error :out of memory    作者的服务器配置为 Nvidia GTX Titan X GPU with 12G memory,我的服务器配置为GeForce GTX 980  with 4G memory .

出现这种情况一般都是显存不够用了,所以解决方案如下:

1):把网络的batchsize 改小

2):把网络的层数改小(改变网络结构)

3):增加GPU显卡数量        (因作者的实验层数居多,将batchsize改到2还不行后,我将网络结构删掉了一部分,最终跑起来!)



2、关于在做自己的反卷积实验中,输入数据的问题:(总结:caffe做分类比较多,做回归较少,lmdb数据类型主要用于分类,而hdf5+euclidean配合做回归)

因为Hyeonwoo Noh的实验数据输入的是rgb图像,标签是单通道的只有21种像素值(灰度图是256个)分别对应21类标签。所以要解决两端都是rgb并且做loss回归的话,要在输入数据上下功夫。我的预期解决方案以及实施结果如下:

 1)输入数据使用lmdb 数据,像欧新宇的caffe教程那样,将图片数据生成列表,最终生成lmdb .但此时lmdb的label已经不再是0、1....的label,而是list中的图像。所以我在不同版本的caffe上进行lmdb转换过程中,报错五花八门:有的版本识别到了0幅图像,生成了lmdb;有的caffe版本将input和与其隔一个空格的label图像当成一幅图像的名称,报错找不到对应图像。(否决掉)最后,终于得知,lmdb一般用于做分类,加类标,而hdf5 数据类型做回归!

2)使用caffe中提供的Imagedatalayer。  查看imagedatalayer在caffe中的定义代码后,得知IMAGE_DATA数据存取过程中遍历是以pair形式放入lines(就是生成的txt训练集中的一行),lines是<string,int>的vector,所以由int可以得知,该数据层也是只能做分类(否决掉)

3)套用并改写Hyeonwoo Noh的IMG_SEG_DATA层。将自己的数据直接像noh做图像分割(noh为了实现输入三通道和label单通道来做分割自己定义了一个数据层——IMG_SEG_DATA)那样用.当然如果直接用的话是输入三通道,label单通道,最后做均方误差时,报错:bottom[0]->channels==bottom[1].channels (3 vs 1),显然bottom[0]是input经过网络后的三通道图,bottom[1]为从输入数据取来的label图。所以开始改写caffe代码,使IMG_SEG_DATA数据层输出的label是3通道的。

查看caffe.proto 文件后,确认   caffe/include/caffe 下的data_layer.hpp(数据层的头文件)不用修改

   i)在Deconvnet-master/caffe/src/caffe/img_seg_data_layer.cpp中的  ”读取图像初始化top blob“   处的label(即top[1])的参数1改为变量channels;

重新编译caffe,运行后报错:check failedLlabel_channels==1(3 vs 1)提示报错文件位置:caffe/src/caffe/data_transformer.cpp:313行。于是打开该文件,查看后,是在检查通道数处出错,于是将相应原来的CHECH_EQ(label_channels,1),将1,换位3.

报错,重新编译caffe,终于大功告成,有点小兴奋啊!!!!

4)使用hdf5数据类型,hdf5加上euclidean做回归是可以的,因在方法三种修改caffe代码成功了,就没有尝试这种方法,不过这种方法可行性也是很大,具体可以参照SRCNN的生成过程。


3、网络终于可以跑起来后,兴奋之余,发现loss的值很乖啊,显示loss=nan,于是上网搜了下,很多人说把学习率降低,于是我将学习率从起初的0.01一直调到0.00001,loss才正常显示了,可以了 接下来的工作终于可以安心慢慢调参了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值