LViT
这是"LViT:语言遇见视觉Transformer在医学图像分割中的应用"的官方实现代码仓库 Arxiv, ResearchGate, IEEEXplore
环境要求
Python 版本为 3.7,使用以下命令从 requirements.txt
安装依赖:
pip install -r requirements.txt
关于NumPy版本冲突的问题。我们使用的NumPy版本是1.17.5。我们可以先安装bert-embedding,然后再安装NumPy。
使用方法
1. 数据准备
1.1. QaTa-COV19、MosMedData+和MoNuSeg数据集(演示数据集)
原始数据可以从以下链接下载:
[1] Jin, Dakai, et al. "DeepTarget: 食管癌放疗中的肿瘤总体积和临床靶区体积分割。" 医学图像分析 68 (2021): 101909.
[2] Ye, Xianghua, et al. "基于计划CT和FDG-PET/CT的食管癌肿瘤总体积自动勾画的两流深度学习方法的多机构验证。" 肿瘤学前沿 11 (2022): 785788.
QaTa-COV19的文本注释已发布!
(注:QaTa-COV19训练集和验证集的文本注释 下载链接。 QaTa-COV19数据集的训练集和验证集划分 下载链接。 QaTa-COV19测试集的文本注释 下载链接。)
(注:对比标签可在代码仓库中获取。)
(注:MosMedData+训练集的文本注释 下载链接。 MosMedData+验证集的文本注释 下载链接。 MosMedData+测试集的文本注释 下载链接。)
如果您使用我们提供的数据集,请引用LViT。
1.2. 格式准备
然后按以下格式准备数据集,以便轻松使用代码:
├── datasets
├── QaTa-Covid19
│ ├── Test_Folder
| | ├── Test_text.xlsx
│ │ ├── img
│ │ └── labelcol
│ ├── Train_Folder
| | ├── Train_text.xlsx
│ │ ├── img
│ │ └── labelcol
│ └── Val_Folder
| ├── Val_text.xlsx
│ ├── img
│ └── labelcol
└── MosMedDataPlus
├── Test_Folder
| ├── Test_text.xlsx
│ ├── img
│ └── labelcol
├── Train_Folder
| ├── Train_text.xlsx
│ ├── img
│ └── labelcol
└── Val_Folder
├── Val_text.xlsx
├── img
└── labelcol
2. 训练
2.1. 预训练
您可以用U-Net替换LVIT进行预训练,然后运行:
python train_model.py
2.2. 训练
您可以训练得到自己的模型。需要注意的是,使用2.1步骤中的预训练模型将获得更好的性能,或者您可以简单地在配置中将model_name从LViT更改为LViT_pretrain。
python train_model.py
3. 评估
3.1. 测试模型并可视化分割结果
首先,在Config.py
中将会话名称更改为训练阶段使用的名称。然后运行:
python test_model.py
您可以获得Dice和IoU分数以及可视化结果。
4. 结果
数据集 | 模型名称 | Dice (%) | IoU (%) |
---|---|---|---|
QaTa-COV19 | U-Net | 79.02 | 69.46 |
QaTa-COV19 | LViT-T | 83.66 | 75.11 |
MosMedData+ | U-Net | 64.60 | 50.73 |
MosMedData+ | LViT-T | 74.57 | 61.33 |
MoNuSeg | U-Net | 76.45 | 62.86 |
MoNuSeg | LViT-T | 80.36 | 67.31 |
MoNuSeg | LViT-T 无预训练 | 79.98 | 66.83 |
4.1. 其他数据集的更多结果
数据集 | 模型名称 | Dice (%) | IoU (%) |
---|---|---|---|
BKAI-Poly | LViT-TW | 92.07 | 80.93 |
ESO-CT | LViT-TW | 68.27 | 57.02 |
5. 可重复性
在我们的代码中,我们谨慎地设置了随机种子并将cudnn设置为"确定性"模式以消除随机性。然而,仍然存在一些可能导致不同训练结果的因素,例如cuda版本、GPU类型、GPU数量等。我们实验中使用的GPU是2卡NVIDIA V100(32G),cuda版本为11.2。对于多GPU情况,上采样操作在随机性方面存在较大问题。 有关更多详细信息,请参阅https://pytorch.org/docs/stable/notes/randomness.html。
参考文献
引用
@article{li2023lvit,
title={Lvit: language meets vision transformer in medical image segmentation},
author={Li, Zihan and Li, Yunxiang and Li, Qingde and Wang, Puyang and Guo, Dazhou and Lu, Le and Jin, Dakai and Zhang, You and Hong, Qingqi},
journal={IEEE Transactions on Medical Imaging},
year={2023},
publisher={IEEE}
}