因为Kaggle有该比赛,而且code写的很简单易懂,于是乎拿来玩一下。
https://www.kaggle.com/keegil/keras-u-net-starter-lb-0-277?scriptVersionId=2164855/notebook
与U-Net相关的开源项目与code很多,各种框架的版本都有:
https://github.com/jakeret/tf_unet

文章目录

  • 1 训练集的构造
  • 2 预测
  • 3 结果提交

1 训练集的构造

因为使用的是比赛数据,赛方已经很好地帮我们做好了前期数据整理的工作,所以目前来说可能很方便的制作训练集、测试集然后跑模型。这里下载得到的数据为提供图像中单个物体的掩膜。其中,笔者认为最麻烦的就是标注集的构造(掩膜)。
原图:


掩膜图:mask

从掩膜列表可以到,比赛中是把每个细胞的掩膜都分开来了。来看一下这个掩膜标注内容如何:

mask = np.zeros((IMG_HEIGHT, IMG_WIDTH, 1), dtype=np.bool)
Y_train = np.zeros((len(train_ids), IMG_HEIGHT, IMG_WIDTH, 1), dtype=np.bool)
for mask_file in next(os.walk(path + '/masks/'))[2]:mask_ = imread(path + '/masks/' + mask_file)mask_ = np.expand_dims(resize(mask_, (IMG_HEIGHT, IMG_WIDTH), mode='constant', preserve_range=True), axis=-1)mask = np.maximum(mask, mask_)
Y_train[n] = mask

读入(imread)掩膜图,图像的格式为:(m,n);

resize,掩膜的尺寸缩放在128*128

np.expand_dims步骤改变图像维度为(m,n,1);

np.maximum,当出现很多掩膜的时候,有些掩膜会重叠,那么就需要留下共有的部分;

Y_train的数据格式已经定义为bool型,那么最后存储得到的数据即为(x,m,n,1),且数据格式为True/False:

array([[[[False],[False],[False],..., [False],[False],[False]],[[False],[False],[False],..., [False],
...

其他X_train训练数据集,就会被存储成:(x,m,n,3),同时需要resize成128*128

2 预测

预测就可以用model.predict(X_test, verbose=1),即可以得到结果。那么得到的结果是(128,128,1)的,那么就是一个图层,也就是说U-Net出来的结果是单标签的,如果是多标签那么可以多套模型,可参考:Kaggle-卫星图像分割与识别。
预测出来的结果为单图层,可以重新回到原尺寸:

resize(np.squeeze(preds_test[i]),(sizes_test[i][0], sizes_test[i][1]), mode='constant', preserve_range=True)

3 结果提交

图像分割在提交结果的时候,主要就是掩膜了。那么掩膜的提交需要编码压缩:
Run-Length Encoding(RLE)行程长度的原理是将一扫描行中的颜色值相同的相邻像素用一个计数值和那些像素的颜色值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。对于拥有大面积,相同颜色区域的图像,用RLE压缩方法非常有效。由RLE原理派生出许多具体行程压缩方法。
那么图像压缩出来的结果即为:

'137795 3 138292 25 138802 29 139312 32 139823 34 140334 36 140845 38 141356 40 141867 42 142371 51 142881 54 143391 57 143902 59 144414 59 144925 61 145436 62 145948 63 146459 65 146970 66 147482 66 147994 66 148506 66 149017 67 149529 67 150041 67 150553 67 151065 67 151577 66 152089 66 152602 65 153114 64 153626 64 154138 63 154650 63 155162 63 155674 63 156187 62 156699 62 157212 60 157724 60 158236 60 158749 59 159261 59 159773 58 160285 58 160798 56 161310 56 161823 55 162335 54 162848 53 163361 52 163874 50 164387 49 164899 48 165412 47 165925 45 166439 42 166953 40 167466 38 167980 35 168495 31 169009 28 169522 26 170036 23 170549 21 171062 18 171577 12 172093 4'

那么下图就是出来的结果了,第一张为原图,第二张为标注的掩膜图,第三张为预测图。

全卷积神经网路【U-net项目实战】U-Net网络练习题: Kaggle - 2018 Data Science Bowl相关推荐

  1. 全卷积神经网路【U-net项目实战】U-Net源码上实现自己数据集的分割任务

    文章目录 环境: 数据集准备: 主要代码: 接下来是训练,此处将训练和测试分开在两个.py文件中,好调用! 接下来就是愉快的测试了:main_test.py 测试结果部分展示:(裂缝检测) 问题 : ...

  2. 全卷积神经网路【U-net项目实战】语义分割之U-Net详解

    文章目录 1.简介 2.U-net典型应用 3. U-net详解 4.参考文献 1.简介 语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支.与分类任务不同,语义分 ...

  3. 全卷积神经网路【U-net项目实战】LUNA 2016 数据集详解

    文章目录 1.LUNA 2016 数据集详解 2.mdh数据格式详解 3.python读取mdh的方法 4.annotations.csv坐标转换 5.LUNA16数据集肺结节显示 1.LUNA 20 ...

  4. 全卷积神经网路【U-net项目实战】Unet++

    文章目录 前言 概述 细节部分 1.一张结构图 & 解释: 2.loss:binary cross-entropy和dice coefficient两部分的组合.以下的loss应用到每一个不同 ...

  5. 全卷积神经网路【U-net项目实战】论文中U-Net网络实现

    文章目录 设计神经网络的一般步骤 Unet网络设计的步骤 Unet网络最重要的特征 示例代码 设计神经网络的一般步骤 设计框架 设计骨干网络 Unet网络设计的步骤 设计Unet网络工厂模式 设计编解 ...

  6. 全卷积神经网路【U-net项目实战】ISBI 挑战数据集图像分割-keras实现

    文章目录 1.数据准备 2.程序准备 3.运行网络 4.测试结果 5.参考 1.数据准备 原始数据:首先准备数据,参考数据来自于 ISBI 挑战的数据集.数据可以在(https://github.co ...

  7. 全卷积神经网路【U-net项目实战】肺结节分割案例分析:DSB3Tutorial

    文章目录 本文要分析的代码作者是jonrmulholland 数据集: 重要文件介绍: 第一步:运行LUNA_mask_extraction.py,生产images_#.npy,masks_#.npy ...

  8. 全卷积神经网路【U-net项目实战】U-net网络结构为什么在医学影像分割上表现不错

    文章目录 前言 个人的理解: 1.医学图像边界模糊.梯度复杂,需要较多的高分辨率信息,深度学习可以做到这一点,比如上采样下采样以及skip connection和concatenation 2.待分割 ...

  9. kaggle 2018 data science bowl____一次失败的 kaggle 项目参与经历及反思总结

    ____tz_zs 前段时间参加了 kaggle 2018 data science bowl ,初生牛犊不怕虎,于是我撸起袖子就开始干了. 尽管,没能得到好的结果,参与过程中的收获和提高,也是很值得 ...

最新文章

  1. 简单的石头剪刀布(机器胜率略高)
  2. java floatmath_《Java1.doc
  3. 正斜杠( / )和反斜杠( \ )的区别
  4. mysql正则表达式配置_G. MySQL正则表达式
  5. 手机电池的更换标准/指标 最近小米手机换电池那些事
  6. 苹果Mac好用的SSH连接客户端工具:​​​​​​​​​​​​Termius
  7. laravel下载php7.2,【laravel7.x中文文档】安装
  8. 斯特林数 java实现_关于斯特林数
  9. TPP:你的数据你做主 TPP将撤销政府的数据主权
  10. 大型网站架构技术一览(李智慧著.大型网站技术架构.附录A)
  11. IText构造PDF文件
  12. 高通平台msm8916修改开机logo 高通平台修改LK(bootloader)开机logo
  13. 交流异步电机的Modelica模型
  14. Python Qt6快速入门-嵌入PyQtGraph图表
  15. python爬虫爬取网易云热歌榜top200
  16. C:exit(0),_exit(0),exit(1),exit(-1)作用与区别
  17. windows下安装weblogic11g集群 BEA-149509报错
  18. 制作唐诗网页代码_唐诗宋词网页制作素材
  19. 一个简单的集成电路运算放大器的计算和multisim的仿真
  20. pd.concat用法

热门文章

  1. python opencv 检测特定颜色
  2. PIL、Pillow安装使用方法
  3. cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp” 和 cl: 命令行 error D8021 :无效的数值参数“/Wno-unused-function”
  4. layui table 列覆盖
  5. gentoo 安装opencv
  6. ios视频硬解异常总结,12911总结
  7. VMware vSphere 7 服务器ESXi虚拟化HA高可用解决方案
  8. CentOS7升级JDK
  9. 一、MySql优化的基础介绍
  10. java递归整数逆序,将一个整数逆序输出,分别给出递归和非递归算法 | 学步园...