MaybeRichard commited on
Commit
c189edf
·
verified ·
1 Parent(s): 8e78773

report: drop cross-dataset average columns + overall-ranking table (heterogeneous modalities); per-dataset + significance only

Browse files
code/framework/report/aggregate.py CHANGED
@@ -125,18 +125,6 @@ def _grid(rows):
125
  return cell, datasets, methods
126
 
127
 
128
- def _col_means(cell, datasets, methods):
129
- """method -> {key: macro-mean over datasets}"""
130
- out = {}
131
- for a in methods:
132
- out[a] = {}
133
- for key, _, _, _ in METRICS:
134
- vs = [cell[(d, a)][f"{key}_mean"] for d in datasets
135
- if (d, a) in cell and cell[(d, a)][f"{key}_mean"] == cell[(d, a)][f"{key}_mean"]]
136
- out[a][key] = float(np.mean(vs)) if vs else float("nan")
137
- return out
138
-
139
-
140
  # ----------------------------------------------------------------------------- significance
141
  def _per_image_dice_vec(runs_for_da):
142
  by_proto = defaultdict(list)
@@ -224,11 +212,12 @@ def _dice_bold(a, d, cell, best, sig):
224
 
225
 
226
  def to_markdown(rows, sig=None):
227
- cell, datasets, methods, avg = _dice_matrix(rows)
228
- head = ["Method"] + [_DS_DISP.get(d, d) for d in datasets] + ["Avg"]
229
  out = "## Main results — Dice (mean±SD %, ↑)\n\n"
230
  out += ("_**Bold** = best or not significantly worse than best per dataset "
231
- "(paired Wilcoxon on per-image Dice, p≥0.05)._\n\n")
 
232
  out += "| " + " | ".join(head) + " |\n|" + "---|" * len(head) + "\n"
233
  best = {d: max((cell[(d, a)]["dice_mean"] for a in methods if (d, a) in cell), default=np.nan)
234
  for d in datasets}
@@ -240,21 +229,20 @@ def to_markdown(rows, sig=None):
240
  cells.append(f"**{t}**" if _dice_bold(a, d, cell, best, sig) else t)
241
  else:
242
  cells.append("–")
243
- cells.append(f"{avg[a]*100:.1f}")
244
  out += "| " + " | ".join(cells) + " |\n"
245
  return out
246
 
247
 
248
  def to_latex(rows, sig=None):
249
- cell, datasets, methods, avg = _dice_matrix(rows)
250
- spec = "l" + "c" * (len(datasets) + 1)
251
  out = ("% Main results: Dice (mean over seeds, %). Bold = best or not significantly\n"
252
- "% worse than best per dataset (paired Wilcoxon on per-image Dice, p>=0.05).\n")
 
253
  out += "\\begin{tabular}{" + spec + "}\n\\toprule\n"
254
- out += "Method & " + " & ".join(_DS_DISP.get(d, d) for d in datasets) + " & Avg \\\\\n\\midrule\n"
255
  best = {d: max((cell[(d, a)]["dice_mean"] for a in methods if (d, a) in cell), default=np.nan)
256
  for d in datasets}
257
- abest = max(methods, key=lambda a: avg[a])
258
  for a in methods:
259
  cells = [_ARCH_DISP.get(a, a)]
260
  for d in datasets:
@@ -263,8 +251,6 @@ def to_latex(rows, sig=None):
263
  cells.append(f"\\textbf{{{t}}}" if _dice_bold(a, d, cell, best, sig) else t)
264
  else:
265
  cells.append("--")
266
- at = f"{avg[a]*100:.1f}"
267
- cells.append(f"\\textbf{{{at}}}" if a == abest else at)
268
  out += " & ".join(cells) + " \\\\\n"
269
  if a == "attention_unet":
270
  out += "\\midrule\n" # separate CNNs from transformers/foundation
@@ -348,21 +334,19 @@ hr{border:none;border-top:1px solid #e3e3e3;margin:24px 0}
348
 
349
 
350
  def _metric_table(cell, datasets, methods, key, pct, hib, bold_sets=None):
351
- """Transposed table: methods (rows) × datasets (cols) + Avg. bold_sets[ds] (set of archs)
352
- if given (Dice significance), else bold the single best per column."""
 
 
 
353
  best = {}
354
  for d in datasets:
355
  vals = {a: cell[(d, a)][f"{key}_mean"] for a in methods
356
  if (d, a) in cell and cell[(d, a)][f"{key}_mean"] == cell[(d, a)][f"{key}_mean"]}
357
  best[d] = ((max if hib else min)(vals, key=vals.get) if vals else None)
358
- avg = {a: np.nanmean([cell[(d, a)][f"{key}_mean"] for d in datasets if (d, a) in cell] or [np.nan])
359
- for a in methods}
360
- avg = {a: (v if v == v else np.nan) for a, v in avg.items()}
361
- finite = {a: v for a, v in avg.items() if v == v}
362
- abest = ((max if hib else min)(finite, key=finite.get) if finite else None)
363
  h = ["<div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th>"
364
  + "".join(f"<th>{_DS_DISP.get(d, d)}</th>" for d in datasets)
365
- + "<th class='avg'>Avg</th></tr></thead><tbody>"]
366
  for a in methods:
367
  grp = " class='grp'" if a == "transunet" else ""
368
  tds = [f"<td class='m'>{_ARCH_DISP.get(a, a)}</td>"]
@@ -373,30 +357,6 @@ def _metric_table(cell, datasets, methods, key, pct, hib, bold_sets=None):
373
  tds.append(f"<td>{'<b>'+t+'</b>' if b else t}</td>")
374
  else:
375
  tds.append("<td>–</td>")
376
- av = avg[a]
377
- at = ("–" if av != av else (f"{av*100:.1f}" if pct else f"{av:.2f}"))
378
- tds.append(f"<td class='avg'>{'<b>'+at+'</b>' if a == abest else at}</td>")
379
- h.append(f"<tr{grp}>" + "".join(tds) + "</tr>")
380
- h.append("</tbody></table></div>")
381
- return "\n".join(h)
382
-
383
-
384
- def _overall_table(cell, datasets, methods):
385
- cm = _col_means(cell, datasets, methods)
386
- best = {}
387
- for key, _, _, hib in METRICS:
388
- vals = {a: cm[a][key] for a in methods if cm[a][key] == cm[a][key]}
389
- best[key] = ((max if hib else min)(vals, key=vals.get) if vals else None)
390
- h = ["<div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th>"
391
- + "".join(f"<th>{lbl}{'↑' if hib else '↓'}</th>" for _, lbl, _, hib in METRICS)
392
- + "</tr></thead><tbody>"]
393
- for a in methods:
394
- grp = " class='grp'" if a == "transunet" else ""
395
- tds = [f"<td class='m'>{_ARCH_DISP.get(a, a)}</td>"]
396
- for key, _, pct, _ in METRICS:
397
- v = cm[a][key]
398
- t = ("–" if v != v else (f"{v*100:.1f}" if pct else f"{v:.2f}"))
399
- tds.append(f"<td>{'<b>'+t+'</b>' if a == best[key] else t}</td>")
400
  h.append(f"<tr{grp}>" + "".join(tds) + "</tr>")
401
  h.append("</tbody></table></div>")
402
  return "\n".join(h)
@@ -462,7 +422,6 @@ def to_html(rows, runs=None, title="SegGen benchmark", sig=None):
462
  cell, datasets, methods = _grid(rows)
463
  if sig is None:
464
  sig = _sig_tied_sets(runs) if runs else None
465
- nseeds = {r["dataset"]: r["n_seeds"] for r in rows}
466
  h = [f"<!doctype html><html><head><meta charset='utf-8'><title>{title}</title><style>{_CSS}</style>"
467
  "</head><body>"]
468
  h.append(f"<h1>{title}: 8 methods × 10 datasets (unified 512, resolution-fair)</h1>")
@@ -476,8 +435,10 @@ def to_html(rows, runs=None, title="SegGen benchmark", sig=None):
476
 
477
  h.append("<h2>1. Main results — Dice (%) ↑</h2>")
478
  h.append("<div class='cap'><b>Bold</b> = best, or not significantly different from the best per dataset "
479
- "(paired Wilcoxon on per-image Dice, p≥0.05). Last column = mean over the 10 datasets. "
480
- "Horizontal rule separates CNNs (top) from Transformer / foundation models (bottom).</div>")
 
 
481
  h.append(_metric_table(cell, datasets, methods, "dice", True, True, bold_sets=sig))
482
 
483
  h.append("<h2>2. Boundary accuracy — HD95 (px) ↓</h2>")
@@ -486,26 +447,22 @@ def to_html(rows, runs=None, title="SegGen benchmark", sig=None):
486
  h.append(_metric_table(cell, datasets, methods, "hd95", False, False))
487
 
488
  h.append("<h2>3. Overlap — IoU (%) ↑</h2>")
489
- h.append("<div class='cap'>Jaccard index, the stricter overlap measure (<b>bold</b> = best per dataset). "
490
- "Last column = mean over the 10 datasets.</div>")
491
  h.append(_metric_table(cell, datasets, methods, "iou", True, True))
492
 
493
- h.append("<h2>4. Overall ranking — mean over the 10 datasets</h2>")
494
- h.append("<div class='cap'>Each method's macro-average of every metric across all datasets "
495
- "(<b>bold</b> = best column). ↑ higher better, ↓ lower better.</div>")
496
- h.append(_overall_table(cell, datasets, methods))
497
-
498
  if runs:
499
  pcs = _perclass_section(runs)
500
  if pcs.strip():
501
- h.append("<h2>5. Per-class Dice (%) — multi-class datasets</h2>")
502
  h.append("<div class='cap'>Mean per-class Dice over all test images/runs (0=background excluded; "
503
- "<b>bold</b>=best per class). Shows which structures drive each method's macro-Dice.</div>")
 
504
  h.append(pcs)
505
 
506
  h.append("<hr><h2>Appendix — Experimental setup</h2>")
507
- h.append("<p class='cap'>Full per-(dataset,method) values for every metric are in "
508
- "<code>summary.csv</code>; the main Dice table as LaTeX is in <code>summary.tex</code>.</p>")
 
509
  h.append(_setup_html())
510
  h.append("</body></html>")
511
  return "\n".join(h)
 
125
  return cell, datasets, methods
126
 
127
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  # ----------------------------------------------------------------------------- significance
129
  def _per_image_dice_vec(runs_for_da):
130
  by_proto = defaultdict(list)
 
212
 
213
 
214
  def to_markdown(rows, sig=None):
215
+ cell, datasets, methods, _ = _dice_matrix(rows)
216
+ head = ["Method"] + [_DS_DISP.get(d, d) for d in datasets]
217
  out = "## Main results — Dice (mean±SD %, ↑)\n\n"
218
  out += ("_**Bold** = best or not significantly worse than best per dataset "
219
+ "(paired Wilcoxon on per-image Dice, p≥0.05). No cross-dataset average column — "
220
+ "the seven modalities are too heterogeneous for one number to be meaningful._\n\n")
221
  out += "| " + " | ".join(head) + " |\n|" + "---|" * len(head) + "\n"
222
  best = {d: max((cell[(d, a)]["dice_mean"] for a in methods if (d, a) in cell), default=np.nan)
223
  for d in datasets}
 
229
  cells.append(f"**{t}**" if _dice_bold(a, d, cell, best, sig) else t)
230
  else:
231
  cells.append("–")
 
232
  out += "| " + " | ".join(cells) + " |\n"
233
  return out
234
 
235
 
236
  def to_latex(rows, sig=None):
237
+ cell, datasets, methods, _ = _dice_matrix(rows)
238
+ spec = "l" + "c" * len(datasets)
239
  out = ("% Main results: Dice (mean over seeds, %). Bold = best or not significantly\n"
240
+ "% worse than best per dataset (paired Wilcoxon on per-image Dice, p>=0.05).\n"
241
+ "% No cross-dataset average column (modalities too heterogeneous).\n")
242
  out += "\\begin{tabular}{" + spec + "}\n\\toprule\n"
243
+ out += "Method & " + " & ".join(_DS_DISP.get(d, d) for d in datasets) + " \\\\\n\\midrule\n"
244
  best = {d: max((cell[(d, a)]["dice_mean"] for a in methods if (d, a) in cell), default=np.nan)
245
  for d in datasets}
 
246
  for a in methods:
247
  cells = [_ARCH_DISP.get(a, a)]
248
  for d in datasets:
 
251
  cells.append(f"\\textbf{{{t}}}" if _dice_bold(a, d, cell, best, sig) else t)
252
  else:
253
  cells.append("--")
 
 
254
  out += " & ".join(cells) + " \\\\\n"
255
  if a == "attention_unet":
256
  out += "\\midrule\n" # separate CNNs from transformers/foundation
 
334
 
335
 
336
  def _metric_table(cell, datasets, methods, key, pct, hib, bold_sets=None):
337
+ """Transposed table: methods (rows) × datasets (cols). bold_sets[ds] (set of archs)
338
+ if given (Dice significance), else bold the single best per column. Deliberately NO
339
+ cross-dataset summary column: the ten datasets span seven modalities with very
340
+ different difficulty, so a simple average is not meaningful (and would conflict with
341
+ the per-dataset ranking)."""
342
  best = {}
343
  for d in datasets:
344
  vals = {a: cell[(d, a)][f"{key}_mean"] for a in methods
345
  if (d, a) in cell and cell[(d, a)][f"{key}_mean"] == cell[(d, a)][f"{key}_mean"]}
346
  best[d] = ((max if hib else min)(vals, key=vals.get) if vals else None)
 
 
 
 
 
347
  h = ["<div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th>"
348
  + "".join(f"<th>{_DS_DISP.get(d, d)}</th>" for d in datasets)
349
+ + "</tr></thead><tbody>"]
350
  for a in methods:
351
  grp = " class='grp'" if a == "transunet" else ""
352
  tds = [f"<td class='m'>{_ARCH_DISP.get(a, a)}</td>"]
 
357
  tds.append(f"<td>{'<b>'+t+'</b>' if b else t}</td>")
358
  else:
359
  tds.append("<td>–</td>")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  h.append(f"<tr{grp}>" + "".join(tds) + "</tr>")
361
  h.append("</tbody></table></div>")
362
  return "\n".join(h)
 
422
  cell, datasets, methods = _grid(rows)
423
  if sig is None:
424
  sig = _sig_tied_sets(runs) if runs else None
 
425
  h = [f"<!doctype html><html><head><meta charset='utf-8'><title>{title}</title><style>{_CSS}</style>"
426
  "</head><body>"]
427
  h.append(f"<h1>{title}: 8 methods × 10 datasets (unified 512, resolution-fair)</h1>")
 
435
 
436
  h.append("<h2>1. Main results — Dice (%) ↑</h2>")
437
  h.append("<div class='cap'><b>Bold</b> = best, or not significantly different from the best per dataset "
438
+ "(paired Wilcoxon on per-image Dice, p≥0.05). "
439
+ "Horizontal rule separates CNNs (top) from Transformer / foundation models (bottom). "
440
+ "No cross-dataset average is reported — the seven modalities differ too much in difficulty "
441
+ "for a single number to be meaningful.</div>")
442
  h.append(_metric_table(cell, datasets, methods, "dice", True, True, bold_sets=sig))
443
 
444
  h.append("<h2>2. Boundary accuracy — HD95 (px) ↓</h2>")
 
447
  h.append(_metric_table(cell, datasets, methods, "hd95", False, False))
448
 
449
  h.append("<h2>3. Overlap — IoU (%) ↑</h2>")
450
+ h.append("<div class='cap'>Jaccard index, the stricter overlap measure (<b>bold</b> = best per dataset).</div>")
 
451
  h.append(_metric_table(cell, datasets, methods, "iou", True, True))
452
 
 
 
 
 
 
453
  if runs:
454
  pcs = _perclass_section(runs)
455
  if pcs.strip():
456
+ h.append("<h2>4. Per-class Dice (%) — multi-class datasets</h2>")
457
  h.append("<div class='cap'>Mean per-class Dice over all test images/runs (0=background excluded; "
458
+ "<b>bold</b>=best per class). The <i>macro</i> column averages over a dataset's own "
459
+ "foreground classes (a within-dataset mean, not a cross-dataset one).</div>")
460
  h.append(pcs)
461
 
462
  h.append("<hr><h2>Appendix — Experimental setup</h2>")
463
+ h.append("<p class='cap'>Full per-(dataset,method) values for <b>every</b> metric "
464
+ "(IoU, HD95, ASSD, Sensitivity, Specificity, Precision, …) are in "
465
+ "<code>summary.csv</code>; the Dice table as LaTeX is in <code>summary.tex</code>.</p>")
466
  h.append(_setup_html())
467
  h.append("</body></html>")
468
  return "\n".join(h)
results/summary.html CHANGED
@@ -23,55 +23,43 @@ hr{border:none;border-top:1px solid #e3e3e3;margin:24px 0}
23
  <p>Eight 2D medical-image segmentation methods on ten public datasets (seven modalities). Values are <b>mean±SD</b> over 3 seeds (over the 3 folds for PanNuke). Each (dataset,method) cell aggregates tens–thousands of test images.</p>
24
  <div class='note'><b>Resolution-fair protocol.</b> Convolutional nets train at 512; the fixed-input transformers (Swin-UNet 224, TransUNet 256) and nnU-Net/U-Mamba run at their native size; <b>every prediction and ground truth is then resized to a common 512×512 before scoring</b>, so boundary metrics (HD95/ASSD, in pixels) are directly comparable across methods.</div>
25
  <h2>1. Main results — Dice (%) ↑</h2>
26
- <div class='cap'><b>Bold</b> = best, or not significantly different from the best per dataset (paired Wilcoxon on per-image Dice, p≥0.05). Last column = mean over the 10 datasets. Horizontal rule separates CNNs (top) from Transformer / foundation models (bottom).</div>
27
- <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>CVC-ClinicDB</th><th>Kvasir-SEG</th><th>FIVES</th><th>BUSI</th><th>REFUGE2</th><th>ACDC</th><th>IDRiD</th><th>PanNuke</th><th>ISIC2018</th><th>KiTS19</th><th class='avg'>Avg</th></tr></thead><tbody>
28
- <tr><td class='m'>UNet</td><td><b>94.49±0.14</b></td><td><b>88.41±0.54</b></td><td>86.81±0.08</td><td>72.76±2.47</td><td>84.76±0.89</td><td>77.78±0.39</td><td>49.75±0.65</td><td>49.85±0.33</td><td>90.08±0.12</td><td>74.59±5.62</td><td class='avg'>76.9</td></tr>
29
- <tr><td class='m'>UNet++</td><td><b>93.92±0.51</b></td><td><b>87.88±0.19</b></td><td>86.77±0.80</td><td>74.67±0.68</td><td><b>86.66±1.10</b></td><td><b>79.75±0.57</b></td><td>50.52±2.11</td><td>50.01±0.13</td><td>89.92±0.06</td><td>72.19±3.00</td><td class='avg'>77.2</td></tr>
30
- <tr><td class='m'>DeepLabV3+</td><td>93.83±0.42</td><td><b>90.39±0.47</b></td><td>80.97±0.30</td><td><b>76.12±1.20</b></td><td>84.26±0.94</td><td>78.33±0.49</td><td>49.34±0.48</td><td>52.35±0.35</td><td><b>90.68±0.10</b></td><td><b>78.70±1.34</b></td><td class='avg'>77.5</td></tr>
31
- <tr><td class='m'>Attention-UNet</td><td>91.73±0.33</td><td>87.58±0.11</td><td>85.64±0.20</td><td>65.98±1.11</td><td>75.49±4.01</td><td>74.57±0.15</td><td>44.65±0.61</td><td>45.87±0.39</td><td>88.57±0.25</td><td>64.74±1.44</td><td class='avg'>72.5</td></tr>
32
- <tr class='grp'><td class='m'>TransUNet</td><td><b>94.29±0.31</b></td><td><b>90.76±0.37</b></td><td>73.10±0.84</td><td><b>76.53±1.65</b></td><td>76.90±1.37</td><td>79.46±0.44</td><td>25.66±3.11</td><td><b>53.60±0.35</b></td><td>90.83±0.27</td><td>76.82±0.93</td><td class='avg'>73.8</td></tr>
33
- <tr><td class='m'>Swin-UNet</td><td>92.72±0.33</td><td><b>90.15±0.62</b></td><td>68.78±0.18</td><td><b>76.00±0.94</b></td><td>80.95±4.15</td><td>71.26±1.36</td><td>20.95±15.57</td><td><b>54.34±0.42</b></td><td><b>91.04±0.14</b></td><td>63.42±2.92</td><td class='avg'>71.0</td></tr>
34
- <tr><td class='m'>nnU-Net</td><td><b>94.24±0.64</b></td><td><b>90.44±0.88</b></td><td><b>89.00±0.35</b></td><td><b>75.39±1.35</b></td><td>85.55±0.23</td><td>73.81±0.38</td><td><b>64.64±0.11</b></td><td>47.82±0.55</td><td><b>90.20±0.14</b></td><td>70.44±1.93</td><td class='avg'><b>78.2</b></td></tr>
35
- <tr><td class='m'>U-Mamba</td><td>92.98±0.55</td><td><b>91.23±0.14</b></td><td>82.68±1.21</td><td>73.73±0.35</td><td>82.42±1.25</td><td>68.68±0.89</td><td><b>64.64±0.10</b></td><td>49.40±0.51</td><td><b>90.22±0.21</b></td><td>72.41±1.03</td><td class='avg'>76.8</td></tr>
36
  </tbody></table></div>
37
  <h2>2. Boundary accuracy — HD95 (px) ↓</h2>
38
  <div class='cap'>95% Hausdorff distance at the common 512 resolution (lower = better; <b>bold</b> = best per dataset). Now comparable across methods.</div>
39
- <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>CVC-ClinicDB</th><th>Kvasir-SEG</th><th>FIVES</th><th>BUSI</th><th>REFUGE2</th><th>ACDC</th><th>IDRiD</th><th>PanNuke</th><th>ISIC2018</th><th>KiTS19</th><th class='avg'>Avg</th></tr></thead><tbody>
40
- <tr><td class='m'>UNet</td><td>19.46±0.53</td><td>39.96±3.32</td><td>12.21±0.68</td><td>70.02±7.49</td><td>17.13±1.77</td><td>17.91±1.55</td><td>68.00±0.38</td><td>140.39±1.84</td><td>34.82±1.57</td><td>39.79±6.37</td><td class='avg'>45.97</td></tr>
41
- <tr><td class='m'>UNet++</td><td><b>19.28±3.15</b></td><td>41.23±2.76</td><td><b>11.60±0.43</b></td><td>62.67±0.86</td><td>16.78±8.92</td><td>16.63±3.75</td><td>77.61±8.63</td><td>140.91±2.40</td><td>34.66±0.03</td><td>46.19±1.36</td><td class='avg'>46.75</td></tr>
42
- <tr><td class='m'>DeepLabV3+</td><td>21.19±0.33</td><td>38.27±3.50</td><td>17.02±0.93</td><td>53.29±0.90</td><td>8.93±0.64</td><td>15.79±0.90</td><td>87.84±3.82</td><td>136.89±1.88</td><td>30.76±0.28</td><td><b>36.29±1.75</b></td><td class='avg'>44.63</td></tr>
43
- <tr><td class='m'>Attention-UNet</td><td>45.21±6.77</td><td>63.80±1.73</td><td>13.82±2.13</td><td>98.10±5.07</td><td>23.03±10.16</td><td>27.13±2.50</td><td>75.44±4.17</td><td>146.04±3.87</td><td>46.32±2.81</td><td>50.10±0.65</td><td class='avg'>58.90</td></tr>
44
- <tr class='grp'><td class='m'>TransUNet</td><td>19.53±0.69</td><td><b>31.81±1.27</b></td><td>22.64±0.42</td><td><b>43.79±1.43</b></td><td>9.24±0.48</td><td><b>15.64±1.75</b></td><td>86.98±29.21</td><td>134.40±1.48</td><td>28.21±0.86</td><td>41.37±2.53</td><td class='avg'>43.36</td></tr>
45
- <tr><td class='m'>Swin-UNet</td><td>22.70±1.25</td><td>34.84±0.81</td><td>29.64±2.19</td><td>51.91±2.96</td><td>17.42±4.99</td><td>15.85±0.56</td><td>89.66±13.40</td><td><b>132.62±0.94</b></td><td><b>26.72±0.58</b></td><td>52.42±1.11</td><td class='avg'>47.38</td></tr>
46
- <tr><td class='m'>nnU-Net</td><td>22.37±1.75</td><td>38.85±5.15</td><td>14.76±1.05</td><td>49.83±1.37</td><td><b>6.36±1.11</b></td><td>16.93±0.70</td><td>67.25±2.79</td><td>147.16±1.97</td><td>30.38±0.42</td><td>39.19±0.93</td><td class='avg'><b>43.31</b></td></tr>
47
- <tr><td class='m'>U-Mamba</td><td>22.80±2.25</td><td>37.78±1.17</td><td>28.66±1.08</td><td>60.19±3.74</td><td>7.23±0.47</td><td>21.79±1.16</td><td><b>64.19±1.12</b></td><td>142.36±1.82</td><td>29.95±0.87</td><td>38.55±2.43</td><td class='avg'>45.35</td></tr>
48
  </tbody></table></div>
49
  <h2>3. Overlap — IoU (%) ↑</h2>
50
- <div class='cap'>Jaccard index, the stricter overlap measure (<b>bold</b> = best per dataset). Last column = mean over the 10 datasets.</div>
51
- <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>CVC-ClinicDB</th><th>Kvasir-SEG</th><th>FIVES</th><th>BUSI</th><th>REFUGE2</th><th>ACDC</th><th>IDRiD</th><th>PanNuke</th><th>ISIC2018</th><th>KiTS19</th><th class='avg'>Avg</th></tr></thead><tbody>
52
- <tr><td class='m'>UNet</td><td><b>89.91±0.20</b></td><td>82.98±0.38</td><td>78.13±0.07</td><td>64.44±2.32</td><td>74.31±1.24</td><td>70.36±0.40</td><td>41.31±0.60</td><td>40.50±0.35</td><td>83.65±0.10</td><td>67.10±5.84</td><td class='avg'>69.3</td></tr>
53
- <tr><td class='m'>UNet++</td><td>89.42±0.61</td><td>82.32±0.25</td><td>77.97±1.27</td><td>66.19±0.61</td><td><b>77.11±1.72</b></td><td><b>72.56±0.81</b></td><td>41.58±1.32</td><td>40.65±0.20</td><td>83.46±0.03</td><td>64.12±3.25</td><td class='avg'>69.5</td></tr>
54
- <tr><td class='m'>DeepLabV3+</td><td>89.12±0.42</td><td>84.62±0.60</td><td>69.44±0.34</td><td>67.48±1.21</td><td>73.60±1.40</td><td>70.80±0.43</td><td>39.78±0.37</td><td>42.54±0.38</td><td>84.40±0.15</td><td><b>70.91±1.74</b></td><td class='avg'>69.3</td></tr>
55
- <tr><td class='m'>Attention-UNet</td><td>86.04±0.51</td><td>80.22±0.22</td><td>76.20±0.22</td><td>57.34±0.92</td><td>63.91±3.95</td><td>66.90±0.47</td><td>36.58±0.44</td><td>36.95±0.34</td><td>81.64±0.30</td><td>56.30±2.10</td><td class='avg'>64.2</td></tr>
56
- <tr class='grp'><td class='m'>TransUNet</td><td>89.62±0.41</td><td>85.28±0.29</td><td>58.44±1.10</td><td><b>68.44±1.56</b></td><td>64.73±1.36</td><td>71.08±0.70</td><td>22.79±2.25</td><td>43.82±0.20</td><td>84.53±0.37</td><td>69.11±1.04</td><td class='avg'>65.8</td></tr>
57
- <tr><td class='m'>Swin-UNet</td><td>87.03±0.35</td><td>84.10±0.69</td><td>53.20±0.10</td><td>67.46±0.68</td><td>68.98±5.52</td><td>62.36±1.35</td><td>17.08±12.51</td><td><b>44.11±0.34</b></td><td><b>84.89±0.21</b></td><td>55.87±2.86</td><td class='avg'>62.5</td></tr>
58
- <tr><td class='m'>nnU-Net</td><td>89.69±0.75</td><td>84.42±1.19</td><td><b>82.66±0.21</b></td><td>67.68±1.22</td><td>75.57±0.31</td><td>66.98±0.35</td><td>52.93±0.04</td><td>38.39±0.50</td><td>83.97±0.18</td><td>63.29±1.50</td><td class='avg'><b>70.6</b></td></tr>
59
- <tr><td class='m'>U-Mamba</td><td>87.93±0.81</td><td><b>85.29±0.14</b></td><td>74.13±1.87</td><td>65.57±0.50</td><td>71.20±1.97</td><td>61.82±0.88</td><td><b>53.04±0.09</b></td><td>40.01±0.51</td><td>83.98±0.22</td><td>65.00±1.11</td><td class='avg'>68.8</td></tr>
60
  </tbody></table></div>
61
- <h2>4. Overall ranking — mean over the 10 datasets</h2>
62
- <div class='cap'>Each method's macro-average of every metric across all datasets (<b>bold</b> = best column). ↑ higher better, ↓ lower better.</div>
63
- <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>Dice↑</th><th>IoU↑</th><th>HD95↓</th><th>ASSD↓</th><th>Sens↑</th><th>Spec↑</th><th>Prec↑</th></tr></thead><tbody>
64
- <tr><td class='m'>UNet</td><td>76.9</td><td>69.3</td><td>45.97</td><td>13.05</td><td>78.1</td><td>98.9</td><td>79.0</td></tr>
65
- <tr><td class='m'>UNet++</td><td>77.2</td><td>69.5</td><td>46.75</td><td><b>12.89</b></td><td>77.7</td><td><b>99.0</b></td><td>80.2</td></tr>
66
- <tr><td class='m'>DeepLabV3+</td><td>77.5</td><td>69.3</td><td>44.63</td><td>13.01</td><td>78.0</td><td>98.8</td><td><b>80.5</b></td></tr>
67
- <tr><td class='m'>Attention-UNet</td><td>72.5</td><td>64.2</td><td>58.90</td><td>16.69</td><td>73.3</td><td>98.9</td><td>76.4</td></tr>
68
- <tr class='grp'><td class='m'>TransUNet</td><td>73.8</td><td>65.8</td><td>43.36</td><td>13.63</td><td>74.2</td><td>98.8</td><td>76.7</td></tr>
69
- <tr><td class='m'>Swin-UNet</td><td>71.0</td><td>62.5</td><td>47.38</td><td>14.82</td><td>72.6</td><td>98.6</td><td>72.5</td></tr>
70
- <tr><td class='m'>nnU-Net</td><td><b>78.2</b></td><td><b>70.6</b></td><td><b>43.31</b></td><td>13.21</td><td><b>79.1</b></td><td>98.7</td><td>80.4</td></tr>
71
- <tr><td class='m'>U-Mamba</td><td>76.8</td><td>68.8</td><td>45.35</td><td>13.93</td><td>78.4</td><td>98.7</td><td>78.9</td></tr>
72
- </tbody></table></div>
73
- <h2>5. Per-class Dice (%) — multi-class datasets</h2>
74
- <div class='cap'>Mean per-class Dice over all test images/runs (0=background excluded; <b>bold</b>=best per class). Shows which structures drive each method's macro-Dice.</div>
75
  <h3>ACDC</h3>
76
  <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>RV</th><th>Myocardium</th><th>LV</th><th class='avg'>macro</th></tr></thead><tbody>
77
  <tr><td class='m'>UNet</td><td>75.3</td><td>78.3</td><td>83.9</td><td class='avg'>79.2</td></tr>
@@ -117,7 +105,7 @@ hr{border:none;border-top:1px solid #e3e3e3;margin:24px 0}
117
  <tr><td class='m'>U-Mamba</td><td>61.5</td><td>35.6</td><td>43.4</td><td>14.0</td><td>52.5</td><td class='avg'>41.4</td></tr>
118
  </tbody></table></div>
119
  <hr><h2>Appendix — Experimental setup</h2>
120
- <p class='cap'>Full per-(dataset,method) values for every metric are in <code>summary.csv</code>; the main Dice table as LaTeX is in <code>summary.tex</code>.</p>
121
  <h2>A. Datasets</h2>
122
  <table class='info'><tr><th>#</th><th>Dataset</th><th>Modality</th><th>Target</th><th>Cls</th><th>Ch</th><th>Native size</th><th>Protocol</th><th>Train/Val/Test</th></tr>
123
  <tr><td>1</td><td class='l'>CVC-ClinicDB</td><td class='l'>Colonoscopy (endoscopy)</td><td class='l'>Polyp</td><td>2</td><td>RGB</td><td>384×288</td><td>official</td><td>490 / 61 / 61</td></tr>
 
23
  <p>Eight 2D medical-image segmentation methods on ten public datasets (seven modalities). Values are <b>mean±SD</b> over 3 seeds (over the 3 folds for PanNuke). Each (dataset,method) cell aggregates tens–thousands of test images.</p>
24
  <div class='note'><b>Resolution-fair protocol.</b> Convolutional nets train at 512; the fixed-input transformers (Swin-UNet 224, TransUNet 256) and nnU-Net/U-Mamba run at their native size; <b>every prediction and ground truth is then resized to a common 512×512 before scoring</b>, so boundary metrics (HD95/ASSD, in pixels) are directly comparable across methods.</div>
25
  <h2>1. Main results — Dice (%) ↑</h2>
26
+ <div class='cap'><b>Bold</b> = best, or not significantly different from the best per dataset (paired Wilcoxon on per-image Dice, p≥0.05). Horizontal rule separates CNNs (top) from Transformer / foundation models (bottom). No cross-dataset average is reported — the seven modalities differ too much in difficulty for a single number to be meaningful.</div>
27
+ <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>CVC-ClinicDB</th><th>Kvasir-SEG</th><th>FIVES</th><th>BUSI</th><th>REFUGE2</th><th>ACDC</th><th>IDRiD</th><th>PanNuke</th><th>ISIC2018</th><th>KiTS19</th></tr></thead><tbody>
28
+ <tr><td class='m'>UNet</td><td><b>94.49±0.14</b></td><td><b>88.41±0.54</b></td><td>86.81±0.08</td><td>72.76±2.47</td><td>84.76±0.89</td><td>77.78±0.39</td><td>49.75±0.65</td><td>49.85±0.33</td><td>90.08±0.12</td><td>74.59±5.62</td></tr>
29
+ <tr><td class='m'>UNet++</td><td><b>93.92±0.51</b></td><td><b>87.88±0.19</b></td><td>86.77±0.80</td><td>74.67±0.68</td><td><b>86.66±1.10</b></td><td><b>79.75±0.57</b></td><td>50.52±2.11</td><td>50.01±0.13</td><td>89.92±0.06</td><td>72.19±3.00</td></tr>
30
+ <tr><td class='m'>DeepLabV3+</td><td>93.83±0.42</td><td><b>90.39±0.47</b></td><td>80.97±0.30</td><td><b>76.12±1.20</b></td><td>84.26±0.94</td><td>78.33±0.49</td><td>49.34±0.48</td><td>52.35±0.35</td><td><b>90.68±0.10</b></td><td><b>78.70±1.34</b></td></tr>
31
+ <tr><td class='m'>Attention-UNet</td><td>91.73±0.33</td><td>87.58±0.11</td><td>85.64±0.20</td><td>65.98±1.11</td><td>75.49±4.01</td><td>74.57±0.15</td><td>44.65±0.61</td><td>45.87±0.39</td><td>88.57±0.25</td><td>64.74±1.44</td></tr>
32
+ <tr class='grp'><td class='m'>TransUNet</td><td><b>94.29±0.31</b></td><td><b>90.76±0.37</b></td><td>73.10±0.84</td><td><b>76.53±1.65</b></td><td>76.90±1.37</td><td>79.46±0.44</td><td>25.66±3.11</td><td><b>53.60±0.35</b></td><td>90.83±0.27</td><td>76.82±0.93</td></tr>
33
+ <tr><td class='m'>Swin-UNet</td><td>92.72±0.33</td><td><b>90.15±0.62</b></td><td>68.78±0.18</td><td><b>76.00±0.94</b></td><td>80.95±4.15</td><td>71.26±1.36</td><td>20.95±15.57</td><td><b>54.34±0.42</b></td><td><b>91.04±0.14</b></td><td>63.42±2.92</td></tr>
34
+ <tr><td class='m'>nnU-Net</td><td><b>94.24±0.64</b></td><td><b>90.44±0.88</b></td><td><b>89.00±0.35</b></td><td><b>75.39±1.35</b></td><td>85.55±0.23</td><td>73.81±0.38</td><td><b>64.64±0.11</b></td><td>47.82±0.55</td><td><b>90.20±0.14</b></td><td>70.44±1.93</td></tr>
35
+ <tr><td class='m'>U-Mamba</td><td>92.98±0.55</td><td><b>91.23±0.14</b></td><td>82.68±1.21</td><td>73.73±0.35</td><td>82.42±1.25</td><td>68.68±0.89</td><td><b>64.64±0.10</b></td><td>49.40±0.51</td><td><b>90.22±0.21</b></td><td>72.41±1.03</td></tr>
36
  </tbody></table></div>
37
  <h2>2. Boundary accuracy — HD95 (px) ↓</h2>
38
  <div class='cap'>95% Hausdorff distance at the common 512 resolution (lower = better; <b>bold</b> = best per dataset). Now comparable across methods.</div>
39
+ <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>CVC-ClinicDB</th><th>Kvasir-SEG</th><th>FIVES</th><th>BUSI</th><th>REFUGE2</th><th>ACDC</th><th>IDRiD</th><th>PanNuke</th><th>ISIC2018</th><th>KiTS19</th></tr></thead><tbody>
40
+ <tr><td class='m'>UNet</td><td>19.46±0.53</td><td>39.96±3.32</td><td>12.21±0.68</td><td>70.02±7.49</td><td>17.13±1.77</td><td>17.91±1.55</td><td>68.00±0.38</td><td>140.39±1.84</td><td>34.82±1.57</td><td>39.79±6.37</td></tr>
41
+ <tr><td class='m'>UNet++</td><td><b>19.28±3.15</b></td><td>41.23±2.76</td><td><b>11.60±0.43</b></td><td>62.67±0.86</td><td>16.78±8.92</td><td>16.63±3.75</td><td>77.61±8.63</td><td>140.91±2.40</td><td>34.66±0.03</td><td>46.19±1.36</td></tr>
42
+ <tr><td class='m'>DeepLabV3+</td><td>21.19±0.33</td><td>38.27±3.50</td><td>17.02±0.93</td><td>53.29±0.90</td><td>8.93±0.64</td><td>15.79±0.90</td><td>87.84±3.82</td><td>136.89±1.88</td><td>30.76±0.28</td><td><b>36.29±1.75</b></td></tr>
43
+ <tr><td class='m'>Attention-UNet</td><td>45.21±6.77</td><td>63.80±1.73</td><td>13.82±2.13</td><td>98.10±5.07</td><td>23.03±10.16</td><td>27.13±2.50</td><td>75.44±4.17</td><td>146.04±3.87</td><td>46.32±2.81</td><td>50.10±0.65</td></tr>
44
+ <tr class='grp'><td class='m'>TransUNet</td><td>19.53±0.69</td><td><b>31.81±1.27</b></td><td>22.64±0.42</td><td><b>43.79±1.43</b></td><td>9.24±0.48</td><td><b>15.64±1.75</b></td><td>86.98±29.21</td><td>134.40±1.48</td><td>28.21±0.86</td><td>41.37±2.53</td></tr>
45
+ <tr><td class='m'>Swin-UNet</td><td>22.70±1.25</td><td>34.84±0.81</td><td>29.64±2.19</td><td>51.91±2.96</td><td>17.42±4.99</td><td>15.85±0.56</td><td>89.66±13.40</td><td><b>132.62±0.94</b></td><td><b>26.72±0.58</b></td><td>52.42±1.11</td></tr>
46
+ <tr><td class='m'>nnU-Net</td><td>22.37±1.75</td><td>38.85±5.15</td><td>14.76±1.05</td><td>49.83±1.37</td><td><b>6.36±1.11</b></td><td>16.93±0.70</td><td>67.25±2.79</td><td>147.16±1.97</td><td>30.38±0.42</td><td>39.19±0.93</td></tr>
47
+ <tr><td class='m'>U-Mamba</td><td>22.80±2.25</td><td>37.78±1.17</td><td>28.66±1.08</td><td>60.19±3.74</td><td>7.23±0.47</td><td>21.79±1.16</td><td><b>64.19±1.12</b></td><td>142.36±1.82</td><td>29.95±0.87</td><td>38.55±2.43</td></tr>
48
  </tbody></table></div>
49
  <h2>3. Overlap — IoU (%) ↑</h2>
50
+ <div class='cap'>Jaccard index, the stricter overlap measure (<b>bold</b> = best per dataset).</div>
51
+ <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>CVC-ClinicDB</th><th>Kvasir-SEG</th><th>FIVES</th><th>BUSI</th><th>REFUGE2</th><th>ACDC</th><th>IDRiD</th><th>PanNuke</th><th>ISIC2018</th><th>KiTS19</th></tr></thead><tbody>
52
+ <tr><td class='m'>UNet</td><td><b>89.91±0.20</b></td><td>82.98±0.38</td><td>78.13±0.07</td><td>64.44±2.32</td><td>74.31±1.24</td><td>70.36±0.40</td><td>41.31±0.60</td><td>40.50±0.35</td><td>83.65±0.10</td><td>67.10±5.84</td></tr>
53
+ <tr><td class='m'>UNet++</td><td>89.42±0.61</td><td>82.32±0.25</td><td>77.97±1.27</td><td>66.19±0.61</td><td><b>77.11±1.72</b></td><td><b>72.56±0.81</b></td><td>41.58±1.32</td><td>40.65±0.20</td><td>83.46±0.03</td><td>64.12±3.25</td></tr>
54
+ <tr><td class='m'>DeepLabV3+</td><td>89.12±0.42</td><td>84.62±0.60</td><td>69.44±0.34</td><td>67.48±1.21</td><td>73.60±1.40</td><td>70.80±0.43</td><td>39.78±0.37</td><td>42.54±0.38</td><td>84.40±0.15</td><td><b>70.91±1.74</b></td></tr>
55
+ <tr><td class='m'>Attention-UNet</td><td>86.04±0.51</td><td>80.22±0.22</td><td>76.20±0.22</td><td>57.34±0.92</td><td>63.91±3.95</td><td>66.90±0.47</td><td>36.58±0.44</td><td>36.95±0.34</td><td>81.64±0.30</td><td>56.30±2.10</td></tr>
56
+ <tr class='grp'><td class='m'>TransUNet</td><td>89.62±0.41</td><td>85.28±0.29</td><td>58.44±1.10</td><td><b>68.44±1.56</b></td><td>64.73±1.36</td><td>71.08±0.70</td><td>22.79±2.25</td><td>43.82±0.20</td><td>84.53±0.37</td><td>69.11±1.04</td></tr>
57
+ <tr><td class='m'>Swin-UNet</td><td>87.03±0.35</td><td>84.10±0.69</td><td>53.20±0.10</td><td>67.46±0.68</td><td>68.98±5.52</td><td>62.36±1.35</td><td>17.08±12.51</td><td><b>44.11±0.34</b></td><td><b>84.89±0.21</b></td><td>55.87±2.86</td></tr>
58
+ <tr><td class='m'>nnU-Net</td><td>89.69±0.75</td><td>84.42±1.19</td><td><b>82.66±0.21</b></td><td>67.68±1.22</td><td>75.57±0.31</td><td>66.98±0.35</td><td>52.93±0.04</td><td>38.39±0.50</td><td>83.97±0.18</td><td>63.29±1.50</td></tr>
59
+ <tr><td class='m'>U-Mamba</td><td>87.93±0.81</td><td><b>85.29±0.14</b></td><td>74.13±1.87</td><td>65.57±0.50</td><td>71.20±1.97</td><td>61.82±0.88</td><td><b>53.04±0.09</b></td><td>40.01±0.51</td><td>83.98±0.22</td><td>65.00±1.11</td></tr>
60
  </tbody></table></div>
61
+ <h2>4. Per-class Dice (%) — multi-class datasets</h2>
62
+ <div class='cap'>Mean per-class Dice over all test images/runs (0=background excluded; <b>bold</b>=best per class). The <i>macro</i> column averages over a dataset's own foreground classes (a within-dataset mean, not a cross-dataset one).</div>
 
 
 
 
 
 
 
 
 
 
 
 
63
  <h3>ACDC</h3>
64
  <div class='tw'><table class='rt'><thead><tr><th class='m'>Method</th><th>RV</th><th>Myocardium</th><th>LV</th><th class='avg'>macro</th></tr></thead><tbody>
65
  <tr><td class='m'>UNet</td><td>75.3</td><td>78.3</td><td>83.9</td><td class='avg'>79.2</td></tr>
 
105
  <tr><td class='m'>U-Mamba</td><td>61.5</td><td>35.6</td><td>43.4</td><td>14.0</td><td>52.5</td><td class='avg'>41.4</td></tr>
106
  </tbody></table></div>
107
  <hr><h2>Appendix — Experimental setup</h2>
108
+ <p class='cap'>Full per-(dataset,method) values for <b>every</b> metric (IoU, HD95, ASSD, Sensitivity, Specificity, Precision, …) are in <code>summary.csv</code>; the Dice table as LaTeX is in <code>summary.tex</code>.</p>
109
  <h2>A. Datasets</h2>
110
  <table class='info'><tr><th>#</th><th>Dataset</th><th>Modality</th><th>Target</th><th>Cls</th><th>Ch</th><th>Native size</th><th>Protocol</th><th>Train/Val/Test</th></tr>
111
  <tr><td>1</td><td class='l'>CVC-ClinicDB</td><td class='l'>Colonoscopy (endoscopy)</td><td class='l'>Polyp</td><td>2</td><td>RGB</td><td>384×288</td><td>official</td><td>490 / 61 / 61</td></tr>
results/summary.md CHANGED
@@ -1,14 +1,14 @@
1
  ## Main results — Dice (mean±SD %, ↑)
2
 
3
- _**Bold** = best or not significantly worse than best per dataset (paired Wilcoxon on per-image Dice, p≥0.05)._
4
 
5
- | Method | CVC-ClinicDB | Kvasir-SEG | FIVES | BUSI | REFUGE2 | ACDC | IDRiD | PanNuke | ISIC2018 | KiTS19 | Avg |
6
- |---|---|---|---|---|---|---|---|---|---|---|---|
7
- | UNet | **94.49±0.14** | **88.41±0.54** | 86.81±0.08 | 72.76±2.47 | 84.76±0.89 | 77.78±0.39 | 49.75±0.65 | 49.85±0.33 | 90.08±0.12 | 74.59±5.62 | 76.9 |
8
- | UNet++ | **93.92±0.51** | **87.88±0.19** | 86.77±0.80 | 74.67±0.68 | **86.66±1.10** | **79.75±0.57** | 50.52±2.11 | 50.01±0.13 | 89.92±0.06 | 72.19±3.00 | 77.2 |
9
- | DeepLabV3+ | 93.83±0.42 | **90.39±0.47** | 80.97±0.30 | **76.12±1.20** | 84.26±0.94 | 78.33±0.49 | 49.34±0.48 | 52.35±0.35 | **90.68±0.10** | **78.70±1.34** | 77.5 |
10
- | Attention-UNet | 91.73±0.33 | 87.58±0.11 | 85.64±0.20 | 65.98±1.11 | 75.49±4.01 | 74.57±0.15 | 44.65±0.61 | 45.87±0.39 | 88.57±0.25 | 64.74±1.44 | 72.5 |
11
- | TransUNet | **94.29±0.31** | **90.76±0.37** | 73.10±0.84 | **76.53±1.65** | 76.90±1.37 | 79.46±0.44 | 25.66±3.11 | **53.60±0.35** | 90.83±0.27 | 76.82±0.93 | 73.8 |
12
- | Swin-UNet | 92.72±0.33 | **90.15±0.62** | 68.78±0.18 | **76.00±0.94** | 80.95±4.15 | 71.26±1.36 | 20.95±15.57 | **54.34±0.42** | **91.04±0.14** | 63.42±2.92 | 71.0 |
13
- | nnU-Net | **94.24±0.64** | **90.44±0.88** | **89.00±0.35** | **75.39±1.35** | 85.55±0.23 | 73.81±0.38 | **64.64±0.11** | 47.82±0.55 | **90.20±0.14** | 70.44±1.93 | 78.2 |
14
- | U-Mamba | 92.98±0.55 | **91.23±0.14** | 82.68±1.21 | 73.73±0.35 | 82.42±1.25 | 68.68±0.89 | **64.64±0.10** | 49.40±0.51 | **90.22±0.21** | 72.41±1.03 | 76.8 |
 
1
  ## Main results — Dice (mean±SD %, ↑)
2
 
3
+ _**Bold** = best or not significantly worse than best per dataset (paired Wilcoxon on per-image Dice, p≥0.05). No cross-dataset average column — the seven modalities are too heterogeneous for one number to be meaningful._
4
 
5
+ | Method | CVC-ClinicDB | Kvasir-SEG | FIVES | BUSI | REFUGE2 | ACDC | IDRiD | PanNuke | ISIC2018 | KiTS19 |
6
+ |---|---|---|---|---|---|---|---|---|---|---|
7
+ | UNet | **94.49±0.14** | **88.41±0.54** | 86.81±0.08 | 72.76±2.47 | 84.76±0.89 | 77.78±0.39 | 49.75±0.65 | 49.85±0.33 | 90.08±0.12 | 74.59±5.62 |
8
+ | UNet++ | **93.92±0.51** | **87.88±0.19** | 86.77±0.80 | 74.67±0.68 | **86.66±1.10** | **79.75±0.57** | 50.52±2.11 | 50.01±0.13 | 89.92±0.06 | 72.19±3.00 |
9
+ | DeepLabV3+ | 93.83±0.42 | **90.39±0.47** | 80.97±0.30 | **76.12±1.20** | 84.26±0.94 | 78.33±0.49 | 49.34±0.48 | 52.35±0.35 | **90.68±0.10** | **78.70±1.34** |
10
+ | Attention-UNet | 91.73±0.33 | 87.58±0.11 | 85.64±0.20 | 65.98±1.11 | 75.49±4.01 | 74.57±0.15 | 44.65±0.61 | 45.87±0.39 | 88.57±0.25 | 64.74±1.44 |
11
+ | TransUNet | **94.29±0.31** | **90.76±0.37** | 73.10±0.84 | **76.53±1.65** | 76.90±1.37 | 79.46±0.44 | 25.66±3.11 | **53.60±0.35** | 90.83±0.27 | 76.82±0.93 |
12
+ | Swin-UNet | 92.72±0.33 | **90.15±0.62** | 68.78±0.18 | **76.00±0.94** | 80.95±4.15 | 71.26±1.36 | 20.95±15.57 | **54.34±0.42** | **91.04±0.14** | 63.42±2.92 |
13
+ | nnU-Net | **94.24±0.64** | **90.44±0.88** | **89.00±0.35** | **75.39±1.35** | 85.55±0.23 | 73.81±0.38 | **64.64±0.11** | 47.82±0.55 | **90.20±0.14** | 70.44±1.93 |
14
+ | U-Mamba | 92.98±0.55 | **91.23±0.14** | 82.68±1.21 | 73.73±0.35 | 82.42±1.25 | 68.68±0.89 | **64.64±0.10** | 49.40±0.51 | **90.22±0.21** | 72.41±1.03 |
results/summary.tex CHANGED
@@ -1,17 +1,18 @@
1
  % Main results: Dice (mean over seeds, %). Bold = best or not significantly
2
  % worse than best per dataset (paired Wilcoxon on per-image Dice, p>=0.05).
3
- \begin{tabular}{lccccccccccc}
 
4
  \toprule
5
- Method & CVC-ClinicDB & Kvasir-SEG & FIVES & BUSI & REFUGE2 & ACDC & IDRiD & PanNuke & ISIC2018 & KiTS19 & Avg \\
6
  \midrule
7
- UNet & \textbf{94.5} & \textbf{88.4} & 86.8 & 72.8 & 84.8 & 77.8 & 49.7 & 49.8 & 90.1 & 74.6 & 76.9 \\
8
- UNet++ & \textbf{93.9} & \textbf{87.9} & 86.8 & 74.7 & \textbf{86.7} & \textbf{79.7} & 50.5 & 50.0 & 89.9 & 72.2 & 77.2 \\
9
- DeepLabV3+ & 93.8 & \textbf{90.4} & 81.0 & \textbf{76.1} & 84.3 & 78.3 & 49.3 & 52.4 & \textbf{90.7} & \textbf{78.7} & 77.5 \\
10
- Attention-UNet & 91.7 & 87.6 & 85.6 & 66.0 & 75.5 & 74.6 & 44.6 & 45.9 & 88.6 & 64.7 & 72.5 \\
11
  \midrule
12
- TransUNet & \textbf{94.3} & \textbf{90.8} & 73.1 & \textbf{76.5} & 76.9 & 79.5 & 25.7 & \textbf{53.6} & 90.8 & 76.8 & 73.8 \\
13
- Swin-UNet & 92.7 & \textbf{90.1} & 68.8 & \textbf{76.0} & 80.9 & 71.3 & 21.0 & \textbf{54.3} & \textbf{91.0} & 63.4 & 71.0 \\
14
- nnU-Net & \textbf{94.2} & \textbf{90.4} & \textbf{89.0} & \textbf{75.4} & 85.5 & 73.8 & \textbf{64.6} & 47.8 & \textbf{90.2} & 70.4 & \textbf{78.2} \\
15
- U-Mamba & 93.0 & \textbf{91.2} & 82.7 & 73.7 & 82.4 & 68.7 & \textbf{64.6} & 49.4 & \textbf{90.2} & 72.4 & 76.8 \\
16
  \bottomrule
17
  \end{tabular}
 
1
  % Main results: Dice (mean over seeds, %). Bold = best or not significantly
2
  % worse than best per dataset (paired Wilcoxon on per-image Dice, p>=0.05).
3
+ % No cross-dataset average column (modalities too heterogeneous).
4
+ \begin{tabular}{lcccccccccc}
5
  \toprule
6
+ Method & CVC-ClinicDB & Kvasir-SEG & FIVES & BUSI & REFUGE2 & ACDC & IDRiD & PanNuke & ISIC2018 & KiTS19 \\
7
  \midrule
8
+ UNet & \textbf{94.5} & \textbf{88.4} & 86.8 & 72.8 & 84.8 & 77.8 & 49.7 & 49.8 & 90.1 & 74.6 \\
9
+ UNet++ & \textbf{93.9} & \textbf{87.9} & 86.8 & 74.7 & \textbf{86.7} & \textbf{79.7} & 50.5 & 50.0 & 89.9 & 72.2 \\
10
+ DeepLabV3+ & 93.8 & \textbf{90.4} & 81.0 & \textbf{76.1} & 84.3 & 78.3 & 49.3 & 52.4 & \textbf{90.7} & \textbf{78.7} \\
11
+ Attention-UNet & 91.7 & 87.6 & 85.6 & 66.0 & 75.5 & 74.6 & 44.6 & 45.9 & 88.6 & 64.7 \\
12
  \midrule
13
+ TransUNet & \textbf{94.3} & \textbf{90.8} & 73.1 & \textbf{76.5} & 76.9 & 79.5 & 25.7 & \textbf{53.6} & 90.8 & 76.8 \\
14
+ Swin-UNet & 92.7 & \textbf{90.1} & 68.8 & \textbf{76.0} & 80.9 & 71.3 & 21.0 & \textbf{54.3} & \textbf{91.0} & 63.4 \\
15
+ nnU-Net & \textbf{94.2} & \textbf{90.4} & \textbf{89.0} & \textbf{75.4} & 85.5 & 73.8 & \textbf{64.6} & 47.8 & \textbf{90.2} & 70.4 \\
16
+ U-Mamba & 93.0 & \textbf{91.2} & 82.7 & 73.7 & 82.4 & 68.7 & \textbf{64.6} & 49.4 & \textbf{90.2} & 72.4 \\
17
  \bottomrule
18
  \end{tabular}