FCN-8网络训练笔记

本文是关于使用TensorFlow实现FCN-8网络的训练笔记,探讨了训练细节如损失函数的选择、数据处理的重要性、训练过程中的观察及网络结构的变种。强调了在网络初期可能出现的黑屏现象及其原因,并提出使用少量数据进行预验证来降低调试成本。
摘要由CSDN通过智能技术生成

随便用tensorflow搭建了一个FCN8,结构很简单: VGG16从conv1_1到pool5完整拿过来,pool5注意stride改为了2,fc6、fc7变成了1*1的卷积核。然后接3层conv2d_transpose即可,前两个conv2d_transpose分别从pool4和pool3连过来做fuze。tf.AdamOptimizer的学习率用1e-4即可。

抠细节:

1、loss可以这么写:

loss = tf.nn.softmax_cross_entropy_with_logits(logits = self.logits, labels = self.label_tensor)

也可以加:

loss = tf.reduce_mean(loss)

这两者都可以收敛。而且曾经有个说法是tf.AdamOptimizer(lr).minimize(loss)内部会把loss求平均。

然后这里要注意tf.nn.softmax_cross_entropy_with_logits接受的logits是没有经过softmax的网络输出值,初学者容易搞不清这里。

2、开始训练之前一定要保证输入数据完全正确!对于semantic segmentation问题,你的label是一张像素图,这个像素很绝对,很可能由于opencv的读入函数,或者resize函数改变了像素点,导致匹配不上label。这里推荐misc库:

from scipy import misc

im = misc.imread("file_name")

im = im.imresize(im, (x,y))  #这里推荐插值方法使用neares
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值