当前位置: 迅达文档网 > 党团工作 >

FCN模型训练中遇到困难x

| 来源:网友投稿

 FCN 模型训练中遇到的困难

  FCN 模型训练中遇到的困难 标签:

 深度学习 FCN 神经网络 caffe 2017-02-24 10:54 2675 人阅读 评论(6) 收藏 举报

 分类:

 深度学习(18)

 版权声明:本文为博主原创文章,未经博主允许不得转载。

 前前后后大概忙了 3 个月了 中间穿插了导师给的项目和论文的任务

 总算把 fcn 给run 起来了

 之前也有参考一些博客作为指导 不过博客有的是有误导性的 导致我的 loss 居高不下 根本不收敛 还有一些奇奇怪怪的问题 我在下面逐一列举

  个人有一篇从零开始运行 FCN 的博客 如果需要的话可以去看下:http://blog.csdn.net/wangkun1340378/article/details/70238290 问题 问题 1.使用 infer.py 时候遇到 no display name and no $DISPLAY environment variable

  出现这个问题 是由于在远程服务器上运行 并且 服务器上没有显卡 直接导致 plt 无法运行 所以报错 2 个解决方法:

 方法一:

 在 infer.py 中加入 import cv2

 type(out) print out, out.shape cv2.imwrite("output.png", out)

 用 cv2 来保存图片,并且注释掉 plt 不过这样虽然能保存图片 但是图片效果不行 具体表现为颜色不对 结果可以看下图

 正确的结果如下所示 大家可以对比一下

  如果觉得方法一不行 就采用方法 2 方法 2:采用 python notebook

 用本机访问自己在远程服务器上的账号

 在本机上执行代码 题 问题 2:

 :lisi out of range 这个是由于 solve.py 中 device(int(sys.argv[1])) caffe.set_mode_gpu()

 可以把这两行代码注释掉 或者 利用 nvidia-smi 看看存在那个 gpu 就选那个 gpu 问题 问题 3:no module named caffe 方法 在 py 文件 import caffe 前加上 import sys

  sys.path.append("/home/my/caffe-master/caffe-master/python")

 具体路径根据自己实际情况而定 问题 问题 4:no module named XXX 解决方法 把 fcn.berkeleyvision.org-master 目录下所有的 py 文件统统复制到你的solve.py 所在的文件夹 例如 surgery 等等等等 题 问题 5,:

 :利用得到的 model 怎么测试图片 方法:运行 fcn.berkeleyvision.org-master 目录下的 infer.py 文件,注意修改model 路径和 deploy 文件路径,还有测试图片路径 [html] view plain copy

 1 import nupy as np

  2 from PIL import Image

  3 matplotlib.pyplot as plt

  4 import sys

  5 sys.path.append("/home/my/caffe-master/caffe-master/python")

  6 affe

  7 import cv2

  8

 9. # load image, switch to BGR, subtract mean, and make dims C x H x W for Caffe

  10m = Image.open("test_3.jpg")

  11. in_ = np.array(im, dtype=np.float32)

 12in_ = in_[:,:,::-1]

  1304.0069879316.6687676222.67891434 14#in_ -= np.array((111.67446899,109.91841125,105.24302673))

  15-= np.array((105.24302673,109.91841125,111.67446899))

  16in_ = in_.transpose((2,0,1))

  17

 18load net

  19. #net = caffe.Net("deploy.prototxt", "siftflow-fcn32s-heavy.caffemodel", caffe.TEST)

  20. net = caffe.Net("deploy.prototxt", "siftflow-fcn32s/train_iter_100000.caffemodel", caffe.TEST)

  21net = caffe.Net("deploy.prototxt", "train_iter_96000.caffemodel", caffe.TEST)

  22# shape for input (data blob is N x C x H x W), set data

  23reshape(1, *in_.shape)

  24net.blobs["data"].data[...] = in_

  25# run net and take argmax for prediction

  26net.forward()

  27out = net.blobs["score_sem"].data[0].argmax(axis=0)

 28out = net.blobs["score_geo"].data[0].argmax(axis=0)

 29type(out)

  30print out, out.shape

  31#cv2.imwrite("output.png", out)

  32,cmap="gray");

  33imshow(out);

  34axis("off")

  35avefig("test_3_out.png")

  36. plt.show()

 如上面代码所示

 [html] view plain copy

 1. net = caffe.Net("deploy.prototxt", "siftflow-fcn32s/train_iter_100000.caffemodel", caffe.TEST)

  其中 [html] view plain copy

 1. siftflow-fcn32s/train_iter_100000.caffemodel

  为模型所在路径,deploy 文件如果没有 可以参照一下方法 首先,根据你利用的模型,例如模型是 siftflow32s 的,那么你就去 siftflow32s 的文件夹,

 里面有 train.prototxt 文件,将文件打开,全选,复制,新建一个名为deploy.prototxt 文件,粘贴进去, 然后 ctrl+F 寻找所有名为 loss 的 layer 只要有 loss 无论是 loss 还是 geo_loss 将这个 layer 统统删除 然后在文件顶部加上 layer {

  name: "input"

  type: "Input"

  top: "data"

  input_param {

  These dimensions are purely for sake of example;

  # see infer.py for how to reshape the net to the given input size.

  shape { dim: 1 dim: 3 dim: 256 dim: 256 }

  } }

 其中 shape{dim:1 dim:3 dim:256 dim:256}这两个 256,是由于我的测试图片是256X256 如果你的是 500X500 那你就将最后两个 dim 改为 500 500 需要注意的是 如果你执行的是 siftflow32s,你没有 deploy,你需要加入 inputdata layer,你如果执行 sififlow16s 的 model 那么是不需要加 inputdata layer 的 因为他们的 train.prototxt 文件里已经有了 inputdata layer 题 问题 6:

 :

 利用得到的模型 测试单张图片 结果全黑 这个问题可能有多个原因 原因 1:在于 loss 太高 模型未收敛 或者 deploy 文件的参数设置有误。

 原因 2:如果针对 sififlow 数据集 那么请保证 deploy 文件的准确性 原因 3:infer.py 的有误 没有将 out = net.blobs["score"].data[0].argmax(axis=0)

 改成 out = net.blobs["score_sem"].data[0].argmax(axis=0)

  题 问题 7:

 :

 在训练过程中,loss 高居不下,模型不收敛 原因:

 这个问题的原因有很多,我只能说出个人的经历,我开始训练时候,模型也是不收敛,在这里我详细说明一下这个问题的处理方式 首先,我在根据 siftflow 数据集训练 fcn32s 的模型时候遇到了这种情况,模型的loss 高居不下,训练 10w 次,loss 依然高于 2w 这是由于我参照的博客的说明有误 在这里郑重声明一下:如果训练 fcn32s 的网络模型, 一定不要将 fc6,fc7 重新命名, 并且一定要修改 solve.py 利用 transplant 的方式获取 vgg16 的网络权重; 具体操作为 [html] view plain copy

 1 import sys

  2 sys.path.append("/home/my/caffe-master/caffe-master/python")

  3 caffe

  4 import surgery, score

  5

 6 numpy as np

  7 os

  8 import sys

  9.

 10try:

  11import setproctitle

  12

  setproctitle.setproctitle(os.path.basename(os.getcwd()))

  13except:

  14pass

  15

 16weights = "../ilsvrc-nets/vgg16-fcn.caffemodel"

  17vgg_proto = "../ilsvrc-nets/VGG_ILSVRC_16_layers_deploy.prototxt"

  18weights = "../ilsvrc-nets/vgg16-fcn.caffemodel"

  19

 20# init

  21. caffe.set_mode_gpu()

 22# caffe.set_device(int(sys.argv[0]))

  23caffe.set_device(7)

  24

 25= caffe.SGDSolver("solver.prototxt")

  26#solver.net.copy_from(weights)

  27solver = caffe.SGDSolver("solver.prototxt")

  28vgg_net=caffe.Net(vgg_proto,vgg_weights,caffe.TRAIN)

  29surgery.transplant(solver.net,vgg_net)

  30del vgg_net

  31

 32# surgeries

  33interp_layers = [k for k in solver.net.params.keys() if "up" in k]

  34surgery.interp(solver.net, interp_layers)

  35

 36# scoring

  37test = np.loadtxt("../data/sift-flow/test.txt", dtype=str)

  38

 39for _ in range(50):

  40solver.step(2000)

  41N.B. metrics on the semantic labels are off b.c. of missing classes;

  42# score manually from the histogram instead for proper evaluation

  43sem", gt="sem")

  44.

  score.seg_tests(solver, False, test, layer="score_geo", gt="geo")

  可以看到我注释了 [html] view plain copy

 1 = caffe.SGDSolver("solver.prototxt")

  2. #solver.net.copy_from(weights)

  [html] view plain copy

 1. 添加了

  [html] view plain copy

 1 solver = caffe.SGDSolver("solver.prototxt")

  2 vgg_net=caffe.Net(vgg_proto,vgg_weights,caffe.TRAIN)

  3 surgery.transplant(solver.net,vgg_net)

  4. del vgg_net

  并且在 import 后添加了 [html] view plain copy

 1 weights = "../ilsvrc-nets/vgg16-fcn.caffemodel"

  2 vgg_proto = "../ilsvrc-nets/VGG_ILSVRC_16_layers_deploy.prototxt"

  3. weights = "../ilsvrc-nets/vgg16-fcn.caffemodel"

  关于 [html] view plain copy

 1. VGG_ILSVRC_16_layers_deploy.prototxt

  我附上我的百度网盘的链接 如果大家找不到 可以在这里下载 http://pan.baidu.com/s/1geLL6Sz

 如果训练 fcn16s,则可以直接 copy 自己的 fcn32s 的 model 的权重,不需要transplant,也就是不需要修改 solve.py 如果训练 fcn8s,则可以直接 copy 自己的 fcn16s 的 model 的权重,不需要transplant,也就是不需要修改 solve.py

  总的来说,算是在自己的 fcn 道路上成功踏出了第一步,上面的问题有的是请教自己的学长,有的是百度或者 google,有的是和网友交流得来的心得 下面附上几个之前参考的博客 [html] view plain copy

 1.

 http://www.cnblogs.com/xuanxufeng/p/6240659.html [html] view plain copy

 1.

  http://www.cnblogs.com/xuanxufeng/p/6243342.html

 顺便感谢 踏雪霏鸿,一生不可自决,与人不争,大喷菇 等人的帮助 以上!

推荐访问:遇到困难 模型 训练

热门排行

党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件14篇

党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件14篇党委党组落实全面从严治党主体责任规定指出本地区本单位发生重大违纪违法案件篇1我

2022年五星支部创建实施方案5篇

2022年五星支部创建实施方案5篇2022年五星支部创建实施方案篇1为切实提高支部党建工作科学化水平、不断夯实党建基础,挖掘支部党建特色,创新支部党建工作做

七言绝句古诗精选【十首】

【 能力训练 导语】七言绝句是中国传统诗歌的一种体裁,简称七绝,属于近体诗范畴。此体全诗四句,每句七

2022年支部党员大会记录内容14篇

2022年支部党员大会记录内容14篇2022年支部党员大会记录内容篇120xx年度我校新党员发展工作已经开始。根据学校党委3月21日会议精神,今年新党员发展

统计工作如何为企业管理服务

作为企业管理重要组成部分的统计工作,在企业的经济运行中发挥着信息、咨询和监督三大作用,它为企业的经营

乡镇创建无毒社区工作方案

一、指导思想以“三个代表”重要思想为指导,认真贯彻落实上级精神,以禁吸戒毒为中心,全面落实禁毒工作责

四年级我家菜园日记500字

菜园子,就是种菜的地方。种菜的时候为了防止家禽进入菜地,于是农夫用篱笆或者栅栏将菜地围起来形成的一个

哈尔移动城堡电影观后有感范本

在观看完一部作品以后,相信你会有不少感想吧,这时我们很有必要写一篇观后感了。可能你现在毫无头绪吧,下

党支部2022年学习计划14篇

党支部2022年学习计划14篇党支部2022年学习计划篇1认真坚持“三会一课”制度,对于加强支部建设,提高党的战斗力、健全党的生活,严格党员管理,充分发挥党