首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unet语义分割及其迁移学习的实现

前言:之前做过用Caffe对Ciffar10数据集和Minist数据集分类的任务,采用的是Lenet等传统CNN网络。虽然Ciffar的部署确实很麻烦,但使用Ciffar更接近底层代码,也初步了解神经网络的基本原理。目前使用了Keras(事实上也并非主流),代码实在是太简洁了,掩盖了相当多的底层原理,这倒不是重点。用他的原因还是因为用caffe部署Unet让我有些力不从心,或许日后还会再尝试,目前来看还是解决当前任务为重。

任务:使用Tensorflow+Keras 搭建Unet网络实现对肾小球基膜的逐像素分割。

步骤:

1 数据处理

首先是对获取的原始数据进行标定。工具大多采用 labelme,师兄使用的是PS把原图进行二值化标定。

第一步先进行数据增强,示例转换:像素颜色抖动,旋转,剪切,随机裁剪,水平翻转,拉伸,镜头校正。

第二步进行数据格式和大小的转换。CNN中由于只有下采样,因此预测使用的图片必须和数据集图片的大小一致。Unet增加上采样因此输出的特征图和原图一致,所以不必规定预测图片的大小。话说回来,数据集中图片的大小还是要求统一,并且在本方法中要把标签和数据连接成高维向量。

2 网络搭建

显而易见,Unet在左边增加了上采样,并且还会把原来的输出合并到右侧。最后一层也变成了卷积层,从而可以对每个像素进行分类。

具体搭建网络的函数详见 Keras中文文档(https://keras.io/zh/)。

在keras中看不懂的参数就去翻TF文档,还看不懂就去翻Numpy文档。

3 训练

训练也是在Unet.py中一同进行。

4 预测

见代码 predict.py

5 注意

7

-------------------------------------------------------------------------------

上面的话写的时间比较早,存在草稿里面没发。

下面讲的是之后做的工作。

1 首先是区分 迁移学习 和 fine-tune

迁移学习,故名思意,就是将已经训练完成模型的一部分参数迁移到新的模型中来。我们都知道,训练一个复杂的神经网络是非常费时费力的过程。往往我们需要收集大量已经标注好的训练集,使用昂贵的 GPU 提供算力,再花费不少的时间,才能训练出一个表现不错的模型。如果两个任务如果存在一定的相关性,比如已经训练好的一个非常优秀的猫狗识别模型,现在需要完成猫兔识别。我们就无需从头开始训练新模型,可以将原模型中的一些权值和中间层迁移到新模型中,这样就大大降低了我们需要的算力,节省了训练时间。

迁移学习是机器学习中的非常重要,且值得深入研究的领域。反观人类本身,我们其实就拥有强大的迁移学习能力。经常听到的「举一反三」,也就是对迁移学习的最好印证。

微调:在ConvNet之上替换和重新训练分类器,并通过反向传播微调预训练网络的权重。

2 如何选择

small or large 指的是自己的数据集大小,similar or differ 指的是自己的数据集和别人数据集的相似程度。

相似和小数据集:通过不微调小数据集上的权重来避免过度拟合,并使用ConvNet最高级别提取的特征来利用数据集相似度。

不同的和小的数据集:通过不微调小数据集上的权重来避免过度拟合,并使用ConvNet的较低级别的提取特征,这些特征是更普遍的。

类似的大型数据集:对于大型数据集,我们可以对训练数据进行过度训练的机会更少,从而对权重进行微调。

不同的和大的数据集:对于大数据集,我们可以再次对权重进行微调,同时减少过度拟合的机会。

3

步骤

1) 冻结中间层,只改造最后的输出层 当然,为了得到更好的结果。我们可能会在调整输出层之后,根据实际情况将原模型中的一些层冻结,通过训练让一部分隐含层调整权值。这是一个折中的方案,既保证了一定的准确度,又减少了从 0 开始训练模型的时间。

2 )模型构建 训练和评估

冻结层:https://keras-cn.readthedocs.io/en/latest/for_beginners/FAQ/#intermediate_layer

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180503G0TOHC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券