当前位置:   article > 正文

使用U-Net进行图像分割

轻量型u-net的金相图像晶粒分割方法

为了加快开发速度,使用了开源框架,开源框架有很多,这里仅选择其中一个做介绍 -- Keras

预处理

首先,也是第一步,需要做的是预处理,该步骤的目标是把图像整理成能够直接塞入网络的图片的样子。

什么样子的图片格式才是一个网络需要的呢?

  • 一个是未经过处理的原始图片;
  • 一个是经过处理后,你想要得到的样子的图片。

比如,你未经过处理的图像是下面的图像的样子(Input,X_train,X)。

1604435-20190531213208295-2064395247.png

然后你想要得到的输出图片的样子是下面的样子(Output,Y_train,Y):

1604435-20190531213214924-556003060.png

那么,你要做的工作来了。手动的把上面的未经过处理的图片的整理成下面图片的样子(或者借助其他工具)。

而你需要注意的是,这两张图片的大小是一样的(保证像素点的个数一致),因为我们要得到的神经网络输出图片(也叫做掩膜图)需要和神经网络的输入图片的像素点一一对应。

神经网络会根据某种对应法则,将上面的图片XX,映射到下面的图片YY中,即Y=f(x)Y=f(x) ,这个映射法则f我们无法用一个公式准确的表达,但是确实是在神经网络内部实现了这种一一映射。如果真的要表达的话,那么只能用一个网络结构来说明这种映射关系了。

如果下面的图片的每个像素点都是一个概率值,那么这个图片就是一个由概率组成的一个矩阵,也叫做概率矩阵。

接下来,需要完成的就是需要把这个图片整理成能够输入网络的形式(统一格式):

  • 统一颜色格式(RGB还是GRAYSCALE)
  • 统一图片大小(size)
  • 格式化图片名称(file_rename)
  • 设置batch_size以及其他参数(非必须)

关于这个步骤的处理过程可以先Copy预处理的代码,该步骤用到了Keras的一个类库:ImageDataGenerator,从这个文档中,可以更加详细的了解到如何使用现有的方法解决你的问题了。官方解释的很到位,更重要的是还有实例。

开始训练

预处理做完了,那么就开始训练吧。

  • 了解一下shape
  • 制作一个网络模型
  • 用你的模型进行训练

关于shape,是我们必须要掌握的一个常识性问题,看下图:

1604435-20190531213226584-696190494.jpg

看图理解,不做解释。

如何制作网络模型呢?在图像分割上,有一个目前效果较好的模型叫做U-net,可以先用他们的模型直接训练,然后在前人的基础上做修改,以此降低学习成本,让成就感更高,从而促进学习兴趣(有点扯)。

模型框架做(Copy)好了,怎么来使用这个模型来训练自己的图片呢?Keras给出了一个方法叫做fit_generator,它可以激活你的模型,开始你的训练,里面的参数需要根据需要自己设置了,每个参数都是什么意思可以参考官方提供的帮助。这里也是有一个可以用来参考的实例代码可以使用。

运行测试

激动人心的时刻就是当你运行了python train.py之后,接下来,就是漫长的等待它训练完成,然后对结果进行测试。

如何使用已经建立的网络模型进行测试?过程十分简单,使用load_model加载已经保存的模型,然后使用predict方法进行预测。使用方式及参数说明参考官方文档load_modelpredict。这里也可以参考实际应用中使用的代码。

转载于:https://www.cnblogs.com/zhyantao/p/10957607.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/87649
推荐阅读
相关标签
  

闽ICP备14008679号