bifold-pathomics/ICMIL
Tabular Classification • Updated
elephant dict | fox dict | tiger dict |
|---|---|---|
{"split_0":{"X_test":[[0.20358073711395264,0.8823076486587524,-0.8126850724220276,0.701600193977356,(...TRUNCATED) | {"split_0":{"X_test":[[-0.10093117505311966,-0.06233304738998413,-0.17069695889949799,-0.22150528430(...TRUNCATED) | {"split_0":{"X_test":[[-0.09764391928911209,-0.197565957903862,0.2676355838775635,-0.306875050067901(...TRUNCATED) |
{"split_0":{"X_test":[[-0.16982656717300415,0.02463308721780777,-0.4642283618450165,-0.1949669718742(...TRUNCATED) | {"split_0":{"X_test":[[-0.24809493124485016,0.06875063478946686,0.10756005346775055,-0.2858611941337(...TRUNCATED) | {"split_0":{"X_test":[[-0.18668566644191742,1.4483318328857422,-2.325909376144409,3.128270387649536,(...TRUNCATED) |
{"split_0":{"X_test":[[-0.21407780051231384,1.0570420026779175,-1.1312700510025024,1.302950024604797(...TRUNCATED) | {"split_0":{"X_test":[[-0.23636110126972198,-0.064284548163414,0.01791319251060486,-0.73595649003982(...TRUNCATED) | {"split_0":{"X_test":[[-0.2575658857822418,0.5965065956115723,-0.2430342137813568,-0.889397978782653(...TRUNCATED) |
{"split_0":{"X_test":[[-0.23719358444213867,0.2706124782562256,-0.5195508003234863,0.005889922380447(...TRUNCATED) | {"split_0":{"X_test":[[-0.0019308626651763916,-0.16746772825717926,-0.2435653656721115,-0.3078185915(...TRUNCATED) | {"split_0":{"X_test":[[-0.5310884118080139,8.056273460388184,-5.883930683135986,5.995032787322998,-3(...TRUNCATED) |
{"split_0":{"X_test":[[2.6437997817993164,5.7951202392578125,-1.9970937967300415,3.2312214374542236,(...TRUNCATED) | {"split_0":{"X_test":[[-0.10177141427993774,-0.10235442221164703,-0.5470273494720459,-0.073118537664(...TRUNCATED) | {"split_0":{"X_test":[[-0.22565299272537231,1.3203201293945312,-0.5813201665878296,-0.45791050791740(...TRUNCATED) |
{"split_0":{"X_test":[[-0.31689855456352234,0.13705997169017792,-0.17784273624420166,-0.015394113957(...TRUNCATED) | {"split_0":{"X_test":[[-0.003554806113243103,-0.08238303661346436,-0.48608192801475525,-0.1964388042(...TRUNCATED) | {"split_0":{"X_test":[[-0.21338875591754913,3.1814749240875244,-2.1028101444244385,1.292636036872863(...TRUNCATED) |
{"split_0":{"X_test":[[0.29148802161216736,0.8373207449913025,-0.765092134475708,0.9086711406707764,(...TRUNCATED) | {"split_0":{"X_test":[[-0.1557401418685913,-0.049052149057388306,1.1198816299438477,-0.1196133270859(...TRUNCATED) | {"split_0":{"X_test":[[-0.2713748514652252,4.8510565757751465,2.0542845726013184,-0.9051802754402161(...TRUNCATED) |
{"split_0":{"X_test":[[-0.0002851933240890503,-0.6698728799819946,-0.6074514985084534,-0.16777311265(...TRUNCATED) | {"split_0":{"X_test":[[0.1559167355298996,-0.18846669793128967,-0.3489627540111542,-0.21676087379455(...TRUNCATED) | {"split_0":{"X_test":[[-0.2452605813741684,-1.014371395111084,-0.8036419153213501,1.008884072303772,(...TRUNCATED) |
{"split_0":{"X_test":[[-0.3044169843196869,-0.13266700506210327,-0.24992911517620087,-0.521202862262(...TRUNCATED) | {"split_0":{"X_test":[[-0.18431809544563293,-0.005312461405992508,-0.5767770409584045,-0.04099402576(...TRUNCATED) | {"split_0":{"X_test":[[-0.22723388671875,2.8062236309051514,1.5552904605865479,-0.3335218131542206,2(...TRUNCATED) |
{"split_0":{"X_test":[[-0.34923553466796875,-0.14766845107078552,0.12453916668891907,-1.133208036422(...TRUNCATED) | {"split_0":{"X_test":[[-0.22292201220989227,-0.08511336147785187,0.4062241315841675,-0.6391991376876(...TRUNCATED) | {"split_0":{"X_test":[[-0.1330566704273224,0.09036731719970703,1.3072388172149658,-0.445679634809494(...TRUNCATED) |
📄 Paper (arXiv:2606.06458) · 💻 Code · 🤗 Model
The twelve multiple-instance learning (MIL) benchmarks used to evaluate ICMIL and the baselines. ICMIL is an in-context learner that labels new bags of instances from a handful of labelled bags in a single forward pass, without task-specific training. The train/test splits here are fixed, so numbers from different methods are comparable.
| File | Benchmark tasks | Source features |
|---|---|---|
uci_benchmark.h5 |
uci_musk1, uci_musk2, uci_letters, uci_hepmass |
UCI raw attributes, PCA to 25 dims (16 for letters) |
mnist_xai_benchmark_100bags.h5 |
mnist_xai_smil, mnist_xai_pos_neg, mnist_xai_adjacent_pairs, mnist_xai_four_bags |
MNIST digits, ResNet-18 embeddings, PCA to 25 |
andrews_mil_benchmark.h5 |
andrews_fox, andrews_tiger, andrews_elephant |
Blobworld region descriptors (230 dims), PCA to 25 |
tcga_uni2_luad_vs_lusc.h5 |
tcga_fixed |
TCGA WSI patches, UNI2 features (1536 dims), PCA to 25 |
rsna_ich_resnet50_draws_100bags.h5 |
rsna_ich_draws |
RSNA-ICH CT slices, ResNet-50 features (2048 dims), PCA to 25 |
Each file is an HDF5 file with the train/test splits already made, so you can load a benchmark and start straight away:
import h5py
with h5py.File("uci_benchmark.h5") as f:
g = f["musk1"]["split_0"]
X_train, y_train = g["X_train"][:], g["y_train"][:]
X_test, y_test = g["X_test"][:], g["y_test"][:]
X_train.shape # (n_bags, bag_size, n_features)
y_train.shape # (n_bags,) — one label per bag
Finding the splits inside a file:
split_0, split_1, … where the split is fixed, and draw_0,
draw_1, … where it is one of several random draws.musk1/split_0. The TCGA and RSNA files each hold a single task, so
the splits sit at the top level: split_0, draw_0.| File | Source | Licence |
|---|---|---|
uci_benchmark.h5 |
UCI Musk v1 / v2, Letter Recognition, HEPMASS | CC BY 4.0 |
mnist_xai_benchmark_100bags.h5 |
MNIST | CC BY-SA 3.0 |
andrews_mil_benchmark.h5 |
Fox / Tiger / Elephant image bags | none stated |
tcga_uni2_luad_vs_lusc.h5 |
TCGA LUAD/LUSC slides, UNI2-h features | TCGA open access; UNI2-h CC BY-NC-ND 4.0 |
rsna_ich_resnet50_draws_100bags.h5 |
RSNA-ICH, via torchmil | RSNA challenge terms |
@article{mollers2026incontext,
title = {In-Context Multiple Instance Learning},
author = {M\"ollers, Alexander and Sextro, Marvin and Hense, Julius and Dernbach, Gabriel and M\"uller, Klaus-Robert},
journal = {arXiv preprint arXiv:2606.06458},
year = {2026}
}