Spaces:
Running
Running
Rebuild from 42a0074
Browse files- assets/css/content.css +13 -0
- assets/js/nav.js +24 -11
- assets/js/search.js +1 -1
- content/part-2/evaluation-framework/analysis/description-retrieval.html +102 -0
- content/part-2/evaluation-framework/analysis/local-models.html +104 -0
- content/part-2/evaluation-framework/extraction/index.html +0 -0
- content/part-2/evaluation-framework/index.html +11 -5
- content/part-2/framework/applied.html +1 -1
- content/part-2/framework/pyramid-images.html +0 -0
- content/part-2/framework/pyramid-queries.html +0 -0
- content/part-2/pool/{dataset.html → v0.html} +1 -1
- content/part-2/pool/v1.html +236 -0
- content/part-2/repository.html +13 -2
- nav.json +69 -44
assets/css/content.css
CHANGED
|
@@ -331,3 +331,16 @@
|
|
| 331 |
.content .pyramid-figure { grid-template-columns: 1fr; }
|
| 332 |
.content .pyramid-figure figure { position: static; order: -1; max-width: 320px; }
|
| 333 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 331 |
.content .pyramid-figure { grid-template-columns: 1fr; }
|
| 332 |
.content .pyramid-figure figure { position: static; order: -1; max-width: 320px; }
|
| 333 |
}
|
| 334 |
+
|
| 335 |
+
/* Dataset v1: a v0 crop beside the page image(s) that replace it. */
|
| 336 |
+
.content .pairing {
|
| 337 |
+
display: grid;
|
| 338 |
+
grid-template-columns: repeat(auto-fit, minmax(160px, 220px));
|
| 339 |
+
gap: 16px;
|
| 340 |
+
align-items: end;
|
| 341 |
+
margin-bottom: 8px;
|
| 342 |
+
}
|
| 343 |
+
.content .pairing figure { margin: 0; }
|
| 344 |
+
.content .pairing img { display: block; width: 100%; height: auto; }
|
| 345 |
+
.content .pairing figcaption { font-size: 11.5px; text-align: left; }
|
| 346 |
+
.content p.caption-text { font-size: 12.5px; color: var(--text-muted); margin-bottom: 8px; }
|
assets/js/nav.js
CHANGED
|
@@ -1,15 +1,25 @@
|
|
| 1 |
// Tree utilities: flatten, lookup, sidebar rendering, breadcrumbs, pager, child cards.
|
| 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
/**
|
| 4 |
* Flatten the nav tree into a depth-first ordered list of nodes, each
|
| 5 |
-
* annotated with its route path ("/", "/part-2", "/part-2/pool-creation")
|
| 6 |
-
*
|
| 7 |
*/
|
| 8 |
export function flattenTree(root) {
|
| 9 |
const flat = [];
|
| 10 |
|
| 11 |
function visit(node, path, ancestors) {
|
| 12 |
-
const
|
|
|
|
| 13 |
flat.push(entry);
|
| 14 |
const children = node.children || [];
|
| 15 |
children.forEach((child) => {
|
|
@@ -43,7 +53,7 @@ export function buildIndex(root) {
|
|
| 43 |
function annotateSteps(node, label = null, color = null) {
|
| 44 |
let n = 0;
|
| 45 |
(node.children || []).forEach((child) => {
|
| 46 |
-
if (node.steps && child.step !== false) {
|
| 47 |
n += 1;
|
| 48 |
child._step = label ? `${label}.${n}` : `${n}`;
|
| 49 |
child._color = color ?? n;
|
|
@@ -97,7 +107,7 @@ export function renderSidebar(container, root, index, activePath, onNavigate) {
|
|
| 97 |
|
| 98 |
// A part with sub-pages is reached from its label, so its long title
|
| 99 |
// row is dropped and its children sit directly under the label.
|
| 100 |
-
const children = part
|
| 101 |
const label = document.createElement(children.length ? "a" : "span");
|
| 102 |
label.className = "nav-group-label";
|
| 103 |
label.textContent = part.label || part.title;
|
|
@@ -138,7 +148,8 @@ function renderNode(node, path, index, activePath, onNavigate, isTop) {
|
|
| 138 |
link.href = `#${path}`;
|
| 139 |
link.dataset.path = path;
|
| 140 |
|
| 141 |
-
const
|
|
|
|
| 142 |
const expanded = isAncestorOfActive(path, activePath);
|
| 143 |
|
| 144 |
if (hasChildren) {
|
|
@@ -170,7 +181,7 @@ function renderNode(node, path, index, activePath, onNavigate, isTop) {
|
|
| 170 |
if (hasChildren) {
|
| 171 |
const childrenEl = document.createElement("div");
|
| 172 |
childrenEl.className = "nav-children" + (expanded ? "" : " collapsed");
|
| 173 |
-
|
| 174 |
const childPath = `${path}/${child.slug}`;
|
| 175 |
childrenEl.appendChild(renderNode(child, childPath, index, activePath, onNavigate, false));
|
| 176 |
});
|
|
@@ -271,12 +282,13 @@ export function renderPageHead(container, entry, root) {
|
|
| 271 |
export function renderChildren(container, entry) {
|
| 272 |
container.innerHTML = "";
|
| 273 |
const node = entry.node;
|
| 274 |
-
|
|
|
|
| 275 |
|
| 276 |
if (node.steps) {
|
| 277 |
const stepper = document.createElement("div");
|
| 278 |
stepper.className = "stepper";
|
| 279 |
-
|
| 280 |
const path = `${entry.path}/${child.slug}`;
|
| 281 |
const n = child._step;
|
| 282 |
const step = document.createElement("div");
|
|
@@ -297,7 +309,7 @@ export function renderChildren(container, entry) {
|
|
| 297 |
|
| 298 |
const grid = document.createElement("div");
|
| 299 |
grid.className = "card-grid";
|
| 300 |
-
|
| 301 |
const path = `${entry.path}/${child.slug}`;
|
| 302 |
const card = document.createElement("a");
|
| 303 |
card.className = "card";
|
|
@@ -314,8 +326,9 @@ export function renderChildren(container, entry) {
|
|
| 314 |
|
| 315 |
/* ---------------- Pager (prev/next) ---------------- */
|
| 316 |
|
| 317 |
-
export function renderPager(container,
|
| 318 |
container.innerHTML = "";
|
|
|
|
| 319 |
const idx = flat.findIndex((e) => e.path === activePath);
|
| 320 |
if (idx < 0) return;
|
| 321 |
|
|
|
|
| 1 |
// Tree utilities: flatten, lookup, sidebar rendering, breadcrumbs, pager, child cards.
|
| 2 |
|
| 3 |
+
/**
|
| 4 |
+
* A node marked `"hidden": true` is still routable (a direct link opens it)
|
| 5 |
+
* but is left out of the sidebar, the child cards, the step numbering, the
|
| 6 |
+
* pager and search, and so are its descendants.
|
| 7 |
+
*/
|
| 8 |
+
export function visibleChildren(node) {
|
| 9 |
+
return (node.children || []).filter((child) => !child.hidden);
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
/**
|
| 13 |
* Flatten the nav tree into a depth-first ordered list of nodes, each
|
| 14 |
+
* annotated with its route path ("/", "/part-2", "/part-2/pool-creation"),
|
| 15 |
+
* its parent chain (for breadcrumbs) and whether it is hidden.
|
| 16 |
*/
|
| 17 |
export function flattenTree(root) {
|
| 18 |
const flat = [];
|
| 19 |
|
| 20 |
function visit(node, path, ancestors) {
|
| 21 |
+
const hidden = Boolean(node.hidden) || ancestors.some((a) => a.hidden);
|
| 22 |
+
const entry = { node, path, ancestors, hidden };
|
| 23 |
flat.push(entry);
|
| 24 |
const children = node.children || [];
|
| 25 |
children.forEach((child) => {
|
|
|
|
| 53 |
function annotateSteps(node, label = null, color = null) {
|
| 54 |
let n = 0;
|
| 55 |
(node.children || []).forEach((child) => {
|
| 56 |
+
if (node.steps && child.step !== false && !child.hidden) {
|
| 57 |
n += 1;
|
| 58 |
child._step = label ? `${label}.${n}` : `${n}`;
|
| 59 |
child._color = color ?? n;
|
|
|
|
| 107 |
|
| 108 |
// A part with sub-pages is reached from its label, so its long title
|
| 109 |
// row is dropped and its children sit directly under the label.
|
| 110 |
+
const children = visibleChildren(part);
|
| 111 |
const label = document.createElement(children.length ? "a" : "span");
|
| 112 |
label.className = "nav-group-label";
|
| 113 |
label.textContent = part.label || part.title;
|
|
|
|
| 148 |
link.href = `#${path}`;
|
| 149 |
link.dataset.path = path;
|
| 150 |
|
| 151 |
+
const children = visibleChildren(node);
|
| 152 |
+
const hasChildren = children.length > 0;
|
| 153 |
const expanded = isAncestorOfActive(path, activePath);
|
| 154 |
|
| 155 |
if (hasChildren) {
|
|
|
|
| 181 |
if (hasChildren) {
|
| 182 |
const childrenEl = document.createElement("div");
|
| 183 |
childrenEl.className = "nav-children" + (expanded ? "" : " collapsed");
|
| 184 |
+
children.forEach((child) => {
|
| 185 |
const childPath = `${path}/${child.slug}`;
|
| 186 |
childrenEl.appendChild(renderNode(child, childPath, index, activePath, onNavigate, false));
|
| 187 |
});
|
|
|
|
| 282 |
export function renderChildren(container, entry) {
|
| 283 |
container.innerHTML = "";
|
| 284 |
const node = entry.node;
|
| 285 |
+
const children = visibleChildren(node);
|
| 286 |
+
if (children.length === 0) return;
|
| 287 |
|
| 288 |
if (node.steps) {
|
| 289 |
const stepper = document.createElement("div");
|
| 290 |
stepper.className = "stepper";
|
| 291 |
+
children.forEach((child) => {
|
| 292 |
const path = `${entry.path}/${child.slug}`;
|
| 293 |
const n = child._step;
|
| 294 |
const step = document.createElement("div");
|
|
|
|
| 309 |
|
| 310 |
const grid = document.createElement("div");
|
| 311 |
grid.className = "card-grid";
|
| 312 |
+
children.forEach((child) => {
|
| 313 |
const path = `${entry.path}/${child.slug}`;
|
| 314 |
const card = document.createElement("a");
|
| 315 |
card.className = "card";
|
|
|
|
| 326 |
|
| 327 |
/* ---------------- Pager (prev/next) ---------------- */
|
| 328 |
|
| 329 |
+
export function renderPager(container, allEntries, activePath) {
|
| 330 |
container.innerHTML = "";
|
| 331 |
+
const flat = allEntries.filter((e) => !e.hidden);
|
| 332 |
const idx = flat.findIndex((e) => e.path === activePath);
|
| 333 |
if (idx < 0) return;
|
| 334 |
|
assets/js/search.js
CHANGED
|
@@ -16,7 +16,7 @@ async function buildIndex(flat) {
|
|
| 16 |
|
| 17 |
const docs = await Promise.all(
|
| 18 |
flat
|
| 19 |
-
.filter((e) => e.node.file)
|
| 20 |
.map(async (e, id) => {
|
| 21 |
let text = "";
|
| 22 |
try {
|
|
|
|
| 16 |
|
| 17 |
const docs = await Promise.all(
|
| 18 |
flat
|
| 19 |
+
.filter((e) => e.node.file && !e.hidden)
|
| 20 |
.map(async (e, id) => {
|
| 21 |
let text = "";
|
| 22 |
try {
|
content/part-2/evaluation-framework/analysis/description-retrieval.html
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<p>
|
| 2 |
+
Can a local vision-language model's <em>description</em> of an image stand in for the image
|
| 3 |
+
in retrieval? Each of the four local models describes every image of a pool once, from the
|
| 4 |
+
image alone, and the queries are then matched against the descriptions, never the images
|
| 5 |
+
(condition B of <code>docs/retrieval-test-audit.md</code>). The reference row searches the
|
| 6 |
+
images directly with the strongest text-image encoder of the benchmark (condition A).
|
| 7 |
+
</p>
|
| 8 |
+
|
| 9 |
+
<h2>Setup</h2>
|
| 10 |
+
<ul>
|
| 11 |
+
<li><strong>Queries:</strong> the 50 queries of the pyramid sample, one per paper.</li>
|
| 12 |
+
<li><strong>Pool:</strong> every image those queries are judged against: 732 images,
|
| 13 |
+
85 paper figures and 647 RKD distractors. Each query is ranked against
|
| 14 |
+
the whole pool; only its own targets count as hits.</li>
|
| 15 |
+
<li><strong>Describers:</strong> Qwen3.6, Qwen3.8, Gemma 4 and Mistral 3.2, served locally with
|
| 16 |
+
vLLM, temperature 0, thinking off (Mistral has none). One paragraph of 80–150 words per
|
| 17 |
+
image, with no caption, title or article. The prompt forbids naming an artist, collection,
|
| 18 |
+
date or specific work unless it is legible in the image.</li>
|
| 19 |
+
<li><strong>Matching:</strong> BM25 (k1 1.2, b 0.75) over the words of
|
| 20 |
+
the description, and a dense text embedder (<code>Qwen/Qwen3-Embedding-0.6B@97b0c61</code>, cosine). Nothing tuned.</li>
|
| 21 |
+
<li><strong>Statistics:</strong> mean over queries, 95% interval from 2,000 resamples of queries.
|
| 22 |
+
Bold marks the best description method.</li>
|
| 23 |
+
</ul>
|
| 24 |
+
|
| 25 |
+
<h2>Results</h2>
|
| 26 |
+
<h3>Full pool (732 images)</h3>
|
| 27 |
+
<div class="table-wrap"><table><thead><tr><th>Method</th><th class="num">MRR</th><th class="num">R@1</th><th class="num">R@5</th><th class="num">R@10</th><th class="num">nDCG@10</th><th class="num">Paper fig. in top 10</th></tr></thead><tbody><tr><td><strong>Image embedding</strong> (PE-Core bigG, no describer)</td><td class="num">0.70 <small>[0.58, 0.80]</small></td><td class="num">0.37 <small>[0.26, 0.46]</small></td><td class="num">0.75 <small>[0.64, 0.86]</small></td><td class="num">0.82 <small>[0.72, 0.91]</small></td><td class="num">0.68 <small>[0.58, 0.77]</small></td><td class="num">0.40 <small>[0.34, 0.46]</small></td></tr><tr><td>Qwen3.6-35B-A3B + BM25</td><td class="num">0.33 <small>[0.22, 0.44]</small></td><td class="num"><strong>0.16 <small>[0.08, 0.25]</small></strong></td><td class="num">0.31 <small>[0.21, 0.42]</small></td><td class="num">0.35 <small>[0.24, 0.47]</small></td><td class="num">0.28 <small>[0.19, 0.38]</small></td><td class="num">0.18 <small>[0.14, 0.22]</small></td></tr><tr><td>Qwen3.6-35B-A3B + dense</td><td class="num">0.29 <small>[0.19, 0.40]</small></td><td class="num">0.15 <small>[0.07, 0.23]</small></td><td class="num">0.27 <small>[0.17, 0.37]</small></td><td class="num">0.29 <small>[0.19, 0.40]</small></td><td class="num">0.24 <small>[0.16, 0.34]</small></td><td class="num">0.12 <small>[0.10, 0.15]</small></td></tr><tr><td>Qwen3.8-27B + BM25</td><td class="num">0.27 <small>[0.16, 0.38]</small></td><td class="num">0.12 <small>[0.05, 0.20]</small></td><td class="num">0.25 <small>[0.15, 0.36]</small></td><td class="num">0.35 <small>[0.24, 0.46]</small></td><td class="num">0.25 <small>[0.16, 0.34]</small></td><td class="num">0.21 <small>[0.17, 0.25]</small></td></tr><tr><td>Qwen3.8-27B + dense</td><td class="num"><strong>0.33 <small>[0.22, 0.44]</small></strong></td><td class="num">0.15 <small>[0.07, 0.24]</small></td><td class="num"><strong>0.32 <small>[0.22, 0.43]</small></strong></td><td class="num">0.35 <small>[0.25, 0.48]</small></td><td class="num">0.28 <small>[0.20, 0.38]</small></td><td class="num">0.20 <small>[0.17, 0.24]</small></td></tr><tr><td>Gemma 4 26B-A4B + BM25</td><td class="num">0.25 <small>[0.16, 0.35]</small></td><td class="num">0.13 <small>[0.05, 0.22]</small></td><td class="num">0.28 <small>[0.17, 0.40]</small></td><td class="num">0.34 <small>[0.22, 0.47]</small></td><td class="num">0.25 <small>[0.16, 0.35]</small></td><td class="num">0.23 <small>[0.18, 0.28]</small></td></tr><tr><td>Gemma 4 26B-A4B + dense</td><td class="num">0.30 <small>[0.20, 0.41]</small></td><td class="num">0.16 <small>[0.08, 0.25]</small></td><td class="num">0.26 <small>[0.16, 0.38]</small></td><td class="num"><strong>0.39 <small>[0.27, 0.51]</small></strong></td><td class="num"><strong>0.29 <small>[0.19, 0.40]</small></strong></td><td class="num">0.17 <small>[0.14, 0.20]</small></td></tr><tr><td>Mistral Small 3.2 24B + BM25</td><td class="num">0.17 <small>[0.10, 0.26]</small></td><td class="num">0.06 <small>[0.01, 0.12]</small></td><td class="num">0.16 <small>[0.08, 0.26]</small></td><td class="num">0.21 <small>[0.12, 0.32]</small></td><td class="num">0.15 <small>[0.08, 0.24]</small></td><td class="num">0.15 <small>[0.12, 0.18]</small></td></tr><tr><td>Mistral Small 3.2 24B + dense</td><td class="num">0.21 <small>[0.13, 0.32]</small></td><td class="num">0.09 <small>[0.03, 0.17]</small></td><td class="num">0.21 <small>[0.12, 0.31]</small></td><td class="num">0.31 <small>[0.20, 0.43]</small></td><td class="num">0.20 <small>[0.12, 0.29]</small></td><td class="num">0.14 <small>[0.11, 0.17]</small></td></tr></tbody></table></div>
|
| 28 |
+
<p><em>Paper fig. in top 10</em> is the share of paper figures among the first ten results; the
|
| 29 |
+
pool is 12% paper figures.</p>
|
| 30 |
+
|
| 31 |
+
<h3>Paper figures only (85 images)</h3>
|
| 32 |
+
<p>The same scores, ranked among the paper figures alone. Every target is a journal reproduction
|
| 33 |
+
and every RKD record is not, so looking like a reproduction could be a cue by itself; here it is none.</p>
|
| 34 |
+
<div class="table-wrap"><table><thead><tr><th>Method</th><th class="num">MRR</th><th class="num">R@1</th><th class="num">R@5</th><th class="num">R@10</th><th class="num">nDCG@10</th></tr></thead><tbody><tr><td><strong>Image embedding</strong> (PE-Core bigG, no describer)</td><td class="num">0.83 <small>[0.73, 0.91]</small></td><td class="num">0.50 <small>[0.39, 0.59]</small></td><td class="num">0.86 <small>[0.77, 0.94]</small></td><td class="num">0.91 <small>[0.83, 0.97]</small></td><td class="num">0.81 <small>[0.73, 0.88]</small></td></tr><tr><td>Qwen3.6-35B-A3B + BM25</td><td class="num">0.52 <small>[0.40, 0.65]</small></td><td class="num"><strong>0.29 <small>[0.19, 0.39]</small></strong></td><td class="num">0.45 <small>[0.33, 0.58]</small></td><td class="num">0.54 <small>[0.41, 0.66]</small></td><td class="num">0.46 <small>[0.35, 0.58]</small></td></tr><tr><td>Qwen3.6-35B-A3B + dense</td><td class="num">0.46 <small>[0.35, 0.59]</small></td><td class="num">0.24 <small>[0.15, 0.34]</small></td><td class="num">0.46 <small>[0.34, 0.58]</small></td><td class="num">0.56 <small>[0.43, 0.68]</small></td><td class="num">0.44 <small>[0.33, 0.54]</small></td></tr><tr><td>Qwen3.8-27B + BM25</td><td class="num">0.47 <small>[0.35, 0.59]</small></td><td class="num">0.24 <small>[0.15, 0.35]</small></td><td class="num">0.43 <small>[0.31, 0.55]</small></td><td class="num">0.48 <small>[0.36, 0.60]</small></td><td class="num">0.42 <small>[0.30, 0.53]</small></td></tr><tr><td>Qwen3.8-27B + dense</td><td class="num"><strong>0.52 <small>[0.41, 0.64]</small></strong></td><td class="num">0.27 <small>[0.18, 0.37]</small></td><td class="num"><strong>0.50 <small>[0.38, 0.61]</small></strong></td><td class="num">0.63 <small>[0.50, 0.75]</small></td><td class="num">0.50 <small>[0.39, 0.61]</small></td></tr><tr><td>Gemma 4 26B-A4B + BM25</td><td class="num">0.43 <small>[0.33, 0.55]</small></td><td class="num">0.24 <small>[0.14, 0.34]</small></td><td class="num">0.45 <small>[0.34, 0.57]</small></td><td class="num">0.54 <small>[0.42, 0.65]</small></td><td class="num">0.42 <small>[0.32, 0.53]</small></td></tr><tr><td>Gemma 4 26B-A4B + dense</td><td class="num">0.50 <small>[0.39, 0.62]</small></td><td class="num">0.27 <small>[0.17, 0.38]</small></td><td class="num">0.49 <small>[0.36, 0.61]</small></td><td class="num"><strong>0.65 <small>[0.53, 0.76]</small></strong></td><td class="num"><strong>0.50 <small>[0.40, 0.61]</small></strong></td></tr><tr><td>Mistral Small 3.2 24B + BM25</td><td class="num">0.35 <small>[0.26, 0.46]</small></td><td class="num">0.14 <small>[0.07, 0.23]</small></td><td class="num">0.41 <small>[0.29, 0.53]</small></td><td class="num">0.52 <small>[0.39, 0.65]</small></td><td class="num">0.36 <small>[0.27, 0.46]</small></td></tr><tr><td>Mistral Small 3.2 24B + dense</td><td class="num">0.47 <small>[0.35, 0.58]</small></td><td class="num">0.25 <small>[0.15, 0.36]</small></td><td class="num">0.46 <small>[0.34, 0.58]</small></td><td class="num">0.59 <small>[0.48, 0.70]</small></td><td class="num">0.45 <small>[0.35, 0.56]</small></td></tr></tbody></table></div>
|
| 35 |
+
|
| 36 |
+
<h3>Descriptions</h3>
|
| 37 |
+
<div class="table-wrap"><table><thead><tr><th>Describer</th><th class="num">Images described</th>
|
| 38 |
+
<th class="num">Mean words</th></tr></thead><tbody><tr><td>Qwen3.6-35B-A3B</td><td class="num">732</td><td class="num">130.0</td></tr><tr><td>Qwen3.8-27B</td><td class="num">732</td><td class="num">124.3</td></tr><tr><td>Gemma 4 26B-A4B</td><td class="num">732</td><td class="num">140.9</td></tr><tr><td>Mistral Small 3.2 24B</td><td class="num">732</td><td class="num">124.8</td></tr></tbody></table></div>
|
| 39 |
+
|
| 40 |
+
<h2>Findings</h2>
|
| 41 |
+
<ul>
|
| 42 |
+
<li><strong>Descriptions lose to the images by a wide margin.</strong> The best description
|
| 43 |
+
setup reaches an MRR of about 0.33 against 0.70 for the image embedding, and finds a target in
|
| 44 |
+
the top ten for about 35–39% of queries against 82%.</li>
|
| 45 |
+
<li><strong>The gap is not the reproduction cue.</strong> Among paper figures only, the image
|
| 46 |
+
embedding still reaches MRR 0.83 against about 0.52 for the best descriptions.</li>
|
| 47 |
+
<li><strong>Qwen3.6, Qwen3.8 and Gemma 4 are indistinguishable</strong>: their intervals overlap
|
| 48 |
+
on every metric. <strong>Mistral is the weakest describer</strong>, clearly so with BM25.</li>
|
| 49 |
+
<li><strong>BM25 and the dense embedder are close</strong>; neither wins for every describer.</li>
|
| 50 |
+
<li><strong>Why the descriptions lose:</strong> the queries name artists and works (“by
|
| 51 |
+
Bartholomeus Breenbergh or Rembrandt”, “of the painting Girl with a Flute”),
|
| 52 |
+
and the describer was told never to name what it merely recognises. The image encoder has no
|
| 53 |
+
such rule and recognises styles and famous works. The descriptions are often accurate but
|
| 54 |
+
cautious: in the first example below, Gemma describes a preacher on a rock above a crowd and
|
| 55 |
+
never says “John the Baptist”.</li>
|
| 56 |
+
</ul>
|
| 57 |
+
|
| 58 |
+
<h2>Examples</h2>
|
| 59 |
+
<p>The three queries where the image embedding ranks a target first and Gemma's descriptions
|
| 60 |
+
rank it lowest.</p>
|
| 61 |
+
<h3>Find paintings, drawings, or prints depicting 'The Preaching of John the Baptist' executed by Bartholomeus Breenbergh or Rembrandt van Rijn during the 1630s.</h3>
|
| 62 |
+
<p>First relevant image at rank <strong>1</strong> by image embedding,
|
| 63 |
+
rank <strong>456</strong> of 732 by Gemma's descriptions (dense).</p>
|
| 64 |
+
<figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/338c15ff709b/f001.jpg" alt="Target figure f001 of paper 338c15ff709b" style="max-height:320px" loading="lazy">
|
| 65 |
+
<figcaption>Target: figure f001 of paper <code>338c15ff709b</code>. Gemma 4's description:</figcaption></figure>
|
| 66 |
+
<blockquote><p>A landscape oil painting depicting a large group of figures gathered in a rugged, mountainous setting. In the foreground and middle ground, a crowd of people in classical or historical attire is clustered on a dirt path. Some figures appear to be in conversation, while others are engaged in more dramatic gestures; notably, a figure on the right stands atop a rock with an arm raised. To the left, large, crumbling stone ruins of a building or fortification rise up a hillside, partially overgrown with vegetation. The background features rolling green hills under a vast, cloudy sky. The composition uses a diagonal arrangement of figures and landscape elements to create depth. The color palette is dominated by earthy tones of brown, ochre, and green, contrasted with the soft blues and greys of the sky. The lighting is diffused, suggesting an overcast day, casting soft shadows across the scene.</p></blockquote><h3>Find technical images, such as X-radiographs, infrared reflectograms, or pigment analysis scans, of the painting Girl with a Flute.</h3>
|
| 67 |
+
<p>First relevant image at rank <strong>1</strong> by image embedding,
|
| 68 |
+
rank <strong>318</strong> of 732 by Gemma's descriptions (dense).</p>
|
| 69 |
+
<figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/db9b246cf843/f005.jpg" alt="Target figure f005 of paper db9b246cf843" style="max-height:320px" loading="lazy">
|
| 70 |
+
<figcaption>Target: figure f005 of paper <code>db9b246cf843</code>. Gemma 4's description:</figcaption></figure>
|
| 71 |
+
<blockquote><p>This is a detail from an oil painting, focusing on the lower portion of a figure's garments and a supporting object. The composition is dominated by heavy, textured drapery in dark, muted tones of charcoal and deep blue, contrasted against a central vertical band of lighter, silvery-grey fabric. A white arrow in the upper left points toward the dark folds, while a white rectangular box highlights the junction where the light fabric meets a horizontal, brownish-ochre element, possibly a wooden support or a limb. The brushwork is thick and impasto, creating a palpable sense of texture and weight. The lighting is soft and diffused, emphasizing the sculptural quality of the folds. The color palette is somber and limited, consisting primarily of dark greys, blues, and earthy browns, suggesting a serious or solemn subject matter.</p></blockquote><h3>Find paintings by Hendrick ter Brugghen depicting a single figure in a pensive, melancholic, or weeping pose, such as a philosopher or a penitent saint.</h3>
|
| 72 |
+
<p>First relevant image at rank <strong>1</strong> by image embedding,
|
| 73 |
+
rank <strong>128</strong> of 732 by Gemma's descriptions (dense).</p>
|
| 74 |
+
<figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/8831c350c534/f002.jpg" alt="Target figure f002 of paper 8831c350c534" style="max-height:320px" loading="lazy">
|
| 75 |
+
<figcaption>Target: figure f002 of paper <code>8831c350c534</code>. Gemma 4's description:</figcaption></figure>
|
| 76 |
+
<blockquote><p>A vertical oil painting reproduction of a single figure in a dark, interior setting. The subject is a young woman shown from the waist up, leaning forward in a contemplative or weary pose. Her head is resting on her right hand, with her fingers pressed against her forehead, while her gaze is directed downward toward a small, lit candle on a table in the foreground. She wears a light-colored, loose-fitting garment with voluminous sleeves. The composition is dominated by dramatic chiaroscuro, with a single light source—the candle flame—casting intense highlights on her face, hands, and clothing, while leaving the background and much of the lower foreground in deep, heavy shadow. The color palette is limited to warm ochres, creams, and deep browns, emphasizing the intimate and somber mood of the scene.</p></blockquote>
|
| 77 |
+
|
| 78 |
+
<h2>Prompt</h2>
|
| 79 |
+
<pre><code>You describe one image for a search index of art-historical images. You see the image only: no caption, no title, no article.
|
| 80 |
+
|
| 81 |
+
The image may show a whole work, a detail, a drawing, a print, a page of a book, a building, an object, a technical photograph (X-ray, infrared, verso) or a diagram. Describe what this image shows, so that a researcher's search request for it would match your words.
|
| 82 |
+
|
| 83 |
+
Write one paragraph of 80 to 150 words covering, as far as the image gives them:
|
| 84 |
+
|
| 85 |
+
- what kind of image it is: reproduction type, medium and technique, whole work or detail;
|
| 86 |
+
- the subject and its iconography: the scene, story or type, the figures and their attributes, actions and gestures;
|
| 87 |
+
- objects, setting and landscape;
|
| 88 |
+
- composition, colour and light;
|
| 89 |
+
- any text legible in the image.
|
| 90 |
+
|
| 91 |
+
Name a subject, scene, saint or style when the image itself supports it. Never name an artist, a collection, a date or a specific work unless it is legible in the image: say what you see, not what you recognise.
|
| 92 |
+
</code></pre>
|
| 93 |
+
|
| 94 |
+
<h2>Notes</h2>
|
| 95 |
+
<ul>
|
| 96 |
+
<li>One description per image and model, served by <code>make serve-vllm
|
| 97 |
+
VLLM_MAX_NUM_SEQS=8</code>: 13–20 minutes per model on the L40S.</li>
|
| 98 |
+
<li>Gemma and Mistral run from RedHat's FP8 builds (the bf16 weights do not fit in 48 GB).</li>
|
| 99 |
+
<li>50 queries make wide intervals: differences of less than about 0.1 are not resolved.</li>
|
| 100 |
+
<li>Reproduce with <code>taxonomy/scripts/describe_retrieval.sh</code>; numbers in
|
| 101 |
+
<code>taxonomy/results/describe_retrieval.md</code>.</li>
|
| 102 |
+
</ul>
|
content/part-2/evaluation-framework/analysis/local-models.html
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<p>
|
| 2 |
+
A one-image smoke test of the four open-weight vision-language models that are
|
| 3 |
+
candidates to replace Gemini in the analysis layer, run locally on the L40S
|
| 4 |
+
(vLLM 0.31.0). Each model gets the same image, the same one-line prompt and
|
| 5 |
+
the same strict JSON schema, at temperature 0. It checks that the model loads,
|
| 6 |
+
reads an image and returns schema-valid JSON through the repository's own
|
| 7 |
+
<code>vllm</code> client. It is not a quality comparison: that is the pilot on
|
| 8 |
+
15 papers (<a href="https://github.com/llm-art/art-historical-papers-extraction/blob/main/docs/model-pilot.md"><code>docs/model-pilot.md</code></a>).
|
| 9 |
+
</p>
|
| 10 |
+
|
| 11 |
+
<h2>Input</h2>
|
| 12 |
+
<figure>
|
| 13 |
+
<img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/68590ebc5313/f001.jpg" alt="Hendrick ter Brugghen, Crucifixion with the Virgin and Saint John" loading="lazy">
|
| 14 |
+
<figcaption>Hendrick ter Brugghen, <em>Crucifixion with the Virgin and Saint John</em>,
|
| 15 |
+
ca. 1625, New York, The Metropolitan Museum of Art (public domain). Figure f001 of
|
| 16 |
+
paper <code>68590ebc5313</code> (JHNA), as extracted: 329 × 376 px.</figcaption>
|
| 17 |
+
</figure>
|
| 18 |
+
<p>Prompt: <code>Describe this image as JSON.</code> Schema: <code>medium</code> (string),
|
| 19 |
+
<code>subject</code> (string), <code>people_count</code> (integer or null),
|
| 20 |
+
<code>notes</code> (list of strings). No system prompt, no caption, no article text.</p>
|
| 21 |
+
|
| 22 |
+
<h2>Results</h2>
|
| 23 |
+
<div class="table-wrap"><table>
|
| 24 |
+
<thead><tr><th>Model</th><th>Checkpoint</th><th>Weights</th><th>Thinking</th>
|
| 25 |
+
<th>Valid JSON</th><th class="num">Prompt tokens</th><th class="num">Output tokens</th>
|
| 26 |
+
<th class="num">Seconds</th></tr></thead>
|
| 27 |
+
<tbody>
|
| 28 |
+
<tr><td>Qwen3.6-35B-A3B</td><td><a href="https://huggingface.co/Qwen/Qwen3.6-35B-A3B-FP8/tree/95a723d"><code>Qwen/Qwen3.6-35B-A3B-FP8</code></a> <code>95a723d</code></td><td>official FP8</td><td>off</td><td>yes</td><td class="num">230</td><td class="num">157</td><td class="num">31.53</td></tr>
|
| 29 |
+
<tr><td>Qwen3.8-27B</td><td><a href="https://huggingface.co/Qwen/Qwen3.8-27B-FP8/tree/017b9c7"><code>Qwen/Qwen3.8-27B-FP8</code></a> <code>017b9c7</code></td><td>official FP8</td><td>off</td><td>yes</td><td class="num">230</td><td class="num">177</td><td class="num">12.48</td></tr>
|
| 30 |
+
<tr><td>Gemma 4 26B-A4B</td><td><a href="https://huggingface.co/RedHatAI/gemma-4-26B-A4B-it-FP8-dynamic/tree/ed35d7a"><code>RedHatAI/gemma-4-26B-A4B-it-FP8-dynamic</code></a> <code>ed35d7a</code></td><td>third-party FP8</td><td>off</td><td>yes</td><td class="num">1106</td><td class="num">100</td><td class="num">16.95</td></tr>
|
| 31 |
+
<tr><td>Mistral Small 3.2 24B</td><td><a href="https://huggingface.co/RedHatAI/Mistral-Small-3.2-24B-Instruct-2506-FP8/tree/9bc507c"><code>RedHatAI/Mistral-Small-3.2-24B-Instruct-2506-FP8</code></a> <code>9bc507c</code></td><td>third-party FP8</td><td>n/a (not a reasoning model)</td><td>yes</td><td class="num">192</td><td class="num">166</td><td class="num">9.82</td></tr>
|
| 32 |
+
</tbody>
|
| 33 |
+
</table></div>
|
| 34 |
+
|
| 35 |
+
<div class="callout warning">
|
| 36 |
+
<p>Seconds are wall-clock and include waiting behind the pilot's own requests on the
|
| 37 |
+
same server (one request at a time), so they are not a speed measurement. Prompt
|
| 38 |
+
tokens are mostly the image: models size images differently (Qwen by a pixel range,
|
| 39 |
+
Gemma by a token budget, Mistral by a 1,540 px cap), so equal images do not cost
|
| 40 |
+
equal tokens.</p>
|
| 41 |
+
</div>
|
| 42 |
+
|
| 43 |
+
<h2>Answers</h2>
|
| 44 |
+
<h3>Qwen3.6-35B-A3B</h3>
|
| 45 |
+
<pre><code class="language-json">{
|
| 46 |
+
"medium": "oil painting",
|
| 47 |
+
"subject": "Crucifixion of Jesus Christ",
|
| 48 |
+
"people_count": 3,
|
| 49 |
+
"notes": [
|
| 50 |
+
"Jesus is depicted on the cross, with a white loincloth and dark hair.",
|
| 51 |
+
"To the left, a woman in a grey hooded robe kneels in grief, head bowed.",
|
| 52 |
+
"To the right, a man in red and dark robes looks up at Jesus with an expression of sorrow or devotion.",
|
| 53 |
+
"The background is dark and atmospheric, with subtle vertical lines suggesting rain or light rays.",
|
| 54 |
+
"The composition is vertical, emphasizing the height of the cross and the emotional weight of the scene."
|
| 55 |
+
]
|
| 56 |
+
}</code></pre>
|
| 57 |
+
<h3>Qwen3.8-27B</h3>
|
| 58 |
+
<pre><code class="language-json">{
|
| 59 |
+
"medium": "painting",
|
| 60 |
+
"subject": "The Crucifixion of Jesus Christ",
|
| 61 |
+
"people_count": 3,
|
| 62 |
+
"notes": [
|
| 63 |
+
"The central figure is Jesus on the cross, depicted with a gaunt, emaciated body and a bowed head.",
|
| 64 |
+
"To the left, a figure in a white hooded robe is shown in profile, looking down with hands clasped in prayer or grief.",
|
| 65 |
+
"To the right, a man in a red robe looks up at Jesus, holding his foot.",
|
| 66 |
+
"The overall color palette is dark and somber, dominated by browns, blacks, and muted earth tones, with the red robe providing a stark contrast.",
|
| 67 |
+
"The style is dramatic and expressive, characteristic of the Baroque period."
|
| 68 |
+
]
|
| 69 |
+
}</code></pre>
|
| 70 |
+
<h3>Gemma 4 26B-A4B</h3>
|
| 71 |
+
<pre><code class="language-json">{
|
| 72 |
+
"medium": "oil on canvas",
|
| 73 |
+
"subject": "The Crucifixion of Jesus Christ",
|
| 74 |
+
"people_count": 3,
|
| 75 |
+
"notes": [
|
| 76 |
+
"The central figure is Jesus Christ on the cross.",
|
| 77 |
+
"To the left is a woman, likely the Virgin Mary, draped in white and blue robes.",
|
| 78 |
+
"To the right is a man, likely Saint John the Apostle, wearing a red cloak.",
|
| 79 |
+
"The background is dark and dramatic, typical of Baroque art style."
|
| 80 |
+
]
|
| 81 |
+
}</code></pre>
|
| 82 |
+
<h3>Mistral Small 3.2 24B</h3>
|
| 83 |
+
<pre><code class="language-json">{
|
| 84 |
+
"medium": "Painting",
|
| 85 |
+
"subject": "Religious",
|
| 86 |
+
"people_count": 3,
|
| 87 |
+
"notes": [
|
| 88 |
+
"This image depicts a religious scene, specifically the crucifixion of Jesus Christ.",
|
| 89 |
+
"The central figure is Jesus, nailed to a cross with his arms outstretched.",
|
| 90 |
+
"Two other figures are present at the base of the cross, one on each side. The figure on the left appears to be a woman, possibly the Virgin Mary, and the figure on the right is a man, possibly John the Apostle.",
|
| 91 |
+
"The painting uses a dark, dramatic color palette, emphasizing the somber and tragic nature of the scene.",
|
| 92 |
+
"The background is dark and cloudy, adding to the overall mood of the painting."
|
| 93 |
+
]
|
| 94 |
+
}</code></pre>
|
| 95 |
+
|
| 96 |
+
<h2>Notes</h2>
|
| 97 |
+
<ul>
|
| 98 |
+
<li>Gemma and Mistral run from RedHat's FP8 builds because the official bf16 weights do
|
| 99 |
+
not fit in 48 GB, so their output includes quantisation error.</li>
|
| 100 |
+
<li>Mistral's tokenizer rejects the <code>enable_thinking</code> switch the Qwen and Gemma
|
| 101 |
+
models need (HTTP 400), so it is called without it; it has no thinking mode.</li>
|
| 102 |
+
<li>Each server is started with <code>make serve-vllm VLLM_PRESET=<preset></code>,
|
| 103 |
+
pinned to the sha above.</li>
|
| 104 |
+
</ul>
|
content/part-2/evaluation-framework/extraction/index.html
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
content/part-2/evaluation-framework/index.html
CHANGED
|
@@ -20,7 +20,7 @@
|
|
| 20 |
<tbody>
|
| 21 |
<tr>
|
| 22 |
<td><a href="#/part-2/evaluation-framework/extraction">Extraction</a></td>
|
| 23 |
-
<td>Journal PDFs</td>
|
| 24 |
<td>Full text (<code>text.md</code>), one image per figure, captions</td>
|
| 25 |
<td>None</td>
|
| 26 |
</tr>
|
|
@@ -35,10 +35,16 @@
|
|
| 35 |
|
| 36 |
<h2>Extraction</h2>
|
| 37 |
<p>
|
| 38 |
-
Extraction is deterministic and uses no LLM. Docling converts each PDF to Markdown
|
| 39 |
-
|
| 40 |
-
journal
|
| 41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
</p>
|
| 43 |
|
| 44 |
<h2>Analysis</h2>
|
|
|
|
| 20 |
<tbody>
|
| 21 |
<tr>
|
| 22 |
<td><a href="#/part-2/evaluation-framework/extraction">Extraction</a></td>
|
| 23 |
+
<td>Journal PDFs, plus article pages where the journal has them</td>
|
| 24 |
<td>Full text (<code>text.md</code>), one image per figure, captions</td>
|
| 25 |
<td>None</td>
|
| 26 |
</tr>
|
|
|
|
| 35 |
|
| 36 |
<h2>Extraction</h2>
|
| 37 |
<p>
|
| 38 |
+
Extraction is deterministic and uses no LLM. Docling converts each PDF to Markdown. Where
|
| 39 |
+
the journal also publishes the article as a web page, the figures are the image files the
|
| 40 |
+
journal uploaded, with their captions read from the same page; otherwise each figure is
|
| 41 |
+
rendered from the PDF and paired with its caption by a journal-specific profile.
|
| 42 |
+
</p>
|
| 43 |
+
<p>
|
| 44 |
+
Over the 145 JHNA articles of the corpus this yields 3,069 figure images, every one with a
|
| 45 |
+
caption, at a median short side of 758 px (0.82 MP). The PDF crops of the same figures
|
| 46 |
+
have a median short side of 289 px (0.11 MP).
|
| 47 |
+
<a href="#/part-2/evaluation-framework/extraction">Details</a>.
|
| 48 |
</p>
|
| 49 |
|
| 50 |
<h2>Analysis</h2>
|
content/part-2/framework/applied.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
<p>
|
| 2 |
All 300 labelled benchmark queries, each classified whole under the four frameworks
|
| 3 |
-
of the <a href="#/part-2/theoretical-framework">Theoretical framework</a>: the words that ask
|
| 4 |
for each kind of information, with the framework’s class, and what the framework has
|
| 5 |
no place for. Labels are <code>gemini/gemini-3.6-flash</code>’s, unreviewed
|
| 6 |
(<code>taxonomy/results/query_levels.json</code>).
|
|
|
|
| 1 |
<p>
|
| 2 |
All 300 labelled benchmark queries, each classified whole under the four frameworks
|
| 3 |
+
of the <a href="#/part-2/irs-testing/theoretical-framework">Theoretical framework</a>: the words that ask
|
| 4 |
for each kind of information, with the framework’s class, and what the framework has
|
| 5 |
no place for. Labels are <code>gemini/gemini-3.6-flash</code>’s, unreviewed
|
| 6 |
(<code>taxonomy/results/query_levels.json</code>).
|
content/part-2/framework/pyramid-images.html
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
content/part-2/framework/pyramid-queries.html
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
content/part-2/pool/{dataset.html → v0.html}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
<div class="callout"><p>Generated from <a href="https://github.com/llm-art/art-historical-papers-extraction/blob/main/dataset/coverage.md"><code>dataset/coverage.md</code></a> by <code>space/build.py</code>. Do not edit on the Space: edit the repository and republish.</p></div>
|
| 2 |
<p><strong>Pool coverage — <code>gemini-gemini-3-5-flash-adcf1483</code></strong></p>
|
| 3 |
<p>Generated 2026-10-01T19:33:01.462481+00:00.</p>
|
| 4 |
<div class="table-wrap"><table>
|
|
|
|
| 1 |
+
<div class="callout"><p>Generated from <a href="https://github.com/llm-art/art-historical-papers-extraction/blob/main/dataset/coverage-v0.md"><code>dataset/coverage-v0.md</code></a> by <code>space/build.py</code>. Do not edit on the Space: edit the repository and republish.</p></div>
|
| 2 |
<p><strong>Pool coverage — <code>gemini-gemini-3-5-flash-adcf1483</code></strong></p>
|
| 3 |
<p>Generated 2026-10-01T19:33:01.462481+00:00.</p>
|
| 4 |
<div class="table-wrap"><table>
|
content/part-2/pool/v1.html
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<p>
|
| 2 |
+
Dataset v1 rebuilds <a href="#/part-2/pool-creation/v0">v0</a> on better gold images and on
|
| 3 |
+
the annotators' judgements. The queries, distractors and fillers are carried over. What
|
| 4 |
+
changes is which images count as gold, what they look like, and how relevant each one is.
|
| 5 |
+
</p>
|
| 6 |
+
|
| 7 |
+
<div class="callout warning">
|
| 8 |
+
<p>
|
| 9 |
+
Work in progress (29 October 2026). All 145 papers are now extracted from their article
|
| 10 |
+
pages, and the image figures below cover all of them. Stage C has not yet been rerun on
|
| 11 |
+
the new images, so v1's qrels do not exist yet.
|
| 12 |
+
</p>
|
| 13 |
+
</div>
|
| 14 |
+
|
| 15 |
+
<h2>What changes from v0</h2>
|
| 16 |
+
<div class="table-wrap"><table>
|
| 17 |
+
<thead><tr><th></th><th>v0</th><th>v1</th></tr></thead>
|
| 18 |
+
<tbody>
|
| 19 |
+
<tr><td>Gold images</td><td>Cropped from the PDF</td><td>The journal's own files, from the article page</td></tr>
|
| 20 |
+
<tr><td>Caption–image pairing</td><td>By position on the page; about half of the checked crops were mispaired</td><td>From the page, where the image link and its caption are one element</td></tr>
|
| 21 |
+
<tr><td>Stage C links</td><td>Gemini 3.5 Flash, on the PDF crops</td><td>Gemini 3.6 Flash, on the page images, with the same questions and subqueries</td></tr>
|
| 22 |
+
<tr><td>Relevance</td><td>Binary: every stage C link is a target</td><td>Graded: 2, 1 or 0, from annotators where they rated the link</td></tr>
|
| 23 |
+
<tr><td>Missed figures</td><td>Not used</td><td>Added as targets, flagged <code>added_by_annotator</code></td></tr>
|
| 24 |
+
<tr><td>Subqueries</td><td>All kept</td><td>Rated No dropped, Tangential and Partly flagged, unrated tagged unvalidated</td></tr>
|
| 25 |
+
</tbody>
|
| 26 |
+
</table></div>
|
| 27 |
+
|
| 28 |
+
<h2>Gold images from the article page</h2>
|
| 29 |
+
<p>
|
| 30 |
+
Every paper in the corpus is from JHNA, which publishes each article as a web page as
|
| 31 |
+
well as a PDF. The page links each figure's image file next to its caption. Extraction
|
| 32 |
+
now takes the figures from there (<code>artpapers extract --figures auto</code>), and still
|
| 33 |
+
takes the text from the PDF. <code>text.md</code> is byte-identical to v0's for every paper
|
| 34 |
+
(145 of 145), so stage 0 and stage A carry over unchanged.
|
| 35 |
+
</p>
|
| 36 |
+
<p>The PDF crops had two problems, and the page fixes both:</p>
|
| 37 |
+
<ul>
|
| 38 |
+
<li>
|
| 39 |
+
<strong>Pairing.</strong> On JHNA's side-by-side layout, matching a caption to the
|
| 40 |
+
picture above it often picks the neighbouring picture. Annotators noticed: "The
|
| 41 |
+
captions underneath the pictures were matched incorrectly, which sometimes confused me."
|
| 42 |
+
</li>
|
| 43 |
+
<li>
|
| 44 |
+
<strong>Resolution.</strong> JHNA's PDFs embed plates at about 100 dpi, so a crop is
|
| 45 |
+
small whatever scale it is rendered at.
|
| 46 |
+
</li>
|
| 47 |
+
</ul>
|
| 48 |
+
|
| 49 |
+
<h3>Pairing cases</h3>
|
| 50 |
+
<p>
|
| 51 |
+
Each v0 crop was compared with every page image of its paper: the aspect ratios must agree
|
| 52 |
+
within 10%, and 32 × 32 grayscale thumbnails must correlate at 0.80 or more
|
| 53 |
+
(<code>artpapers dataset web-figures</code> applies the same test). Over the 2,736 captioned
|
| 54 |
+
crops of all 145 papers, a crop falls into one of four cases:
|
| 55 |
+
</p>
|
| 56 |
+
<div class="table-wrap"><table>
|
| 57 |
+
<thead><tr><th>Case</th><th>Meaning</th><th class="num">Captioned crops</th></tr></thead>
|
| 58 |
+
<tbody>
|
| 59 |
+
<tr><td>Accepted</td><td>The crop shows the figure its caption names.</td><td class="num">1,150 (42%)</td></tr>
|
| 60 |
+
<tr><td>Renumbered</td><td>The crop shows another figure of the same article: the caption went to the wrong picture.</td><td class="num">1,114 (41%)</td></tr>
|
| 61 |
+
<tr><td>Unmatched</td><td>The crop resembles no figure on the page closely enough.</td><td class="num">349 (13%)</td></tr>
|
| 62 |
+
<tr><td>Ambiguous</td><td>The crop matches several page figures equally well.</td><td class="num">123 (4%)</td></tr>
|
| 63 |
+
</tbody>
|
| 64 |
+
</table></div>
|
| 65 |
+
<p>
|
| 66 |
+
139 of the 145 papers have at least one captioned crop that is not accepted, and 702
|
| 67 |
+
crops are halves of a swapped pair (fig. 4 shows fig. 5's picture and the other way
|
| 68 |
+
round). Restricted to the 1,435 gold crops: 575 accepted (40%), 545 renumbered (38%), 226
|
| 69 |
+
unmatched (16%), 89 ambiguous (6%). Of v0's 1,692 query–figure links, 718 point at an
|
| 70 |
+
accepted crop; 245 of the 372 queries have at least one link to a crop that is not, and
|
| 71 |
+
124 have none to an accepted one.
|
| 72 |
+
</p>
|
| 73 |
+
<p>One example of each, with the v0 crop beside the v1 page image that now carries the caption.</p>
|
| 74 |
+
|
| 75 |
+
<h4>Accepted</h4>
|
| 76 |
+
<p class="caption-text"><code>067aab78bf2a</code> · Fig. 2 Jan Luyken, The Destruction of Jan de Baen’s Allegory on Cornelis de Witt (on May 13 or June 29, 1672)…</p>
|
| 77 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/067aab78bf2a/f002.jpg" alt="067aab78bf2a:f002" loading="lazy"><figcaption><strong>v0: PDF crop for f002</strong><br>450 × 322 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/067aab78bf2a/f002.jpg" alt="067aab78bf2a:f002" loading="lazy"><figcaption><strong>v1: page image for f002</strong><br>800 × 573 px</figcaption></figure></div>
|
| 78 |
+
<p>Same etching in both. The page image is 800 px wide against the crop's 450.</p>
|
| 79 |
+
|
| 80 |
+
<h4>Renumbered</h4>
|
| 81 |
+
<p class="caption-text"><code>067aab78bf2a</code> · Fig. 8 Anonymous, Medal Commemorating the Death of Cornelis and Johan de Witt, Amsterdam, Rijksmuseum, inv. no…</p>
|
| 82 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/067aab78bf2a/f008.jpg" alt="067aab78bf2a:f008" loading="lazy"><figcaption><strong>v0: PDF crop for f008</strong><br>469 × 233 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/067aab78bf2a/f008.jpg" alt="067aab78bf2a:f008" loading="lazy"><figcaption><strong>v1: page image for f008</strong><br>800 × 411 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/067aab78bf2a/f009.jpg" alt="067aab78bf2a:f009" loading="lazy"><figcaption><strong>v1: page image for f009, what the crop shows</strong><br>800 × 396 px</figcaption></figure></div>
|
| 83 |
+
<p>The caption is for the medal on the death of the De Witt brothers, but the v0 crop shows the medal in their praise, which is fig. 9 on the page. In v0, a query about the commemorative medal had the wrong medal as its gold image.</p>
|
| 84 |
+
|
| 85 |
+
<h4>Unmatched</h4>
|
| 86 |
+
<p class="caption-text"><code>067aab78bf2a</code> · Fig. 3 Attributed to Jan de Baen, The Bodies of the Brothers Jan and Cornelis de Witt, Hanging from the Strappado (“wip”…</p>
|
| 87 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/067aab78bf2a/f003.jpg" alt="067aab78bf2a:f003" loading="lazy"><figcaption><strong>v0: PDF crop for f003</strong><br>318 × 397 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/067aab78bf2a/f003.jpg" alt="067aab78bf2a:f003" loading="lazy"><figcaption><strong>v1: page image for f003</strong><br>638 × 800 px</figcaption></figure></div>
|
| 88 |
+
<p>By eye the crop and the page image are the same painting. The similarity (0.76) fell below the threshold because the crop is dark and small. So "unmatched" is not always a mismatch, and v1 does not carry a judgement over through an unmatched crop.</p>
|
| 89 |
+
|
| 90 |
+
<h4>Ambiguous</h4>
|
| 91 |
+
<p class="caption-text"><code>045ad8e9b924</code> · Fig. 6 Workshop or circle of Jacob de Wet, The Meeting of Abigail and David, oil on panel, 72.9 x 138.3 cm, Pr…</p>
|
| 92 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/045ad8e9b924/f006.jpg" alt="045ad8e9b924:f006" loading="lazy"><figcaption><strong>v0: PDF crop for f006</strong><br>425 × 236 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/045ad8e9b924/f006.jpg" alt="045ad8e9b924:f006" loading="lazy"><figcaption><strong>v1: page image for f006</strong><br>1600 × 925 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/045ad8e9b924/f003.jpg" alt="045ad8e9b924:f003" loading="lazy"><figcaption><strong>v1: page image for f003, the map</strong><br>1600 × 896 px</figcaption></figure></div>
|
| 93 |
+
<p>The caption is for a painting, but the crop is the article's map. The map appears three times on the page (figs. 3, 9 and 13), so the crop matches all three equally and cannot be assigned to one.</p>
|
| 94 |
+
|
| 95 |
+
<h3>What the annotators saw</h3>
|
| 96 |
+
<p>
|
| 97 |
+
Annotators judged v0's crops under v0's captions, so on mispaired figures their ratings
|
| 98 |
+
split: some rated the caption, others the picture. Three rated links:
|
| 99 |
+
</p>
|
| 100 |
+
|
| 101 |
+
<h4>Rated by the caption</h4>
|
| 102 |
+
<p class="caption-text"><code>644d247f107d</code> · Fig. 13 Joachim von Sandrart, Company of Captain Cornelis Bicker and Lieutenant Frederick van Banchem, 1640. R…</p>
|
| 103 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/644d247f107d/f013.jpg" alt="644d247f107d:f013" loading="lazy"><figcaption><strong>v0: PDF crop for f013</strong><br>351 × 420 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/644d247f107d/f013.jpg" alt="644d247f107d:f013" loading="lazy"><figcaption><strong>v1: page image for f013</strong><br>595 × 800 px</figcaption></figure></div>
|
| 104 |
+
<p>Subquery: <em>What is the composition and visual arrangement of Joachim von Sandrart's portrait of the Company of Captain Cornelis Bicker…?</em> The crop is a single portrait, not the militia company. One annotator rated it Fully, the other Partly: "The caption is right, but the image is wrong."</p>
|
| 105 |
+
|
| 106 |
+
<h4>Rated by the picture</h4>
|
| 107 |
+
<p class="caption-text"><code>f27edffd6057</code> · Fig. 9 Jean-François Millet, Young Mother Preparing the Evening Meal, 1848–50, pen and brown ink on paper, 20.…</p>
|
| 108 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/f27edffd6057/f009.jpg" alt="f27edffd6057:f009" loading="lazy"><figcaption><strong>v0: PDF crop for f009</strong><br>326 × 358 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/f27edffd6057/f009.jpg" alt="f27edffd6057:f009" loading="lazy"><figcaption><strong>v1: page image for f009</strong><br>650 × 800 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/f27edffd6057/f010.jpg" alt="f27edffd6057:f010" loading="lazy"><figcaption><strong>v1: page image for f010, what the crop shows</strong><br>729 × 800 px</figcaption></figure></div>
|
| 109 |
+
<p>Subquery: <em>What are the visual characteristics and compositions of Millet's depictions of peasant labor?</em> The caption names a Millet drawing, but the crop is Jan Luyken's print, fig. 10. Rated No: "image shown is figure 10, not figure 9".</p>
|
| 110 |
+
|
| 111 |
+
<h4>Rated Fully despite the mismatch</h4>
|
| 112 |
+
<p class="caption-text"><code>dbe3f50437b4</code> · Fig. 6 Simon de Vlieger, Calm Sea, oil on panel, 52 x 89 cm, Staatliches Museum Schwerin, inv. no. G 123 (artw…</p>
|
| 113 |
+
<div class="pairing"><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures/dbe3f50437b4/f006.jpg" alt="dbe3f50437b4:f006" loading="lazy"><figcaption><strong>v0: PDF crop for f006</strong><br>363 × 287 px</figcaption></figure><figure><img src="https://huggingface.co/datasets/gspin/phd-report-media/resolve/main/figures-html/dbe3f50437b4/f006.jpg" alt="dbe3f50437b4:f006" loading="lazy"><figcaption><strong>v1: page image for f006</strong><br>600 × 350 px</figcaption></figure></div>
|
| 114 |
+
<p>Subquery: <em>What characterized the final acquisitions of Duke Christian Ludwig of Mecklenburg-Schwerin in terms of style, subject, and origin?</em> The caption is De Vlieger's <em>Calm Sea</em>; the crop is a painting of poultry. Rated Fully, with the comment "The figure caption doesn't match the image": the annotator judged the caption.</p>
|
| 115 |
+
|
| 116 |
+
<p>
|
| 117 |
+
This is why a rating is carried over only through an accepted crop, or a renumbered one
|
| 118 |
+
whose match is unambiguous, and is attached to the picture the annotator saw.
|
| 119 |
+
</p>
|
| 120 |
+
|
| 121 |
+
<h3>Resolution</h3>
|
| 122 |
+
<p>
|
| 123 |
+
Short side in pixels. The 224 px column is the input size of the smallest encoders on
|
| 124 |
+
the leaderboard; an image below it is upscaled by the encoder.
|
| 125 |
+
</p>
|
| 126 |
+
<div class="table-wrap"><table>
|
| 127 |
+
<thead><tr><th>Set</th><th class="num">Images</th><th>Short side p10 / p50 / p90</th><th class="num">Median MP</th><th class="num">Under 224 px</th></tr></thead>
|
| 128 |
+
<tbody>
|
| 129 |
+
<tr><td>Gold, PDF crops (v0)</td><td class="num">1,420</td><td>197 / 289 / 376</td><td class="num">0.11</td><td class="num">260</td></tr>
|
| 130 |
+
<tr><td>Gold, article page (v1: the picture each v0 gold crop shows)</td><td class="num">1,120</td><td>402 / 670 / 1,536</td><td class="num">0.57</td><td class="num">6</td></tr>
|
| 131 |
+
<tr><td>All page figures (v1)</td><td class="num">3,069</td><td>415 / 758 / 1,583</td><td class="num">0.82</td><td class="num">13</td></tr>
|
| 132 |
+
<tr><td>Hard distractors (RKD)</td><td class="num">7,944</td><td>308 / 430 / 1,600</td><td class="num">0.22</td><td class="num">478</td></tr>
|
| 133 |
+
<tr><td>Fillers (RKD)</td><td class="num">24,804</td><td>344 / 560 / 1,600</td><td class="num">0.36</td><td class="num">362</td></tr>
|
| 134 |
+
</tbody>
|
| 135 |
+
</table></div>
|
| 136 |
+
<p>
|
| 137 |
+
For the 2,444 crops matched to a page image (accepted or renumbered), the page image's
|
| 138 |
+
short side is a median 2.5 times the crop's (p10 1.6, p90 5.7). Only 34 page images are
|
| 139 |
+
smaller than their crop. Restricted to the 1,120 gold crops, the median ratio is also 2.5.
|
| 140 |
+
v1 has 3,069 figures, every one with an image, and 311 of them are named parts
|
| 141 |
+
(<code>f012a</code>, <code>f007-left</code>). It has no uncaptioned figures: the page
|
| 142 |
+
carries only captioned ones, so v0's 469 uncaptioned crops (journal chrome, or pictures
|
| 143 |
+
the PDF pairing lost) drop out.
|
| 144 |
+
</p>
|
| 145 |
+
<p>
|
| 146 |
+
This matters for the benchmark's fairness. In v0 the gold images were the smallest in the
|
| 147 |
+
pool, at half the distractors' median area and a third of the fillers', so an encoder could tell them apart
|
| 148 |
+
by quality rather than content. In v1 they sit at or above the RKD images, and no gold
|
| 149 |
+
image is below 224 px. Small images are kept and flagged rather than dropped or upscaled.
|
| 150 |
+
</p>
|
| 151 |
+
|
| 152 |
+
<h2>Validation by the annotators</h2>
|
| 153 |
+
<p>
|
| 154 |
+
The annotation study rated v0's queries and links. Its judgements are reused to validate
|
| 155 |
+
v1. They join directly: the export uses the same paper, question and subquery ids, and
|
| 156 |
+
the question and subquery text is identical for all 154 subqueries in both.
|
| 157 |
+
</p>
|
| 158 |
+
<div class="table-wrap"><table>
|
| 159 |
+
<thead><tr><th></th><th class="num">Count</th></tr></thead>
|
| 160 |
+
<tbody>
|
| 161 |
+
<tr><td>Papers annotated</td><td class="num">44 of 145</td></tr>
|
| 162 |
+
<tr><td>Annotators who left judgements</td><td class="num">69</td></tr>
|
| 163 |
+
<tr><td>Queries rated for correctness</td><td class="num">129 of 372</td></tr>
|
| 164 |
+
<tr><td>Query–figure links rated</td><td class="num">621 of 1,692</td></tr>
|
| 165 |
+
<tr><td>— rated by more than one annotator</td><td class="num">353</td></tr>
|
| 166 |
+
<tr><td>Missed figures on existing queries</td><td class="num">240</td></tr>
|
| 167 |
+
<tr><td>Missed figures on 25 subqueries stage C linked nothing to</td><td class="num">101</td></tr>
|
| 168 |
+
<tr><td>Figures seen and not picked (negatives)</td><td class="num">1,004</td></tr>
|
| 169 |
+
</tbody>
|
| 170 |
+
</table></div>
|
| 171 |
+
|
| 172 |
+
<h3>Ratings of v0's links</h3>
|
| 173 |
+
<p>
|
| 174 |
+
Where two annotators rated a link, the lower rating is kept. Of the 621 rated links, 275
|
| 175 |
+
are Fully (grade 2), 110 Partly (grade 1) and 236 No or Tangential (grade 0). Annotators
|
| 176 |
+
rejected 38% of the links they rated.
|
| 177 |
+
</p>
|
| 178 |
+
|
| 179 |
+
<h3>Agreement between annotators</h3>
|
| 180 |
+
<div class="table-wrap"><table>
|
| 181 |
+
<thead><tr><th>Scale</th><th class="num">Rater pairs</th><th class="num">Raw agreement</th><th class="num">Cohen's κ</th></tr></thead>
|
| 182 |
+
<tbody>
|
| 183 |
+
<tr><td>Grade 0 / 1 / 2</td><td class="num">353</td><td class="num">58%</td><td class="num">0.29</td></tr>
|
| 184 |
+
<tr><td>Relevant (Partly or Fully) vs not</td><td class="num">353</td><td class="num">67%</td><td class="num">0.29</td></tr>
|
| 185 |
+
<tr><td>Fully vs not</td><td class="num">353</td><td class="num">67%</td><td class="num">0.34</td></tr>
|
| 186 |
+
</tbody>
|
| 187 |
+
</table></div>
|
| 188 |
+
<p>
|
| 189 |
+
Agreement is low, and it sets the ceiling for scoring a model against the annotators:
|
| 190 |
+
Gemini 3.6's links cannot be expected to agree with them better than they agree with each
|
| 191 |
+
other. Part of the disagreement is the mispairing itself. Faced with a caption and the
|
| 192 |
+
wrong picture, some annotators rated the caption and others the picture.
|
| 193 |
+
</p>
|
| 194 |
+
|
| 195 |
+
<h3>Which judgements carry over</h3>
|
| 196 |
+
<p>
|
| 197 |
+
A judgement is about the picture the annotator saw. Each v0 crop is matched to the v1
|
| 198 |
+
page image it shows, by image similarity. A judgement carries over to that page image when
|
| 199 |
+
the match is unambiguous, and is dropped when it is not. The recall step showed every
|
| 200 |
+
captioned figure but none of the uncaptioned ones, so "seen and not picked" is a negative
|
| 201 |
+
for captioned figures only.
|
| 202 |
+
</p>
|
| 203 |
+
|
| 204 |
+
<h2>Relevance in v1</h2>
|
| 205 |
+
<ul>
|
| 206 |
+
<li><strong>Grade 2:</strong> rated Fully, or a stage C link no annotator rated.</li>
|
| 207 |
+
<li><strong>Grade 1:</strong> rated Partly.</li>
|
| 208 |
+
<li><strong>Grade 0:</strong> rated No or Tangential. The image stays in the pool if another query still uses it.</li>
|
| 209 |
+
<li><strong>Added:</strong> a figure an annotator marked as missed, flagged <code>added_by_annotator</code>.</li>
|
| 210 |
+
</ul>
|
| 211 |
+
<p>
|
| 212 |
+
Each pair also gets a link type (target, detail, technical or comparandum). Two
|
| 213 |
+
relations, <code>detail_of</code> and <code>same_work_as</code>, connect images of one
|
| 214 |
+
work, and are evaluated by a single documented rule.
|
| 215 |
+
</p>
|
| 216 |
+
|
| 217 |
+
<h2>Subqueries</h2>
|
| 218 |
+
<p>
|
| 219 |
+
The prompts are unchanged for v1. Subqueries rated No are dropped, Tangential and Partly
|
| 220 |
+
are flagged, and the 243 queries no annotator rated are tagged unvalidated. The ratings
|
| 221 |
+
inform v2's prompts:
|
| 222 |
+
</p>
|
| 223 |
+
<ul>
|
| 224 |
+
<li>Comparanda are weak (8 of 30 rated Fully, against 25 of 50 primary subqueries). They should name the visual feature they share with the work.</li>
|
| 225 |
+
<li>"Not answerable from the paper as posed" is the most frequent reason for a low rating.</li>
|
| 226 |
+
<li>The second subquery is often vague. Several annotators said so in their exit comments.</li>
|
| 227 |
+
<li>Reproduction terms (high-resolution, detail photograph) belong in the image requirements, not in the query's content.</li>
|
| 228 |
+
</ul>
|
| 229 |
+
|
| 230 |
+
<h2>Still to do</h2>
|
| 231 |
+
<ol>
|
| 232 |
+
<li>Rerun stages B and C with Gemini 3.6 Flash on the page images, inheriting v0's questions and subqueries.</li>
|
| 233 |
+
<li>Carry the annotators' judgements over to the page images, through the crop matches above.</li>
|
| 234 |
+
<li>Score the new links against the annotators, on papers held out from any rule-tuning.</li>
|
| 235 |
+
<li>Build the graded qrels, link types, relations and subquery flags, and rerun the leaderboard.</li>
|
| 236 |
+
</ol>
|
content/part-2/repository.html
CHANGED
|
@@ -186,6 +186,16 @@ lettered sub-figure, sharing <code>number</code> with its sibling), and <code>u0
|
|
| 186 |
a detected picture no caption claimed. A figure Docling finds but cannot
|
| 187 |
rasterise, and a caption whose figure was never detected, are both still
|
| 188 |
recorded with <code>image_path</code> absent — nothing is silently dropped.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 189 |
<h2>Reports</h2>
|
| 190 |
<p>Two independent, read-only reports, split the same way the two layers are:
|
| 191 |
<code>summary.md</code> is extraction (figures and captions, no LLM anywhere in it),
|
|
@@ -652,8 +662,9 @@ you the figures rather than handing you a plausible-looking wrong caption.
|
|
| 652 |
explicitly fails the same way rather than silently doing something else.</p>
|
| 653 |
<p>If you need a journal extracted, write it a profile — <code>burlington.py</code> is the
|
| 654 |
template for sequence-based pairing, <code>gesta.py</code> for proximity-based pairing.
|
| 655 |
-
<code>caption_source</code> has
|
| 656 |
-
|
|
|
|
| 657 |
<p><code>caption_number</code> is the number the caption text itself opens with ("Fig. 3",
|
| 658 |
"3.", "Abb. 3"). Compare it against a figure's position to audit the pairing.</p>
|
| 659 |
<h3>When a region is more than one figure</h3>
|
|
|
|
| 186 |
a detected picture no caption claimed. A figure Docling finds but cannot
|
| 187 |
rasterise, and a caption whose figure was never detected, are both still
|
| 188 |
recorded with <code>image_path</code> absent — nothing is silently dropped.</p>
|
| 189 |
+
<p><strong>JHNA figures come from the article page, not the PDF.</strong> When a PDF has a
|
| 190 |
+
download sidecar (<code><slug>.json</code>) whose URL the profile serves, <code>extract</code> reads
|
| 191 |
+
the text from the PDF and the figures from the article's web page: each
|
| 192 |
+
figure's caption and image link sit in one element there, so nothing is paired
|
| 193 |
+
by position, and the linked image is the journal's upload (about 2x the PDF's
|
| 194 |
+
embedded resolution). Such a figure has <code>caption_source: "html"</code>, an
|
| 195 |
+
<code>image_url</code>, no <code>page</code>/<code>bbox</code>, and its <code>image_path</code> is the journal's JPEG or
|
| 196 |
+
PNG byte for byte (<code>figures/f001.jpg</code>). Pages and images are cached under
|
| 197 |
+
<code>data/cache/web/</code>. <code>--figures pdf</code> keeps the PDF path; <code>--figures html</code>
|
| 198 |
+
refuses a paper with no page. See <code>src/artpapers/webextract.py</code>.</p>
|
| 199 |
<h2>Reports</h2>
|
| 200 |
<p>Two independent, read-only reports, split the same way the two layers are:
|
| 201 |
<code>summary.md</code> is extraction (figures and captions, no LLM anywhere in it),
|
|
|
|
| 662 |
explicitly fails the same way rather than silently doing something else.</p>
|
| 663 |
<p>If you need a journal extracted, write it a profile — <code>burlington.py</code> is the
|
| 664 |
template for sequence-based pairing, <code>gesta.py</code> for proximity-based pairing.
|
| 665 |
+
<code>caption_source</code> has three values so far: <code>sequence</code> and <code>proximity</code> from the
|
| 666 |
+
PDF, and <code>html</code> from an article page; a profile that finds captions a
|
| 667 |
+
different way adds its own rather than reusing one.</p>
|
| 668 |
<p><code>caption_number</code> is the number the caption text itself opens with ("Fig. 3",
|
| 669 |
"3.", "Abb. 3"). Compare it against a figure's position to audit the pairing.</p>
|
| 670 |
<h3>When a region is more than one figure</h3>
|
nav.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
| 16 |
"slug": "part-2",
|
| 17 |
"label": "Part II",
|
| 18 |
"title": "How can we support Digital Art History with Multimodal LLMs",
|
| 19 |
-
"summary": "The IRS prototype: evaluation framework,
|
| 20 |
"icon": "layers",
|
| 21 |
"file": "content/part-2/index.html",
|
| 22 |
"steps": true,
|
|
@@ -137,6 +137,22 @@
|
|
| 137 |
]
|
| 138 |
}
|
| 139 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
}
|
| 141 |
]
|
| 142 |
},
|
|
@@ -151,43 +167,6 @@
|
|
| 151 |
],
|
| 152 |
"steps": true
|
| 153 |
},
|
| 154 |
-
{
|
| 155 |
-
"slug": "theoretical-framework",
|
| 156 |
-
"title": "Theoretical framework",
|
| 157 |
-
"icon": "layers",
|
| 158 |
-
"file": "content/part-2/framework/index.html",
|
| 159 |
-
"status": "Draft",
|
| 160 |
-
"children": [
|
| 161 |
-
{
|
| 162 |
-
"slug": "applied",
|
| 163 |
-
"title": "Frameworks applied to 300 queries",
|
| 164 |
-
"summary": "Every labelled query classified under Panofsky, J&C, Hollink and L1–L5; the first 20 in full.",
|
| 165 |
-
"icon": "list",
|
| 166 |
-
"file": "content/part-2/framework/applied.html"
|
| 167 |
-
},
|
| 168 |
-
{
|
| 169 |
-
"slug": "pyramid-queries",
|
| 170 |
-
"title": "Pyramid: 50 queries",
|
| 171 |
-
"summary": "50 queries, one per paper, split into constraints and classified under levels I–VII + N by Gemini 3.6 Flash and Qwen3-VL.",
|
| 172 |
-
"icon": "list",
|
| 173 |
-
"file": "content/part-2/framework/pyramid-queries.html"
|
| 174 |
-
},
|
| 175 |
-
{
|
| 176 |
-
"slug": "pyramid-images",
|
| 177 |
-
"title": "Pyramid: gold figures",
|
| 178 |
-
"summary": "The 85 gold figures of those queries, described at every level by both models, from the image alone.",
|
| 179 |
-
"icon": "layers",
|
| 180 |
-
"file": "content/part-2/framework/pyramid-images.html"
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"slug": "slides",
|
| 184 |
-
"title": "Slides",
|
| 185 |
-
"summary": "The framework as a presentation, around the Van der Goes example.",
|
| 186 |
-
"icon": "book",
|
| 187 |
-
"file": "content/part-2/framework/slides.html"
|
| 188 |
-
}
|
| 189 |
-
]
|
| 190 |
-
},
|
| 191 |
{
|
| 192 |
"slug": "pool-creation",
|
| 193 |
"title": "Dataset",
|
|
@@ -197,22 +176,68 @@
|
|
| 197 |
"status": "Draft",
|
| 198 |
"children": [
|
| 199 |
{
|
| 200 |
-
"slug": "
|
| 201 |
-
"title": "Dataset",
|
| 202 |
-
"summary": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
"icon": "bar-chart",
|
| 204 |
-
"file": "content/part-2/pool/
|
|
|
|
| 205 |
}
|
| 206 |
]
|
| 207 |
},
|
| 208 |
{
|
| 209 |
"slug": "irs-testing",
|
| 210 |
-
"title": "
|
| 211 |
-
"summary": "
|
| 212 |
"icon": "flask",
|
| 213 |
"file": "content/part-2/bench/index.html",
|
| 214 |
"status": "Draft",
|
| 215 |
"children": [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 216 |
{
|
| 217 |
"slug": "results",
|
| 218 |
"title": "Results",
|
|
|
|
| 16 |
"slug": "part-2",
|
| 17 |
"label": "Part II",
|
| 18 |
"title": "How can we support Digital Art History with Multimodal LLMs",
|
| 19 |
+
"summary": "The IRS prototype: evaluation framework, dataset and retrieval.",
|
| 20 |
"icon": "layers",
|
| 21 |
"file": "content/part-2/index.html",
|
| 22 |
"steps": true,
|
|
|
|
| 137 |
]
|
| 138 |
}
|
| 139 |
]
|
| 140 |
+
},
|
| 141 |
+
{
|
| 142 |
+
"slug": "local-models",
|
| 143 |
+
"title": "Local models: smoke test",
|
| 144 |
+
"summary": "Qwen3.6, Qwen3.8, Gemma 4 and Mistral 3.2 on one image, served locally with vLLM.",
|
| 145 |
+
"icon": "flask",
|
| 146 |
+
"file": "content/part-2/evaluation-framework/analysis/local-models.html",
|
| 147 |
+
"hidden": true
|
| 148 |
+
},
|
| 149 |
+
{
|
| 150 |
+
"slug": "description-retrieval",
|
| 151 |
+
"title": "Local models: retrieval by description",
|
| 152 |
+
"summary": "Four local models describe 732 images; 50 queries are matched to the descriptions, against direct image search.",
|
| 153 |
+
"icon": "flask",
|
| 154 |
+
"file": "content/part-2/evaluation-framework/analysis/description-retrieval.html",
|
| 155 |
+
"hidden": true
|
| 156 |
}
|
| 157 |
]
|
| 158 |
},
|
|
|
|
| 167 |
],
|
| 168 |
"steps": true
|
| 169 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
{
|
| 171 |
"slug": "pool-creation",
|
| 172 |
"title": "Dataset",
|
|
|
|
| 176 |
"status": "Draft",
|
| 177 |
"children": [
|
| 178 |
{
|
| 179 |
+
"slug": "v1",
|
| 180 |
+
"title": "Dataset v1",
|
| 181 |
+
"summary": "JHNA figures from the article pages, annotator validation and graded relevance: what changes from v0.",
|
| 182 |
+
"icon": "database",
|
| 183 |
+
"file": "content/part-2/pool/v1.html",
|
| 184 |
+
"status": "Draft"
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"slug": "v0",
|
| 188 |
+
"title": "Dataset v0",
|
| 189 |
+
"summary": "The first build (run adcf1483): PDF figure crops, stage-C links as binary gold, 372 queries over 34,364 images.",
|
| 190 |
"icon": "bar-chart",
|
| 191 |
+
"file": "content/part-2/pool/v0.html",
|
| 192 |
+
"hidden": true
|
| 193 |
}
|
| 194 |
]
|
| 195 |
},
|
| 196 |
{
|
| 197 |
"slug": "irs-testing",
|
| 198 |
+
"title": "Retrieval",
|
| 199 |
+
"summary": "What a retrieval system should find (the theoretical framework), and how zero-shot text-to-image models score on the dataset.",
|
| 200 |
"icon": "flask",
|
| 201 |
"file": "content/part-2/bench/index.html",
|
| 202 |
"status": "Draft",
|
| 203 |
"children": [
|
| 204 |
+
{
|
| 205 |
+
"slug": "theoretical-framework",
|
| 206 |
+
"title": "Theoretical framework",
|
| 207 |
+
"icon": "layers",
|
| 208 |
+
"file": "content/part-2/framework/index.html",
|
| 209 |
+
"status": "Draft",
|
| 210 |
+
"children": [
|
| 211 |
+
{
|
| 212 |
+
"slug": "applied",
|
| 213 |
+
"title": "Frameworks applied to 300 queries",
|
| 214 |
+
"summary": "Every labelled query classified under Panofsky, J&C, Hollink and L1–L5; the first 20 in full.",
|
| 215 |
+
"icon": "list",
|
| 216 |
+
"file": "content/part-2/framework/applied.html"
|
| 217 |
+
},
|
| 218 |
+
{
|
| 219 |
+
"slug": "pyramid-queries",
|
| 220 |
+
"title": "Pyramid: 50 queries",
|
| 221 |
+
"summary": "50 queries, one per paper, split into constraints and classified under levels I–VII + N by Gemini 3.6 Flash and Qwen3-VL.",
|
| 222 |
+
"icon": "list",
|
| 223 |
+
"file": "content/part-2/framework/pyramid-queries.html"
|
| 224 |
+
},
|
| 225 |
+
{
|
| 226 |
+
"slug": "pyramid-images",
|
| 227 |
+
"title": "Pyramid: gold figures",
|
| 228 |
+
"summary": "The 85 gold figures of those queries, described at every level by both models, from the image alone.",
|
| 229 |
+
"icon": "layers",
|
| 230 |
+
"file": "content/part-2/framework/pyramid-images.html"
|
| 231 |
+
},
|
| 232 |
+
{
|
| 233 |
+
"slug": "slides",
|
| 234 |
+
"title": "Slides",
|
| 235 |
+
"summary": "The framework as a presentation, around the Van der Goes example.",
|
| 236 |
+
"icon": "book",
|
| 237 |
+
"file": "content/part-2/framework/slides.html"
|
| 238 |
+
}
|
| 239 |
+
]
|
| 240 |
+
},
|
| 241 |
{
|
| 242 |
"slug": "results",
|
| 243 |
"title": "Results",
|