基于卷积神经网络ResUnet 多模态融合实验、BraTS 3d数据集(nii.gz)4模态融合分割

news2024/9/27 19:16:02

1、前言

之前介绍了unet对BraTS 3d数据集的2d图片分割,实现思路如下:

1、对BraTS 3d数据集进行切片,沿着某个模态的横断面切割

2、划分数据集、包括训练集、验证集等等

3、网络训练

4、评估模型性能等等

具体的可以参考本文:基于Unet的BraTS 3d 脑肿瘤医学图像分割,从nii.gz文件中切分出2D图片数据_brats2020unet分割-CSDN博客

看了评论和私信,不少人问可不可以将四个模态融合进去,而非单独某个模态分割。

因为多模态本人没有接触过,不过要是仅仅把四个模态融合还是很简单的

一般CNN网络的输入是3通道的RGB,而我们想要把BraTS 3d四个模态融合,其实就是变成

了4个通道的输入而已


这里不用纠结4通道的数据是啥,反正是四种形态,每个形态都是h*w的灰度图像而已

事实上,CNN的隐藏层都把数据卷积成几百个维度了,都是语义信息罢了

2、数据集介绍

BRATS 脑肿瘤分割数据(brain tumor segmentation challenge,BraTS Chanllenge)

标签如下:

这里原始数据集要很多G,这里为了方便仅用十个样本来实验

数据是nii格式,维度如下:数据、gt的维度

可以用ITK-SNAP打开,箭头所指的就是不同模态,可以更换

3、数据集转换

因为数据的维度是这种的

data的维度是4,其中分别为4个模态、x、y、z方向的size

gt 是没有模态的,因为病变区域是不变的

需要注意的是,我们实验的是多模态的信息融合,而非3D的语义分割,请记住这一点,防止下面会混淆

事实上,语义分割的2D领域很多,而3D貌似没有2d分割实用

虽然3d分割要比2d分割效果好,毕竟3d能把握数据的空间体素信息。类似于卷积相比于线性的图像识别,卷积感受野是图像的一个patch,而线性分类仅仅把握像素点。毕竟一般图像来看,像素点的灰度值往往与周围邻域的区域有关

但是3d分割消耗的资源远超2d分割,而且3d的数据采集也很麻烦。等等原因,一般来说我们接触的都是2d图像的分割,基本上sam模型也是以2d图像分割为主

所以,我们想要把BRATS数据集的 (4, 155, 240, 240) 维度先分片,这里还是沿着x轴,也就是155这个方向,所以会变成 (4, 240, 240)的shape

一般的图像维度是(240,240,3)------->3 RGB

这里的4是四种模态,也可以理解成四个channel,每一个都是240*240的灰度图像

本来写了一个dataset直接把nii.gz文件切片后输入网络,不过考虑到对gpu资源可能消耗过大,这里就先生成数据。但是jpg、png图像都是3通道的,不能保存4通道的数据,所以这里用npy保存

3.1 nii.gz 转成 npy 文件

这里需要把一开始的nii.gz的BRATS数据集摆放成这样:

生成的npy如下,这里做了归一化的操作

3.2 npy 文件可视化

可以用下面代码对 npy 可视化

import numpy as np
import matplotlib.pyplot as plt


im_path = 'ResUnet/data_npy/train/images/50.npy'
mk_path = 'ResUnet/data_npy/train/labels/50.npy'

image = np.load(im_path)
mask = np.load(mk_path)
print('image:',image.shape)
print('mask:',mask.shape,np.unique(mask))

plt.figure(figsize=(12,8))
plt.subplot(2,2,1)
plt.imshow(image[0],cmap='gray')
plt.title('FLAIR')

plt.subplot(2,2,2)
plt.imshow(image[1],cmap='gray')
plt.title('T1w')

plt.subplot(2,2,3)
plt.imshow(image[2],cmap='gray')
plt.title('t1gd')

plt.subplot(2,2,4)
plt.imshow(image[3],cmap='gray')
plt.title('T2w')

plt.show()

plt.imshow(mask)
plt.show()

如下:

可以看到image的维度是3维的

数据

4、ResUnet 多模态融合分割

这里采用的的ResUnet网络

需要注意的是,这里的网络可以任意更换,只要网络的输入维度和输出维度改成4即可

 # 实例化模型
    model = UResnet(num_classes=args.nc,input_channels=args.input)
    model.to(device)

这里训练了50个epoch,训练集的dice有0.94左右,测试集的dice有0.67左右

看样子,确实融合分割的效果好,不过这里只用了十个数据集,导致数据不足,所以过拟合了

5、推理

推理的话,这里输入是nii.gz文件,生成的也是nii.gz文件

实现逻辑是把nii文件沿着横断面逐层切片,然后推理完把结果融合成nii文件,输出

推理的结果:

真实标签:

6、下载、其他

实验下载:ResUnet网络对BRATS脑肿瘤多模态融合的语义分割项目实现资源-CSDN文库

ResUnet网络毕竟很久了,换成SwinUnet、TransUnet、DenseUnet之类的效果估计会好点

或者对数据进行增广、扩充数据集等等

像这种尺度的融合很简单,不管是灰度图、RGB图像还是4通道的模态融合,其实就是数据的为敌就是(x,h,w)罢了。几通道就是x变成几罢了,然后在dataset里面把加载数据的代码改一下,网络的输入部分其实就是改个数字。

从这次实验,我也有很多启发,sam分割不考虑大模型其实就是加了个bbox的维度,后面可以尝试尝试把unet和sam进行融合做医学图像语义分割。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑丝或者白丝,都可以用LoRA(Stable Diffusion进阶篇:ComfyUI 附加网络)

前言 在学习WebUI的那些基础知识点的时候,有一个东西是每一个初学者都绕不开的大山-附加网络。 这个东西对于每一个接触Stable Diffusion的小伙伴来说就像是小学门口小卖部卖的辣条、初中课本上的涂鸦、高中数学卷解不开的最后一道大题。 学习过WebUI里Stable Di…

基础岛 - 8G显存验证书生·浦语大模型的Demo

因为以前用过LMDeploy,所以本章的内容相对熟悉。 另外,因为教程写的很详细保姆级,所以大多数情况直接复制执行命令即可。开发机的创建略过。 总体验证结论: LMDeploy的模型加载有点慢,但推理速度快,符合预…

将tsx引入vue

按钮 vue <cl-batch-btn >新增批量</cl-batch-btn> import batch from "//modules/ad/components/ uploading/batch.vue" import ClBatchBtn from "/~/crud/src/components/batch-btn"; tsx

从困境到突破,EasyMR 集群迁移助力大数据底座信创国产化

在大数据时代&#xff0c;企业对数据的依赖程度越来越高。然而&#xff0c;随着业务的不断发展和技术的快速迭代&#xff0c;大数据平台的集群迁移已成为企业数据中台发展途中无法回避的需求。在大数据平台发展初期&#xff0c;国内数据中台市场主要以国外开源 CDH、商业化 CDP…

JVM(十二)细谈JVM类加载的各个过程以及如何修改Java原生API

本文深入探讨了Java虚拟机&#xff08;JVM&#xff09;的类加载机制&#xff0c;包括类的加载、验证、准备、解析和初始化等过程。文章首先通过几个高级面试问题引入主题&#xff0c;然后详细解释了JVM类加载的五个阶段及其重要性。接着&#xff0c;介绍了Java的三个主要类加载…

普通话测试前如何抱佛脚拿高分

全国普通话水平测试对很多大学生而言是最好拿证的考试&#xff0c;当然了对于某些专业的考生也会有更高的拿证要求&#xff0c;例如对于需要考教师资格证的同学而言。希望这篇文章可以帮助到各位考生在普通话水平测试中取得高分。 首先我们需要知道考试考什么 一、测试内容 …

M.2接口

接口分类 key-a key-b key-e key-m接口图片

图吧工具箱:硬件检测的一站式解决方案,好用到让同行都点赞!

前言 嘿&#xff0c;各位硬件迷们&#xff0c;小江湖又来啦&#xff01;今天&#xff0c;我手里可是攥着个宝贝&#xff0c;一个能让你们眼前一亮的神秘工具箱&#xff1b;别急着问是啥&#xff0c;我先卖个关子&#xff0c;就说这工具箱啊&#xff0c;简直是硬件界的“八卦炉”…

8.C基础_指针基础

指针概述 指针存放的都是首地址。 1、定义与初始化 形式&#xff1a;<数据类型>* <变量名> <地址>; int a 10; int *p &a; 指针的类型不同&#xff0c;p时的偏移地址量不同&#xff0c;偏移地址 sizeof(类型)Byte 注意点&#xff1a; 指针的…

LMS4124R-13000S01激光测距仪使用方法【sick LMS4124R-13000S01】

1、下载SOPAS&#xff1a; 点击下载SOPAS 1 SOPAS 自动搜索设备 正常上电及网络连接&#xff0c;打开 SOPAS 自动搜索到 LMS41XXX&#xff0c;并且可以看到其版本号&#xff0c; SN,IP 信息&#xff0c;产品默认 IP 为 192.168.0.1. 2 搜索设备 鼠标双击“LMS41XXX(SN 18460…

15.DMDIS 工具优化

文章目录 前言一、安装部署安装数据源转换作业监控 二、性能优化问题 1 &#xff1a;DMETL 卡顿问题问题 2 &#xff1a;DM -> HIVE 的迁移速度慢问题 3 &#xff1a;ORACLE -> DM 的迁移速度慢问题 4 &#xff1a;GP -> DM 的迁移速度慢问题 5 &#xff1a;DM -> …

AI芯片成本压力影响利润

Supermicro&#xff08;SMCI&#xff09;近日公布的季度业绩低于预期&#xff0c;主要因其生产的最新人工智能&#xff08;AI&#xff09;芯片服务器成本高企&#xff0c;导致经调整后的毛利率未能达到分析师的预期水平。这一消息使得其股价在盘后交易中急剧下跌14%&#xff0c…

江科大/江协科技 STM32学习笔记P19

文章目录 TIM编码器接口编码器接口简介正交编码器编码器接口电路、基本结构工作模式 TIM编码器接口 改写旋转编码器计次程序&#xff0c;通过定时器的编码器接口自动计次&#xff0c;与之前触发外部中断手动计次相比&#xff0c;节约软件资源&#xff0c;当有电机高速旋转时&a…

邮件推送接口如何集成以提升用户通知效率?

邮件推送接口的优化策略有哪些&#xff1f;如何设计邮件API接口&#xff1f; 邮件推送接口的集成在这一过程中发挥了重要作用&#xff0c;能够显著提升用户通知效率。AokSend将探讨如何通过集成邮件推送接口来优化用户通知机制&#xff0c;从而为企业和用户带来更高的价值。 …

Java并发—ReetrantLock详解

目录 一、ReetrantLock的特性 1、非阻塞获取锁 2、带超时的锁获取: 3、锁的公平性 4、锁的可中断性 5、Condition条件变量 6、锁的可重入性 可重入锁 不可重入锁 7、性能优化 二、ReentrantLock和Synchronized的区别 1、语法和使用方式 2、锁的获取和释放 3、高级…

量化方法介绍

一、定义 分类模型量化接口进阶量化支持的模式/流/硬件 二、实现 分类 模型量化接口进阶 https://pytorch.org/docs/stable/quantization-support.html 2.1 算子融合 定义&#xff1a; 将多个算子融合到一起&#xff0c;运算时可以加快运行速度。 import torch # define a…

三星和Nvidia在HBM3E芯片领域的竞争与合作

引言 近期&#xff0c;全球半导体市场的焦点逐渐聚焦在了高带宽内存&#xff08;HBM&#xff09;芯片领域&#xff0c;尤其是三星电子和Nvidia之间的竞争与合作。这两家科技巨头正在为下一代人工智能&#xff08;AI&#xff09;处理器的高性能需求而竞相研发先进的HBM3E存储解决…

模拟面试题1

目录 一、JVM的内存结构&#xff1f; 二、类加载器分为哪几类&#xff1f; 三、讲一下双亲委派机制 为什么要有双亲委派机制&#xff1f; 那你知道有违反双亲委派的例子吗&#xff1f; 四、IO 有哪些类型&#xff1f; 五、Spring Boot启动机制 六、Spring Boot的可执行…

基于MindFormers实现GPT2模型的推理

前言 针对MindFormers的安装&#xff0c;可参考本专栏里的另一篇博客 安装MindFormers&#xff08;昇腾910&#xff09;-CSDN博客 pipeline方式 from mindformers import pipeline from mindformers import GPT2LMHeadModel, GPT2Config, GPT2Tokenizer tok GPT2Tokenizer…

Kafka安装部署+go整合

1、Kafka的安装 1、下载与安装Kafka Kafka官网https://Kafka.apache.org/downloads 所以这里推荐的版本是 : https://archive.apache.org/dist/kafka/2.7.2/kafka_2.12-2.7.2.tgz 将下载下来的安装包直接解压到一个路径下即可完成Kafka的安装&#xff0c;这里统一将Kafka安装…