科大讯飞:脑PET疾病预测 baseline

赛题名称:脑PET疾病预测挑战赛

赛题类型:计算机视觉、图像分类

赛题报名链接?:https://challenge.xfyun.cn/topic/info?type=pet-2023&ch=vWxQGFU

赛题背景

脑PET全称为脑部正电子发射计算机断层显像(brain positron emission tomography PET),是反映脑部病变的基因、分子、代谢及功能状态的显像。它是利用正电子核素标记葡萄糖等人体代谢物作为显像剂,通过病灶对显像剂的摄取来反映其代谢变化,从而为临床提供疾病的生物代谢信息,为脑癫痫病、脑肿瘤、帕金森病、阿尔茨海默综合征等提供了有效的检测手段。

可利用脑PET图像检测出轻度认知障碍病灶,并提前介入治疗,从而延缓发病,对后续患者康复治疗有着积极的意义。因此本赛题以轻度认知障碍为例对脑PET图像进行分析与疾病预测。

赛事任务

为研究基于脑PET图像的疾病预测,本次大赛提供了海量脑PET数据集作为脑PET图像检测数据库的训练样本,参赛者需根据提供的样本构建模型,对轻度认知障碍进行分析和预测。

脑PET图像检测数据库,记录了老年人受试志愿者的脑PET影像资料,其中包括确诊为轻度认知障碍(MCI)患者的脑部影像数据和健康人(NC)的脑部影像数据。

被试者按医学诊断分为两类:

  • NC:健康
  • MCI:轻度认知障碍

赛题数据

本次大赛所用脑PET图像检测数据库,图像格式为nii。

评估指标

本次竞赛的评价标准采用F1_score,分数越高,效果越好。

解题思路

赛题是一个典型的图像分类的比赛,但需要单独的对数据格式进行读取,并进行数据增强。

步骤0:读取图片

import nibabel as nib from nibabel.viewers import OrthoSlicer3D

train_path = glob.glob('./脑PET图像分析和疾病预测挑战赛公开数据/Train/*/*')
test_path = glob.glob('./脑PET图像分析和疾病预测挑战赛公开数据/Test/*')

np.random.shuffle(train_path)
np.random.shuffle(test_path)

forpathintrain_path:
img = nib.load(path)print(path, img.dataobj[:, :, :, 0].shape)

步骤1:定义模型

class XunFeiNet(nn.Module): def __init__(self): super(XunFeiNet, self).__init__() model = models.resnet18(True) model.avgpool = nn.AdaptiveAvgPool2d(1) model.fc = nn.Linear(512, 9) self.resnet = model def forward(self, img): out = self.resnet(img)returnout

步骤2:模型训练

def train(train_loader, model, criterion, optimizer): model.train() train_loss = 0.0fori, (input, target)inenumerate(train_loader): input = input.cuda(non_blocking=True) target = target.cuda(non_blocking=True)

# compute outputoutput = model(input)
loss = criterion(output, target)

# compute gradient and do SGD stepoptimizer.zero_grad()
loss.backward()
optimizer.step()


             

ifi % 20 == 0:print('Train loss', loss.item())
train_loss += loss.item()returntrain_loss/len(train_loader)


             

步骤3:模型预测

def predict(test_loader, model, criterion): model.eval() val_acc = 0.0 test_pred = [] with torch.no_grad(): end = time.time()fori, (input, target)inenumerate(test_loader): input = input.cuda() target = target.cuda()

# compute outputoutput = model(input)
test_pred.append(output.data.cpu().numpy())returnnp.vstack(test_pred)

方案开源地址:

https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2023

【竞赛报名/项目咨询请加微信:mollywei007】

微信扫一扫,分享到朋友圈

科大讯飞:脑PET疾病预测 baseline
收藏 0
上一篇

去英美留学选哪些学校最好找工作?

下一篇

海硕归国读博士是赚了还是亏了?

你也可能喜欢

  • 暂无相关文章!

评论已经被关闭。

插入图片
Molly老师
留学行业8年服务经验,擅长初高中留学背景提升及英美留学规划。VX:mollywei007
返回顶部
Baidu
map