使用keras搭建U-net神经网络进行图像分割

1 搭建环境

Python 3.7+Tensorflow 2.0+Keras

2 U-net 源码

网上可下载,很多,大多没什么区别,不知道为什么。

3 下载后,运行即可

使用源码中附带的训练和测试数据,可以跑出不错的模型和分割结果。
使用keras搭建U-net神经网络进行图像分割_第1张图片
使用keras搭建U-net神经网络进行图像分割_第2张图片

4 使用自己的数据进行Unet模型训练

当把源码中数据换成自己的数据进行训练和分割的时候,就出问题了,一不小心就会得到全黑、全白或者全灰的分割结果。
通过查阅资料,此现象涉及因素较多,结合自己的调试经历,总结起来有以下几点需要注意:

  1. 训练数据图片的格式要和源码中图片格式一致:尤其是位深度、通道数,数据类型uint8。
  2. 代码中255换成255.0。(这一点没有测试,python中除法默认是取小数的,感觉这一点不应该有影响。)
  3. 注意学习率的设置,如果训练后loss较大,可以考虑改小学习率:
    model.compile(optimizer = Adam(lr = 1e-5), loss = ‘binary_crossentropy’, metrics = [‘accuracy’])
  4. 通过以上几点基本可以解决全黑等问题,得到初步分割结果。
  5. 还得仔细理解源码,不能拿来就用,理解很重要,理解后就可以根据自己的数据来修改网络参数,才能得到好的分割结果。

你可能感兴趣的:(深度学习)