GCH 2026 · ACM JOCCH Special Issue on Visual Heritage
TEXMET : A Curated Dataset and Deep Learning Benchmark for Archaeological Textile Reconstruction
Hamza Zafar · Jon Yngve Hardeberg · Davit Gigilashvili
Colourlab, Department of Computer Science, NTNU
Oseberg fragment: G. A. Pantos, Museum of Cultural History, UiO
Hi, I'm Hamza, Colourlab at NTNU. Joint work with Jon Hardeberg and Davit Gigilashvili.
Published in the ACM JOCCH special issue on visual heritage.
[click] Pieces snap together: "This is what we want a computer to do, on real Viking textiles."
Oseberg ship burial · Norway · 834 CE
A Viking ship grave of two high-status women, found in 1903. Its textiles are among the finest of the Viking Age, and survive only as fragments.
Hundreds of pieces.
No ground truth.Nobody knows how they originally fit together.
Goal: put them back together.
Oseberg ship burial, 834 CE. Images: G. A. Pantos, Museum of Cultural History, UiO. Not to scale.
(Read the top line.) Oseberg ship burial, 834 CE, found 1903 near Tønsberg, Norway: a ship grave of two high-status women. Some of the finest Viking Age textiles we know.
[click] Today they survive as hundreds of fragments, at the Museum of Cultural History in Oslo.
[click] And there is no ground truth: nobody knows how they originally fit together.
[click] Our goal: help put them back together.
What we have to work with
Fadedcolors almost gone
Torn edgesirregular, not a grid
Missing partsholes, lost areas
Today's puzzle benchmarks look nothing like this.
Oseberg fragment, 834 CE. Image: G. A. Pantos, Museum of Cultural History, UiO.
Zoom into one piece. This is what a model would have to read.
[click] Colors faded after more than a thousand years in the ground.
[click] Edges torn and irregular, nothing like a clean grid.
[click] Parts simply missing.
[click] Bridge: puzzle-solving research tests on clean photos cut into perfect squares. That's the gap.
Can AI put the pieces back?
Illustration · 25 pieces, shuffled and rotated
Puzzle solver
An AI model: give it shuffled pieces , it predicts where each one goes .
Today's best solvers are strong on clean photos.
But do they work on a textile nearly 1,200 years old?
Allori, The Gathering of Manna , 1595–96. The Met, Open Access (CC0); in the TEXMET test set.
[click] This is the task, on a textile: pieces shuffled and rotated, and a solver has to put them back.
[click] That's what a puzzle solver does: an AI model that takes shuffled pieces and predicts where each one goes. The best ones are strong on clean photos.
[click] Our question: do they still work on Viking textiles nearly 1,200 years old?
(If asked: in our experiments pieces are not rotated; this slide just shows the idea.)
From the real problem to a first step
The real problem
Which piece fits where?
Our first step
Can a model read the weave well enough to put it back?
Standard benchmark setting: 9 pieces, no rotation. Each Oseberg fragment photo becomes its own puzzle.
Oseberg fragments: G. A. Pantos, Museum of Cultural History, UiO. Not to scale.
Back to Oseberg. The real problem: hundreds of fragments, and we don't know which fits where.
That's too big to tackle in one go, so we took a first step. [click] Take one fragment photo.
[click] Cut it into pieces. [click] Shuffle them. [click] Ask the model to put them back.
This tests the core skill: can a model read woven patterns well enough to know which piece goes where? Without that, the real problem is out of reach.
(Detail if asked: standard 3×3 setting, no rotation; within one fragment, not across fragments.)
Three state-of-the-art solvers
JPDVTCVPR 2024
Starts from a noisy guess of where pieces go, and cleans it up step by step.
FCViT2025
Predicts the coordinates of each piece directly.
DiffAssembleCVPR 2024
Links the pieces in a graph : each piece looks at its neighbors.
All three learned from ImageNet: 1.28 million everyday photos.
Animations are illustrations of each idea. Liu et al. CVPR 2024; Kim et al. 2025; Scarpellini et al. CVPR 2024.
We tested three state-of-the-art solvers, each with a different idea.
[click] JPDVT: starts from a noisy guess of the positions and refines it step by step (diffusion, with a vision transformer).
[click] FCViT: predicts each piece's x,y coordinates directly (regression).
[click] DiffAssemble: puts the pieces in a graph, so each piece's position is refined by looking at the others (graph + diffusion).
[click] And all three learned from ImageNet: 1.28 million everyday photos. Keep that in mind.
Why a new dataset?
All three learned from everyday photos .Not from historical textiles.
We looked for textile data
✗ TextileNet
760k images, but modern fashion . Nothing historical.
✗ RePAIR
Real fragments, but frescoes , not woven textiles. Restricted license.
✗ Puzzle benchmarks
ImageNet, CelebA-HQ: everyday photos and faces . No textiles.
Images: TextileNet, Zhong et al. 2023, Fig. 4; RePAIR, Tsesmelis et al., NeurIPS 2024, Fig. 1; ImageNet samples.
Nothing fit. So we built one.
All three solvers learned from everyday photos.
[click] Not historical textiles.
[click] So we looked. TextileNet: huge, but modern fashion, clothes from online shops. [click] RePAIR: real fragments, but frescoes, and restricted. [click] The puzzle benchmarks: everyday photos and faces.
[click] Nothing fit. So we built one.
Building TEXMET
−4,908 Poor qualityarmor, weapons
−3,808 Noisethreads, near-empty, incl. 2,567 duplicates
55,007
train 14,915 val 1,864 test 1,865
Real TEXMET candidates and flagged images from our curation sessions (The Met Open Access, CC0). Map and fingerprints are schematic.
We asked The Met for every textile and tapestry: 55,007 images, about three days of harvesting through their API.
[click] One main image per object: 27,360.
[click] Every image gets a fingerprint: CLIP turns it into 512 numbers.
[click] UMAP draws a map of those fingerprints: similar images land close together, odd ones stand out.
[click] With similarity search (LanceDB) we flag what doesn't belong: helmets filed as textiles, single threads, the same object photographed again and again.
[click] 8,716 removed: 4,908 poor quality, 3,808 noise, including 2,567 duplicates.
[click] 18,644 curated historical textiles, 68% of what we started with, split into train, validation and test.
Introducing TEXMET
18,644
historical textiles, curated for puzzle solving
European 46%
Asian 28%
Islamic 16%
11 more
14,915 / 1,864 / 1,865
train / val / test
Images: The Met Open Access (CC0). Share of 18,644 by Met department. Downloads: Hugging Face, Oct 2026.
This is TEXMET: 18,644 historical textiles, curated for puzzle solving.
[click] Spread across The Met's departments: European, Asian, Islamic, and 11 more. [clicks] A few examples from each.
[click] CC0, free for anyone, museums included. Over a thousand downloads already. Fixed train, validation and test splits, so results are comparable.
[click] Scan to get it.
Round 1: the solvers as they are
Trained on ImageNet only, then tested on TEXMET 1,865 images and Oseberg 45 real fragments
FCViT collapses 68.8% → 8.3% on TEXMET
JPDVT halves 67.9% → 32.9% on TEXMET
DiffAssemble holds up 56.6% → 65.1% on TEXMET
On real Oseberg , all three ≤ 27% JPDVT 20.0 · FCViT 24.4 · DiffAssemble 26.7
Puzzle accuracy: share of puzzles with every piece in the right place. 3×3, no rotation.
Round 1: the solvers as they come, trained on ImageNet. [click] On ImageNet itself: 57 to 69 percent.
[click] On TEXMET: FCViT collapses to 8, JPDVT halves to 33. DiffAssemble holds up, 65.
[click] On the real Oseberg fragments all three are at 27 percent or below.
Score is strict: a puzzle counts only if every piece is right.
They struggle on textiles
Does learning from TEXMET help?
We fine-tuned all three on TEXMET 14,915 training images.
JPDVT
Catastrophic forgetting
32.9 → 10.9%on TEXMET
FCViT
Barely adapts
8.3 → 10.9%on TEXMET
DiffAssemble
Adapts. We carry it forward. It also handles:
missing pieces
any puzzle size
→
Oseberg is never used for training.
They struggle on textiles. So: does learning from TEXMET help?
[click] We fine-tuned all three on TEXMET's 14,915 training images.
[click] JPDVT: catastrophic forgetting, 33 down to 11 on TEXMET. [click] FCViT barely adapts, 8 to 11.
[click] DiffAssemble adapts, so we carry it forward. It is also the only one that handles rotation, missing pieces and different puzzle sizes, which real fragments need.
[click] And the Oseberg fragments are never used for training.
DiffAssemble: before → after TEXMET
2.4×
on real Oseberg fragments
12 → 29 of 45 fully reassembled. Never seen in training.
Puzzle accuracy, 3×3. TEXMET test: 1,865 images. Oseberg: 45 fragments.
DiffAssemble, before and after learning from TEXMET.
[click] On TEXMET: 65 to 86 percent, plus 21 points.
[click] On the real Oseberg fragments: 27 to 64 percent, plus 38 points.
[click] That's 2.4 times. 12 of 45 fragments fully reassembled before, 29 after. And it never saw an Oseberg fragment in training.
DiffAssemble on real Oseberg fragments
Every piece back in place.
Each fragment photo cut into 3×3, shuffled, and reassembled by the model.
DiffAssemble reconstructions of Oseberg fragment photos. Images: G. A. Pantos, Museum of Cultural History, UiO.
Here's what that looks like on real fragments. [click] Each photo cut into nine pieces and shuffled; DiffAssemble puts them back.
[click] Every piece in place, nine of nine, on badly degraded fragments.
Pieces are not rotated in these experiments. If asked about rotation: DiffAssemble supports it; we reproduced it with full rotation on faces (CelebA, 6×6 to 12×12), but kept the benchmark rotation-free so all three solvers compete fairly (JPDVT and FCViT can't rotate). A rotation-enabled 6×6 run is future work.
Is it reading the fabric , or just the outline?
Fabric only: square crops from inside each fragment, no outline. 206 crops from the 45 Oseberg fragments.
Outlines help. But on fabric alone, the fine-tuned model still wins: 39.8 vs 27.7 .
DiffAssemble on Oseberg, 3×3 puzzle accuracy. Random guessing ≈ 0.0003%. Image: G. A. Pantos, Museum of Cultural History, UiO.
A fair question: is the model reading the fabric, or just matching outlines?
[click] So we cut square crops from inside each fragment. [click] Only fabric, no edges: 206 crops from the 45 fragments.
[click] With outlines, the fine-tuned model scores 64; on fabric only, 40. The baseline: 27 with outlines, 28 on fabric only.
[click] So outlines help, but on fabric alone the fine-tuned model still clearly beats the baseline. It learned textile patterns.
(If asked about TEXMET: fine-tuned 85.9 → 27.1 with crops vs baseline 25.8; on intact museum images it leans more on boundaries. All far above random.)
Real fragments have holes .
Illustration
1 · When parts are missing, do the solvers still work?
Not all of them. FCViT falls from 70.6% to 46.1%. DiffAssemble barely moves.
2 · Can an AI that fills in the holes rescue them?
Partly. Every model improves, none gets back to where it started.
DiffAssemble, the model we carried forward, copes best with holes.
Test: 1,000 ImageNet photos, 3×3 puzzle accuracy, mask from one Oseberg fragment (35.6% removed), inpainting by ASUKA. Illustration: A. Allori, The Gathering of Manna, The Met (CC0), not a test image.
Real fragments are never complete: holes, frayed edges. Two questions.
This shape is the outline of one real Oseberg fragment, holes included. We used it as a stencil.
[click] Here on a tapestry to show the idea. The real test: 1,000 complete everyday photos (ImageNet), because to measure damage you need the complete picture. About a third of each photo is gone. Question 1: do the solvers still work? Not all of them. FCViT drops from 71 to 46. DiffAssemble barely moves.
[click] Question 2: can an AI that fills in the holes rescue them? We used ASUKA, an inpainting model. Partly: everyone improves, nobody fully recovers.
[click] And the model we carried forward, DiffAssemble, is the one that copes best.
(If asked why photos, not textiles: a controlled test, same damage on every image. Paper also tests a plain rectangle mask: shape matters more than amount.)
(If asked: JPDVT scores 87.8 on this 1,000-photo subset vs 67.9 on the full split; compare within this test only.)
Limitations and future work
Limitations
Future work
Regular 3×3 grids, no rotationevery piece is a square of the same size
→
Irregular fragment geometriesreal shapes, any size, with rotation
Within-fragment onlyno ground truth for how fragments fit together
→
Multi-textile reconstructionwhole textiles from mixed fragment collections
45 fragments, synthetic cutsTEXMET puzzles are cut from intact images
→
Larger, real fragment datasetsincl. real archaeological fragment imagery
Honest limitations, each with where it goes next.
[click] Our pieces are regular 3×3 squares, no rotation. [click] Next: irregular fragment shapes, with rotation. DiffAssemble can in principle handle this.
[click] We only rebuild inside one fragment, because nobody knows how the Oseberg fragments fit together. [click] Next: reassembling whole textiles from mixed fragment collections.
[click] 45 fragments, and TEXMET puzzles are cut from intact images. [click] Next: larger datasets with real fragment imagery.
[click] And beyond textiles: ceramics, frescoes, manuscripts.
Key takeaways
1
18,644
TEXMET: the first textile benchmark for puzzle solving
Curated from The Met Open Access, public on Hugging Face.
2
26.7 → 64.4%
Domain adaptation is essential
Natural-image models fail on textiles. Fine-tuning DiffAssemble on TEXMET, tested on Oseberg.
3
39.8% vs 27.7%
Textile features, not just boundaries
Fine-tuned vs baseline on inscribed, fabric-only crops of Oseberg fragments.
Three things to take home.
[click] One: TEXMET, 18,644 textile images, the first textile benchmark for puzzle solving. Open, use it.
[click] Two: domain adaptation is essential. Same model, trained on textiles: 27 to 64 on real Viking Age fragments.
[click] Three: it learns textile features, not just shapes. On fabric alone, 40 vs 28.
Now recruiting: 15 PhD positions UNCHANGE, an MSCA Doctoral Network in computational and heritage science, 2027–2031. Scan the code on the flyer.
Hamza Zafar · Jon Yngve Hardeberg · Davit Gigilashvili
Thank you. Happy to take questions. And one more thing: UNCHANGE is recruiting 15 PhD positions across Europe in computational heritage science. The code on the flyer goes straight to the vacancies.