Commit ·
62291cd
1
Parent(s): 7e44a97
Add first-person folding evidence preview
Browse files- .gitattributes +1 -0
- assets/evidence-fold-towel-v1.png +3 -0
- index.html +36 -6
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
assets/evidence-fold-towel-v1.png
ADDED
|
Git LFS Details
|
index.html
CHANGED
|
@@ -119,6 +119,14 @@
|
|
| 119 |
align-items: end;
|
| 120 |
box-shadow: inset 0 0 0 1px rgba(183,242,255,.08), inset 0 -70px 80px rgba(24,78,91,.14);
|
| 121 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
.evidence-window::before {
|
| 123 |
content: "";
|
| 124 |
position: absolute;
|
|
@@ -130,12 +138,16 @@
|
|
| 130 |
right: -82px;
|
| 131 |
box-shadow: 0 0 0 34px rgba(83,217,245,.025), 0 0 0 68px rgba(83,217,245,.018);
|
| 132 |
}
|
| 133 |
-
.
|
| 134 |
-
.
|
|
|
|
|
|
|
|
|
|
| 135 |
.surface-line span { transition: color .35s, background .35s; }
|
| 136 |
.surface-line .hot { color: var(--signal-soft); }
|
| 137 |
-
.framecode { position: absolute; top: 14px; left: 16px; color: rgba(183,242,255,.
|
| 138 |
-
.
|
|
|
|
| 139 |
.scope-line::after { content: ""; display: block; height: 100%; width: var(--progress, 0%); background: var(--signal); box-shadow: 0 0 12px rgba(83,217,245,.48); transition: width 1.1s cubic-bezier(.22,.8,.3,1); }
|
| 140 |
.evidence-meta { margin-top: auto; padding-top: 20px; display: grid; gap: 9px; font-size: 10px; }
|
| 141 |
.meta-row { display: flex; justify-content: space-between; border-bottom: 1px solid var(--line); padding-bottom: 8px; }
|
|
@@ -286,7 +298,7 @@
|
|
| 286 |
<header class="shell topbar">
|
| 287 |
<div class="mark"><span class="mark-glyph">U</span><span>UniversalLabeler</span></div>
|
| 288 |
<div class="top-center">Loss-resistant annotation translation</div>
|
| 289 |
-
<div class="top-right"><span class="status-dot" aria-hidden="true"></span><span>v1.0.
|
| 290 |
</header>
|
| 291 |
|
| 292 |
<main>
|
|
@@ -300,7 +312,9 @@
|
|
| 300 |
<section class="panel source-panel" aria-label="Source evidence">
|
| 301 |
<div class="panel-label"><span>01 / Observe</span><span id="source-locale">EN source</span></div>
|
| 302 |
<div class="evidence-window">
|
|
|
|
| 303 |
<div class="framecode" id="framecode">FRAME 01:00:01.000—01:00:08.000</div>
|
|
|
|
| 304 |
<svg class="scene-glyph" viewBox="0 0 420 260" aria-hidden="true">
|
| 305 |
<g fill="none" stroke="rgba(183,242,255,.24)" stroke-width="1.4">
|
| 306 |
<path d="M38 190H382M94 190v42M330 190v42"/>
|
|
@@ -391,7 +405,7 @@
|
|
| 391 |
<footer>
|
| 392 |
<div class="footer-inner">
|
| 393 |
<div class="footer-title">Meaning,<br>packed.</div>
|
| 394 |
-
<div class="footer-meta">UNIVERSAL LABELER / RELEASE 1.0.
|
| 395 |
</div>
|
| 396 |
</footer>
|
| 397 |
|
|
@@ -399,24 +413,28 @@
|
|
| 399 |
const scenes = [
|
| 400 |
{
|
| 401 |
name: "fold_towel", source: "Fold the towel on the table with both hands.", hot: "towel",
|
|
|
|
| 402 |
environment: "indoor · laundry area", duration: "7.00 s · episode_clock", claims: 10,
|
| 403 |
values: { action: "fold", agent: "human performer", roles: "left stabilizes · right acts", object: "towel_01 · patient", place: "table · laundry area", before: "unfolded · dry", after: "folded · dry", time: "1.00—8.00 s", outcome: "success", evidence: "RGB · hand pose · narration" },
|
| 404 |
text: { en: "Fold the towel on the table with both hands.", zh: "用双手在桌上把毛巾叠好。", tl: "Tiklupin ang tuwalya sa mesa gamit ang dalawang kamay.", es: "Dobla la toalla sobre la mesa con ambas manos.", hi: "दोनों हाथों से मेज़ पर तौलिया मोड़ें।" }
|
| 405 |
},
|
| 406 |
{
|
| 407 |
name: "open_jar", source: "Hold the jar with the left hand and unscrew the lid with the right.", hot: "unscrew",
|
|
|
|
| 408 |
environment: "indoor · kitchen counter", duration: "4.20 s · episode_clock", claims: 11,
|
| 409 |
values: { action: "unscrew", agent: "human performer", roles: "left stabilizes · right rotates", object: "lid_01 · patient", place: "jar · kitchen counter", before: "jar sealed", after: "jar open", time: "12.30—16.50 s", outcome: "success", evidence: "RGB · hand pose · object track" },
|
| 410 |
text: { en: "Hold the jar with the left hand and unscrew the lid with the right.", zh: "左手扶稳罐子,右手拧开盖子。", tl: "Hawakan ang garapon sa kaliwang kamay at pihitin ang takip gamit ang kanan.", es: "Sujeta el frasco con la izquierda y desenrosca la tapa con la derecha.", hi: "बाएँ हाथ से जार को थामें और दाएँ हाथ से ढक्कन खोलें।" }
|
| 411 |
},
|
| 412 |
{
|
| 413 |
name: "place_mug", source: "Place the blue mug upright on the upper shelf using the right hand.", hot: "upper shelf",
|
|
|
|
| 414 |
environment: "indoor · storage cabinet", duration: "2.80 s · episode_clock", claims: 10,
|
| 415 |
values: { action: "place", agent: "human performer", roles: "right acts · left idle", object: "blue_mug_01 · patient", place: "upper_shelf · destination", before: "held · tilted", after: "supported · upright", time: "21.10—23.90 s", outcome: "stable placement", evidence: "RGB · depth · object pose" },
|
| 416 |
text: { en: "Place the blue mug upright on the upper shelf using the right hand.", zh: "用右手把蓝色杯子直立放到上层架子上。", tl: "Ilagay nang patayo ang asul na tasa sa itaas na estante gamit ang kanang kamay.", es: "Coloca la taza azul en posición vertical sobre el estante superior con la mano derecha.", hi: "दाएँ हाथ से नीले मग को ऊपरी शेल्फ़ पर सीधा रखें।" }
|
| 417 |
},
|
| 418 |
{
|
| 419 |
name: "slice_tomato", source: "Stabilize the tomato with the left hand and slice it with the knife.", hot: "knife",
|
|
|
|
| 420 |
environment: "indoor · food prep station", duration: "5.60 s · episode_clock", claims: 12,
|
| 421 |
values: { action: "slice", agent: "human performer", roles: "left stabilizes · right cuts", object: "tomato_01 · patient", place: "cutting_board · support", before: "whole tomato", after: "separated slices", time: "31.00—36.60 s", outcome: "cut completed", evidence: "RGB · contact · temporal span" },
|
| 422 |
text: { en: "Stabilize the tomato with the left hand and slice it with the knife.", zh: "左手扶稳番茄,用刀将它切片。", tl: "Hawakan nang matatag ang kamatis sa kaliwang kamay at hiwain ito gamit ang kutsilyo.", es: "Sujeta el tomate con la mano izquierda y córtalo en rodajas con el cuchillo.", hi: "बाएँ हाथ से टमाटर को स्थिर रखें और चाकू से उसके टुकड़े काटें।" }
|
|
@@ -488,6 +506,18 @@
|
|
| 488 |
document.querySelector("#environment").textContent = scene.environment;
|
| 489 |
document.querySelector("#time-scope").textContent = scene.duration;
|
| 490 |
document.querySelector("#framecode").textContent = `EVENT / ${scene.name.toUpperCase()}`;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 491 |
document.querySelector("#claim-count").textContent = scene.claims;
|
| 492 |
document.querySelector(".core-count").textContent = `${scene.claims} / ${scene.claims} claims`;
|
| 493 |
document.querySelector("#represented").textContent = `${scene.claims} / ${scene.claims}`;
|
|
|
|
| 119 |
align-items: end;
|
| 120 |
box-shadow: inset 0 0 0 1px rgba(183,242,255,.08), inset 0 -70px 80px rgba(24,78,91,.14);
|
| 121 |
}
|
| 122 |
+
.evidence-window::after {
|
| 123 |
+
content: "";
|
| 124 |
+
position: absolute;
|
| 125 |
+
inset: 0;
|
| 126 |
+
z-index: 1;
|
| 127 |
+
pointer-events: none;
|
| 128 |
+
background: linear-gradient(180deg, rgba(2,8,11,.08) 24%, rgba(2,8,11,.3) 57%, rgba(2,8,11,.94) 100%);
|
| 129 |
+
}
|
| 130 |
.evidence-window::before {
|
| 131 |
content: "";
|
| 132 |
position: absolute;
|
|
|
|
| 138 |
right: -82px;
|
| 139 |
box-shadow: 0 0 0 34px rgba(83,217,245,.025), 0 0 0 68px rgba(83,217,245,.018);
|
| 140 |
}
|
| 141 |
+
.evidence-preview { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 48%; filter: saturate(.76) brightness(.76) contrast(1.08); opacity: .9; }
|
| 142 |
+
.evidence-preview[hidden] { display: none; }
|
| 143 |
+
.scene-glyph { position: absolute; inset: 0; z-index: 2; opacity: .16; transition: opacity .25s; }
|
| 144 |
+
.evidence-window:not(.has-preview) .scene-glyph { opacity: .78; }
|
| 145 |
+
.surface-line { position: relative; z-index: 3; font: 400 clamp(21px, 2vw, 32px)/1.06 var(--serif); max-width: 92%; text-shadow: 0 2px 18px #02080b; }
|
| 146 |
.surface-line span { transition: color .35s, background .35s; }
|
| 147 |
.surface-line .hot { color: var(--signal-soft); }
|
| 148 |
+
.framecode { position: absolute; z-index: 3; top: 14px; left: 16px; color: rgba(183,242,255,.74); font-size: 9px; letter-spacing: .12em; text-shadow: 0 1px 8px #02080b; }
|
| 149 |
+
.preview-kind { position: absolute; z-index: 3; top: 14px; right: 16px; color: rgba(183,242,255,.64); font-size: 8px; letter-spacing: .1em; text-transform: uppercase; text-shadow: 0 1px 8px #02080b; }
|
| 150 |
+
.scope-line { position: absolute; z-index: 4; bottom: 0; left: 0; height: 2px; width: 100%; background: rgba(183,242,255,.1); }
|
| 151 |
.scope-line::after { content: ""; display: block; height: 100%; width: var(--progress, 0%); background: var(--signal); box-shadow: 0 0 12px rgba(83,217,245,.48); transition: width 1.1s cubic-bezier(.22,.8,.3,1); }
|
| 152 |
.evidence-meta { margin-top: auto; padding-top: 20px; display: grid; gap: 9px; font-size: 10px; }
|
| 153 |
.meta-row { display: flex; justify-content: space-between; border-bottom: 1px solid var(--line); padding-bottom: 8px; }
|
|
|
|
| 298 |
<header class="shell topbar">
|
| 299 |
<div class="mark"><span class="mark-glyph">U</span><span>UniversalLabeler</span></div>
|
| 300 |
<div class="top-center">Loss-resistant annotation translation</div>
|
| 301 |
+
<div class="top-right"><span class="status-dot" aria-hidden="true"></span><span>v1.0.4 / Public spec</span></div>
|
| 302 |
</header>
|
| 303 |
|
| 304 |
<main>
|
|
|
|
| 312 |
<section class="panel source-panel" aria-label="Source evidence">
|
| 313 |
<div class="panel-label"><span>01 / Observe</span><span id="source-locale">EN source</span></div>
|
| 314 |
<div class="evidence-window">
|
| 315 |
+
<img class="evidence-preview" id="evidence-preview" src="../assets/evidence-fold-towel-v1.png" alt="Synthetic first-person preview of two hands folding a pale blue towel on a dark table">
|
| 316 |
<div class="framecode" id="framecode">FRAME 01:00:01.000—01:00:08.000</div>
|
| 317 |
+
<div class="preview-kind" id="preview-kind">synthetic visual preview</div>
|
| 318 |
<svg class="scene-glyph" viewBox="0 0 420 260" aria-hidden="true">
|
| 319 |
<g fill="none" stroke="rgba(183,242,255,.24)" stroke-width="1.4">
|
| 320 |
<path d="M38 190H382M94 190v42M330 190v42"/>
|
|
|
|
| 405 |
<footer>
|
| 406 |
<div class="footer-inner">
|
| 407 |
<div class="footer-title">Meaning,<br>packed.</div>
|
| 408 |
+
<div class="footer-meta">UNIVERSAL LABELER / RELEASE 1.0.4<br>5 HUMAN LANGUAGES · 22 WORLD DIMENSIONS<br><a href="https://huggingface.co/datasets/itspublu/UniversalLabeler">VIEW DATA + SCHEMAS ↗</a></div>
|
| 409 |
</div>
|
| 410 |
</footer>
|
| 411 |
|
|
|
|
| 413 |
const scenes = [
|
| 414 |
{
|
| 415 |
name: "fold_towel", source: "Fold the towel on the table with both hands.", hot: "towel",
|
| 416 |
+
preview: "../assets/evidence-fold-towel-v1.png",
|
| 417 |
environment: "indoor · laundry area", duration: "7.00 s · episode_clock", claims: 10,
|
| 418 |
values: { action: "fold", agent: "human performer", roles: "left stabilizes · right acts", object: "towel_01 · patient", place: "table · laundry area", before: "unfolded · dry", after: "folded · dry", time: "1.00—8.00 s", outcome: "success", evidence: "RGB · hand pose · narration" },
|
| 419 |
text: { en: "Fold the towel on the table with both hands.", zh: "用双手在桌上把毛巾叠好。", tl: "Tiklupin ang tuwalya sa mesa gamit ang dalawang kamay.", es: "Dobla la toalla sobre la mesa con ambas manos.", hi: "दोनों हाथों से मेज़ पर तौलिया मोड़ें।" }
|
| 420 |
},
|
| 421 |
{
|
| 422 |
name: "open_jar", source: "Hold the jar with the left hand and unscrew the lid with the right.", hot: "unscrew",
|
| 423 |
+
preview: null,
|
| 424 |
environment: "indoor · kitchen counter", duration: "4.20 s · episode_clock", claims: 11,
|
| 425 |
values: { action: "unscrew", agent: "human performer", roles: "left stabilizes · right rotates", object: "lid_01 · patient", place: "jar · kitchen counter", before: "jar sealed", after: "jar open", time: "12.30—16.50 s", outcome: "success", evidence: "RGB · hand pose · object track" },
|
| 426 |
text: { en: "Hold the jar with the left hand and unscrew the lid with the right.", zh: "左手扶稳罐子,右手拧开盖子。", tl: "Hawakan ang garapon sa kaliwang kamay at pihitin ang takip gamit ang kanan.", es: "Sujeta el frasco con la izquierda y desenrosca la tapa con la derecha.", hi: "बाएँ हाथ से जार को थामें और दाएँ हाथ से ढक्कन खोलें।" }
|
| 427 |
},
|
| 428 |
{
|
| 429 |
name: "place_mug", source: "Place the blue mug upright on the upper shelf using the right hand.", hot: "upper shelf",
|
| 430 |
+
preview: null,
|
| 431 |
environment: "indoor · storage cabinet", duration: "2.80 s · episode_clock", claims: 10,
|
| 432 |
values: { action: "place", agent: "human performer", roles: "right acts · left idle", object: "blue_mug_01 · patient", place: "upper_shelf · destination", before: "held · tilted", after: "supported · upright", time: "21.10—23.90 s", outcome: "stable placement", evidence: "RGB · depth · object pose" },
|
| 433 |
text: { en: "Place the blue mug upright on the upper shelf using the right hand.", zh: "用右手把蓝色杯子直立放到上层架子上。", tl: "Ilagay nang patayo ang asul na tasa sa itaas na estante gamit ang kanang kamay.", es: "Coloca la taza azul en posición vertical sobre el estante superior con la mano derecha.", hi: "दाएँ हाथ से नीले मग को ऊपरी शेल्फ़ पर सीधा रखें।" }
|
| 434 |
},
|
| 435 |
{
|
| 436 |
name: "slice_tomato", source: "Stabilize the tomato with the left hand and slice it with the knife.", hot: "knife",
|
| 437 |
+
preview: null,
|
| 438 |
environment: "indoor · food prep station", duration: "5.60 s · episode_clock", claims: 12,
|
| 439 |
values: { action: "slice", agent: "human performer", roles: "left stabilizes · right cuts", object: "tomato_01 · patient", place: "cutting_board · support", before: "whole tomato", after: "separated slices", time: "31.00—36.60 s", outcome: "cut completed", evidence: "RGB · contact · temporal span" },
|
| 440 |
text: { en: "Stabilize the tomato with the left hand and slice it with the knife.", zh: "左手扶稳番茄,用刀将它切片。", tl: "Hawakan nang matatag ang kamatis sa kaliwang kamay at hiwain ito gamit ang kutsilyo.", es: "Sujeta el tomate con la mano izquierda y córtalo en rodajas con el cuchillo.", hi: "बाएँ हाथ से टमाटर को स्थिर रखें और चाकू से उसके टुकड़े काटें।" }
|
|
|
|
| 506 |
document.querySelector("#environment").textContent = scene.environment;
|
| 507 |
document.querySelector("#time-scope").textContent = scene.duration;
|
| 508 |
document.querySelector("#framecode").textContent = `EVENT / ${scene.name.toUpperCase()}`;
|
| 509 |
+
const preview = document.querySelector("#evidence-preview");
|
| 510 |
+
const previewWindow = document.querySelector(".evidence-window");
|
| 511 |
+
if (scene.preview) {
|
| 512 |
+
preview.src = scene.preview;
|
| 513 |
+
preview.hidden = false;
|
| 514 |
+
previewWindow.classList.add("has-preview");
|
| 515 |
+
document.querySelector("#preview-kind").textContent = "synthetic visual preview";
|
| 516 |
+
} else {
|
| 517 |
+
preview.hidden = true;
|
| 518 |
+
previewWindow.classList.remove("has-preview");
|
| 519 |
+
document.querySelector("#preview-kind").textContent = "semantic schematic";
|
| 520 |
+
}
|
| 521 |
document.querySelector("#claim-count").textContent = scene.claims;
|
| 522 |
document.querySelector(".core-count").textContent = `${scene.claims} / ${scene.claims} claims`;
|
| 523 |
document.querySelector("#represented").textContent = `${scene.claims} / ${scene.claims}`;
|