脑PET图像分析与疾病预测 - nii文件数据处理与简单CNN训练

本文介绍了如何处理nii格式的医学影像数据,包括使用nibabel库读取和归一化数据,以及针对不同尺寸数据的统一方法。作者批评了Logistic回归baseline中的特征提取方式,提出使用简单的CNN模型来增强模型学习能力。通过数据预处理和模型优化,预测准确率超过0.6。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

笔者正在 Datawhale 举办的 AI 夏令营中参与 CV 方向的学习,研究课题为发布在讯飞 AI 开发者大赛上的脑PET图像分析和疾病预测挑战赛,需要对 nii 格式的医学影像文件进行学习,并进行疾病预测

第一轮学习中,Datawhale 团队给出了基于logistic回归进行预测的baseline,但其中并没有对 nii 文件进行详细介绍;且为了适配 logistic 回归模型,并缩小数据规模,其数据处理过程(个人认为)产生了不可忽视的信息丢失,直接导致预测的准确度仅略高于0.5——这跟瞎猜也没啥区别了吧……

鉴于此,笔者在探索中,总结出一篇对nii文件进行数据处理,并采用学习能力更强的简单CNN模型进行训练的教程

nii文件

数据格式

nii 文件是医学图像处理中经常使用的一种 NIFTI 格式图像,关于 nii 文件具体的底层原理,这里不做详细介绍,有兴趣的同学可以参见:Brainder.org的讲解。我们今天主要聚焦于,如何合理地处理 nii 文件中的数据,以便模型训练

数据集中的nii文件对一个人脑进行了三维建模。python 的 nibabel 库专门用于处理 nii 文件,我们可以通过 load() 函数读取 nii 文件,获取其信息:

#1.py
import nibabel as nib
import numpy as np
im=nib.load('脑PET图像分析和疾病预测挑战赛数据集/Train/NC/1.nii')
im_data=np.array(im.get_fdata()) #获取文件中的所有数值,并转换为numpy数组便于后续处理
print(im_data.shape) #查看数据的形状

#返回:(128, 128, 63, 1)

可以看到,数据集中的 nii 文件包含四维数据:其中前三维确定某一个像素点的空间位置,其中左右和前后方向各分128层,上下方向分63层;第四维记录了该点的状态值(类似图片的灰度) 

数据处理

在整份 nii 数据中,所有的数值均为正整数,随便挑出一个值看一看:

#1.py
print(im_data[64,64,55,0])

#返回:10550.0

如此多这么大的数值,如果直接将其投入模型进行训练,效果会很差,必须对数据进行预处理,减小其规模。前面提到的 baseline 中的示例代码给出的方法是人工进行特征提取:

#1.py
feat = [(im_data != 0).sum(),               # 非零像素的数量
        (im_data == 0).sum(),               # 零像素的数量
        im_data.mean(),    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值