前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tensorflow入门教程(三十)——如何准备图像分割数据

Tensorflow入门教程(三十)——如何准备图像分割数据

作者头像
医学处理分析专家
发布2020-06-29 15:33:52
8500
发布2020-06-29 15:33:52
举报

前面分享的文章中大都是以深度分割模型为主,有很多朋友都在问我关于训练数据是如何准备,之前我都是直接把每个案例的训练数据分享给大家,今天我将分享一个在图像分割任务中如何准备训练数据的例子给大家,希望可以给大家带来一些启发,也欢迎各位朋友提出好的意见一起学习交流。

一、原始数据集下载

使用的数据是在LiTS---Liver-Tumor-Segmentation-Challenge上的数据,大家可以在官网上下载,因为数据是放在国外的服务器上,所以需要翻墙才可以下载,如果有下载困难的话,我把相关数据分享到百度云盘上了https://pan.baidu.com/s/1jgFddKBaAqNEpdup5dFMZA 提取码:naii 。

二、分析数据集

下载好的训练数据一共有130例,首先对这些数据进行大小分析,所有数据都是张数不定的512x512大小的图像。我们要在VNet上进行分割训练,受限于GPU显存大小,需要对512x512xn(n代表张数)的数据裁切成多个128x128x64大小的图像。在x和y方向上按固定方式裁切,但在z方向上由于图像张数不固定,所以需要针对几种情况进行裁切处理。还有一步需要处理——确定肝区域范围。数据图像中有一些区域不是肝区域,这些区域不是我们感兴趣的,通过分析Mask图像来确定有肝区域的n,确定其开始值和最后值,然后再n的开始值和最后值上分别向上和向下扩充32个像素。

三、数据集裁切处理方法

512x512xn(n代表张数)的数据,在x和y方向上按步长96裁切5x5次,在z方向上要裁切10次,所以一个数据集就会裁切出5x5x10=250个(128x128x64)图像出来。在z方向上的步长是通过公式 stridez = (imagez - blockz) // numberz计算出来的,其中imagez 是512,blockz是64,numberz=10,所以stridez 会有小于0,等于0,大于等于1这几种情况。当小于0时,直接丢弃原图像不裁切;当大于等于1时,在z方向上按步长stridez 裁切10次;当等于0时,如果imagez 等于blockz,在z方向上全部保留不裁切,其他情况下,在z方向上只裁切2次,n从0到64和n从n-64到n。

四、代码实现

我已经实现了上面整个过程,关键函数是gen_image_mask(srcimg, seg_liverimage, i, shape=(64, 128, 128), numberxy=5, numberz=10),其中srcimage是原始图像,seg_liverimage是原始分割图像,i是第几个case,shape是要裁切的图像大小,numberxy是在x和y方向上裁切的次数,numberz是在z方向上裁切的次数。代码写的比较粗糙,希望编程高手可以给予指点。

之前有征求过一起打比赛的信息,我们一起打比赛的小伙伴们已经在github上建立了比赛的项目,如果有想一起打比赛的朋友,可以给我留言,我会根据实际情况拉入战队一起战斗。

感兴趣的朋友可以在github上看到详细的过程,地址:https://github.com/junqiangchen/LiTS---Liver-Tumor-Segmentation-Challenge,如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果碰到任何问题,随时留言,我会尽量去回答的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 最新医学影像技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档