File size: 3,257 Bytes
343e05c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# 超声提示多标签分类模型
基于 **TransMIL + Query2Label** 混合架构的甲状腺超声图像多标签分类模型。
## 模型架构
- **Backbone**: ResNet-50 (预训练)
- **特征聚合**: TransMIL (Nystrom Attention)
- **多标签分类**: Query2Label (Transformer Decoder)
- **损失函数**: Asymmetric Loss (处理类别不平衡)
## 17类标签
| 序号 | 标签 | 序号 | 标签 |
|:---:|:---|:---:|:---|
| 1 | TI-RADS 1级 | 10 | 囊肿 |
| 2 | TI-RADS 2级 | 11 | 淋巴结 |
| 3 | TI-RADS 3级 | 12 | 胶质潴留 |
| 4 | TI-RADS 4a级 | 13 | 弥漫性病变 |
| 5 | TI-RADS 4b级 | 14 | 结节性甲状腺肿 |
| 6 | TI-RADS 4c级 | 15 | 桥本氏甲状腺炎 |
| 7 | TI-RADS 5级 | 16 | 反应性 |
| 8 | 钙化 | 17 | 转移性 |
| 9 | 甲亢 | | |
## 目录结构
```
HintsPrediction/
├── README.md # 本文件
├── requirements.txt # 依赖列表
├── config.yaml # 配置文件(需修改路径)
├── models/ # 模型代码
│ ├── __init__.py
│ ├── transmil_q2l.py # 主模型架构
│ ├── transformer.py # Transformer 组件
│ └── aslloss.py # 损失函数
├── checkpoints/
│ └── checkpoint_best.pth # 最佳模型权重
├── scripts/ # 懒人脚本
│ ├── train.sh
│ ├── evaluate.sh
│ └── infer_single.sh
├── train_hybrid.py # 训练代码
├── evaluate.py # 评估代码
├── thyroid_dataset.py # 数据集加载
└── infer_single_case.py # 单步推理代码
```
## 快速开始
### 1. 环境配置
```bash
# 安装依赖
pip install -r requirements.txt
```
### 2. 单步推理
```bash
用法:
# 指定多个图像文件
python infer_single_case.py --images /path/to/img1.png /path/to/img2.png --threshold 0.5
# 指定图像文件夹
python infer_single_case.py --image_dir /path/to/case_folder/ --threshold 0.5
# 或使用脚本
用法1: bash scripts/infer_single.sh /path/to/image1.png /path/to/image2.png ...
用法2: bash scripts/infer_single.sh --image_dir /path/to/case_folder/
```
### 3. 评估模型
```bash
# 先修改 config.yaml 中的数据路径
# 然后运行评估
python evaluate.py
# 或
bash scripts/evaluate.sh
```
### 4. 训练模型
```bash
# 先修改 config.yaml 中的数据路径
python train_hybrid.py --config config.yaml
# 或
bash scripts/train.sh
```
## 配置说明
使用前请修改 `config.yaml` 中的数据路径:
```yaml
data:
data_root: "/path/to/your/ReportData_ROI/"
annotation_csv: "/path/to/your/thyroid_multilabel_annotations.csv"
val_json: "/path/to/your/classification_val_set_single.json"
test_json: "/path/to/your/classification_test_set_single.json"
```
## 性能指标
在测试集上的性能(请参考 `checkpoints/evaluation_report.csv`)
## 注意事项
1. 推理时需要 GPU(推荐),CPU 也可运行但较慢
2. 单病例可输入多张图像,模型会自动聚合特征
3. 默认阈值为 0.5,可根据需要调整
|