• 使用U-Net进行图像分割


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

    视频讲解:www.mooc.ai/course/549/learn?lessonid=2859

    预处理

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

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

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

    比如,你未经过处理的图像是下面的图像的样子(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。这里也可以参考实际应用中使用的代码。

  • 相关阅读:
    光学字符识别OCR-6 光学识别
    光学字符识别OCR-5 文本切割
    光学字符识别OCR-4
    光学字符识别OCR-3
    leetcode 7 Reverse Integer(水题)
    leetcode 1 Two Sum(查找)
    DFS的简单应用(zoj2110,poj1562)
    Havel-Hakimi定理(握手定理)
    zoj1360/poj1328 Radar Installation(贪心)
    饶毅:做自己尊重的人
  • 原文地址:https://www.cnblogs.com/zhyantao/p/10957607.html
Copyright © 2020-2023  润新知