为了加快开发速度,使用了开源框架,开源框架有不少,这里仅选择其中一个作介绍。Keraspython
首先,也是第一步,须要作的是预处理,该步骤的目标是把图像整理成可以直接塞入网络的图片的样子。git
什么样子的图片格式才是一个网络须要的呢?github
好比,你未通过处理的图像是下面的图像的样子(Input,X_train,X)。网络
而后你想要获得的输出图片的样子是下面的样子(Output,Y_train,Y):框架
那么,你要作的工做来了。手动的把上面的未通过处理的图片的整理成下面图片的样子(或者借助其余工具)。工具
而你须要注意的是,这两张图片的大小是同样的(保证像素点的个数一致),由于咱们要获得的神经网络输出图片(也叫作掩膜图)须要和神经网络的输入图片的像素点一一对应。学习
神经网络会根据某种对应法则,将上面的图片\(X\),映射到下面的图片\(Y\)中,即\(Y = f(x)\) ,这个映射法则\(f\)咱们没法用一个公式准确的表达,可是确实是在神经网络内部实现了这种一一映射。若是真的要表达的话,那么只能用一个网络结构来讲明这种映射关系了。测试
若是下面的图片的每一个像素点都是一个几率值,那么这个图片就是一个由几率组成的一个矩阵,也叫作几率矩阵。spa
接下来,须要完成的就是须要把这个图片整理成可以输入网络的形式(统一格式):3d
关于这个步骤的处理过程能够先Copy 预处理的代码,该步骤用到了Keras的一个类库:ImageDataGenerator,从这个文档中,能够更加详细的了解到如何使用现有的方法解决你的问题了。官方解释的很到位,更重要的是还有实例。
预处理作完了,那么就开始训练吧。
关于shape,是咱们必需要掌握的一个常识性问题,看下图:
鉴于智商问题,看图理解,不作解释。
如何制做网络模型呢?在图像分割上,有一个目前效果较好的模型叫作U-net,能够先用他们的模型直接训练,而后在前人的基础上作修改,以此下降学习成本,让成就感更高,从而促进学习兴趣(有点扯)。
模型框架作(Copy)好了,怎么来使用这个模型来训练本身的图片呢?Keras给出了一个方法叫作fit_generator,它能够激活你的模型,开始你的训练,里面的参数须要根据须要本身设置了,每一个参数都是什么意思能够参考官方文档提供的帮助。这里也是有一个能够用来参考的实例代码可使用。
激动人心的时刻就是当你运行了python train.py
以后,接下来,就是漫长的等待它训练完成,而后对结果进行测试。
如何使用已经创建的网络模型进行测试?过程十分简单,使用load_model加载已经保存的模型,而后使用predict方法进行预测。使用方式及参数说明参考官方文档load_model和predict。这里也能够参考实际应用中使用的代码。