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,可根据需要调整