FCN语义分割训练自己数据不收敛处理记录

前言

最近在做FCN语义分割方面的项目,在finetune的时候遇到了训练loss不下降的情况,在经过自己的摸索之后,最后loss曲线下降下去,这里将这个过程记录下来,希望对大家有所帮助。

1. 数据集问题

数据集的问题在按照自己的需求进行语义分割的时候都会遇到。其实数据集的制作很简单,只需要按照自己的需求设计好分类就行了,可以参考本人之前的博客进行修改。需要提醒的是每个0~255的像素值代表的是一个分类,灰度图像就有256个分类。
在进行训练自己数据的时候,分类数目和Github上下载下的文件里面定义的不一样,这里就需要在train.prototxt和val.prototxt文件中将num_output: 21改为num_output: +自己的分类数目。也可以通过train.prototxt中删除Data层Loss层得到网络的定义文件deploy.prototxt

2. 基础学习率问题

博主在进行训练自己的数据的时候在开始进行训练的时候设置的base_lr为1e-4,结果发现loss曲线就是从开始到结束的一条直线,根本没有丝毫的下降,但是将base_lr设置为1e-10的时候loss就下降很快了-_-||

3. 网络权重初始化问题

这是原来调用训练好的模型进行finretune的代码

solver = caffe.SGDSolver('solver.prototxt')
solver.net.copy_from(weights)

要将其改成

solver = caffe.SGDSolver('solver.prototxt')  
# 这里开始的3行都是我们需要增加的
vgg_net = caffe.Net(vgg_proto,vgg_weights,caffe.TRAIN)  
surgery.transplant(solver.net,vgg_net)  
del vgg_net  

其实它是先把这个权重值放到了VGG16的网络中,就是vgg_net = caffe.Net(vgg_proto, vgg_weights, caffe.TRAIN)这一句话
然后把vgg_net的权值通过一个函数转化到我现在这个solver.ne

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值