File size: 28,860 Bytes
df22c21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>四模态病理对齐实验报告</title>
<meta name="description" content="H&E / 文本 / mIF 蛋白 / RNA 四模态 ImageBind 式对齐:最终协议结果、虚拟数据校准、外部测试与最佳训练方案">
<style>
:root{
  --bg:#f7f6f2; --panel:#ffffff; --ink:#1d1f23; --muted:#5d636e; --line:#e3e1da;
  --accent:#2f6f5e; --accent-soft:#e2efe9; --warn:#a4561b; --warn-soft:#f8eadf;
  --bad:#a33a3a; --bad-soft:#f6e2e2; --bar:#2f6f5e; --bar2:#c9a24a; --chance:#a33a3a;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#15171a; --panel:#1d2024; --ink:#e8e6e1; --muted:#9aa0a9; --line:#30343a;
    --accent:#6fc2a6; --accent-soft:#1f3530; --warn:#e2a06a; --warn-soft:#3a2b20;
    --bad:#e38787; --bad-soft:#3a2323; --bar:#6fc2a6; --bar2:#d9b862; --chance:#e38787;
  }
}
:root[data-theme="dark"]{
  --bg:#15171a; --panel:#1d2024; --ink:#e8e6e1; --muted:#9aa0a9; --line:#30343a;
  --accent:#6fc2a6; --accent-soft:#1f3530; --warn:#e2a06a; --warn-soft:#3a2b20;
  --bad:#e38787; --bad-soft:#3a2323; --bar:#6fc2a6; --bar2:#d9b862; --chance:#e38787;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif}
.wrap{max-width:1040px;margin:0 auto;padding:32px 16px 64px}
header h1{font-size:28px;line-height:1.3;margin:0 0 6px}
header p.sub{color:var(--muted);margin:0 0 18px}
nav{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13.5px;margin:0 0 26px;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-radius:10px}
nav a{color:var(--accent);text-decoration:none}
nav a:hover{text-decoration:underline}
h2{font-size:21px;margin:38px 0 10px;padding-top:8px;border-top:1px solid var(--line)}
h3{font-size:16.5px;margin:22px 0 8px}
p{margin:8px 0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:12px 0}
.verdict{border-left:5px solid var(--accent);background:var(--accent-soft)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:14px 0}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.kpi .v{font-size:26px;font-weight:700;color:var(--accent);line-height:1.2}
.kpi .l{font-size:13px;color:var(--muted)}
.tbl{overflow-x:auto;margin:10px 0;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
table{border-collapse:collapse;width:100%;font-size:13.8px}
th,td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap}
td.wrap,th.wrap{white-space:normal;min-width:180px}
th{background:var(--bg);font-weight:600}
tr:last-child td{border-bottom:none}
td.n{text-align:right;font-variant-numeric:tabular-nums}
.tag{display:inline-block;font-size:12px;padding:1px 7px;border-radius:999px;margin-left:4px}
.ok{background:var(--accent-soft);color:var(--accent)}
.warn{background:var(--warn-soft);color:var(--warn)}
.bad{background:var(--bad-soft);color:var(--bad)}
.muted{color:var(--muted)}
.small{font-size:13px}
ul{margin:6px 0 6px 20px;padding:0}
li{margin:3px 0}
.bars{margin:8px 0}
.bar{display:grid;grid-template-columns:minmax(120px,240px) 1fr 56px;align-items:center;gap:10px;margin:5px 0;font-size:13.5px}
.track{position:relative;height:16px;background:var(--bg);border:1px solid var(--line);border-radius:4px}
.fill{position:absolute;left:0;top:0;bottom:0;background:var(--bar);border-radius:3px}
.fill.b2{background:var(--bar2)}
.chance{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--chance)}
.bar .val{text-align:right;font-variant-numeric:tabular-nums}
.legend{font-size:12.5px;color:var(--muted)}
.recipe{counter-reset:s}
.recipe>li{list-style:none;position:relative;padding-left:34px;margin:10px 0}
.recipe>li:before{counter-increment:s;content:counter(s);position:absolute;left:0;top:1px;width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--panel);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:0 4px}
footer{margin-top:40px;color:var(--muted);font-size:12.5px}
@media (max-width:600px){
  header h1{font-size:23px}
  .bar{grid-template-columns:110px 1fr 46px}
}
</style>
</head>
<body>
<div class="wrap">

<header>
  <h1>四模态病理对齐实验报告</h1>
  <p class="sub">H&amp;E 图像 · 文本 · mIF 蛋白 · RNA,ImageBind 式对齐到 UNI2 H&amp;E 空间|结果截至 2026-10-22(含 13 种训练方式对比)</p>
</header>

<nav>
  <a href="#verdict">总体结论</a><a href="#setup">数据与协议</a><a href="#real">训练过的配对</a>
  <a href="#emergent">未一起训练的配对</a><a href="#virtual">虚拟数据校准</a><a href="#external">外部测试</a>
  <a href="#encoders">编码器对比</a><a href="#text">文本清理</a><a href="#regimes">训练方式对比</a><a href="#recipe">最佳训练方案</a><a href="#next">下一步</a>
</nav>

<section id="verdict">
  <div class="card verdict">
    <strong>总体结论:</strong>H&amp;E↔mIF 很强,几乎能一一对上;H&amp;E↔文本和 H&amp;E↔RNA 中等;从未一起训练的模态之间(如 mIF↔RNA、文本↔RNA)能对上,约为瞎猜的 4–10 倍,但很弱。模型在同类组织上能迁移,在 DLPFC(脑)外部测试上失败。
  </div>
  <div class="kpis">
    <div class="kpi"><div class="v">0.726</div><div class="l">H&amp;E↔mIF R@1(17 通道)<br>配对准确率 0.935</div></div>
    <div class="kpi"><div class="v">0.237</div><div class="l">H&amp;E↔文本 R@1(TCGA)<br>R@10 0.73</div></div>
    <div class="kpi"><div class="v">0.148</div><div class="l">H&amp;E↔RNA R@1(HEST)<br>R@10 0.55</div></div>
    <div class="kpi"><div class="v">≈0.10</div><div class="l">mIF↔RNA,从未一起训练<br>约为瞎猜的 10 倍</div></div>
  </div>
  <p class="small muted">指标说明:R@1 = 从 100 个候选里第一个就找对的比例(瞎猜 0.01);配对准确率 = 100 对做一对一最优匹配后的正确率(瞎猜 0.01)。均为测试集、5 折平均、两个检索方向平均。</p>
</section>

<section id="setup">
  <h2>数据与评估协议</h2>
  <div class="tbl"><table>
    <tr><th>模态</th><th>和 H&amp;E 配对的数据</th><th class="wrap">规模</th><th>划分(训练 / 验证 / 测试)</th></tr>
    <tr><td>mIF(蛋白)</td><td>ORION 结直肠</td><td class="wrap">3,187 个 tile,17 个通道</td><td>按病人 5 折 + 官方划分</td></tr>
    <tr><td>RNA</td><td>HEST-1k Visium</td><td class="wrap">9,484 个 spot,16 种器官,57 个研究</td><td>按研究/病人分组 5 折</td></tr>
    <tr><td>文本</td><td>TCGA(PathGen 系列)</td><td class="wrap">6,144 张图,清理后 6,115 条真实文本</td><td>按病人 5 折</td></tr>
  </table></div>
  <ul>
    <li><strong>只用真实配对训练。</strong>验证集只用于早停,结果全部来自测试集,病人或研究不会跨划分。</li>
    <li><strong>虚拟数据只用于评估:</strong>MIPHEI 虚拟 mIF、STPath 虚拟 RNA、GPT few-shot 合成文本。</li>
    <li><span class="tag warn">循环</span> 表示两侧都由同一张 H&amp;E 生成(如 H&amp;E↔由这张 H&amp;E 预测的虚拟 mIF),只能作参考,不能证明模型学到了什么。</li>
  </ul>
</section>

<section id="real">
  <h2>一、训练过的配对(真实数据)</h2>
  <div class="tbl"><table>
    <tr><th>配对</th><th>数据</th><th class="n">R@1</th><th class="n">R@10</th><th class="n">配对准确率</th><th class="wrap">评价</th></tr>
    <tr><td>H&amp;E↔mIF(17 通道)</td><td>ORION 5 折</td><td class="n"><b>0.726</b> ±0.031</td><td class="n">0.989</td><td class="n"><b>0.935</b></td><td class="wrap">很强</td></tr>
    <tr><td>H&amp;E↔mIF(16 通道)</td><td>ORION 5 折</td><td class="n">0.689</td><td class="n">0.984</td><td class="n">0.901</td><td class="wrap">通道越多越好</td></tr>
    <tr><td>H&amp;E↔mIF(10 通道)</td><td>ORION 5 折</td><td class="n">0.644</td><td class="n">0.979</td><td class="n">0.863</td><td class="wrap"></td></tr>
    <tr><td>H&amp;E↔mIF(17 通道)</td><td>ORION 官方测试</td><td class="n">0.665</td><td class="n">1.000</td><td class="n">0.948</td><td class="wrap">109 个 tile</td></tr>
    <tr><td>H&amp;E↔文本</td><td>TCGA 5 折</td><td class="n"><b>0.237</b> ±0.012</td><td class="n">0.730</td><td class="n">0.248</td><td class="wrap">中等</td></tr>
    <tr><td>H&amp;E↔RNA</td><td>HEST 5 折</td><td class="n"><b>0.148</b> ±0.026</td><td class="n">0.547</td><td class="n">0.166</td><td class="wrap">中等</td></tr>
  </table></div>
  <div class="bars">
    <div class="bar"><span>H&amp;E↔mIF 17 通道</span><div class="track"><div class="fill" style="width:72.6%"></div><div class="chance" style="left:1%"></div></div><span class="val">0.726</span></div>
    <div class="bar"><span>H&amp;E↔mIF 16 通道</span><div class="track"><div class="fill" style="width:68.9%"></div><div class="chance" style="left:1%"></div></div><span class="val">0.689</span></div>
    <div class="bar"><span>H&amp;E↔mIF 10 通道</span><div class="track"><div class="fill" style="width:64.4%"></div><div class="chance" style="left:1%"></div></div><span class="val">0.644</span></div>
    <div class="bar"><span>H&amp;E↔文本</span><div class="track"><div class="fill" style="width:23.7%"></div><div class="chance" style="left:1%"></div></div><span class="val">0.237</span></div>
    <div class="bar"><span>H&amp;E↔RNA</span><div class="track"><div class="fill" style="width:14.8%"></div><div class="chance" style="left:1%"></div></div><span class="val">0.148</span></div>
    <div class="legend">R@1,满刻度 1.0;红线 = 瞎猜(0.01)</div>
  </div>
  <ul>
    <li><strong>H&amp;E↔RNA 在同一器官内很弱:</strong>只在同一器官内找时,脑 0.021、乳腺 0.040、肠 0.070。0.148 中相当一部分靠的是先认出器官。</li>
    <li><strong>H&amp;E↔文本受限于文本本身:</strong>很多文本描述的是一类组织,而不是这张图独有的特征。按文本类型:caption 0.28、总结 0.29、开放问答 0.22、选择题 0.13。</li>
  </ul>
</section>

<section id="emergent">
  <h2>二、从未一起训练的配对(各自只和 H&amp;E 对齐)</h2>
  <p>没有数据集同时测了这些模态的两边,所以一侧必须用虚拟数据。</p>
  <div class="tbl"><table>
    <tr><th>配对</th><th>数据</th><th class="n">R@1</th><th class="n">R@10</th><th class="n">配对准确率</th><th class="n">约为瞎猜</th></tr>
    <tr><td>mIF(16 通道)↔RNA(STPath 虚拟)</td><td>ORION 5 折</td><td class="n">0.108</td><td class="n">0.512</td><td class="n">0.149</td><td class="n">11×</td></tr>
    <tr><td>mIF(10 通道)↔RNA(STPath 虚拟)</td><td>ORION 5 折</td><td class="n">0.098</td><td class="n">0.495</td><td class="n">0.131</td><td class="n">10×</td></tr>
    <tr><td>mIF↔文本(GPT 合成)</td><td>ORION 5 折</td><td class="n">0.074</td><td class="n">0.437</td><td class="n">0.072</td><td class="n">7×</td></tr>
    <tr><td>文本↔RNA(虚拟)</td><td>TCGA 5 折</td><td class="n">0.056</td><td class="n">0.319</td><td class="n">0.057</td><td class="n">5.6×</td></tr>
    <tr><td>文本↔mIF(MIPHEI 虚拟)</td><td>TCGA 5 折</td><td class="n">0.036</td><td class="n">0.237</td><td class="n">0.038</td><td class="n">3.6×</td></tr>
  </table></div>
  <ul>
    <li>四个模态确实对齐到了同一个空间,但精度只有直接训练过的配对的 1/3 到 1/6。</li>
    <li>链条上最弱的一环决定上限:H&amp;E↔文本和 H&amp;E↔RNA 本身只有 0.15–0.24。</li>
  </ul>
</section>

<section id="virtual">
  <h2>三、虚拟数据能否代替真实数据做验证</h2>
  <p>校准方法:在同一批测试样本上,把真实数据换成虚拟数据,看配对效果保留多少。只算虚拟模型没训练过的样本。</p>
  <div class="tbl"><table>
    <tr><th>虚拟数据</th><th>校准对比</th><th class="n">真实</th><th class="n">虚拟</th><th>结论</th></tr>
    <tr><td>MIPHEI 虚拟 mIF</td><td>H&amp;E↔mIF 配对准确率(ORION 官方测试,MIPHEI 未见过)</td><td class="n">0.921</td><td class="n">0.553</td><td><span class="tag ok">可用,约 0.6×</span></td></tr>
    <tr><td>STPath 虚拟 RNA</td><td>H&amp;E↔RNA R@1(STPath 未见过的 spot)</td><td class="n">0.086</td><td class="n">0.080</td><td><span class="tag ok">可用</span></td></tr>
    <tr><td>GPT 合成文本</td><td>H&amp;E↔文本 R@1(同一批 TCGA 图)</td><td class="n">0.219</td><td class="n">0.162</td><td><span class="tag ok">可用,约 0.75×,偏保守</span></td></tr>
    <tr><td>GigaTIME 虚拟 mIF</td><td>H&amp;E↔mIF R@1(ORION 5 折)</td><td class="n">0.644</td><td class="n">0.038</td><td><span class="tag bad">不可用,已弃用</span></td></tr>
  </table></div>
  <ul class="small">
    <li>MIPHEI 用 ORION 官方训练集训练过,因此只有官方测试切片(CRC02、CRC11)和 TCGA 对它是干净的。</li>
    <li>通道均值和真实 mIF 的相关性:MIPHEI 0.70,GigaTIME 0.25。</li>
    <li>直接用虚拟配对训练(文本↔虚拟 RNA / 虚拟蛋白)没有超过经 H&amp;E 间接对齐:蛋白 0.596 vs 0.678(AUROC),RNA 打平。所以虚拟数据只用于评估。</li>
  </ul>
</section>

<section id="external">
  <h2>四、外部测试:DLPFC(脑)</h2>
  <p>spatialLIBD Visium,482 个 spot / 12 张切片 / 3 名供体。这 12 张切片原本也在 HEST 里,测试前已把整个 spatialLIBD 研究从训练中剔除。</p>
  <div class="tbl"><table>
    <tr><th>配对</th><th>类型</th><th class="n">R@1(100 候选,瞎猜 0.01)</th><th class="n">同切片内(35 候选,瞎猜 0.029)</th></tr>
    <tr><td>H&amp;E↔RNA</td><td>真实,训练过的配对</td><td class="n">0.010</td><td class="n">0.031</td></tr>
    <tr><td>RNA↔MIPHEI 虚拟 mIF</td><td>真实×虚拟</td><td class="n">0.008</td><td class="n">0.027</td></tr>
    <tr><td>RNA↔合成文本</td><td>真实×虚拟</td><td class="n">0.010</td><td class="n">0.032</td></tr>
    <tr><td>H&amp;E↔合成文本 <span class="tag warn">循环</span></td><td>参考</td><td class="n">0.022</td><td class="n">0.054</td></tr>
    <tr><td>H&amp;E↔MIPHEI 虚拟 mIF <span class="tag warn">循环</span></td><td>参考</td><td class="n">0.017</td><td class="n">0.040</td></tr>
  </table></div>
  <ul>
    <li><strong>全部在瞎猜水平。</strong>只在同一张切片内比较也一样,所以不是样本差异造成的。</li>
    <li><strong>原因:</strong>脑皮层不同 spot 在 H&amp;E 上本来就很难区分(HEST 内部脑也只有 0.021),这批图视野只有 112 µm 且模糊。GPT 也把 59% 的 spot 写成了淋巴组织,只有 6% 认出是脑组织。</li>
  </ul>
</section>

<section id="encoders">
  <h2>五、每个模态最好的编码器</h2>
  <p>按最终协议的划分逐折比较;文本那项在干净文本上重跑。“领先”= 最好减对比项;p 为 5 折配对 t 检验(5 折全胜时 p 最低约 0.06)。</p>
  <div class="tbl"><table>
    <tr><th>模态</th><th>最好</th><th class="wrap">对比(领先 / 赢几折 / p)</th><th class="wrap">结论</th></tr>
    <tr><td>文本</td><td><b>BiomedCLIP</b> 0.237</td><td class="wrap">CONCH 文本 +0.021(5/5,p=0.03);PLIP +0.026(5/5,p=0.007);ImageBind +0.036(5/5,p=0.002)</td><td class="wrap"><span class="tag ok">明确最好</span></td></tr>
    <tr><td>H&amp;E(对齐文本)</td><td>Phikon-v2 0.241 ≈ CONCH 0.241 ≈ UNI2 0.237</td><td class="wrap">GigaPath 0.223(UNI2 +0.014,4/5,p=0.05)</td><td class="wrap">三者打平</td></tr>
    <tr><td>H&amp;E(对齐 mIF)</td><td><b>UNI2</b> 0.727</td><td class="wrap">GigaPath +0.009(不显著);CONCH +0.155(5/5,p&lt;0.001)</td><td class="wrap">UNI2 ≈ GigaPath ≫ CONCH</td></tr>
    <tr><td>H&amp;E(对齐 RNA)</td><td><b>UNI2</b> 0.148</td><td class="wrap">GigaPath +0.035(4/5,p=0.05)</td><td class="wrap">UNI2</td></tr>
    <tr><td>mIF</td><td><b>ConvNeXt-T</b>(从头训练)0.758</td><td class="wrap">VirTues(冻结)+0.030(5/5,p=0.07)</td><td class="wrap">差距小;VirTues 跨模态更好</td></tr>
    <tr><td>RNA</td><td>Geneformer-V2 0.159</td><td class="wrap">scGPT +0.005(3/5,不显著);MLP +0.011(4/5,p=0.05)</td><td class="wrap">打平</td></tr>
  </table></div>
  <h3>H&amp;E × 文本编码器(干净文本,R@1)</h3>
  <div class="tbl"><table>
    <tr><th>H&amp;E \ 文本</th><th class="n">BiomedCLIP</th><th class="n">CONCH 文本</th><th class="n">PLIP</th><th class="n">ImageBind</th></tr>
    <tr><td>Phikon-v2</td><td class="n"><b>0.241</b></td><td class="n">0.223</td><td class="n">0.211</td><td class="n">0.207</td></tr>
    <tr><td>CONCH</td><td class="n"><b>0.241</b></td><td class="n">0.221</td><td class="n">0.213</td><td class="n">0.209</td></tr>
    <tr><td>UNI2</td><td class="n"><b>0.237</b></td><td class="n">0.216</td><td class="n">0.211</td><td class="n">0.201</td></tr>
    <tr><td>GigaPath</td><td class="n">0.223</td><td class="n">0.201</td><td class="n">0.191</td><td class="n">0.189</td></tr>
  </table></div>
  <p class="small muted">UNI2 是唯一在任何配对上都没被显著超过的 H&amp;E 编码器;Phikon-v2 只测了文本(HEST 只提供 UNI2 和 GigaPath 的特征)。CONCH 在文本上好,但 H&amp;E↔mIF 的配对准确率只有 UNI2 的一半。</p>
</section>

<section id="text">
  <h2>六、文本清理</h2>
  <ul>
    <li><strong>去掉 365 / 6,480 条垃圾文本:</strong>353 条只有选择题答案字母(如 “A A B B”),4 条 “error error”,8 条少于 5 个词的残缺答案。</li>
    <li><strong>256 张图因此没有任何真实文本:</strong>它们保留在原划分里,用 3-shot GPT 生成描述,只用于评估。H&amp;E↔合成文本 0.150,和有真实文本的校准集(0.162)一致。</li>
    <li><strong>用干净文本重训后:</strong>H&amp;E↔文本 0.229 → 0.237。但旧模型在干净测试集上也有 0.236,所以提升几乎全部来自测试集变干净;重训本身 +0.001(5 折 3 胜 2 负),属于噪声。</li>
  </ul>
</section>

<section id="regimes">
  <h2>七、训练方式对比:分开训练 vs 联合训练</h2>
  <p>13 种方式,统一用同一套划分、同一份干净真实数据、同一种对齐头和优化器;虚拟数据只用于评估。数值为 R@1(5 折平均)。“相对 S1”= 各配对 R@1 除以 S1 后取平均。</p>
  <div class="tbl"><table>
    <tr><th>方式</th><th class="n">H&amp;E↔mIF</th><th class="n">H&amp;E↔RNA</th><th class="n">H&amp;E↔文本</th><th class="n">mIF↔RNA(虚)</th><th class="n">mIF↔文本(合)</th><th class="n">文本↔RNA(虚)</th><th class="n">文本↔mIF(虚)</th><th class="n">训练过的<br>相对 S1</th><th class="n">未一起训练<br>相对 S1</th></tr>
    <tr><td>S1 分开·冻结锚点(原方案)</td><td class="n">0.680</td><td class="n">0.148</td><td class="n">0.234</td><td class="n">0.108</td><td class="n">0.076</td><td class="n">0.060</td><td class="n">0.038</td><td class="n">1.00</td><td class="n">1.00</td></tr>
    <tr><td>S2 分开·双塔(CLIP 式)</td><td class="n"><b>0.794</b></td><td class="n">0.130</td><td class="n">0.195</td><td class="n">0.019</td><td class="n">0.022</td><td class="n">0.014</td><td class="n">0.013</td><td class="n">0.96</td><td class="n"><span class="tag bad">0.26</span></td></tr>
    <tr><td>S3 分开·冻结·全线性头</td><td class="n">0.642</td><td class="n">0.156</td><td class="n">0.237</td><td class="n"><b>0.123</b></td><td class="n">0.070</td><td class="n">0.069</td><td class="n">0.038</td><td class="n">1.00</td><td class="n">1.05</td></tr>
    <tr><td>S4 分开·冻结·mIF 用 MLP,RNA/文本用线性</td><td class="n">0.680</td><td class="n">0.152</td><td class="n">0.234</td><td class="n">0.117</td><td class="n">0.074</td><td class="n"><b>0.071</b></td><td class="n">0.037</td><td class="n">1.01</td><td class="n">1.05</td></tr>
    <tr><td>J1 联合·冻结锚点</td><td class="n">0.706</td><td class="n">0.148</td><td class="n"><b>0.237</b></td><td class="n">0.094</td><td class="n">0.065</td><td class="n">0.056</td><td class="n">0.031</td><td class="n">1.02</td><td class="n">0.87</td></tr>
    <tr><td>J2 联合·共享可训练 H&amp;E 头</td><td class="n">0.761</td><td class="n">0.147</td><td class="n">0.204</td><td class="n">0.061</td><td class="n">0.060</td><td class="n">0.044</td><td class="n">0.031</td><td class="n">0.99</td><td class="n">0.72</td></tr>
    <tr><td>J3 J2 + 按数据量采样</td><td class="n">0.740</td><td class="n">0.138</td><td class="n">0.187</td><td class="n">0.063</td><td class="n">0.060</td><td class="n">0.039</td><td class="n">0.031</td><td class="n">0.94</td><td class="n">0.70</td></tr>
    <tr><td>J4 J2 + 锚点蒸馏 λ=1</td><td class="n">0.765</td><td class="n">0.144</td><td class="n">0.202</td><td class="n">0.062</td><td class="n">0.058</td><td class="n">0.043</td><td class="n">0.030</td><td class="n">0.99</td><td class="n">0.71</td></tr>
    <tr><td>J4b J2 + 锚点蒸馏 λ=10</td><td class="n">0.768</td><td class="n">0.149</td><td class="n">0.209</td><td class="n">0.067</td><td class="n">0.058</td><td class="n">0.047</td><td class="n">0.030</td><td class="n">1.01</td><td class="n">0.74</td></tr>
    <tr><td>J5 联合·UNI2 + 共享残差适配器</td><td class="n">0.762</td><td class="n">0.142</td><td class="n">0.201</td><td class="n">0.058</td><td class="n">0.059</td><td class="n">0.044</td><td class="n">0.029</td><td class="n">0.98</td><td class="n">0.71</td></tr>
    <tr><td>J6 J2 + 不确定性自动加权</td><td class="n">0.765</td><td class="n">0.136</td><td class="n">0.195</td><td class="n">0.057</td><td class="n">0.055</td><td class="n">0.041</td><td class="n">0.027</td><td class="n">0.96</td><td class="n">0.66</td></tr>
    <tr><td>J7 两阶段:S1 → 联合残差微调</td><td class="n">0.776</td><td class="n">0.150</td><td class="n">0.234</td><td class="n">0.100</td><td class="n">0.076</td><td class="n">0.055</td><td class="n">0.035</td><td class="n">1.05</td><td class="n">0.94</td></tr>
    <tr style="background:var(--accent-soft)"><td><b>J8 两阶段:S4 → 联合残差微调</b></td><td class="n">0.762</td><td class="n"><b>0.164</b></td><td class="n">0.232</td><td class="n">0.112</td><td class="n">0.073</td><td class="n">0.068</td><td class="n">0.035</td><td class="n"><b>1.07</b></td><td class="n"><b>1.01</b></td></tr>
  </table></div>
  <div class="bars">
    <div class="bar"><span>S1 原方案</span><div class="track"><div class="fill" style="width:50%"></div></div><span class="val">1.00</span></div>
    <div class="bar"><span>S2 双塔</span><div class="track"><div class="fill" style="width:48%"></div></div><span class="val">0.96</span></div>
    <div class="bar"><span>J2 共享 H&amp;E 头</span><div class="track"><div class="fill" style="width:49.7%"></div></div><span class="val">0.99</span></div>
    <div class="bar"><span>J7 两阶段</span><div class="track"><div class="fill" style="width:52.5%"></div></div><span class="val">1.05</span></div>
    <div class="bar"><span><b>J8 两阶段 + 混合头</b></span><div class="track"><div class="fill" style="width:53.6%"></div></div><span class="val">1.07</span></div>
    <div class="legend">训练过的配对,相对 S1(满刻度 2.0)</div>
    <div class="bar"><span>S1 原方案</span><div class="track"><div class="fill b2" style="width:50%"></div></div><span class="val">1.00</span></div>
    <div class="bar"><span>S2 双塔</span><div class="track"><div class="fill b2" style="width:13.2%"></div></div><span class="val">0.26</span></div>
    <div class="bar"><span>J2 共享 H&amp;E 头</span><div class="track"><div class="fill b2" style="width:36.1%"></div></div><span class="val">0.72</span></div>
    <div class="bar"><span>J7 两阶段</span><div class="track"><div class="fill b2" style="width:47%"></div></div><span class="val">0.94</span></div>
    <div class="bar"><span><b>J8 两阶段 + 混合头</b></span><div class="track"><div class="fill b2" style="width:50.5%"></div></div><span class="val">1.01</span></div>
    <div class="legend">从未一起训练的配对,相对 S1(满刻度 2.0)</div>
  </div>
  <ul>
    <li><strong>从头训练 H&amp;E 侧(S2、J2–J6):</strong>H&amp;E↔mIF 涨 0.08–0.11,但 H&amp;E↔文本降 0.03–0.05,从未一起训练的配对损失 26–74%。共享的 H&amp;E 头被最容易的 mIF 任务“拉走”。按数据量采样和不确定性加权更差;蒸馏到 UNI2 结构只略有帮助。</li>
    <li><strong>联合但锚点冻结(J1):</strong>只是训练步数变了,mIF +0.026,但未一起训练的配对 −13%。</li>
    <li><strong>线性头:</strong>RNA 和文本用线性头,跨模态迁移比 MLP 更好(+5%);mIF 仍需要 MLP。</li>
    <li><strong>J8 对比 S1(5 折配对):</strong>H&amp;E↔mIF +0.083(5/5,p=0.01),H&amp;E↔RNA +0.015(5/5,p=0.03),文本↔RNA(虚) +0.008(5/5,p=0.02);其余配对差 ≤0.004,不显著。配对准确率 mIF 0.897→0.929,RNA 0.172→0.198。</li>
  </ul>
</section>

<section id="recipe">
  <h2>八、最佳训练方案</h2>
  <ol class="recipe">
    <li><strong>两阶段训练(J8,13 种方式中最好):</strong>
      <ul>
        <li>第一阶段:冻结 UNI2 当锚点,每个模态各自分开训练对齐头(ImageBind 做法)。</li>
        <li>第二阶段:所有头一起联合微调,同时给 UNI2 加一个三个数据集共享、初始化为零的残差适配器;lr 1e-4,1000 步,三个损失相加,加相似度蒸馏(λ=1),按三项验证 R@1 的几何平均早停。</li>
        <li>不要从头训练 H&amp;E 侧(双塔或共享 H&amp;E 头):H&amp;E↔mIF 会更高,但文本和跨模态对齐明显变差。</li>
      </ul>
    </li>
    <li><strong>编码器:</strong>
      <ul>
        <li>H&amp;E:<b>UNI2</b></li>
        <li>文本:<b>BiomedCLIP</b>(冻结)+ <b>线性</b>对齐头</li>
        <li>mIF:<b>VirTues</b>(冻结)+ <b>MLP</b> 对齐头,尽量用全部通道;只关心 H&amp;E↔mIF 时 ConvNeXt-T 从头训练高 0.03</li>
        <li>RNA:2000 个高变基因,log1p CP10k,<b>线性</b>对齐头(Geneformer / scGPT 打平);外部数据按数据集各自 z-score</li>
      </ul>
    </li>
    <li><strong>对齐头与超参数:</strong>MLP 为 3 层(隐藏 512,LayerNorm),对称 InfoNCE(同一张图有多条文本时都当正例),可学习温度(初始 0.07),AdamW lr 3e-4、weight decay 0.05、OneCycle,batch 256,60–100 epoch,每张 H&amp;E 8 个增强视图训练时随机取一个,按验证集 R@1 早停。</li>
    <li><strong>数据:</strong>只用真实配对;按病人或研究划分(按 tile 随机划分会偏乐观);训练前清掉垃圾文本。</li>
    <li><strong>不要用虚拟配对训练。</strong>直接训练没有超过经 H&amp;E 间接对齐,蛋白还更差;虚拟数据只用于评估。</li>
  </ol>
</section>

<section id="next">
  <h2>九、下一步最值得做的</h2>
  <ul>
    <li><strong>找同一组织同时测了两个模态的真实数据</strong>(如 Visium + CODEX 同切片),这样 RNA↔mIF 能直接训练和直接测,不再依赖虚拟数据。</li>
    <li><strong>提高 RNA 在同一器官内的区分能力:</strong>同器官困难负样本,或更大的 spot 视野。</li>
    <li><strong>文本:</strong>以 caption 和总结类长文本为主训练,弱化选择题。</li>
  </ul>
</section>

<footer>
  <p>许可说明:MIPHEI-ViT 权重仅限非商业学术使用;GigaTIME 权重仅限研究使用(已弃用)。合成文本由 Azure OpenAI 生成,仅用于评估。</p>
  <p>代码:<code>imagebind_exp/</code> 中的 <code>33_final_eval.py</code>(最终协议)、<code>38_</code>/<code>39_</code>(外部测试与检查)、<code>40_clean_text.py</code>、<code>41_text_enc_clean.py</code>、<code>42_train_regimes.py</code>(训练方式对比);完整数字见 <code>RESULTS.md</code> 和 <code>results/*.csv</code>。</p>
</footer>

</div>
</body>
</html>