当前位置: 首页 > news >正文

使用MONAI轻松加载医学公开数据集,包括医学分割十项全能挑战数据集和MedMNIST分类数据集

在深度学习中,使用公开数据集具有以下优点:

  • 提供了一个标准化的基准来比较不同算法或模型的性能,因为这些公共数据集被广泛使用,许多研究人员都使用它们来评估他们的方法。
  • 可以节省大量的时间和金钱,因为这些数据集已经被标注,从而避免了手动标注数据所需的努力和成本。
  • 允许研究人员在自己的算法或模型上进行测试,而无需担心数据的版权问题。
  • 跑开源代码时,可以使用公开数据快速测试。测试通后再使用的自己的数据。

为了快速开始使用公开的数据集(如 MedNIST 和 DecathlonDataset),MONAI 提供了几个开箱即用的函数(例如MedNISTDatasetDecathlonDatasetTciaDataset),其中包括数据下载,解压以及创建dataset(继承了MONAI 的 CacheDataset,训练的时候数据加载的嘎嘎快)。 预定义数据集的常用工作流程:

本次以DecathlonDatasetMedNISTDataset为例,说明如何在MONAI中使用这些数据,并简要介绍这些数据集

DecathlonDataset

医学分割十项全能挑战数据集(DecathlonDataset)是一个用于医学图像分割任务的数据集(very hot!)。该数据集包含来自不同医学影像模态(如MRI、CT等)的图像数据以及标签。数据可以从官网进行下载

MONAI的DecathlonDataset会自动该数据集,并且分好了训练、验证和测试集。它还基于monai.data.CacheDataset类来加速训练过程。

先来看一下代码

train_ds = DecathlonDataset(root_dir=root_dir,task="Task01_BrainTumour",section="training",cache_rate=1.0,  # you may need a few Gb of RAM... Set to 0 otherwisenum_workers=4,download=True,  # Set download to True if the dataset hasnt been downloaded yetseed=0,transform=train_transforms,
)
train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, drop_last=True, persistent_workers=True
)

参数解析:

  • root_dir:用户用于缓存和加载 MSD 数据集的本地目录。
  • task:要下载和执行的任务:一共10个数据集,选择你要用的下载 (“Task01_BrainTumour”、“Task02_Heart”、“Task03_Liver”、“Task04_Hippocampus”、“Task05_Prostate”、“Task06_Lung”、“Task07_Pancreas”、“Task08_HepaticVessel”、“Task09_Spleen”、“Task10_Colon”)。
  • section:选择下载训练集还是其他,可以是:training、validation 或 test。
  • transform:MONAI 的常规 transform
  • download:需要下载设置为True,下载好后再运行设置为False
  • seed:随机种子,用于随机拆分训练、验证和测试数据集,默认为 0。
  • val_frac:验证数据分数百分比,默认为 0.2。Decathlon 数据仅包含带标签的训练部分和不带标签的测试部分,因此从训练部分随机选择一部分作为验证部分。
  • cache_rate:总缓存数据的百分比,默认为 1.0(全部缓存)。将取 (cache_num,data_length x cache_rate,data_length) 中的最小值。
  • num_workers:要使用的工作线程数。如果为 0,则使用单个线程。默认为 0。

只贴上了关键代码,文末取所有代码,包括import类和可视化数据代码.至于下载速度,我的v-p-n很快,不挂V-P-N速度未知。

MedNISTDataset

受 Medical Segmentation Decathlon(医学分割十项全能)的启发,上海交通大学的研究人员创建了医疗图像数据集 MedMNIST,共包含 10 个预处理开放医疗图像数据集(其数据来自多个不同的数据源,并经过预处理)。和 MNIST 数据集一样,MedMNIST 数据集在轻量级 28 × 28 图像上执行分类任务,所含任务覆盖主要的医疗图像模态和多样化的数据规模,作为 AutoML 在医疗图像分类领域的基准。

代码如下:

train_ds = MedNISTDataset(root_dir=root_dir, transform=transform, section="training", download=True)
# the dataset can work seamlessly with the pytorch native dataset loader,
# but using monai.data.DataLoader has additional benefits of mutli-process
# random seeds handling, and the customized collate functions
train_loader = DataLoader(train_ds, batch_size=300, shuffle=True, num_workers=10)

参数同DecathlonDataset基本一致,不再解析。不了解的可以查看源码

最后附上整个代码

import os
from monai.data import DataLoader, Dataset
from monai import transforms
from monai.apps import MedNISTDataset, DecathlonDataset
import matplotlib.pyplot as plt# create a directory and load decathlon dataset
root_dir = './data'
if not os.path.exists(root_dir):os.makedirs(root_dir)
print(root_dir)# transform for train set
train_transforms = transforms.Compose([transforms.LoadImaged(keys=["image"]),transforms.EnsureChannelFirstd(keys=["image"]),transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),]
)# create a training dataset and dataloader for MedNISTDataset and DecathlonDataset
# train_ds = MedNISTDataset(root_dir=root_dir, section="training", download=True, seed=0, transform=train_transforms)
# train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, persistent_workers=True)train_ds = DecathlonDataset(root_dir=root_dir,task="Task01_BrainTumour",section="validation",cache_rate=1.0,  # you may need a few Gb of RAM... Set to 0 otherwisenum_workers=4,download=False,  # Set download to True if the dataset hasnt been downloaded yetseed=0,transform=train_transforms,
)
train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, drop_last=True, persistent_workers=True
)
print(f"Length of training data: {len(train_ds)}")
print(f'Train image shape {train_ds[0]["image"].shape}')

文章持续更新,可以关注微公【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持以实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
在这里插入图片描述

相关文章:

使用MONAI轻松加载医学公开数据集,包括医学分割十项全能挑战数据集和MedMNIST分类数据集

在深度学习中,使用公开数据集具有以下优点: 提供了一个标准化的基准来比较不同算法或模型的性能,因为这些公共数据集被广泛使用,许多研究人员都使用它们来评估他们的方法。可以节省大量的时间和金钱,因为这些数据集已…...

dvwa 代码注入impossible代码审计

dvwa 代码注入impossible代码审计 <?phpif( isset( $_POST[ Submit ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ user_token ], $_SESSION[ session_token ], index.php ); // 检查token值是否正确// Get input$target $_REQUEST[ ip ]; $target stripslas…...

909-2015-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 线性表使用公式化描述方式存储。编写一个函数&#xff0c;从一给定的线性表A中删除值在x ~ y&#xff08;x到y&#xff0c;x<y&#xff09;之间的所有元素&#xff0c;要求以较高的效率来实现。提示&#…...

selenium下载安装对应的chromedriver并执行

文章目录 selenium对应版本chrome驱动下载114以及之前的chrome版本119/120/121的chrome版本 chromedriver安装执行selenium代码 selenium Selenium是广泛使用的模拟浏览器运行的库&#xff0c;它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中&#xff0c…...

1.什么是Angular?

Angular Angular 是一个应用设计框架与开发平台&#xff0c;旨在创建高效而精致的单页面应用。 什么是Angular&#xff1f; Angular 是一个基于 TypeScript 构建的开发平台。它包括&#xff1a; 一个基于组件的框架&#xff0c;用于构建可伸缩的 Web 应用。一组完美集成的库&am…...

Qt ListWidget

先创建QListWidgetItem&#xff1a; QListWidgetItem* pListItem1 new QListWidgetItem(QIcon(":/resources/editor.png"),u8"editor");QListWidgetItem* pListItem2 new QListWidgetItem(QIcon(":/resources/env.png"),u8"env");Q…...

微服务实战系列之加密RSA

前言 在这个时代&#xff0c;我们选择的人生目标已丰富多彩&#xff0c;秉持的人生态度也千差万别&#xff1a; 除了吃喝玩乐&#xff0c;还有科技探索&#xff1b; 除了CityWalk&#xff0c;还有“BookWalk”&#xff1b; 除了走遍中国&#xff0c;还有走遍世界&#xff1b; …...

Centos 里面为什么有的磁盘命名/dev/vda 有的是/dev/sda ?

环境&#xff1a; Centos7.9 问题描述&#xff1a; Centos 里面为什么有的磁盘命名/dev/vda 有的是/dev/sda ? 解决方案&#xff1a; 1.盘命名为/dev/vda或/dev/sda的差异主要取决于系统的安装方式和硬件架构。 /dev/sda是传统的磁盘命名方案&#xff0c;用于标识IDE、S…...

P9232 [蓝桥杯 2023 省 A] 更小的数(区间DP)

求大数字某连续部分反转后&#xff0c;比原数字小的个数 思路&#xff1a;自前向后遍历 ai是位于数字第i位的数字 aj是位于数字第j位的数字&#xff08;i<j&#xff09; ai>aj f[ai][aj]1; ai<aj f[ai][aj]0; aiaj f[ai][aj]f…...

【ArcGIS Pro二次开发】(77):ArcGIS Pro中图层的获取与解析

一、最简单的获取图层方式 通常情况下&#xff0c;如果要获取当前地图中的图层&#xff0c;可以用2种方法获取。 以下图为例&#xff1a; 一种是【map.Layers】属性获取&#xff0c;结果如下&#xff1a; 可以看出&#xff0c;这里只获取到了第一层级的图层&#xff0c;图层组…...

Robust Optimization, imperfect CSI, CSIT and CSIR

文章目录 写在前面CSI, CSIT and CSIR 写在前面 CSIT或者CSIR可不可以用来帮助实现隐蔽通信 人工噪声让窃听者估计出错误的信道。 CSI, CSIT and CSIR MIMO Minimum Total MSE Transceiver Design With Imperfect CSI at Both Ends 2009 TSP 多输入多输出 (MIMO) 系统已成为…...

【数据结构】栈详解

目录 1. 前言2. 栈2.1 栈的概念及结构2.2 如何实现栈2.3 数组栈实现2.3.1 top怎么确定2.3.2 栈顶插入2.3.2.1 栈顶插入分析2.3.2.2 栈顶插入代码实现 2.3.3 栈顶删除2.3.4 判空2.3.4.1 分析2.3.4.2 代码实现 2.3.5 栈的元素个数2.3.6 栈销毁2.3.7 栈访问数据 3. 源代码3.1 Stac…...

大结局!OpenAI创始人奥特曼和 Greg Brockman 将加入微软!!!

持续48小时的OpenAI政变大戏终于迎来了大结局&#xff01; 微软堪称最大赢家&#x1f4a5;&#x1f4a5;&#x1f4a5; 微软CEO刚刚宣布&#xff1a; 我们仍然致力于与 OpenAI 的合作伙伴关系&#xff0c;并对我们的产品路线图、我们在 Microsoft Ignite 上宣布的一切继续创…...

Linux QT交叉编译环境安装

参考链接 linux交叉编译Qt_linux qt 交叉编译-CSDN博客 关键点&#xff1a;编译脚本&#xff0c;放在qt源代码根目录的.sh文件 #!/bin/shcd ./qt-everywhere-src-5.12.9./configure -prefix /home/qsqya/compile/qt5.12.9/build \ -opensource \ -release \ -confirm-license…...

媲美有线操作,支持4KHz响应和无线充电的游戏鼠标,雷柏VT3S上手

对于无线鼠标来说&#xff0c;操作延迟和精度对游戏操作影响很大&#xff0c;常见的游戏鼠标至少都有1KHz的回报率&#xff0c;而雷柏今年已经出了很多支持4KHz回报的鼠标了&#xff0c;像是我现在用的这款VT3S游戏鼠标&#xff0c;就搭载了旗舰级的原相3395引擎&#xff0c;支…...

【Flask使用】全知识md文档,4大部分60页第3篇:状态cookie和session保持

本文的主要内容&#xff1a;flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用&#xff1a;宏、继承/包含、模板中特有变量和函数、Flask-WTF 表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy…...

类方法,静态方法和实例方法的区别及应用场景

在 Python 中&#xff0c;有三种不同类型的方法&#xff1a;实例方法、类方法和静态方法。它们各自有不同的特点和应用场景&#xff1a; 实例方法&#xff08;Instance Method&#xff09;&#xff1a; 实例方法是最常见的方法类型&#xff0c;在方法定义中第一个参数通常被命…...

CleanMyMac X4.16免费版mac电脑一键清理电脑垃圾工具

但是&#xff0c;我最近发现随着使用时间的增加&#xff0c;一些奇奇怪怪的文件开始占据有限的磁盘空间&#xff0c;存储空间变得越来越小&#xff0c;系统占用空间越来越大&#xff0c;越来越多的无效文件开始影响我电脑的运行速度。 Mac的文件管理方式和Windows不太一样&…...

汽车级低压差稳压器LDO LM317BD2TR4G原理、参数及应用

LM317BD2TR4G主要功能特性分析 &#xff1a; LM317BD2TR4G 低漏 (LDO) 线性电压稳压器是一款可调 3 端子正向 LDO 电压器&#xff0c;能够在 1.2 V 至 37 V 的输出电压范围内提供 1.5 A 以上的电流。此电压稳压器使用非常简便&#xff0c;仅需两个外部电阻即可设置输出电压。另…...

多对多的创建方式与Ajax

模型层补充 MTV与MVC模型 MTV 全称 Models Templates Views 模型模板视图 MVC 全称 Models Views Controller 模型视图控制MTV: Django号称是MTV模型 MVC: 其实django本质也是MVC 拓展: vue框架:MVVM模型choices参数(数据库字段设计常见) choices使用 class User(models.Mod…...

工业物联通信升级方案:蓝牙对讲机如何打通“人、机、场”实时协同

在工业物联场景里&#xff0c;通信从来不是“可有可无”的配套能力&#xff0c;而是保障生产节奏、安全响应和协同效率的关键基础设施。过去很多企业依赖传统对讲系统&#xff0c;虽然满足了基本通话&#xff0c;但在复杂现场中仍面临明显短板&#xff1a;有线耳机束缚作业动作…...

在多轮对话场景下体验taotoken路由策略对api调用稳定性的提升

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在多轮对话场景下体验 Taotoken 路由策略对 API 调用稳定性的提升 效果展示类&#xff0c;分享在构建需要长时间会话的 AI 应用时&…...

基于开源LLM框架构建领域对话机器人:从ChatPiXiu到实战应用

1. 项目缘起与定位去年ChatGPT横空出世&#xff0c;相信很多同行和我一样&#xff0c;一边惊叹于其强大的对话能力&#xff0c;一边也在琢磨&#xff1a;这东西的“魔法”我们能不能复现&#xff1f;或者说&#xff0c;有没有可能用开源的方式&#xff0c;打造一个我们自己的、…...

Productivity 的核心不是任务管理:拆解 Claude 的 L1/L2 记忆缓存

我们假设这样一个场景&#xff1a;项目群里有人扔过来一句"ask todd to do the PSR for oracle"。对一个刚入职的新同事&#xff0c;这句话基本等于乱码——todd 是哪个 todd&#xff1f;PSR 是什么报告&#xff1f;oracle 指公司还是某笔交易&#xff1f;得反问三轮…...

视频监督微调(SFT)提升多模态大模型时序理解能力

1. 项目背景与核心价值去年我在参与一个跨模态内容生成项目时&#xff0c;发现现有视觉大模型对视频时序信息的理解存在明显短板。当我们需要基于一段烹饪视频生成步骤说明时&#xff0c;模型往往只能识别出食材和工具&#xff0c;却无法准确描述"先放油后加菜"这样的…...

LLM课程全解析:从基础原理到微调部署的实战指南

1. 课程概览与学习路径设计如果你对大型语言模型&#xff08;LLM&#xff09;感兴趣&#xff0c;想从“会用ChatGPT”进阶到“懂LLM原理”甚至“动手微调自己的模型”&#xff0c;那么你很可能已经淹没在海量的教程、论文和开源项目里了。信息过载&#xff0c;路径模糊&#xf…...

如何快速掌握Flow:新成员静态类型系统培训的完整指南

如何快速掌握Flow&#xff1a;新成员静态类型系统培训的完整指南 【免费下载链接】flow Adds static typing to JavaScript to improve developer productivity and code quality. 项目地址: https://gitcode.com/gh_mirrors/flow30/flow Flow是一个为JavaScript添加静态…...

AI编程任务交接技能:高效上下文转移与团队协作实践

1. 项目概述&#xff1a;为什么我们需要“任务交接”这个技能在AI辅助编程的日常里&#xff0c;我们常常陷入一种困境&#xff1a;一个调试会话&#xff08;Session&#xff09;越拉越长&#xff0c;对话历史里混杂着尝试过的命令、失败的日志、临时的假设、以及最终找到的那一…...

从开发者视角浅谈Taotoken官方价折扣对个人项目的影响

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从开发者视角浅谈Taotoken官方价折扣对个人项目的影响 对于个人开发者或小型独立工作室而言&#xff0c;在有限的预算内维持项目的…...

目前主流的室内定位技术汇总,定位精度从米级到厘米级,毫米级

在室外&#xff0c;GPS卫星信号如同“天空中的灯塔”&#xff0c;指引我们精准抵达目的地。但一旦踏入室内&#xff0c;高楼大厦的钢筋水泥、错综复杂的信号干扰&#xff0c;让定位精度急剧下降。我们可能都经历过在大型商场迷失方向、在仓库中焦急寻找货物、甚至医院的急救设备…...