Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
95ac9f6
[reconstruction] Add Track 1 input inventory and preflight
HiveYuan Oct 6, 2026
776548d
[reconstruction] Adapt CARI4D results to Track 1 submission files
HiveYuan Oct 6, 2026
a07e522
[reconstruction] Validate prepared Track 1 input contents
HiveYuan Oct 6, 2026
be5f47a
[reconstruction] Bind inference caches to source and input contents
HiveYuan Oct 6, 2026
cfd6b02
[reconstruction] Make Track 1 conversion acceptance explicit
HiveYuan Oct 6, 2026
ee03dab
[reconstruction] Collect and verify complete Track 1 submissions
HiveYuan Oct 6, 2026
13015a1
[reconstruction] Plan and resume bounded Track 1 batches
HiveYuan Oct 6, 2026
fa2233d
[reconstruction] Preserve meshes already below the face target
HiveYuan Oct 6, 2026
0c60bed
[reconstruction] Prepare and resume verified Track 1 inputs
HiveYuan Oct 6, 2026
78ff046
[reconstruction] Configure reviewed Track 1 segmentation prompts
HiveYuan Oct 6, 2026
9e45324
[reconstruction] Document Track 1 team review and execution workflow
HiveYuan Oct 6, 2026
8f0fa13
[reconstruction] Condense Track 1 handoff to changes and limitations
HiveYuan Oct 6, 2026
50b03e0
[reconstruction] 交接说明移至提交信息 / Move handoff notes to commit message
HiveYuan Oct 6, 2026
751ec9e
[reconstruction] Check conversion-added joint acceleration
HiveYuan Oct 7, 2026
7e11e8e
[reconstruction] Report conversion vertex-error spikes
HiveYuan Oct 7, 2026
c703f29
[reconstruction] Record conversion diagnostics without quality gates
HiveYuan Oct 7, 2026
e65fa03
[reconstruction] Merge Track 1 baseline pipeline (#2)
HiveYuan Oct 7, 2026
f116d96
[reconstruction] Record hidden FoundationPose candidates' centroid di…
Beardear Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions reconstruction/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

Docker-based modules for video reconstruction, depth estimation, object detection, segmentation, mesh generation, pose tracking, and human body modeling.

For the Track 1 challenge, start with the [input inventory](docs/track1_preflight.md)
to check episode metadata and prepared input paths before running reconstruction.
Use the [input preparation runner](docs/track1_prepare.md) to build verified masks
and static meshes, then the [batch runner](docs/track1_batch.md) to plan and execute
reconstruction. Both default to planning without starting models.

## Quickstart (MOGE)

Minimal example using MOGE. From `reconstruction/`:
Expand Down
34 changes: 34 additions & 0 deletions reconstruction/configs/track1_inputs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Initial prompts for the Track 1 baseline

`preparation.json` covers the 30 released Track 1 episodes. Each episode uses
frame zero as the reference, with human ID 0 and object ID 1. The boxes use
pixel coordinates in the original 1536 × 1152 image. They were selected by
inspecting the real reference images and magnified object crops, including the
main interacting person where background people are present.

`source_review.json` binds these annotations to the reviewed source video and
prompt contents by SHA-256. The source media are not included here. Verify the
dataset against this record before using the prompts with a different copy.
These are initial segmentation prompts, not ground-truth masks or accepted
reconstructions. Inspect the generated overlay images and static meshes before
the full baseline, especially thin hoops, pan/roller handles and occluded cart
legs. A geometrically valid box does not prove that SAM2 followed the right
object throughout the video.

Pass this manifest to the [preparation runner](../../docs/track1_prepare.md):

```bash
python -m v2d.pipelines.track1_prepare \
--preparation_manifest reconstruction/configs/track1_inputs/preparation.json \
--dataset_root /vol/data/track_1 \
--output_dir /vol/outputs/track1/prepared-001 \
--sam2_weights /vol/weights/sam2 \
--moge_weights "$MOGE_CHECKPOINT" \
--sam3d_weights /vol/weights/sam3d \
--image_build_commit "$IMAGE_BUILD_COMMIT" --image_digest "$IMAGE_DIGEST"
```

This command only creates a plan. Resolve weight paths and image provenance from
the actual deployment. Adding `--execute --episodes 16` prepares one episode;
full-roster input preparation requires `--execute --all_episodes`. Neither
command starts temporal CARI4D reconstruction or submits results to Kaggle.
215 changes: 215 additions & 0 deletions reconstruction/configs/track1_inputs/preparation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
{
"schema": "v2d.track1.preparation.v1",
"episodes": [
{
"episode_index": 0,
"prompts_path": "prompts/episode_000000.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 1,
"prompts_path": "prompts/episode_000001.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 2,
"prompts_path": "prompts/episode_000002.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 3,
"prompts_path": "prompts/episode_000003.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 4,
"prompts_path": "prompts/episode_000004.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 5,
"prompts_path": "prompts/episode_000005.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 6,
"prompts_path": "prompts/episode_000006.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 7,
"prompts_path": "prompts/episode_000007.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 8,
"prompts_path": "prompts/episode_000008.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 9,
"prompts_path": "prompts/episode_000009.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 10,
"prompts_path": "prompts/episode_000010.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 11,
"prompts_path": "prompts/episode_000011.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 12,
"prompts_path": "prompts/episode_000012.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 13,
"prompts_path": "prompts/episode_000013.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 14,
"prompts_path": "prompts/episode_000014.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 15,
"prompts_path": "prompts/episode_000015.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 16,
"prompts_path": "prompts/episode_000016.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 17,
"prompts_path": "prompts/episode_000017.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 18,
"prompts_path": "prompts/episode_000018.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 19,
"prompts_path": "prompts/episode_000019.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 20,
"prompts_path": "prompts/episode_000020.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 21,
"prompts_path": "prompts/episode_000021.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 22,
"prompts_path": "prompts/episode_000022.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 23,
"prompts_path": "prompts/episode_000023.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 24,
"prompts_path": "prompts/episode_000024.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 25,
"prompts_path": "prompts/episode_000025.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 26,
"prompts_path": "prompts/episode_000026.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 27,
"prompts_path": "prompts/episode_000027.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 28,
"prompts_path": "prompts/episode_000028.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
},
{
"episode_index": 29,
"prompts_path": "prompts/episode_000029.json",
"reference_frame": 0,
"human_id": 0,
"object_id": 1
}
]
}
26 changes: 26 additions & 0 deletions reconstruction/configs/track1_inputs/prompts/episode_000000.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"prompts": [
{
"frame_index": 0,
"object_id": 0,
"role": "human",
"box": {
"x0": 454,
"y0": 384,
"x1": 634,
"y1": 944
}
},
{
"frame_index": 0,
"object_id": 1,
"role": "object",
"box": {
"x0": 624,
"y0": 771,
"x1": 819,
"y1": 848
}
}
]
}
26 changes: 26 additions & 0 deletions reconstruction/configs/track1_inputs/prompts/episode_000001.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"prompts": [
{
"frame_index": 0,
"object_id": 0,
"role": "human",
"box": {
"x0": 771,
"y0": 403,
"x1": 944,
"y1": 896
}
},
{
"frame_index": 0,
"object_id": 1,
"role": "object",
"box": {
"x0": 586,
"y0": 848,
"x1": 826,
"y1": 982
}
}
]
}
26 changes: 26 additions & 0 deletions reconstruction/configs/track1_inputs/prompts/episode_000002.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"prompts": [
{
"frame_index": 0,
"object_id": 0,
"role": "human",
"box": {
"x0": 685,
"y0": 451,
"x1": 810,
"y1": 803
}
},
{
"frame_index": 0,
"object_id": 1,
"role": "object",
"box": {
"x0": 595,
"y0": 861,
"x1": 861,
"y1": 995
}
}
]
}
26 changes: 26 additions & 0 deletions reconstruction/configs/track1_inputs/prompts/episode_000003.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"prompts": [
{
"frame_index": 0,
"object_id": 0,
"role": "human",
"box": {
"x0": 627,
"y0": 406,
"x1": 838,
"y1": 896
}
},
{
"frame_index": 0,
"object_id": 1,
"role": "object",
"box": {
"x0": 762,
"y0": 643,
"x1": 870,
"y1": 714
}
}
]
}
26 changes: 26 additions & 0 deletions reconstruction/configs/track1_inputs/prompts/episode_000004.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"prompts": [
{
"frame_index": 0,
"object_id": 0,
"role": "human",
"box": {
"x0": 803,
"y0": 365,
"x1": 992,
"y1": 902
}
},
{
"frame_index": 0,
"object_id": 1,
"role": "object",
"box": {
"x0": 650,
"y0": 598,
"x1": 758,
"y1": 666
}
}
]
}
Loading