Publish Ropedia Xperience-10M task baseline cards
Browse files
assets/task_suite_infographic.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
scripts/render_task_suite_infographic.py
CHANGED
|
@@ -25,7 +25,7 @@ DEFAULT_BASE = ROOT / "docs/assets/task_suite_infographic_base.png"
|
|
| 25 |
DEFAULT_SAMPLE_DIR = ROOT.parent / "data/sample/xperience-10m-sample"
|
| 26 |
DEFAULT_OUTPUT = ROOT / "docs/assets/task_suite_infographic.png"
|
| 27 |
CANVAS_WIDTH = 1800
|
| 28 |
-
CANVAS_HEIGHT =
|
| 29 |
THUMB_WIDTH = 420
|
| 30 |
THUMB_HEIGHT = 160
|
| 31 |
|
|
@@ -78,13 +78,13 @@ GROUPS = [
|
|
| 78 |
]
|
| 79 |
|
| 80 |
MODALITIES = [
|
| 81 |
-
("video", "6 camera streams", "fisheye + stereo"),
|
| 82 |
-
("audio", "AAC stream in MP4", "documented, not featurized"),
|
| 83 |
-
("depth", "depth + confidence", "spatial geometry"),
|
| 84 |
-
("pose / SLAM", "camera
|
| 85 |
-
("motion capture", "body + hand joints", "mocap
|
| 86 |
-
("inertial", "
|
| 87 |
-
("language", "objects + captions", "
|
| 88 |
]
|
| 89 |
|
| 90 |
HAND_EDGES = [
|
|
@@ -499,14 +499,17 @@ def task_card(task_name: str, kind: str, metrics: dict, group: dict, index: int,
|
|
| 499 |
"""
|
| 500 |
|
| 501 |
|
| 502 |
-
def modality_card(name: str, line_one: str, line_two: str, index: int, thumbnail: str | None) -> str:
|
| 503 |
thumb_html = ""
|
| 504 |
if thumbnail:
|
| 505 |
thumb_html = f'<div class="modality-thumb"><img src="{thumbnail}" alt=""></div>'
|
| 506 |
return f"""
|
| 507 |
<article class="modality">
|
| 508 |
{thumb_html}
|
| 509 |
-
<div class="modality-
|
|
|
|
|
|
|
|
|
|
| 510 |
<h3>{html.escape(name)}</h3>
|
| 511 |
<p>{html.escape(line_one)}</p>
|
| 512 |
<span>{html.escape(line_two)}</span>
|
|
@@ -533,8 +536,8 @@ def build_html(summary: dict, base_image: Path | None, sample_dir: Path | None)
|
|
| 533 |
for value, label in stats
|
| 534 |
)
|
| 535 |
modalities_html = "".join(
|
| 536 |
-
modality_card(name, line_one, line_two, index, thumbnails.get(name))
|
| 537 |
-
for index, (name, line_one, line_two) in enumerate(MODALITIES, start=1)
|
| 538 |
)
|
| 539 |
|
| 540 |
task_index = 1
|
|
@@ -670,33 +673,44 @@ def build_html(summary: dict, base_image: Path | None, sample_dir: Path | None)
|
|
| 670 |
display: flex;
|
| 671 |
align-items: center;
|
| 672 |
justify-content: space-between;
|
| 673 |
-
|
|
|
|
| 674 |
color: #a5afa2;
|
| 675 |
font-family: "SF Mono", "JetBrains Mono", ui-monospace, monospace;
|
| 676 |
-
font-size:
|
| 677 |
text-transform: uppercase;
|
| 678 |
letter-spacing: 0.08em;
|
| 679 |
}}
|
| 680 |
.section-label span:last-child {{
|
|
|
|
| 681 |
color: #dce8d7;
|
| 682 |
text-transform: none;
|
| 683 |
letter-spacing: 0;
|
| 684 |
font-family: inherit;
|
|
|
|
|
|
|
|
|
|
| 685 |
}}
|
| 686 |
.modalities {{
|
| 687 |
display: grid;
|
| 688 |
-
grid-template-columns: repeat(
|
| 689 |
-
gap:
|
| 690 |
}}
|
| 691 |
.modality {{
|
| 692 |
-
|
| 693 |
-
|
|
|
|
| 694 |
border: 1px solid rgba(167,240,120,0.22);
|
| 695 |
background: rgba(7,18,7,0.84);
|
| 696 |
border-radius: 8px;
|
|
|
|
|
|
|
| 697 |
}}
|
|
|
|
|
|
|
|
|
|
| 698 |
.modality-thumb {{
|
| 699 |
-
height:
|
| 700 |
overflow: hidden;
|
| 701 |
border: 1px solid rgba(167,240,120,0.16);
|
| 702 |
border-radius: 8px;
|
|
@@ -713,28 +727,43 @@ def build_html(summary: dict, base_image: Path | None, sample_dir: Path | None)
|
|
| 713 |
font-family: "SF Mono", "JetBrains Mono", ui-monospace, monospace;
|
| 714 |
font-variant-numeric: tabular-nums;
|
| 715 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 716 |
.modality-index {{
|
| 717 |
color: #a5afa2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 718 |
font-size: 12px;
|
| 719 |
-
|
|
|
|
|
|
|
| 720 |
}}
|
| 721 |
.modality h3 {{
|
| 722 |
-
margin:
|
| 723 |
-
font-size:
|
| 724 |
line-height: 1;
|
| 725 |
text-transform: uppercase;
|
| 726 |
}}
|
| 727 |
.modality p {{
|
| 728 |
-
margin:
|
| 729 |
color: #dce8d7;
|
| 730 |
-
font-size:
|
| 731 |
font-weight: 650;
|
| 732 |
}}
|
| 733 |
-
.modality span {{
|
| 734 |
display: block;
|
| 735 |
-
margin-top:
|
| 736 |
color: #a5afa2;
|
| 737 |
-
font-size:
|
|
|
|
| 738 |
}}
|
| 739 |
.shared-band {{
|
| 740 |
display: grid;
|
|
|
|
| 25 |
DEFAULT_SAMPLE_DIR = ROOT.parent / "data/sample/xperience-10m-sample"
|
| 26 |
DEFAULT_OUTPUT = ROOT / "docs/assets/task_suite_infographic.png"
|
| 27 |
CANVAS_WIDTH = 1800
|
| 28 |
+
CANVAS_HEIGHT = 2820
|
| 29 |
THUMB_WIDTH = 420
|
| 30 |
THUMB_HEIGHT = 160
|
| 31 |
|
|
|
|
| 78 |
]
|
| 79 |
|
| 80 |
MODALITIES = [
|
| 81 |
+
("video", "visual stream", "6 camera streams", "fisheye + stereo views"),
|
| 82 |
+
("audio", "acoustic stream", "AAC stream in MP4", "documented, not featurized"),
|
| 83 |
+
("depth", "geometry map", "depth + confidence", "spatial geometry"),
|
| 84 |
+
("pose / SLAM", "camera pose", "trajectory + orientation", "camera path features"),
|
| 85 |
+
("motion capture", "human motion", "body + hand joints", "mocap feature tracks"),
|
| 86 |
+
("inertial", "wearable sensor", "accelerometer + gyro", "motion dynamics"),
|
| 87 |
+
("language", "semantic annotation", "objects + captions", "task text labels"),
|
| 88 |
]
|
| 89 |
|
| 90 |
HAND_EDGES = [
|
|
|
|
| 499 |
"""
|
| 500 |
|
| 501 |
|
| 502 |
+
def modality_card(name: str, modality_type: str, line_one: str, line_two: str, index: int, thumbnail: str | None) -> str:
|
| 503 |
thumb_html = ""
|
| 504 |
if thumbnail:
|
| 505 |
thumb_html = f'<div class="modality-thumb"><img src="{thumbnail}" alt=""></div>'
|
| 506 |
return f"""
|
| 507 |
<article class="modality">
|
| 508 |
{thumb_html}
|
| 509 |
+
<div class="modality-meta">
|
| 510 |
+
<span class="modality-index">{index:02d}</span>
|
| 511 |
+
<span class="modality-type">{html.escape(modality_type)}</span>
|
| 512 |
+
</div>
|
| 513 |
<h3>{html.escape(name)}</h3>
|
| 514 |
<p>{html.escape(line_one)}</p>
|
| 515 |
<span>{html.escape(line_two)}</span>
|
|
|
|
| 536 |
for value, label in stats
|
| 537 |
)
|
| 538 |
modalities_html = "".join(
|
| 539 |
+
modality_card(name, modality_type, line_one, line_two, index, thumbnails.get(name))
|
| 540 |
+
for index, (name, modality_type, line_one, line_two) in enumerate(MODALITIES, start=1)
|
| 541 |
)
|
| 542 |
|
| 543 |
task_index = 1
|
|
|
|
| 673 |
display: flex;
|
| 674 |
align-items: center;
|
| 675 |
justify-content: space-between;
|
| 676 |
+
gap: 42px;
|
| 677 |
+
margin: 34px 0 18px;
|
| 678 |
color: #a5afa2;
|
| 679 |
font-family: "SF Mono", "JetBrains Mono", ui-monospace, monospace;
|
| 680 |
+
font-size: 16px;
|
| 681 |
text-transform: uppercase;
|
| 682 |
letter-spacing: 0.08em;
|
| 683 |
}}
|
| 684 |
.section-label span:last-child {{
|
| 685 |
+
max-width: 840px;
|
| 686 |
color: #dce8d7;
|
| 687 |
text-transform: none;
|
| 688 |
letter-spacing: 0;
|
| 689 |
font-family: inherit;
|
| 690 |
+
font-size: 14px;
|
| 691 |
+
line-height: 1.35;
|
| 692 |
+
text-align: right;
|
| 693 |
}}
|
| 694 |
.modalities {{
|
| 695 |
display: grid;
|
| 696 |
+
grid-template-columns: repeat(24, minmax(0, 1fr));
|
| 697 |
+
gap: 18px;
|
| 698 |
}}
|
| 699 |
.modality {{
|
| 700 |
+
grid-column: span 6;
|
| 701 |
+
min-height: 302px;
|
| 702 |
+
padding: 17px 18px 19px;
|
| 703 |
border: 1px solid rgba(167,240,120,0.22);
|
| 704 |
background: rgba(7,18,7,0.84);
|
| 705 |
border-radius: 8px;
|
| 706 |
+
display: flex;
|
| 707 |
+
flex-direction: column;
|
| 708 |
}}
|
| 709 |
+
.modality:nth-child(5) {{ grid-column: 4 / span 6; }}
|
| 710 |
+
.modality:nth-child(6) {{ grid-column: 10 / span 6; }}
|
| 711 |
+
.modality:nth-child(7) {{ grid-column: 16 / span 6; }}
|
| 712 |
.modality-thumb {{
|
| 713 |
+
height: 150px;
|
| 714 |
overflow: hidden;
|
| 715 |
border: 1px solid rgba(167,240,120,0.16);
|
| 716 |
border-radius: 8px;
|
|
|
|
| 727 |
font-family: "SF Mono", "JetBrains Mono", ui-monospace, monospace;
|
| 728 |
font-variant-numeric: tabular-nums;
|
| 729 |
}}
|
| 730 |
+
.modality-meta {{
|
| 731 |
+
display: flex;
|
| 732 |
+
align-items: center;
|
| 733 |
+
justify-content: space-between;
|
| 734 |
+
gap: 12px;
|
| 735 |
+
margin-top: 14px;
|
| 736 |
+
}}
|
| 737 |
.modality-index {{
|
| 738 |
color: #a5afa2;
|
| 739 |
+
font-size: 13px;
|
| 740 |
+
}}
|
| 741 |
+
.modality-type {{
|
| 742 |
+
color: #a7f078;
|
| 743 |
+
font-family: "SF Mono", "JetBrains Mono", ui-monospace, monospace;
|
| 744 |
font-size: 12px;
|
| 745 |
+
line-height: 1;
|
| 746 |
+
text-transform: uppercase;
|
| 747 |
+
letter-spacing: 0.08em;
|
| 748 |
}}
|
| 749 |
.modality h3 {{
|
| 750 |
+
margin: 10px 0 0;
|
| 751 |
+
font-size: 24px;
|
| 752 |
line-height: 1;
|
| 753 |
text-transform: uppercase;
|
| 754 |
}}
|
| 755 |
.modality p {{
|
| 756 |
+
margin: 12px 0 0;
|
| 757 |
color: #dce8d7;
|
| 758 |
+
font-size: 16px;
|
| 759 |
font-weight: 650;
|
| 760 |
}}
|
| 761 |
+
.modality > span {{
|
| 762 |
display: block;
|
| 763 |
+
margin-top: 6px;
|
| 764 |
color: #a5afa2;
|
| 765 |
+
font-size: 15px;
|
| 766 |
+
line-height: 1.25;
|
| 767 |
}}
|
| 768 |
.shared-band {{
|
| 769 |
display: grid;
|