概述
提供的数据由脚本处理data.py。该脚本只是加载图像并将它们保存到 NumPy 二进制格式文件.npy中,以便以后更快地加载。
预处理
除了将图像调整为 96 x 96 之外,这些图像没有以任何方式进行预处理。由于图像非常嘈杂,我希望一些深思熟虑的预处理可以产生更好的模型性能。
输出图像(蒙版)被缩放到 [0, 1] 间隔。
模型
提供的模型基本上是一个卷积自动编码器,但有一个扭曲 - 它跳过了从编码器层到同一“级别”的解码器层的连接。
这个深度神经网络是用 Keras 函数式 API 实现的,这使得用不同有趣的架构进行实验变得非常容易。
网络的输出是 96 x 96,表示应该学习的掩码。Sigmoid 激活函数确保掩码像素在 [0, 1] 范围内。
训练
该模型训练了 20 个时期,每个时期在 Titan X 上花费约 30 秒。模型的内存占用约为 800MB。
在 20 个 epoch 之后,计算出的 Dice 系数为 ~0.68,这在排行榜上产生了 ~0.57 的分数,所以很明显这个模型过拟合了(交叉验证 pull requests 有人吗?;))。
训练的损失函数基本上只是Dice 系数的负数(在比赛中 用作评估指标),并且这是使用 Keras 后端作为自定义损失函数实现的 - 检查dice_coef()并dice_coef_loss()了解train.py更多详细信息。另外,为了使损失函数平滑,smooth = 1添加了一个因子factor。
权重由 Adam 优化器以 1e-5 的学习率更新。在训练过程中,模型的权重以 HDF5 格式保存。
如何使用
依赖关系
本教程依赖于以下库:
* scikit-image
* Tensorflow
* Keras >= 2.0
此外,此代码应与 Python 版本 2.7-3.5 兼容。
准备数据
为了提取原始图像并将它们保存为.npy文件,您应该首先准备其结构。确保rawdir 位于该项目的根目录中。另外,目录树raw必须是这样的:
-raw
|
---- train
| |
| ---- 1_1.tif
| |
| ---- …
|
---- test
|
---- 1.tif
|
---- …
现在运行python data.py。
运行此脚本将创建训练和测试图像并将它们保存到.npy文件。
定义模型
签入get_unet()以train.py修改模型、优化器和损失函数。
训练模型并为测试图像生成掩码
运行python train.py以训练模型。
检查train_predict()以修改迭代次数(epochs)、批量大小等。
此脚本完成后, 应生成imgs_mask_test.npy相应图像的掩码。imgs_test.npy我建议您检查这些掩码以进一步了解模型的性能。
生成提交
运行为生成的掩码python submission.py生成提交文件。submission.csv
查看功能submission()和run_length_enc()
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于python实现的使用Keras 库构建用于超声图像神经分割的深度神经网络程序源码.zip (7个子文件)
基于python实现的使用Keras 库构建用于超声图像神经分割的深度神经网络程序源码
ultrasound-nerve-segmentation
submission.py 2KB
img
u-net-architecture.png 40KB
data.py 2KB
.gitignore 24B
train.py 5KB
README.md 3KB
raw
README.md 44B
共 7 条
- 1
资源评论
TD程序员
- 粉丝: 2415
- 资源: 437
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功