如何使用开源框架进行图像分割

开源框架有很多,这里仅选择其中一个做介绍。Keras

预处理

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

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

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

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

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

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

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

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

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

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

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

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

开始训练

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

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

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

鉴于智商问题,看图理解,不做解释。

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

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

运行测试

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

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

猜你喜欢

转载自www.cnblogs.com/toooney/p/10957607.html