三维医学图像深度学习,数据增强方法(monai):RandHistogramShiftD, Flipd, Rotate90d
#coding:utf-8
import torch
from monai.transforms import Compose, RandHistogramShiftD, Flipd, Rotate90d
import matplotlib.pyplot as plt
import SimpleITK as sitk
# start a chain of transforms
KEYS = ("image", "label")
class aug():
def __init__(self):
self.random_rotated = Compose([
Rotate90d(KEYS, k=1, spatial_axes=(2,3),allow_missing_keys=True),
Flipd(KEYS, spatial_axis=(1,2,3),allow_missing_keys=True),
RandHistogramShiftD(KEYS, prob=1, num_control_points=30, allow_missing_keys=True),
# ToTensorD(KEYS),
])
def forward(self,x):
x = self.random_rotated(x)
return x # start a dataset
def save(before_x, after_x, new_path,new_name=""):
after_x = after_x[0, 0,...]
if new_name=="image":
ct = sitk.ReadImage(before_x, sitk.sitkInt16)
else:
ct = sitk.ReadImage(before_x, sitk.sitkUInt8)
predict_seg = sitk.GetImageFromArray(after_x)
predict_seg.SetDirection(ct.GetDirection())
predict_seg.SetOrigin(ct.GetOrigin())
predict_seg.SetSpacing(ct.GetSpacing()) sitk.WriteImage(predict_seg,new_path) if __name__ == "__main__":
image = r"D:\MyData\3Dircadb1_fusion_date\image_2.nii" # 原图
label = r"D:\MyData\3Dircadb1_fusion_date\liver_2.nii" #标签
new_path = r"D:\MyData\3Dircadb1_fusion_date\image_0.nii" #增强后的原图
new_path1 = r"D:\MyData\3Dircadb1_fusion_date\liver_1.nii" #增强后的标签 ct = sitk.ReadImage(image)
ct1 = sitk.GetArrayFromImage(ct)
seg = sitk.ReadImage(label)
seg1 = sitk.GetArrayFromImage(seg) ct = ct1[None, None,...]
seg = seg1[None, None,...] ct = torch.from_numpy(ct)
seg = torch.from_numpy(seg)
m = {"image": ct,
"label":seg}
augs = aug()
print(m["image"].shape)
data_dict= augs.forward(m) save(image, data_dict["image"], new_path, "image")
save(label, data_dict["label"], new_path1, "label") print(data_dict["image"].shape)
plt.subplots(1, 3)
plt.subplot(1, 3, 1);
plt.imshow(ct1[66,...])
plt.subplot(1, 3, 2);
plt.imshow(data_dict["image"][0,0, 66,...])
plt.subplot(1, 3, 3);
plt.imshow(data_dict["label"][0,0, 66,...])
plt.show()
三维医学图像深度学习,数据增强方法(monai):RandHistogramShiftD, Flipd, Rotate90d的更多相关文章
- YoloV4当中的Mosaic数据增强方法(附代码详细讲解)码农的后花园
上一期中讲解了图像分类和目标检测中的数据增强的区别和联系,这期讲解数据增强的进阶版- yolov4中的Mosaic数据增强方法以及CutMix. 前言 Yolov4的mosaic数据增强参考了CutM ...
- 深度学习数据特征提取:ICCV2019论文解析
深度学习数据特征提取:ICCV2019论文解析 Goal-Driven Sequential Data Abstraction 论文链接: http://openaccess.thecvf.com/c ...
- GridMask:一种数据增强方法
GridMask Data Augmentation, ARXIV 2020 代码地址:https://github.com/akuxcw/GridMask 这篇论文提出了一种简单的数据增强方法,在图 ...
- Generalizing from a Few Examples: A Survey on Few-Shot Learning 小样本学习最新综述 | 三大数据增强方法
目录 原文链接:小样本学习与智能前沿 01 Transforming Samples from Dtrain 02 Transforming Samples from a Weakly Labeled ...
- go微服务框架go-micro深度学习(四) rpc方法调用过程详解
上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取server的地 ...
- 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks
本文主要参考Ensemble Methods for Deep Learning Neural Networks一文. 1. 前言 神经网络具有很高的方差,不易复现出结果,而且模型的结果对初始化参数异 ...
- 深度学习Momentum(动量方法)
转自:http://blog.csdn.net/bvl10101111/article/details/72615621 先上结论: 1.动量方法主要是为了解决Hessian矩阵病态条件问题(直观上讲 ...
- 深度学习----Xavier初始化方法
“Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...
- 深度学习——Xavier初始化方法
“Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...
- TensorFlow之DNN(三):神经网络的正则化方法(Dropout、L2正则化、早停和数据增强)
这一篇博客整理用TensorFlow实现神经网络正则化的内容. 深层神经网络往往具有数十万乃至数百万的参数,可以进行非常复杂的特征变换,具有强大的学习能力,因此容易在训练集上过拟合.缓解神经网络的过拟 ...
随机推荐
- 写写Redis十大类型zset的常用命令
其实这些命令官方上都有,而且可读性很强,还有汉化组翻译的http://redis.cn/commands.html,不过光是练习还是容易忘,写一写博客记录一下 从zset类型开始写||zset类型适合 ...
- 假期小结2hadoop环境配置
记录一下hadoop配置 安装Java Development Kit(JDK):Hadoop是用Java编写的,所以首先需要安装JDK.可以从Oracle下载JDK,并按照安装说明进行安装. 下载 ...
- java实现二维码登录功能
本文采用Springboot工程进行开发,使用Google的zxing生成二维码,直接放代码: <?xml version="1.0" encoding="UTF- ...
- 安全可信,Solon v2.8.6 发布
Solon 框架! Java "纯血国产"应用开发框架.开放原子开源基金会,孵化项目.从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态. 追求: 更快.更小.更 ...
- Jmeter参数化5-JSON提取器
后置处理器[JSON提取器] ,一般放于请求接口下面,用于获取接口返回数据里面的json参数值 1.以下json为例,接口返回的json结果有多组数据.我们要取出purOrderNo值 2.在jmet ...
- 【DataBase】MySQL 13 分组查询
视频参考自:P59 - P68 https://www.bilibili.com/video/BV1xW411u7ax 分组查询 GROUP BY -- group by 子句 -- 要注意!grou ...
- 关于Isaac Gym的两个版本比较:IsaacGymEnvs/omni.isaac.gym
原文地址: https://zhuanlan.zhihu.com/p/590468555 重点: IsaacGymEnvs (IGE)和 omni.isaac.gym (OIG)是两个东西. 原文内容 ...
- 【转载】 ImportError: libGL.so.1: cannot open shared object file: No such file or directory——docker容器内问题报错
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_35516745/article/de ...
- java多线程之-CAS无锁-unsafe理解
1.背景 这一节我们来学习一下unsafe对象 2.案例 1.自定义一个获取unsafe对象的类 package com.ldp.demo07Unfase; import sun.misc.Unsaf ...
- 海豚调度调优 | 正在运行的工作流(DAG)如何重新拉起失败的任务(Task)
本系列文章是DolphinScheduler由浅入深的教程,涵盖搭建.二开迭代.核心原理解读.运维和管理等一系列内容.适用于想对 DolphinScheduler了解或想要加深理解的读者. **祝开 ...