gs_final, 4000 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. The two turntables play in sync (same orbit and timing).
| metric | v1 gs_final | v2 gs_v2 | change |
|---|---|---|---|
| iterations | 4000 | 12000 | |
| gaussians | 15,851 | 21,215 | x1.34 |
| training time (optimisation) | 19 min | 71 min | |
| held-out frames (within 0.3 s of a training frame) | 40 (6) | 40 (6) | |
| LPIPS on the fish (lower = closer to the photo) | 0.1942 | 0.1860 | -0.0082 |
| PSNR full crop (dB) | 23.80 | 23.77 | -0.04 |
| PSNR on the fish mask (dB) | 21.52 | 21.36 | -0.15 |
| sharpness ratio render / photo, grain-robust (1 = as sharp as the photo) | 0.245 | 0.351 | x1.43 |
| sharpness ratio, raw | 0.097 | 0.168 | x1.73 |
| sharp match (photo detail reproduced in place) | 0.034 | 0.030 | -0.004 |
| IoU with the SAM mask | 0.873 | 0.876 | +0.003 |
Verdict: better. LPIPS -0.0082, grain-robust sharpness x1.43 (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.
Family: Serranidae 93%, Scaridae 3%, Labridae 3% · agreement across crops 89% · 64 crops · bioclip-2.5 (hf-hub:imageomics/bioclip-2.5-vith14, open_clip, zero-shot)

| window | 22:00 – 32:00 |
| visits | 16: 23:18-23:31, 24:09-24:13, 24:16-24:21, 25:30-25:32, 25:35-25:53, 25:57-26:05, 26:11-26:21, 26:24-26:34, 27:37-27:39, 27:42-27:52, 27:57-27:58, 28:00-29:01, 30:00-30:04, 30:07-30:27, 30:37-30:39, 31:35-31:46 |
| frames (10 fps) detected / kept | 1725 / 1592 |
| valid poses (10 fps) | 1125 |
| frames with background plate | 1462 |
| median size | 163.0 px |
| 30 fps frames / valid poses | 721 / 625 |
| method | 4D GS, fins + bending + tail (30 fps) |
| model shown | v2 (gs_v2, quality experiment rollout) |
| iterations | 12000 |
| gaussians | 21215 |
| training time | 71 min |
| trainer validation PSNR full / masked | 24.2 / 22.4 dB |
| trainer validation IoU vs SAM mask | 0.787 |
| near-fish band PSNR (fins) | 23.8 dB |
| production status | done |
| visual note (curation) | brown grouper (same species as w48 fish1 |






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