ChestX-ray8论文个人理解

本文介绍了一项基于深度学习的医学影像研究——ChestX-ray8,这是一个包含108,948张胸部X光图像的大规模数据库,旨在通过弱监督分类和定位常见胸腔疾病。研究者利用自然语言处理技术从放射科报告中提取疾病标签,克服了医疗数据集构建的挑战,并提出了一种用于疾病检测的框架,包括预训练模型、LSE pooling和加权交叉熵损失函数。

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

论文全名:

ChestX-ray8: Hospital-scale Chest X-ray Database and Benchmarks on Weakly-Supervised Classification and Localization of Common Thorax Diseases

 

地址:

https://arxiv.org/pdf/1705.02315.pdf

 

Abstract:

因为医学图像领域的数据集较少,所以作者提出了ChestX-ray8,它有108948张正面X光图像,它们来自32717名患者。作者用自然语言处理的方法从放射性专家的报告中提取出了8类图像标签。(所以叫ChestX-ray8)。作者最后使用了自己的模型来检测数据集中的疾病,并取得了不错的效果。

 

Introduction:

第一段:深度学习在图像方面已经取得了很多成果。

第二、三段:深度学习在医学上的一些相关工作。主要是在小数据集上进行的。

第四段:有三个因素使医学图像诊断的实现比较困难。

(1)数据难以通过众包( crowd-sourcing)获取,需要专业人员标注。而且,放射科的专家比较倾向于写复杂的逻辑推理报告而不是简单的描述语句(对文本处理造成困难)。

(2)X光图像一般为2000*3000,局部病理图像区域可能变化很大,但相对于整张图片仍旧很小。(这使检测很困难)

(3)CV领域中的技术都很依赖于ImageNet的预训练,然而这种预训练在医学领域应用并不好。

第五段:作者提出了ChestX-ray8。

 

Related Work

OpenI

 

Construction

数据库:PACS

(1)选出8个疾病关键词,找出数据库相关的报告作为语料库。

(2)标签挖掘:一个X光报告通常由“Comparison”, “Indication”, “Findings”, and “Impression”四个部分组成。一般使用Findings and Impression,如果没有的话用全篇。扫描两遍,第一遍扫描疾病关键词,第二遍关注其他疾病与normal关键词,如果没有,标为normal。

作者用了DNorm and MetaMap两种方法,并且合并了它们的结果。

(3)否定与不确定性去除:现有的很多方法在复合语句上表现不好,所以作者提出了一些规则

分词->解析->CCProcessed

(4)质量控制:找出一部分openI相关的报告,将openI数据集的结果作为标签,运用作者的方法,发现比MetaMap效果要好。

(5)图像处理,resize成1024*1024

(6)边界框,一小部分图片有bounding boxes。给出一张图和一个标签,找专家标注。

 

Common Thoracic Disease Detection and Localization

作者提出了一个框架用来检测这类问题。如下:

主架构为预训练的经典模型,transition layer转成标准形式, LSE  pooling,预测。

预测标签使用one-hot形式。

损失函数为加权的Cross Entropy Loss:

LSE pooling:

通过超参数r来调控倾向与全局还是平均:

为了防止溢出:

模型可以生成热度图 

 

Experiments:

略(自己看论文)

 

相关文章:

Chexnet: Radiologist-level pneumonia detection on chest x-rays with deep learning

https://blog.youkuaiyun.com/JianJuly/article/details/80262405

<think>好的,用户是一位完全的新手,刚在电脑上下载了Google Drive软件,想要在Colab上训练ResNet-18模型,使用的是ChestX-ray14数据集。首先,我需要考虑用户可能遇到的问题,比如如何访问Colab、如何上传数据、如何配置环境等等。用户提到已经下载了Google Drive,所以可能需要指导他们将数据集上传到Google Drive,并在Colab中挂载。 接下来,用户可能不熟悉Colab的基本操作,比如如何创建笔记本、运行代码块。需要详细说明步骤,包括点击哪里,如何连接运行时等。另外,数据集的路径问题也很重要,用户可能不知道如何在代码中正确指定路径,可能需要提示他们检查路径是否正确。 然后是代码部分,用户可能需要完整的代码示例,包括安装必要的库、数据预处理、模型定义、训练循环等。考虑到用户是新手,代码中的注释需要详细,解释每一步的作用。同时,可能需要提醒用户注意依赖项的版本,比如torch和torchvision的安装命令。 还有,用户可能对深度学习的概念不熟悉,比如优化器、损失函数、训练周期等,但根据用户的问题,重点在于操作步骤,所以可能需要保持解释简洁,避免过多理论,专注于实际操作。 另外,用户可能遇到运行时断开的问题,需要提醒他们设置自动保存,或者定期保存模型检查点。数据加载部分,如果数据集较大,可能需要调整批量大小,避免内存不足。同时,预处理步骤需要与ResNet-18的输入要求一致,比如调整图像大小、归一化参数等。 最后,用户完成训练后可能需要保存模型,并下载到本地,或者在Colab中测试模型。需要指导他们如何保存模型文件到Google Drive,以及如何加载模型进行预测。可能还需要提醒他们,Colab的会话有时间限制,长时间训练需要考虑保持活动或使用付费版本。 总结下来,需要分步骤详细说明,从访问Colab链接开始,挂载Drive,安装依赖,数据准备,模型训练,到保存结果,每个步骤都要清晰,避免术语过多,用简单的语言指导操作。同时,预见常见错误,比如路径错误、依赖项缺失,并给出解决方法,比如如何检查文件路径,如何安装特定版本的库等。确保用户即使没有经验,也能按照步骤顺利完成训练流程。</think>以下是为您整理的ResNet-18ChestX-ray14数据集训练的零基础操作指南: 一、前期准备阶段 1. 数据上传 - 访问Kaggle下载ChestX-ray14数据集(约120GB) - 在Google Drive网页版新建"Medical_Data"文件夹 - 使用Google Drive客户端将数据集完整上传至该文件夹(需注意网络稳定性) 二、Colab环境配置 1. 打开Google Colab https://colab.research.google.com/ → 新建笔记本 → 重命名为"ResNet18_Training" 2. 连接云端资源 - 点击右上角"连接"按钮 - 选择GPU加速:运行时 → 更改运行时类型 → GPU(推荐T4) 3. 挂载云端硬盘 ```python from google.colab import drive drive.mount('/content/drive') ``` 三、数据预处理流程 ```python import torch from torchvision import transforms # 文件路径配置(需根据实际路径修改) DATA_PATH = '/content/drive/MyDrive/Medical_Data/ChestX-ray14' # 标准化参数设置(医学影像专用) med_transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) ``` 四、模型训练核心代码 ```python # 依赖安装(必须在第一步执行) !pip install torch==1.12.1 torchvision==0.13.1 # 数据集加载 from torchvision.datasets import ImageFolder train_set = ImageFolder(root=f'{DATA_PATH}/train', transform=med_transform) train_loader = torch.utils.data.DataLoader(train_set, batch_size=32, shuffle=True) # ResNet-18模型配置 import torch.nn as nn from torchvision.models import resnet18 model = resnet18(pretrained=True) model.fc = nn.Linear(512, 14) # 修改输出层为14类 # 训练参数设置 criterion = nn.BCEWithLogitsLoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) # 训练循环(建议执行10个epoch) for epoch in range(10): for inputs, labels in train_loader: outputs = model(inputs) loss = criterion(outputs, labels.float()) optimizer.zero_grad() loss.backward() optimizer.step() print(f'Epoch {epoch+1} completed') ``` 五、注意事项 1. 存储管理 - 每训练完1个epoch后执行: ```python torch.save(model.state_dict(), f'/content/drive/MyDrive/model_epoch{epoch}.pth') ``` 2. 性能优化 - 若出现内存不足,将batch_size从32调整为16 - 使用混合精度训练:在代码开头添加 ```python scaler = torch.cuda.amp.GradScaler() ``` 常见问题解决方案: 1. 数据集路径错误 → 检查Google Drive中的实际文件夹名称 2. CUDA内存不足 → 重启运行时并减小batch_size 3. 训练中断 → 在代码开头添加: ```python from IPython.display import Javascript Javascript(""" function keepAlive() { console.log("Keeping session alive"); document.querySelector("colab-toolbar-button#connect").click() } setInterval(keepAlive, 60000) """) ``` 建议训练时间安排: - 基础训练(5 epochs):约4小时(T4 GPU) - 完整训练(50 epochs):建议使用Colab Pro 完成训练后,您可以通过以下代码下载模型: ```python from google.colab import files files.download('/content/drive/MyDrive/final_model.pth') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值