Keep only the current octacam and hexaview detectors, and show their input
Browse files- .gitattributes +2 -0
- 260927_mvt_dinov3b_384_octacam_fly38/README.md +0 -29
- 260927_mvt_dinov3b_384_octacam_fly38/SHA256SUMS +0 -4
- 260927_mvt_dinov3b_384_octacam_fly38/config.toml +0 -94
- 260927_mvt_dinov3b_384_octacam_fly38/fly38.toml +0 -129
- 260927_mvt_dinov3b_384_octacam_fly38/report.json +0 -154
- 260927_mvt_dinov3b_512_hexaview_fly38/README.md +0 -30
- 260927_mvt_dinov3b_512_hexaview_fly38/SHA256SUMS +0 -4
- 260927_mvt_dinov3b_512_hexaview_fly38/config.toml +0 -100
- 260927_mvt_dinov3b_512_hexaview_fly38/fly38.toml +0 -129
- 260927_mvt_dinov3b_512_hexaview_fly38/report.json +0 -75
- README.md +20 -8
- 260927_mvt_dinov3b_384_octacam_fly38/mvt_dinov3b_384_octacam_fly38.pth → assets/hexaview.jpg +2 -2
- 260927_mvt_dinov3b_512_hexaview_fly38/mvt_dinov3b_512_hexaview_fly38.pth → assets/octacam.jpg +2 -2
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ 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 |
+
assets/octacam.jpg filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
assets/hexaview.jpg filter=lfs diff=lfs merge=lfs -text
|
260927_mvt_dinov3b_384_octacam_fly38/README.md
DELETED
|
@@ -1,29 +0,0 @@
|
|
| 1 |
-
# `mvt_dinov3b_384_octacam_fly38` -- the octacam detector, round 11
|
| 2 |
-
|
| 3 |
-
A deeperfly 2 detector (`deeperfly-detector-1`, family `mvt`): a multiview transformer on a DINOv3 ViT-B/16 that predicts all 38 points of the `fly38` skeleton in every view of the octacam rig, computing the views of a frame together. It supersedes `260904_mvt_dinov3s_384_gray_fly38` on this rig.
|
| 4 |
-
|
| 5 |
-
Exported 2026-09-28 from `octacam/runs/mvt_dinov3/round11/r11_ship_s0`, trained 2026-09-27: round 8's recipe unchanged (warm-started from a pseudo-labeled ViT-B, lr 1e-4, 5,000 steps, a distillation stream on unlabeled frames), retrained on the labels of 2026-09-27.
|
| 6 |
-
|
| 7 |
-
| | |
|
| 8 |
-
|---|---|
|
| 9 |
-
| file | `mvt_dinov3b_384_octacam_fly38.pth`, 383,792,459 bytes |
|
| 10 |
-
| sha256 | `6898ccc26d454d26792cc5a125053cc3ffe15c8295c0182eae33c4da6d921f19` |
|
| 11 |
-
| skeleton | `fly38` -- `fly38.toml` beside this file |
|
| 12 |
-
| backbone | `vit_base_patch16_dinov3.lvd1689m` (timm) |
|
| 13 |
-
| input | 384x768 per view: a 2:1 window around the animal |
|
| 14 |
-
| trained on | 56 octacam recordings, 4,488 items (`report.json`); no holdout |
|
| 15 |
-
| recipe | `config.toml` beside this file |
|
| 16 |
-
|
| 17 |
-
## What it scores
|
| 18 |
-
|
| 19 |
-
No held-out number of its own: a shipping model trains on every label. On the deeperfly repository's `examples/octacam/` clip (200 frames of `scape_260417_IN07B001_Fly4_006`), the example run config's bundle adjustment takes an orbit guess from 172 px to 1.9 px median reprojection, and the pictorial 3D then reprojects at 1.49 px median. That is agreement across the eight views, not an error against labels.
|
| 20 |
-
|
| 21 |
-
## Using it
|
| 22 |
-
|
| 23 |
-
```toml
|
| 24 |
-
[pose2d]
|
| 25 |
-
weights = ["/mnt/upramdya/data/TL/deeperfly-models/260927_mvt_dinov3b_384_octacam_fly38/mvt_dinov3b_384_octacam_fly38.pth"]
|
| 26 |
-
candidates = 5 # the peaks [pose3d] method = "pictorial" chooses among
|
| 27 |
-
```
|
| 28 |
-
|
| 29 |
-
Copying this directory to the machine that runs it and naming the local path is the better habit. Verify a copy with `sha256sum -c SHA256SUMS`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_384_octacam_fly38/SHA256SUMS
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
af81f78994be135442be6cc47cb09ff98f450915c2619b5dc95705b94baaf54f ./config.toml
|
| 2 |
-
56f9a33ea5c286bda06e599602e7b7adaefb7ba29a74a2516548b7cbb7776e52 ./fly38.toml
|
| 3 |
-
6898ccc26d454d26792cc5a125053cc3ffe15c8295c0182eae33c4da6d921f19 ./mvt_dinov3b_384_octacam_fly38.pth
|
| 4 |
-
fbfefcbaa0eeee661467eacf14277190472610dd17f7eaae3030259960d25f97 ./report.json
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_384_octacam_fly38/config.toml
DELETED
|
@@ -1,94 +0,0 @@
|
|
| 1 |
-
# r11_ship_s0: round 11's corpus ship -- r8_ship_s0's recipe unchanged (warm DINOv3
|
| 2 |
-
# ViT-B from `tier1/vitb_stage2_pseudo`, lr 1e-4, 5k-step cosine, fill 0.5, the
|
| 3 |
-
# distillation stream from `tier1/c6_vitb_warm_5k`), retrained on the labels of
|
| 4 |
-
# 2026-09-27 by the code of main 796ae43. round11/ sits at round8/'s depth, so every
|
| 5 |
-
# relative path is the same; only `out` moves.
|
| 6 |
-
|
| 7 |
-
format_version = 3
|
| 8 |
-
|
| 9 |
-
[data]
|
| 10 |
-
kind = "project"
|
| 11 |
-
projects = ["../../../recordings/*"]
|
| 12 |
-
cache = "../../../cache"
|
| 13 |
-
|
| 14 |
-
[data.crops]
|
| 15 |
-
tightness = [0.75, 2.2] # per-sample 2:1 crop around the animal, log-uniform;
|
| 16 |
-
jitter = 0.1 # < 1 leaves points outside on purpose
|
| 17 |
-
eval_tightness = 1.25
|
| 18 |
-
full_p = 0.1 # letterboxed whole frame (an inference without any crop)
|
| 19 |
-
|
| 20 |
-
[data.fill]
|
| 21 |
-
weight = 0.5
|
| 22 |
-
max_residual_px = 10.0
|
| 23 |
-
|
| 24 |
-
[model]
|
| 25 |
-
input_hw = [384, 768]
|
| 26 |
-
family = "mvt"
|
| 27 |
-
backbone = "vit_base_patch16_dinov3.lvd1689m"
|
| 28 |
-
pretrained = true
|
| 29 |
-
attn_scopes = "llllllllglgl"
|
| 30 |
-
margin = 64
|
| 31 |
-
reach = 2
|
| 32 |
-
drop_path = 0.0
|
| 33 |
-
token_mask = 0.0
|
| 34 |
-
token_pad = 2 # 32 px of the 64 px margin in the token grid (1.26x tokens)
|
| 35 |
-
init_from = "/home/tlam/deeperfly-projects/octacam/runs/mvt_dinov3/tier1/vitb_stage2_pseudo/model.pth"
|
| 36 |
-
|
| 37 |
-
[augment]
|
| 38 |
-
degrees = 12.0
|
| 39 |
-
scale = [1.0, 1.0] # the crop sampler supplies scale and shift
|
| 40 |
-
aspect = [0.85, 1.18]
|
| 41 |
-
translate = [0.0, 0.0]
|
| 42 |
-
flip_p = 0.5
|
| 43 |
-
brightness = 0.3
|
| 44 |
-
contrast = 0.3
|
| 45 |
-
gamma = [0.7, 1.4]
|
| 46 |
-
blur_sigma = [0.5, 1.5]
|
| 47 |
-
noise_std = 0.03
|
| 48 |
-
photometric_p = 0.5
|
| 49 |
-
|
| 50 |
-
[train]
|
| 51 |
-
grad_checkpoint = true
|
| 52 |
-
steps = 5000
|
| 53 |
-
images_per_batch = 24
|
| 54 |
-
grad_clip = 1.0
|
| 55 |
-
amp = true
|
| 56 |
-
ema_decay = 0.999
|
| 57 |
-
view_drop_p = 0.3
|
| 58 |
-
view_min = 1
|
| 59 |
-
log_every = 100
|
| 60 |
-
seed = 0
|
| 61 |
-
out = "../../../runs/mvt_dinov3/round11/r11_ship_s0"
|
| 62 |
-
|
| 63 |
-
[train.optimizer]
|
| 64 |
-
lr = 1e-4
|
| 65 |
-
weight_decay = 0.05
|
| 66 |
-
warmup_steps = 500
|
| 67 |
-
|
| 68 |
-
[train.loss]
|
| 69 |
-
sigma = 2.0
|
| 70 |
-
field_weight = 1.0
|
| 71 |
-
coord_weight = 0.0
|
| 72 |
-
tri_weight = 0.02
|
| 73 |
-
tri_huber = 0.05
|
| 74 |
-
tri_max_world = 0.5
|
| 75 |
-
|
| 76 |
-
[train.eval]
|
| 77 |
-
every = 0
|
| 78 |
-
|
| 79 |
-
[compute]
|
| 80 |
-
workers = 8
|
| 81 |
-
|
| 82 |
-
[unlabeled]
|
| 83 |
-
teacher = "/home/tlam/deeperfly-projects/octacam/runs/mvt_dinov3/tier1/c6_vitb_warm_5k/model.pth" # held-out-clean warm ViT-B, 4.71 px
|
| 84 |
-
n_per_project = 200
|
| 85 |
-
transductive = false
|
| 86 |
-
agree_px = 6.0
|
| 87 |
-
min_views = 3
|
| 88 |
-
conf_min = 0.3
|
| 89 |
-
weight = 0.5
|
| 90 |
-
mask_ratios = []
|
| 91 |
-
masked_weight = 1.0
|
| 92 |
-
unmasked_weight = 0.5
|
| 93 |
-
crop_tightness = [0.75, 1.6]
|
| 94 |
-
cache = "../../../cache/unlabeled"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_384_octacam_fly38/fly38.toml
DELETED
|
@@ -1,129 +0,0 @@
|
|
| 1 |
-
# fly38 -- the 38 tracked points of a tethered Drosophila: six 5-point legs, two
|
| 2 |
-
# antennae, the neck, and a 5-point dorsal-midline abdomen chain (the tergite stripes).
|
| 3 |
-
#
|
| 4 |
-
# A skeleton is points, edges and point_symmetries -- the same decomposition as SLEAP
|
| 5 |
-
# and DeepLabCut -- plus an optional palette (point_colors / edge_colors). The palette
|
| 6 |
-
# is decoration, not identity: it draws the points but is kept out of the digest, so
|
| 7 |
-
# recoloring never reports a different skeleton.
|
| 8 |
-
|
| 9 |
-
[skeleton]
|
| 10 |
-
name = "fly38"
|
| 11 |
-
|
| 12 |
-
# The points IN ORDER: channel i of the detector is points[i]. This is the contract
|
| 13 |
-
# with the weights.
|
| 14 |
-
points = [
|
| 15 |
-
"lf_thorax_coxa", "lf_coxa_trochanter", "lf_femur_tibia", "lf_tibia_tarsus", "lf_pretarsus",
|
| 16 |
-
"lm_thorax_coxa", "lm_coxa_trochanter", "lm_femur_tibia", "lm_tibia_tarsus", "lm_pretarsus",
|
| 17 |
-
"lh_thorax_coxa", "lh_coxa_trochanter", "lh_femur_tibia", "lh_tibia_tarsus", "lh_pretarsus",
|
| 18 |
-
"l_antenna",
|
| 19 |
-
"rf_thorax_coxa", "rf_coxa_trochanter", "rf_femur_tibia", "rf_tibia_tarsus", "rf_pretarsus",
|
| 20 |
-
"rm_thorax_coxa", "rm_coxa_trochanter", "rm_femur_tibia", "rm_tibia_tarsus", "rm_pretarsus",
|
| 21 |
-
"rh_thorax_coxa", "rh_coxa_trochanter", "rh_femur_tibia", "rh_tibia_tarsus", "rh_pretarsus",
|
| 22 |
-
"r_antenna",
|
| 23 |
-
"neck",
|
| 24 |
-
"abdomen0", "abdomen1", "abdomen2", "abdomen3", "abdomen4",
|
| 25 |
-
]
|
| 26 |
-
|
| 27 |
-
# The edges, as pairs of points. The antennae and neck appear in no edge -- tracked
|
| 28 |
-
# points with no bone.
|
| 29 |
-
edges = [
|
| 30 |
-
["lf_thorax_coxa", "lf_coxa_trochanter"], ["lf_coxa_trochanter", "lf_femur_tibia"],
|
| 31 |
-
["lf_femur_tibia", "lf_tibia_tarsus"], ["lf_tibia_tarsus", "lf_pretarsus"],
|
| 32 |
-
["lm_thorax_coxa", "lm_coxa_trochanter"], ["lm_coxa_trochanter", "lm_femur_tibia"],
|
| 33 |
-
["lm_femur_tibia", "lm_tibia_tarsus"], ["lm_tibia_tarsus", "lm_pretarsus"],
|
| 34 |
-
["lh_thorax_coxa", "lh_coxa_trochanter"], ["lh_coxa_trochanter", "lh_femur_tibia"],
|
| 35 |
-
["lh_femur_tibia", "lh_tibia_tarsus"], ["lh_tibia_tarsus", "lh_pretarsus"],
|
| 36 |
-
["rf_thorax_coxa", "rf_coxa_trochanter"], ["rf_coxa_trochanter", "rf_femur_tibia"],
|
| 37 |
-
["rf_femur_tibia", "rf_tibia_tarsus"], ["rf_tibia_tarsus", "rf_pretarsus"],
|
| 38 |
-
["rm_thorax_coxa", "rm_coxa_trochanter"], ["rm_coxa_trochanter", "rm_femur_tibia"],
|
| 39 |
-
["rm_femur_tibia", "rm_tibia_tarsus"], ["rm_tibia_tarsus", "rm_pretarsus"],
|
| 40 |
-
["rh_thorax_coxa", "rh_coxa_trochanter"], ["rh_coxa_trochanter", "rh_femur_tibia"],
|
| 41 |
-
["rh_femur_tibia", "rh_tibia_tarsus"], ["rh_tibia_tarsus", "rh_pretarsus"],
|
| 42 |
-
["abdomen0", "abdomen1"], ["abdomen1", "abdomen2"], ["abdomen2", "abdomen3"], ["abdomen3", "abdomen4"],
|
| 43 |
-
]
|
| 44 |
-
|
| 45 |
-
# What each point becomes under a left/right flip. Write each pair once; anything absent
|
| 46 |
-
# is on the midline and maps to itself (hence no neck, no abdomen). The loader checks
|
| 47 |
-
# the implied mirror against `edges`: applying it must give the edge set back, so a
|
| 48 |
-
# wrong side or two joints of one leg exchanged is named rather than trained on silently.
|
| 49 |
-
point_symmetries = [
|
| 50 |
-
["lf_thorax_coxa", "rf_thorax_coxa"],
|
| 51 |
-
["lf_coxa_trochanter", "rf_coxa_trochanter"],
|
| 52 |
-
["lf_femur_tibia", "rf_femur_tibia"],
|
| 53 |
-
["lf_tibia_tarsus", "rf_tibia_tarsus"],
|
| 54 |
-
["lf_pretarsus", "rf_pretarsus"],
|
| 55 |
-
["lm_thorax_coxa", "rm_thorax_coxa"],
|
| 56 |
-
["lm_coxa_trochanter", "rm_coxa_trochanter"],
|
| 57 |
-
["lm_femur_tibia", "rm_femur_tibia"],
|
| 58 |
-
["lm_tibia_tarsus", "rm_tibia_tarsus"],
|
| 59 |
-
["lm_pretarsus", "rm_pretarsus"],
|
| 60 |
-
["lh_thorax_coxa", "rh_thorax_coxa"],
|
| 61 |
-
["lh_coxa_trochanter", "rh_coxa_trochanter"],
|
| 62 |
-
["lh_femur_tibia", "rh_femur_tibia"],
|
| 63 |
-
["lh_tibia_tarsus", "rh_tibia_tarsus"],
|
| 64 |
-
["lh_pretarsus", "rh_pretarsus"],
|
| 65 |
-
["l_antenna", "r_antenna"],
|
| 66 |
-
]
|
| 67 |
-
|
| 68 |
-
# The palette. One #rrggbb per point; a key is a point name or a `*` pattern (an exact
|
| 69 |
-
# name beats a pattern). Optional and may be partial -- an unnamed point takes tab10 by
|
| 70 |
-
# index. The scheme is anatomical, so it reads at a glance: left = blue, right = red,
|
| 71 |
-
# front -> hind lightening within a side; the midline neck and abdomen green. Edges take
|
| 72 |
-
# the average of their endpoints, so every leg bone comes out its own limb's color.
|
| 73 |
-
[skeleton.point_colors]
|
| 74 |
-
"lf_*" = "#0f7399"
|
| 75 |
-
"lm_*" = "#1a8daf"
|
| 76 |
-
"lh_*" = "#75becb"
|
| 77 |
-
l_antenna = "#0a4f6b"
|
| 78 |
-
"rf_*" = "#ba1e31"
|
| 79 |
-
"rm_*" = "#c9564f"
|
| 80 |
-
"rh_*" = "#d58579"
|
| 81 |
-
r_antenna = "#8c1525"
|
| 82 |
-
neck = "#15a315"
|
| 83 |
-
"abdomen*" = "#61e47b"
|
| 84 |
-
|
| 85 |
-
# A canonical neutral posture (NeuroMechFly's rest pose), one [x, y, z] per point
|
| 86 |
-
# in millimeters, with the body center of mass at the origin (x anterior, y the
|
| 87 |
-
# left-right axis, z dorsal). It is NOT part of the skeleton's identity (out of the
|
| 88 |
-
# digest); it draws the skeleton in 3D and SEEDS labeling: projected through a
|
| 89 |
-
# recording's calibration it drops a rough draggable instance into each view when
|
| 90 |
-
# nothing else (a prior labeled frame, another view) is available to seed from.
|
| 91 |
-
[skeleton.default_pose]
|
| 92 |
-
lf_thorax_coxa = [ 0.42966, 0.17200, 0.25226]
|
| 93 |
-
lf_coxa_trochanter = [ 0.31028, 0.06883, -0.07688]
|
| 94 |
-
lf_femur_tibia = [ 0.85227, 0.42043, 0.20537]
|
| 95 |
-
lf_tibia_tarsus = [ 1.05606, 0.65936, -0.20658]
|
| 96 |
-
lf_pretarsus = [ 1.45133, 1.02885, -0.58856]
|
| 97 |
-
lm_thorax_coxa = [ 0.03366, 0.12500, 0.00026]
|
| 98 |
-
lm_coxa_trochanter = [ 0.00831, 0.09367, -0.17620]
|
| 99 |
-
lm_femur_tibia = [ 0.11746, 0.70120, 0.30719]
|
| 100 |
-
lm_tibia_tarsus = [ 0.23055, 0.96680, -0.29411]
|
| 101 |
-
lm_pretarsus = [ 0.38484, 1.49119, -0.73358]
|
| 102 |
-
lh_thorax_coxa = [-0.19334, 0.08700, -0.01474]
|
| 103 |
-
lh_coxa_trochanter = [-0.27402, 0.09655, -0.19640]
|
| 104 |
-
lh_femur_tibia = [-0.64760, 0.63110, 0.32665]
|
| 105 |
-
lh_tibia_tarsus = [-0.96496, 0.77982, -0.26073]
|
| 106 |
-
lh_pretarsus = [-1.40791, 1.03885, -0.86325]
|
| 107 |
-
l_antenna = [ 1.04836, 0.08600, 0.56596]
|
| 108 |
-
rf_thorax_coxa = [ 0.42966, -0.17200, 0.25226]
|
| 109 |
-
rf_coxa_trochanter = [ 0.31028, -0.06883, -0.07688]
|
| 110 |
-
rf_femur_tibia = [ 0.85227, -0.42043, 0.20537]
|
| 111 |
-
rf_tibia_tarsus = [ 1.05606, -0.65936, -0.20658]
|
| 112 |
-
rf_pretarsus = [ 1.45133, -1.02885, -0.58856]
|
| 113 |
-
rm_thorax_coxa = [ 0.03366, -0.12500, 0.00026]
|
| 114 |
-
rm_coxa_trochanter = [ 0.00831, -0.09367, -0.17620]
|
| 115 |
-
rm_femur_tibia = [ 0.11746, -0.70120, 0.30719]
|
| 116 |
-
rm_tibia_tarsus = [ 0.23055, -0.96680, -0.29411]
|
| 117 |
-
rm_pretarsus = [ 0.38484, -1.49119, -0.73358]
|
| 118 |
-
rh_thorax_coxa = [-0.19334, -0.08700, -0.01474]
|
| 119 |
-
rh_coxa_trochanter = [-0.27402, -0.09655, -0.19640]
|
| 120 |
-
rh_femur_tibia = [-0.64760, -0.63110, 0.32665]
|
| 121 |
-
rh_tibia_tarsus = [-0.96496, -0.77982, -0.26073]
|
| 122 |
-
rh_pretarsus = [-1.40791, -1.03885, -0.86325]
|
| 123 |
-
r_antenna = [ 1.04836, -0.08600, 0.56596]
|
| 124 |
-
neck = [ 0.61936, 0.00000, 0.48296]
|
| 125 |
-
abdomen0 = [-0.71698, 0.00000, 0.71444]
|
| 126 |
-
abdomen1 = [-0.91268, 0.00000, 0.66169]
|
| 127 |
-
abdomen2 = [-1.10060, 0.00000, 0.61850]
|
| 128 |
-
abdomen3 = [-1.27163, 0.00000, 0.56551]
|
| 129 |
-
abdomen4 = [-1.48737, 0.00000, 0.46364]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_384_octacam_fly38/report.json
DELETED
|
@@ -1,154 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"projects": {
|
| 3 |
-
"9A9_251119_Fly3_003": "/home/tlam/deeperfly-projects/octacam/recordings/9A9_251119_Fly3_003/deeperfly",
|
| 4 |
-
"AN07B017_260414_Fly4_003": "/home/tlam/deeperfly-projects/octacam/recordings/AN07B017_260414_Fly4_003/deeperfly",
|
| 5 |
-
"AN07B017_260414_Fly4_004": "/home/tlam/deeperfly-projects/octacam/recordings/AN07B017_260414_Fly4_004/deeperfly",
|
| 6 |
-
"AN07B017_260414_Fly4_005": "/home/tlam/deeperfly-projects/octacam/recordings/AN07B017_260414_Fly4_005/deeperfly",
|
| 7 |
-
"AN19B004_260316_Fly2_003": "/home/tlam/deeperfly-projects/octacam/recordings/AN19B004_260316_Fly2_003/deeperfly",
|
| 8 |
-
"ANXXX049_251125_Fly1_003": "/home/tlam/deeperfly-projects/octacam/recordings/ANXXX049_251125_Fly1_003/deeperfly",
|
| 9 |
-
"FW_260325_dna01a5_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260325_dna01a5_Fly1_001_label/deeperfly",
|
| 10 |
-
"FW_260327_g25_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260327_g25_Fly1_001_label/deeperfly",
|
| 11 |
-
"FW_260327_g25_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260327_g25_Fly2_001_label/deeperfly",
|
| 12 |
-
"FW_260327_g25_Fly3_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260327_g25_Fly3_001_label/deeperfly",
|
| 13 |
-
"FW_260327_g25_Fly5_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260327_g25_Fly5_001_label/deeperfly",
|
| 14 |
-
"FW_260416_CS_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260416_CS_Fly1_001_label/deeperfly",
|
| 15 |
-
"FW_260418_cs_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260418_cs_Fly1_001_label/deeperfly",
|
| 16 |
-
"FW_260418_cs_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260418_cs_Fly2_001_label/deeperfly",
|
| 17 |
-
"FW_260418_g25i_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260418_g25i_Fly1_001_label/deeperfly",
|
| 18 |
-
"FW_260418_g25i_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260418_g25i_Fly2_001_label/deeperfly",
|
| 19 |
-
"FW_260418_g25i_Fly3_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260418_g25i_Fly3_001_label/deeperfly",
|
| 20 |
-
"FW_260418_g25i_Fly4_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260418_g25i_Fly4_001_label/deeperfly",
|
| 21 |
-
"FW_260420_g25_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260420_g25_Fly1_001_label/deeperfly",
|
| 22 |
-
"FW_260420_g25_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260420_g25_Fly2_001_label/deeperfly",
|
| 23 |
-
"FW_260420_g25_Fly3_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260420_g25_Fly3_001_label/deeperfly",
|
| 24 |
-
"FW_260420_g25_Fly4_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260420_g25_Fly4_001_label/deeperfly",
|
| 25 |
-
"FW_260423_cs_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260423_cs_Fly1_001_label/deeperfly",
|
| 26 |
-
"FW_260423_cs_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260423_cs_Fly2_001_label/deeperfly",
|
| 27 |
-
"FW_260423_cs_Fly3_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260423_cs_Fly3_001_label/deeperfly",
|
| 28 |
-
"FW_260423_cs_Fly4_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260423_cs_Fly4_001_label/deeperfly",
|
| 29 |
-
"FW_260423_g25_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260423_g25_Fly1_001_label/deeperfly",
|
| 30 |
-
"FW_260424_g25_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260424_g25_Fly1_001_label/deeperfly",
|
| 31 |
-
"FW_260507_dfd_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260507_dfd_Fly1_001_label/deeperfly",
|
| 32 |
-
"FW_260507_g25_Fly1_002": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260507_g25_Fly1_002/deeperfly",
|
| 33 |
-
"FW_260507_g25_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260507_g25_Fly2_001_label/deeperfly",
|
| 34 |
-
"FW_260507_g25_Fly3_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260507_g25_Fly3_001_label/deeperfly",
|
| 35 |
-
"FW_260508_g25_Fly1_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260508_g25_Fly1_001_label/deeperfly",
|
| 36 |
-
"FW_260508_g25_Fly2_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260508_g25_Fly2_001_label/deeperfly",
|
| 37 |
-
"FW_260508_g25_Fly3_001_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260508_g25_Fly3_001_label/deeperfly",
|
| 38 |
-
"FW_260508_g25_Fly4_007_label": "/home/tlam/deeperfly-projects/octacam/recordings/FW_260508_g25_Fly4_007_label/deeperfly",
|
| 39 |
-
"IN07B001_260417_Fly3_003": "/home/tlam/deeperfly-projects/octacam/recordings/IN07B001_260417_Fly3_003/deeperfly",
|
| 40 |
-
"IN07B001_260417_Fly4_004": "/home/tlam/deeperfly-projects/octacam/recordings/IN07B001_260417_Fly4_004/deeperfly",
|
| 41 |
-
"IN07B001_260417_Fly4_005": "/home/tlam/deeperfly-projects/octacam/recordings/IN07B001_260417_Fly4_005/deeperfly",
|
| 42 |
-
"IN07B001_260417_Fly4_007": "/home/tlam/deeperfly-projects/octacam/recordings/IN07B001_260417_Fly4_007/deeperfly",
|
| 43 |
-
"IN07B007_260323_Fly3_002": "/home/tlam/deeperfly-projects/octacam/recordings/IN07B007_260323_Fly3_002/deeperfly",
|
| 44 |
-
"IN10B012_260319_Fly1_003": "/home/tlam/deeperfly-projects/octacam/recordings/IN10B012_260319_Fly1_003/deeperfly",
|
| 45 |
-
"IN10B012_260319_Fly1_006": "/home/tlam/deeperfly-projects/octacam/recordings/IN10B012_260319_Fly1_006/deeperfly",
|
| 46 |
-
"IN10B014_260317_Fly1_004": "/home/tlam/deeperfly-projects/octacam/recordings/IN10B014_260317_Fly1_004/deeperfly",
|
| 47 |
-
"IN10B014_260320_Fly2_003": "/home/tlam/deeperfly-projects/octacam/recordings/IN10B014_260320_Fly2_003/deeperfly",
|
| 48 |
-
"IN10B014_260320_Fly2_009": "/home/tlam/deeperfly-projects/octacam/recordings/IN10B014_260320_Fly2_009/deeperfly",
|
| 49 |
-
"IN14B010_251121_Fly3_003": "/home/tlam/deeperfly-projects/octacam/recordings/IN14B010_251121_Fly3_003/deeperfly",
|
| 50 |
-
"IN14B011_251126_Fly3_004": "/home/tlam/deeperfly-projects/octacam/recordings/IN14B011_251126_Fly3_004/deeperfly",
|
| 51 |
-
"IN19B038_260313_Fly3_003": "/home/tlam/deeperfly-projects/octacam/recordings/IN19B038_260313_Fly3_003/deeperfly",
|
| 52 |
-
"LTM-MN_251217_Fly1_003": "/home/tlam/deeperfly-projects/octacam/recordings/LTM-MN_251217_Fly1_003/deeperfly",
|
| 53 |
-
"LTM-MN_260119_Fly3_003": "/home/tlam/deeperfly-projects/octacam/recordings/LTM-MN_260119_Fly3_003/deeperfly",
|
| 54 |
-
"LTM-MN_260120_Fly3_003": "/home/tlam/deeperfly-projects/octacam/recordings/LTM-MN_260120_Fly3_003/deeperfly",
|
| 55 |
-
"LTM-MN_260120_Fly3_006": "/home/tlam/deeperfly-projects/octacam/recordings/LTM-MN_260120_Fly3_006/deeperfly",
|
| 56 |
-
"oldrig_demo": "/home/tlam/deeperfly-projects/octacam/recordings/oldrig_demo/deeperfly",
|
| 57 |
-
"scape_260417_IN07B001_Fly3_004": "/home/tlam/deeperfly-projects/octacam/recordings/scape_260417_IN07B001_Fly3_004/deeperfly",
|
| 58 |
-
"scape_260417_IN07B001_Fly4_006": "/home/tlam/deeperfly-projects/octacam/recordings/scape_260417_IN07B001_Fly4_006/deeperfly"
|
| 59 |
-
},
|
| 60 |
-
"train_projects": [
|
| 61 |
-
"9A9_251119_Fly3_003",
|
| 62 |
-
"AN07B017_260414_Fly4_003",
|
| 63 |
-
"AN07B017_260414_Fly4_004",
|
| 64 |
-
"AN07B017_260414_Fly4_005",
|
| 65 |
-
"AN19B004_260316_Fly2_003",
|
| 66 |
-
"ANXXX049_251125_Fly1_003",
|
| 67 |
-
"FW_260325_dna01a5_Fly1_001_label",
|
| 68 |
-
"FW_260327_g25_Fly1_001_label",
|
| 69 |
-
"FW_260327_g25_Fly2_001_label",
|
| 70 |
-
"FW_260327_g25_Fly3_001_label",
|
| 71 |
-
"FW_260327_g25_Fly5_001_label",
|
| 72 |
-
"FW_260416_CS_Fly1_001_label",
|
| 73 |
-
"FW_260418_cs_Fly1_001_label",
|
| 74 |
-
"FW_260418_cs_Fly2_001_label",
|
| 75 |
-
"FW_260418_g25i_Fly1_001_label",
|
| 76 |
-
"FW_260418_g25i_Fly2_001_label",
|
| 77 |
-
"FW_260418_g25i_Fly3_001_label",
|
| 78 |
-
"FW_260418_g25i_Fly4_001_label",
|
| 79 |
-
"FW_260420_g25_Fly1_001_label",
|
| 80 |
-
"FW_260420_g25_Fly2_001_label",
|
| 81 |
-
"FW_260420_g25_Fly3_001_label",
|
| 82 |
-
"FW_260420_g25_Fly4_001_label",
|
| 83 |
-
"FW_260423_cs_Fly1_001_label",
|
| 84 |
-
"FW_260423_cs_Fly2_001_label",
|
| 85 |
-
"FW_260423_cs_Fly3_001_label",
|
| 86 |
-
"FW_260423_cs_Fly4_001_label",
|
| 87 |
-
"FW_260423_g25_Fly1_001_label",
|
| 88 |
-
"FW_260424_g25_Fly1_001_label",
|
| 89 |
-
"FW_260507_dfd_Fly1_001_label",
|
| 90 |
-
"FW_260507_g25_Fly1_002",
|
| 91 |
-
"FW_260507_g25_Fly2_001_label",
|
| 92 |
-
"FW_260507_g25_Fly3_001_label",
|
| 93 |
-
"FW_260508_g25_Fly1_001_label",
|
| 94 |
-
"FW_260508_g25_Fly2_001_label",
|
| 95 |
-
"FW_260508_g25_Fly3_001_label",
|
| 96 |
-
"FW_260508_g25_Fly4_007_label",
|
| 97 |
-
"IN07B001_260417_Fly3_003",
|
| 98 |
-
"IN07B001_260417_Fly4_004",
|
| 99 |
-
"IN07B001_260417_Fly4_005",
|
| 100 |
-
"IN07B001_260417_Fly4_007",
|
| 101 |
-
"IN07B007_260323_Fly3_002",
|
| 102 |
-
"IN10B012_260319_Fly1_003",
|
| 103 |
-
"IN10B012_260319_Fly1_006",
|
| 104 |
-
"IN10B014_260317_Fly1_004",
|
| 105 |
-
"IN10B014_260320_Fly2_003",
|
| 106 |
-
"IN10B014_260320_Fly2_009",
|
| 107 |
-
"IN14B010_251121_Fly3_003",
|
| 108 |
-
"IN14B011_251126_Fly3_004",
|
| 109 |
-
"IN19B038_260313_Fly3_003",
|
| 110 |
-
"LTM-MN_251217_Fly1_003",
|
| 111 |
-
"LTM-MN_260119_Fly3_003",
|
| 112 |
-
"LTM-MN_260120_Fly3_003",
|
| 113 |
-
"LTM-MN_260120_Fly3_006",
|
| 114 |
-
"oldrig_demo",
|
| 115 |
-
"scape_260417_IN07B001_Fly3_004",
|
| 116 |
-
"scape_260417_IN07B001_Fly4_006"
|
| 117 |
-
],
|
| 118 |
-
"holdout": [],
|
| 119 |
-
"holdout_frames": {},
|
| 120 |
-
"n_train_items": 4488,
|
| 121 |
-
"augment": {
|
| 122 |
-
"degrees": 12.0,
|
| 123 |
-
"scale": [
|
| 124 |
-
1.0,
|
| 125 |
-
1.0
|
| 126 |
-
],
|
| 127 |
-
"aspect": [
|
| 128 |
-
0.85,
|
| 129 |
-
1.18
|
| 130 |
-
],
|
| 131 |
-
"translate": [
|
| 132 |
-
0.0,
|
| 133 |
-
0.0
|
| 134 |
-
],
|
| 135 |
-
"flip_p": 0.5,
|
| 136 |
-
"brightness": 0.3,
|
| 137 |
-
"contrast": 0.3,
|
| 138 |
-
"gamma": [
|
| 139 |
-
0.7,
|
| 140 |
-
1.4
|
| 141 |
-
],
|
| 142 |
-
"blur_sigma": [
|
| 143 |
-
0.5,
|
| 144 |
-
1.5
|
| 145 |
-
],
|
| 146 |
-
"noise_std": 0.03,
|
| 147 |
-
"photometric_p": 0.5
|
| 148 |
-
},
|
| 149 |
-
"final_loss": 6.612265586853027,
|
| 150 |
-
"holdout_report": null,
|
| 151 |
-
"select_best": null,
|
| 152 |
-
"best_step": null,
|
| 153 |
-
"best_score": null
|
| 154 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_512_hexaview_fly38/README.md
DELETED
|
@@ -1,30 +0,0 @@
|
|
| 1 |
-
# `mvt_dinov3b_512_hexaview_fly38` -- the hexaview detector, round 11
|
| 2 |
-
|
| 3 |
-
A deeperfly 2 detector (`deeperfly-detector-1`, family `mvt`): a multiview transformer on a DINOv3 ViT-B/16 that predicts all 38 points of the `fly38` skeleton in the six views of the hexaview rig -- two cameras, each seeing the arena directly and through two prisms. It windows each view on the fly frame by frame, and a video holds three views of one fly, so it runs with its locator, `260920_fast_efficientvit_b1_352_hexaview_locator`, beside it.
|
| 4 |
-
|
| 5 |
-
Exported 2026-09-28 from `hexaview/runs/r11ship_all`, trained 2026-09-27: round 10's recipe unchanged, retrained on the labels of 2026-09-27.
|
| 6 |
-
|
| 7 |
-
| | |
|
| 8 |
-
|---|---|
|
| 9 |
-
| file | `mvt_dinov3b_512_hexaview_fly38.pth`, 383,792,459 bytes |
|
| 10 |
-
| sha256 | `a832147c1bef46006b7e034215467bca1505a0aba32a01e581db02e8fa8db285` |
|
| 11 |
-
| skeleton | `fly38` -- `fly38.toml` beside this file |
|
| 12 |
-
| backbone | `vit_base_patch16_dinov3.lvd1689m` (timm) |
|
| 13 |
-
| input | 512x512 per view: a square window centered on the fly in each frame |
|
| 14 |
-
| trained on | 16 hexaview recordings, 3,018 items (`report.json`); no holdout |
|
| 15 |
-
| recipe | `config.toml` beside this file |
|
| 16 |
-
|
| 17 |
-
## What it scores
|
| 18 |
-
|
| 19 |
-
No held-out number of its own: a shipping model trains on every label. On the deeperfly repository's `examples/hexaview/` clip (250 frames of `260819_002`), the pictorial 3D reprojects at 3.15 px median through the recording's calibration. That is agreement across the six views, not an error against labels.
|
| 20 |
-
|
| 21 |
-
## Using it
|
| 22 |
-
|
| 23 |
-
```toml
|
| 24 |
-
[pose2d]
|
| 25 |
-
weights = ["/mnt/upramdya/data/TL/deeperfly-models/260927_mvt_dinov3b_512_hexaview_fly38/mvt_dinov3b_512_hexaview_fly38.pth"]
|
| 26 |
-
window = "per_frame"
|
| 27 |
-
locator = "/mnt/upramdya/data/TL/deeperfly-models/260920_fast_efficientvit_b1_352_hexaview_locator/fast_efficientvit_b1_352_hexaview_locator.pth"
|
| 28 |
-
```
|
| 29 |
-
|
| 30 |
-
Copying this directory to the machine that runs it and naming the local path is the better habit. Verify a copy with `sha256sum -c SHA256SUMS`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_512_hexaview_fly38/SHA256SUMS
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
5aaa8857861800b1a797dc69a7da51838ebaa03059112f9608592f6e6dc11c3b ./config.toml
|
| 2 |
-
56f9a33ea5c286bda06e599602e7b7adaefb7ba29a74a2516548b7cbb7776e52 ./fly38.toml
|
| 3 |
-
a832147c1bef46006b7e034215467bca1505a0aba32a01e581db02e8fa8db285 ./mvt_dinov3b_512_hexaview_fly38.pth
|
| 4 |
-
d15e43352ce008d3e5365b6aa126d5849f59d88ea7dfbd94838647129c9995a2 ./report.json
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_512_hexaview_fly38/config.toml
DELETED
|
@@ -1,100 +0,0 @@
|
|
| 1 |
-
# r11ship_all: round 11's hexaview ship -- r10ship_all's recipe unchanged, retrained on
|
| 2 |
-
# the labels of 2026-09-27 (504 frames in 17 projects: the 10 of round 10 plus the 7
|
| 3 |
-
# large-arena GE recordings kept after the desync audit) by the code of main 796ae43.
|
| 4 |
-
# The split is still splits/r10_all.toml: its one exclusion, 260804_002 frame 29500,
|
| 5 |
-
# is still labeled. 260730_001's realignment (2026-09-25) split its labeled frames
|
| 6 |
-
# 441250 and 445750 into t-1 (top views only) and t (bottom views only); each is a
|
| 7 |
-
# partially labeled moment, which the fill completes like any other. No holdout.
|
| 8 |
-
#
|
| 9 |
-
# `transductive = true` as in `r6ship_all`: the ship trains on every label, so a
|
| 10 |
-
# teacher that has seen them all leaks nothing it does not already have.
|
| 11 |
-
|
| 12 |
-
format_version = 3
|
| 13 |
-
|
| 14 |
-
[data]
|
| 15 |
-
kind = "project"
|
| 16 |
-
projects = ["../recordings/*"]
|
| 17 |
-
split = "../splits/r10_all.toml"
|
| 18 |
-
cache = "../cache"
|
| 19 |
-
|
| 20 |
-
[data.crops]
|
| 21 |
-
tightness = [0.75, 2.2] # per-sample crop around the animal, log-uniform
|
| 22 |
-
jitter = 0.1
|
| 23 |
-
eval_tightness = 1.25
|
| 24 |
-
full_p = 0.0 # see above: a whole video frame is not one view's
|
| 25 |
-
|
| 26 |
-
[data.fill]
|
| 27 |
-
weight = 0.25
|
| 28 |
-
max_residual_px = 10.0
|
| 29 |
-
|
| 30 |
-
[model]
|
| 31 |
-
input_hw = [512, 512]
|
| 32 |
-
family = "mvt"
|
| 33 |
-
backbone = "vit_base_patch16_dinov3.lvd1689m"
|
| 34 |
-
pretrained = true
|
| 35 |
-
attn_scopes = "llllllllglgl"
|
| 36 |
-
margin = 64
|
| 37 |
-
reach = 2
|
| 38 |
-
drop_path = 0.0
|
| 39 |
-
token_mask = 0.0
|
| 40 |
-
token_pad = 2
|
| 41 |
-
init_from = "/home/tlam/deeperfly-projects/octacam/runs/mvt_dinov3/ship_vitb_distill_s0/model.pth"
|
| 42 |
-
|
| 43 |
-
[augment]
|
| 44 |
-
degrees = 180.0 # every view, day 1: a walking fly faces anywhere
|
| 45 |
-
scale = [1.0, 1.0] # the crop sampler supplies scale and shift
|
| 46 |
-
aspect = [0.85, 1.18]
|
| 47 |
-
translate = [0.0, 0.0]
|
| 48 |
-
flip_p = 0.5
|
| 49 |
-
brightness = 0.3
|
| 50 |
-
contrast = 0.3
|
| 51 |
-
gamma = [0.7, 1.4]
|
| 52 |
-
blur_sigma = [0.5, 1.5]
|
| 53 |
-
noise_std = 0.03
|
| 54 |
-
photometric_p = 0.5
|
| 55 |
-
|
| 56 |
-
[train]
|
| 57 |
-
grad_checkpoint = true
|
| 58 |
-
steps = 5000
|
| 59 |
-
images_per_batch = 24 # four 6-view moments per step
|
| 60 |
-
grad_clip = 1.0
|
| 61 |
-
amp = true
|
| 62 |
-
ema_decay = 0.999
|
| 63 |
-
view_drop_p = 0.3
|
| 64 |
-
view_min = 1
|
| 65 |
-
log_every = 100
|
| 66 |
-
seed = 0
|
| 67 |
-
out = "../runs/r11ship_all"
|
| 68 |
-
|
| 69 |
-
[train.optimizer]
|
| 70 |
-
lr = 1e-4
|
| 71 |
-
weight_decay = 0.05
|
| 72 |
-
warmup_steps = 500
|
| 73 |
-
|
| 74 |
-
[train.loss]
|
| 75 |
-
sigma = 2.0
|
| 76 |
-
field_weight = 1.0
|
| 77 |
-
coord_weight = 0.0
|
| 78 |
-
tri_weight = 0.0 # the calibration's units are arbitrary
|
| 79 |
-
|
| 80 |
-
[train.eval]
|
| 81 |
-
every = 0
|
| 82 |
-
|
| 83 |
-
[compute]
|
| 84 |
-
workers = 8
|
| 85 |
-
|
| 86 |
-
[unlabeled]
|
| 87 |
-
# No `teacher`: the teacher's points, confidences and windows come from each
|
| 88 |
-
# project's merged detections (ADR-0083): r10ship_all, or r10ship_all_realigned.
|
| 89 |
-
n_per_project = 250
|
| 90 |
-
transductive = true
|
| 91 |
-
agree_px = 6.0
|
| 92 |
-
min_views = 3
|
| 93 |
-
conf_min = 0.3
|
| 94 |
-
geom_weight = 0.3
|
| 95 |
-
weight = 0.5
|
| 96 |
-
mask_ratios = [0.0, 0.5, 0.9]
|
| 97 |
-
masked_weight = 1.0
|
| 98 |
-
unmasked_weight = 0.5
|
| 99 |
-
crop_tightness = [0.75, 1.6]
|
| 100 |
-
cache = "../cache/unlabeled"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_512_hexaview_fly38/fly38.toml
DELETED
|
@@ -1,129 +0,0 @@
|
|
| 1 |
-
# fly38 -- the 38 tracked points of a tethered Drosophila: six 5-point legs, two
|
| 2 |
-
# antennae, the neck, and a 5-point dorsal-midline abdomen chain (the tergite stripes).
|
| 3 |
-
#
|
| 4 |
-
# A skeleton is points, edges and point_symmetries -- the same decomposition as SLEAP
|
| 5 |
-
# and DeepLabCut -- plus an optional palette (point_colors / edge_colors). The palette
|
| 6 |
-
# is decoration, not identity: it draws the points but is kept out of the digest, so
|
| 7 |
-
# recoloring never reports a different skeleton.
|
| 8 |
-
|
| 9 |
-
[skeleton]
|
| 10 |
-
name = "fly38"
|
| 11 |
-
|
| 12 |
-
# The points IN ORDER: channel i of the detector is points[i]. This is the contract
|
| 13 |
-
# with the weights.
|
| 14 |
-
points = [
|
| 15 |
-
"lf_thorax_coxa", "lf_coxa_trochanter", "lf_femur_tibia", "lf_tibia_tarsus", "lf_pretarsus",
|
| 16 |
-
"lm_thorax_coxa", "lm_coxa_trochanter", "lm_femur_tibia", "lm_tibia_tarsus", "lm_pretarsus",
|
| 17 |
-
"lh_thorax_coxa", "lh_coxa_trochanter", "lh_femur_tibia", "lh_tibia_tarsus", "lh_pretarsus",
|
| 18 |
-
"l_antenna",
|
| 19 |
-
"rf_thorax_coxa", "rf_coxa_trochanter", "rf_femur_tibia", "rf_tibia_tarsus", "rf_pretarsus",
|
| 20 |
-
"rm_thorax_coxa", "rm_coxa_trochanter", "rm_femur_tibia", "rm_tibia_tarsus", "rm_pretarsus",
|
| 21 |
-
"rh_thorax_coxa", "rh_coxa_trochanter", "rh_femur_tibia", "rh_tibia_tarsus", "rh_pretarsus",
|
| 22 |
-
"r_antenna",
|
| 23 |
-
"neck",
|
| 24 |
-
"abdomen0", "abdomen1", "abdomen2", "abdomen3", "abdomen4",
|
| 25 |
-
]
|
| 26 |
-
|
| 27 |
-
# The edges, as pairs of points. The antennae and neck appear in no edge -- tracked
|
| 28 |
-
# points with no bone.
|
| 29 |
-
edges = [
|
| 30 |
-
["lf_thorax_coxa", "lf_coxa_trochanter"], ["lf_coxa_trochanter", "lf_femur_tibia"],
|
| 31 |
-
["lf_femur_tibia", "lf_tibia_tarsus"], ["lf_tibia_tarsus", "lf_pretarsus"],
|
| 32 |
-
["lm_thorax_coxa", "lm_coxa_trochanter"], ["lm_coxa_trochanter", "lm_femur_tibia"],
|
| 33 |
-
["lm_femur_tibia", "lm_tibia_tarsus"], ["lm_tibia_tarsus", "lm_pretarsus"],
|
| 34 |
-
["lh_thorax_coxa", "lh_coxa_trochanter"], ["lh_coxa_trochanter", "lh_femur_tibia"],
|
| 35 |
-
["lh_femur_tibia", "lh_tibia_tarsus"], ["lh_tibia_tarsus", "lh_pretarsus"],
|
| 36 |
-
["rf_thorax_coxa", "rf_coxa_trochanter"], ["rf_coxa_trochanter", "rf_femur_tibia"],
|
| 37 |
-
["rf_femur_tibia", "rf_tibia_tarsus"], ["rf_tibia_tarsus", "rf_pretarsus"],
|
| 38 |
-
["rm_thorax_coxa", "rm_coxa_trochanter"], ["rm_coxa_trochanter", "rm_femur_tibia"],
|
| 39 |
-
["rm_femur_tibia", "rm_tibia_tarsus"], ["rm_tibia_tarsus", "rm_pretarsus"],
|
| 40 |
-
["rh_thorax_coxa", "rh_coxa_trochanter"], ["rh_coxa_trochanter", "rh_femur_tibia"],
|
| 41 |
-
["rh_femur_tibia", "rh_tibia_tarsus"], ["rh_tibia_tarsus", "rh_pretarsus"],
|
| 42 |
-
["abdomen0", "abdomen1"], ["abdomen1", "abdomen2"], ["abdomen2", "abdomen3"], ["abdomen3", "abdomen4"],
|
| 43 |
-
]
|
| 44 |
-
|
| 45 |
-
# What each point becomes under a left/right flip. Write each pair once; anything absent
|
| 46 |
-
# is on the midline and maps to itself (hence no neck, no abdomen). The loader checks
|
| 47 |
-
# the implied mirror against `edges`: applying it must give the edge set back, so a
|
| 48 |
-
# wrong side or two joints of one leg exchanged is named rather than trained on silently.
|
| 49 |
-
point_symmetries = [
|
| 50 |
-
["lf_thorax_coxa", "rf_thorax_coxa"],
|
| 51 |
-
["lf_coxa_trochanter", "rf_coxa_trochanter"],
|
| 52 |
-
["lf_femur_tibia", "rf_femur_tibia"],
|
| 53 |
-
["lf_tibia_tarsus", "rf_tibia_tarsus"],
|
| 54 |
-
["lf_pretarsus", "rf_pretarsus"],
|
| 55 |
-
["lm_thorax_coxa", "rm_thorax_coxa"],
|
| 56 |
-
["lm_coxa_trochanter", "rm_coxa_trochanter"],
|
| 57 |
-
["lm_femur_tibia", "rm_femur_tibia"],
|
| 58 |
-
["lm_tibia_tarsus", "rm_tibia_tarsus"],
|
| 59 |
-
["lm_pretarsus", "rm_pretarsus"],
|
| 60 |
-
["lh_thorax_coxa", "rh_thorax_coxa"],
|
| 61 |
-
["lh_coxa_trochanter", "rh_coxa_trochanter"],
|
| 62 |
-
["lh_femur_tibia", "rh_femur_tibia"],
|
| 63 |
-
["lh_tibia_tarsus", "rh_tibia_tarsus"],
|
| 64 |
-
["lh_pretarsus", "rh_pretarsus"],
|
| 65 |
-
["l_antenna", "r_antenna"],
|
| 66 |
-
]
|
| 67 |
-
|
| 68 |
-
# The palette. One #rrggbb per point; a key is a point name or a `*` pattern (an exact
|
| 69 |
-
# name beats a pattern). Optional and may be partial -- an unnamed point takes tab10 by
|
| 70 |
-
# index. The scheme is anatomical, so it reads at a glance: left = blue, right = red,
|
| 71 |
-
# front -> hind lightening within a side; the midline neck and abdomen green. Edges take
|
| 72 |
-
# the average of their endpoints, so every leg bone comes out its own limb's color.
|
| 73 |
-
[skeleton.point_colors]
|
| 74 |
-
"lf_*" = "#0f7399"
|
| 75 |
-
"lm_*" = "#1a8daf"
|
| 76 |
-
"lh_*" = "#75becb"
|
| 77 |
-
l_antenna = "#0a4f6b"
|
| 78 |
-
"rf_*" = "#ba1e31"
|
| 79 |
-
"rm_*" = "#c9564f"
|
| 80 |
-
"rh_*" = "#d58579"
|
| 81 |
-
r_antenna = "#8c1525"
|
| 82 |
-
neck = "#15a315"
|
| 83 |
-
"abdomen*" = "#61e47b"
|
| 84 |
-
|
| 85 |
-
# A canonical neutral posture (NeuroMechFly's rest pose), one [x, y, z] per point
|
| 86 |
-
# in millimeters, with the body center of mass at the origin (x anterior, y the
|
| 87 |
-
# left-right axis, z dorsal). It is NOT part of the skeleton's identity (out of the
|
| 88 |
-
# digest); it draws the skeleton in 3D and SEEDS labeling: projected through a
|
| 89 |
-
# recording's calibration it drops a rough draggable instance into each view when
|
| 90 |
-
# nothing else (a prior labeled frame, another view) is available to seed from.
|
| 91 |
-
[skeleton.default_pose]
|
| 92 |
-
lf_thorax_coxa = [ 0.42966, 0.17200, 0.25226]
|
| 93 |
-
lf_coxa_trochanter = [ 0.31028, 0.06883, -0.07688]
|
| 94 |
-
lf_femur_tibia = [ 0.85227, 0.42043, 0.20537]
|
| 95 |
-
lf_tibia_tarsus = [ 1.05606, 0.65936, -0.20658]
|
| 96 |
-
lf_pretarsus = [ 1.45133, 1.02885, -0.58856]
|
| 97 |
-
lm_thorax_coxa = [ 0.03366, 0.12500, 0.00026]
|
| 98 |
-
lm_coxa_trochanter = [ 0.00831, 0.09367, -0.17620]
|
| 99 |
-
lm_femur_tibia = [ 0.11746, 0.70120, 0.30719]
|
| 100 |
-
lm_tibia_tarsus = [ 0.23055, 0.96680, -0.29411]
|
| 101 |
-
lm_pretarsus = [ 0.38484, 1.49119, -0.73358]
|
| 102 |
-
lh_thorax_coxa = [-0.19334, 0.08700, -0.01474]
|
| 103 |
-
lh_coxa_trochanter = [-0.27402, 0.09655, -0.19640]
|
| 104 |
-
lh_femur_tibia = [-0.64760, 0.63110, 0.32665]
|
| 105 |
-
lh_tibia_tarsus = [-0.96496, 0.77982, -0.26073]
|
| 106 |
-
lh_pretarsus = [-1.40791, 1.03885, -0.86325]
|
| 107 |
-
l_antenna = [ 1.04836, 0.08600, 0.56596]
|
| 108 |
-
rf_thorax_coxa = [ 0.42966, -0.17200, 0.25226]
|
| 109 |
-
rf_coxa_trochanter = [ 0.31028, -0.06883, -0.07688]
|
| 110 |
-
rf_femur_tibia = [ 0.85227, -0.42043, 0.20537]
|
| 111 |
-
rf_tibia_tarsus = [ 1.05606, -0.65936, -0.20658]
|
| 112 |
-
rf_pretarsus = [ 1.45133, -1.02885, -0.58856]
|
| 113 |
-
rm_thorax_coxa = [ 0.03366, -0.12500, 0.00026]
|
| 114 |
-
rm_coxa_trochanter = [ 0.00831, -0.09367, -0.17620]
|
| 115 |
-
rm_femur_tibia = [ 0.11746, -0.70120, 0.30719]
|
| 116 |
-
rm_tibia_tarsus = [ 0.23055, -0.96680, -0.29411]
|
| 117 |
-
rm_pretarsus = [ 0.38484, -1.49119, -0.73358]
|
| 118 |
-
rh_thorax_coxa = [-0.19334, -0.08700, -0.01474]
|
| 119 |
-
rh_coxa_trochanter = [-0.27402, -0.09655, -0.19640]
|
| 120 |
-
rh_femur_tibia = [-0.64760, -0.63110, 0.32665]
|
| 121 |
-
rh_tibia_tarsus = [-0.96496, -0.77982, -0.26073]
|
| 122 |
-
rh_pretarsus = [-1.40791, -1.03885, -0.86325]
|
| 123 |
-
r_antenna = [ 1.04836, -0.08600, 0.56596]
|
| 124 |
-
neck = [ 0.61936, 0.00000, 0.48296]
|
| 125 |
-
abdomen0 = [-0.71698, 0.00000, 0.71444]
|
| 126 |
-
abdomen1 = [-0.91268, 0.00000, 0.66169]
|
| 127 |
-
abdomen2 = [-1.10060, 0.00000, 0.61850]
|
| 128 |
-
abdomen3 = [-1.27163, 0.00000, 0.56551]
|
| 129 |
-
abdomen4 = [-1.48737, 0.00000, 0.46364]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260927_mvt_dinov3b_512_hexaview_fly38/report.json
DELETED
|
@@ -1,75 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"projects": {
|
| 3 |
-
"260730_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260730_001/deeperfly",
|
| 4 |
-
"260804_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260804_001/deeperfly",
|
| 5 |
-
"260804_002": "/home/tlam/deeperfly-projects/hexaview/recordings/260804_002/deeperfly",
|
| 6 |
-
"260804_003": "/home/tlam/deeperfly-projects/hexaview/recordings/260804_003/deeperfly",
|
| 7 |
-
"260804_004": "/home/tlam/deeperfly-projects/hexaview/recordings/260804_004/deeperfly",
|
| 8 |
-
"260818_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260818_001/deeperfly",
|
| 9 |
-
"260819_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260819_001/deeperfly",
|
| 10 |
-
"260819_002": "/home/tlam/deeperfly-projects/hexaview/recordings/260819_002/deeperfly",
|
| 11 |
-
"260819_003": "/home/tlam/deeperfly-projects/hexaview/recordings/260819_003/deeperfly",
|
| 12 |
-
"260821_002": "/home/tlam/deeperfly-projects/hexaview/recordings/260821_002/deeperfly",
|
| 13 |
-
"260916_Fly10_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260916_Fly10_001/deeperfly",
|
| 14 |
-
"260916_Fly1_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260916_Fly1_001/deeperfly",
|
| 15 |
-
"260916_Fly3_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260916_Fly3_001/deeperfly",
|
| 16 |
-
"260916_Fly5_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260916_Fly5_001/deeperfly",
|
| 17 |
-
"260916_Fly6_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260916_Fly6_001/deeperfly",
|
| 18 |
-
"260916_Fly9_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260916_Fly9_001/deeperfly",
|
| 19 |
-
"260917_Fly8_001": "/home/tlam/deeperfly-projects/hexaview/recordings/260917_Fly8_001/deeperfly"
|
| 20 |
-
},
|
| 21 |
-
"train_projects": [
|
| 22 |
-
"260730_001",
|
| 23 |
-
"260804_001",
|
| 24 |
-
"260804_002",
|
| 25 |
-
"260804_003",
|
| 26 |
-
"260804_004",
|
| 27 |
-
"260818_001",
|
| 28 |
-
"260819_001",
|
| 29 |
-
"260819_002",
|
| 30 |
-
"260819_003",
|
| 31 |
-
"260821_002",
|
| 32 |
-
"260916_Fly10_001",
|
| 33 |
-
"260916_Fly1_001",
|
| 34 |
-
"260916_Fly3_001",
|
| 35 |
-
"260916_Fly5_001",
|
| 36 |
-
"260916_Fly9_001",
|
| 37 |
-
"260917_Fly8_001"
|
| 38 |
-
],
|
| 39 |
-
"holdout": [],
|
| 40 |
-
"holdout_frames": {},
|
| 41 |
-
"n_train_items": 3018,
|
| 42 |
-
"augment": {
|
| 43 |
-
"degrees": 180.0,
|
| 44 |
-
"scale": [
|
| 45 |
-
1.0,
|
| 46 |
-
1.0
|
| 47 |
-
],
|
| 48 |
-
"aspect": [
|
| 49 |
-
0.85,
|
| 50 |
-
1.18
|
| 51 |
-
],
|
| 52 |
-
"translate": [
|
| 53 |
-
0.0,
|
| 54 |
-
0.0
|
| 55 |
-
],
|
| 56 |
-
"flip_p": 0.5,
|
| 57 |
-
"brightness": 0.3,
|
| 58 |
-
"contrast": 0.3,
|
| 59 |
-
"gamma": [
|
| 60 |
-
0.7,
|
| 61 |
-
1.4
|
| 62 |
-
],
|
| 63 |
-
"blur_sigma": [
|
| 64 |
-
0.5,
|
| 65 |
-
1.5
|
| 66 |
-
],
|
| 67 |
-
"noise_std": 0.03,
|
| 68 |
-
"photometric_p": 0.5
|
| 69 |
-
},
|
| 70 |
-
"final_loss": 7.084183692932129,
|
| 71 |
-
"holdout_report": null,
|
| 72 |
-
"select_best": null,
|
| 73 |
-
"best_step": null,
|
| 74 |
-
"best_score": null
|
| 75 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -17,15 +17,27 @@ tags:
|
|
| 17 |
|
| 18 |
# deeperfly detectors
|
| 19 |
|
| 20 |
-
Pretrained 2D keypoint detectors for [deeperfly](https://github.com/NeLy-EPFL/deeperfly), markerless 3D pose estimation of *Drosophila* from multi-camera rigs. They
|
| 21 |
|
| 22 |
| Folder | Rig | What it is | Backbone | Trained on |
|
| 23 |
| --- | --- | --- | --- | --- |
|
| 24 |
-
| `261008_mvt_dinov3b_384_octacam_fly38` | octacam: eight cameras around a tethered fly on a ball |
|
| 25 |
-
| `
|
| 26 |
-
| `
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
Each folder holds the checkpoint (`.pth`), the skeleton it predicts (`fly38.toml`), the training recipe (`config.toml`), the training report (`report.json`), `SHA256SUMS`, and a `README.md` written when the model was exported. The paths in those READMEs are the lab's; use the instructions below instead.
|
| 31 |
|
|
@@ -37,7 +49,7 @@ From the root of a deeperfly clone, where the example configs expect them:
|
|
| 37 |
uv run hf download tkclam/deeperfly-models --local-dir models
|
| 38 |
```
|
| 39 |
|
| 40 |
-
One model only, such as the
|
| 41 |
|
| 42 |
```bash
|
| 43 |
uv run hf download tkclam/deeperfly-models --local-dir models \
|
|
@@ -59,7 +71,7 @@ Paths resolve against the config file. See the [deeperfly quickstart](https://ne
|
|
| 59 |
|
| 60 |
## Scope and limitations
|
| 61 |
|
| 62 |
-
The detectors were trained on recordings from two rigs in one lab, with every label used for training (no held-out set). The
|
| 63 |
|
| 64 |
## License
|
| 65 |
|
|
|
|
| 17 |
|
| 18 |
# deeperfly detectors
|
| 19 |
|
| 20 |
+
Pretrained 2D keypoint detectors for [deeperfly](https://github.com/NeLy-EPFL/deeperfly), markerless 3D pose estimation of *Drosophila* from multi-camera rigs. They are the detectors the example run configs in the deeperfly repository name, all trained in the [Ramdya lab](https://www.epfl.ch/labs/ramdya-lab/) at EPFL on hand labels from two rigs.
|
| 21 |
|
| 22 |
| Folder | Rig | What it is | Backbone | Trained on |
|
| 23 |
| --- | --- | --- | --- | --- |
|
| 24 |
+
| `261008_mvt_dinov3b_384_octacam_fly38` | octacam: eight cameras around a tethered fly on a ball | the octacam detector (round 14): multiview transformer, all 38 `fly38` keypoints in every view, 384x768 window per view | DINOv3 ViT-B/16 | 62 recordings, 4,703 labeled items |
|
| 25 |
+
| `261001_mvt_dinov3b_512_hexaview_fly38` | hexaview: two cameras, each seeing a freely walking fly directly and through two prisms (six views) | the hexaview detector (round 13), for one fly: multiview transformer, 38 keypoints, 512x512 window centered on the fly in each frame; run it at `[pose2d] tightness = 1.2` | DINOv3 ViT-B/16 | 17 recordings, 3,240 labeled items |
|
| 26 |
+
| `260920_fast_efficientvit_b1_352_hexaview_locator` | hexaview | full-frame locator that places the hexaview detector's windows | EfficientViT-B1 | 9 recordings, 824 labeled items |
|
| 27 |
+
|
| 28 |
+
A real-time octacam detector is in training and will be added here.
|
| 29 |
+
|
| 30 |
+
### Expected input
|
| 31 |
+
|
| 32 |
+
Each detector expects frames like these, from the example clips in the deeperfly repository; the dashed boxes are its windows, and the skeleton is what it predicts. [Pretrained models](https://nely-epfl.github.io/deeperfly/stable/models/) in the deeperfly docs describes both rigs.
|
| 33 |
+
|
| 34 |
+
**octacam**
|
| 35 |
+
|
| 36 |
+

|
| 37 |
+
|
| 38 |
+
**hexaview**
|
| 39 |
+
|
| 40 |
+

|
| 41 |
|
| 42 |
Each folder holds the checkpoint (`.pth`), the skeleton it predicts (`fly38.toml`), the training recipe (`config.toml`), the training report (`report.json`), `SHA256SUMS`, and a `README.md` written when the model was exported. The paths in those READMEs are the lab's; use the instructions below instead.
|
| 43 |
|
|
|
|
| 49 |
uv run hf download tkclam/deeperfly-models --local-dir models
|
| 50 |
```
|
| 51 |
|
| 52 |
+
One model only, such as the octacam detector:
|
| 53 |
|
| 54 |
```bash
|
| 55 |
uv run hf download tkclam/deeperfly-models --local-dir models \
|
|
|
|
| 71 |
|
| 72 |
## Scope and limitations
|
| 73 |
|
| 74 |
+
The detectors were trained on recordings from two rigs in one lab, with every label used for training (no held-out set). The octacam detector's twin, trained with four recordings held out, scores 3.25 px median and 4.49 px mean on their 9,269 labeled cells (93.7% within 10 px). On the bundled example clips, the octacam detector reprojects at 1.46 px median after bundle adjustment and the hexaview detector at 3.00 px median through the recording's calibration; that is agreement across views, not error against labels. They are not expected to transfer to other rigs, magnifications, or lighting without retraining. `deeperfly train` fits a detector on your own labels, and these checkpoints can serve as a starting point.
|
| 75 |
|
| 76 |
## License
|
| 77 |
|
260927_mvt_dinov3b_384_octacam_fly38/mvt_dinov3b_384_octacam_fly38.pth → assets/hexaview.jpg
RENAMED
|
File without changes
|
260927_mvt_dinov3b_512_hexaview_fly38/mvt_dinov3b_512_hexaview_fly38.pth → assets/octacam.jpg
RENAMED
|
File without changes
|