使用U-Net进行图像分割

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

预处理

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

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

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

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

1604435-20190531213208295-2064395247.png

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

1604435-20190531213214924-556003060.png

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

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

神经网络会根据某种对应法则,将上面的图片\(X\),映射到下面的图片\(Y\)中,即\(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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
U-Net是一种经典的图像分割网络结构,由Olaf Ronneberger、Philipp Fischer和Thomas Brox于2015年提出。该网络结构融合了编码器和解码器,能够有效地对图像进行分割。 应用U-Net完成图像分割的过程通常包括以下几个步骤: 1. 数据准备:准备用于训练和测试的图像数据集,并进行预处理。常见的预处理步骤包括图像缩放、灰度化、归一化等。 2. 网络构建:构建U-Net网络结构。该网络由编码器和解码器组成,编码器负责提取图像特征,解码器负责将特征映射回原始图像尺寸。网络通常采用卷积、池化和上采样等操作。 3. 训练网络:使用准备好的训练数据集进行网络的训练。训练过程中,根据预测结果和真实标签之间的差异,使用损失函数来度量网络的性能,并通过反向传播算法来更新网络参数。 4. 验证和调优:使用验证集对网络进行评估和调优,以优化网络的性能。可以根据网络的准确率、召回率、F1分数等指标来评估网络的效果。 5. 测试和应用:使用测试数据集对已训练好的网络进行测试,得到图像分割的结果。可以将分割结果可视化,或者与真实标签进行比较,以评估网络的泛化能力和准确性。 通过应用U-Net完成图像分割,可以应用于许多领域,如医学影像分割、自动驾驶中的道路分割、图像语义分割等。其优点在于能够有效地处理不同尺寸的图像,且相对较小的数据集也可获得较好的分割结果。尽管U-Net存在一些挑战,如网络深度、训练样本不平衡等问题,但它仍然是一种常用且有效的图像分割方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值