Chocolate-dip chromis · fish3

Chromis dimidiata · Pomacentridae · 99% · high reconstructed model: good
Reviewer: two-tone body, forked tail

Where it comes from

Original video (longest visit, 53:16-53:25), the selected fish boxed
Tracking: real frame + crop + 3D render at the estimated pose, species overlay

3D and 4D model

loading 3D gaussians…
Interactive canonical 3D gaussians (drag to orbit, scroll to zoom). This is the rest pose shared by every frame; the 4D part is the per-frame bending / tail motion shown on the right.
4D: canonical model replaying the learned body bending and tail beat
3D turntable of the canonical model

Previous version (v1) vs v2

v2 = the same 30 fps data and trainer as v1 (gs_final, 10000 iterations) with 12000 iterations and a gaussian cap of 100,000 — the only change of the quality experiment that passed its review. Other changes (frame selection, water and motion-blur models, white balance, lossless crops) did not.
v1 (previous version): gs_final, 10000 iterations
v2: gs_v2, 12000 iterations

The two turntables play in sync (same orbit and timing).

metricv1 gs_finalv2 gs_v2change
iterations1000012000
gaussians24,12625,218x1.05
training time (optimisation)65 min77 min
held-out frames (within 0.3 s of a training frame)40 (3)40 (3)
LPIPS on the fish (lower = closer to the photo)0.15710.1554-0.0018
PSNR full crop (dB)26.7326.79+0.06
PSNR on the fish mask (dB)21.8121.88+0.07
sharpness ratio render / photo, grain-robust (1 = as sharp as the photo)0.7610.784x1.03
sharpness ratio, raw0.6730.693x1.03
sharp match (photo detail reproduced in place)0.7220.728+0.007
IoU with the SAM mask0.8470.847+0.000

Verdict: same (within noise). LPIPS -0.0018, grain-robust sharpness x1.03 (sharper). Differences below 0.0034 LPIPS or x1.12 sharpness are within the run-to-run noise of training.

Held-out frames: fixed per fish (work/quality_exp/<fish>/heldout.json), evaluated identically for both models (test-time fit of pose, colour and bending with the gaussians frozen). Both models were trained on all frames of the same data set, so held-out frames near a training frame favour both equally; this is a like-for-like comparison of the two recipes, not a generalisation test.

Poster

poster

Species

Chocolate-dip chromis Chromis dimidiata Pomacentridae
98.7%
Whitefin damsel Pomacentrus albicaudatus Pomacentridae
0.4%
Arabian angelfish Pomacanthus asfur Pomacanthidae
0.3%
Lyretail hogfish Bodianus anthioides Labridae
0.3%
Bicolour parrotfish Cetoscarus bicolor Scaridae
0.1%

Family: Pomacentridae 99%, Pomacanthidae 0%, Labridae 0% · agreement across crops 100% · 64 crops · bioclip-2.5 (hf-hub:imageomics/bioclip-2.5-vith14, open_clip, zero-shot)

Crops used for the species vote

Data and reconstruction

window48:00 – 58:00
visits28: 48:09-48:12, 51:26-51:28, 51:57-51:59, 52:04-52:10, 52:15-52:18, 52:21-52:25, 52:30-52:38, 52:46-53:04, 53:08-53:11, 53:13-53:24, 53:26-53:31, 53:41-53:45, 53:53-53:55, 54:03-54:04, 54:13-54:16, 54:33-54:40, 54:44-54:47, 55:03-55:10, 55:32-55:35, 55:40-55:42, 55:58-56:02, 56:07-56:08, 56:27-56:28, 56:41-56:42, 57:14-57:16, 57:27-57:29, 57:33-57:35, 57:45-57:49
frames (10 fps) detected / kept928 / 910
valid poses (10 fps)883
frames with background plate866
median size123.0 px
30 fps frames / valid poses739 / 600
method4D GS, fins + bending + tail (30 fps)
model shownv2 (gs_v2, quality experiment rollout)
iterations12000
gaussians25218
training time77 min
trainer validation PSNR full / masked28.0 / 21.1 dB
trainer validation IoU vs SAM mask0.883
near-fish band PSNR (fins)29.8 dB
production statusdone; gs_final = copy of fish3_hf/gs_fins_4d (10000 iters, not retrained)
visual note (curation)Chromis dimidiata (chocolate-dip chromis), likely

Diagnostics

Tracklet contact sheet (selection)
Held-out frames: real crop vs 4D render (composited over the plate)
Held-out frames: render on black
Estimated pose: fitted ellipsoid + axes on crops
Frame cleaning: identity / occlusion over time
Frames down-weighted / dropped by the robust trainer

Downloads

point_cloud.ply (canonical 3D gaussians) · poses_refined.json · model.pt (incl. per-frame 4D params) · species.json · previous version v1: gs_final point_cloud.ply

← all fish