SLEAP v1.6.5
SLEAP v1.6.5 is a small maintenance release: a critical fix restoring sleap-nn CLI functionality that had been silently disabled since v1.6.4, completion of the GUI's migration from the legacy track inference pipeline to the unified predict pipeline (fixing 3 related import bugs and a tracking-similarity dropdown flag drop along the way), sleap track now marked as a legacy command in favor of sleap predict, and removal of the redundant sleap-nn-* passthrough CLI entry points — plus an updated sleap-nn dependency (0.3.3) fixing a top-down inference scale-sharing regression plus two smaller correctness issues.
Quick install/upgrade:
uv tool install --python 3.13 "sleap[nn]==1.6.5" --torch-backend autoSee the v1.6.0 release notes for full details on the latest major release.
CLI Updates
Mark 'sleap track' as legacy, promote 'sleap predict' (#2839)
sleap track now prints a deprecation warning pointing users at sleap predict and is labeled (Legacy) in the CLI's help text. sleap predict is promoted throughout the docs as the recommended inference command, with its own full CLI reference section. track's underlying pipeline is unchanged — sleap-nn's own parity check found one confirmed behavioral divergence (tracking-ID counts on videos with empty-detection frames), so track isn't silently rerouted through predict; it's just clearly signposted as legacy so users can migrate at their own pace.
Remove sleap-nn-* passthrough entry points, warn on remaining legacy CLIs (#2842)
Removed the sleap-nn-train/sleap-nn-track/sleap-nn-export/sleap-nn-predict entry points, which duplicated the unified sleap CLI (sleap train/predict/export-model) without adding capability. Added a deprecation warning to the remaining legacy CLI commands that didn't already have one — sleap-render (→ sleap render), sleap-inspect (→ sleap show), and sleap-diagnostic (→ sleap doctor).
Bug Fixes
Fix sleap-nn CLI commands silently disabled by a stale import (#2836)
sleap/cli.py imported predict from sleap_nn.export.cli, but sleap-nn had moved predict into sleap_nn.cli. Because that import lived inside one broad try/except ImportError, the failure silently disabled all sleap-nn commands (train, track, eval, export-model, predict, system) — not just predict — so sleap.cli believed sleap-nn wasn't installed even when it was, and GUI training fell back to a stub command with Error: No such option '--config-name'.
Migrate GUI Run Inference to predict; fix 3 more broken imports and a tracking-similarity flag drop (#2838)
Completes the GUI's migration off sleap-nn's deprecated legacy track pipeline onto the unified predict pipeline (bit-for-bit equivalent per a full parity investigation). Along the way, fixes three more call sites broken by the same root cause as #2836 (sleap_nn.predict is a lazy top-level attribute, not an importable submodule) in sleap/nn_cli.py, sleap/legacy_cli_adaptors.py, and sleap/qc/insample_prediction.py. Also fixes a pre-existing bug where the tracking-similarity dropdown silently dropped --features/--scoring_method from the CLI call for any non-flow tracker using a similarity method other than IOU.
Dependency Updates
sleap-nn 0.3.2 → 0.3.3
Small correctness-focused follow-up, all fixes, no breaking changes:
- Fixed a regression where the top-down inference pipeline's centered-instance stage silently inherited the centroid stage's
preprocessing.scaleinstead of using its own trained value, whenever the two models were trained at different scales (a common setup — centroid models are often trained at lower resolution for speed; this is literally the GUI's own default training-profile pairing). This corrupted confidence-map peak-finding badly enough to drop detections almost entirely: on a real 2560-frame project with mismatched scales,sleap-nn predictwent from 5120 correct instances (v0.3.1) to 0 on v0.3.2. Bothpredictandtracknow correctly resolve and apply each stage's own scale by default, while still honoring an explicit--input_scaleoverride applied uniformly to both stages (#725). - Fixed
sleap-nn predictnever recordingscale/crop_sizein its output provenance metadata; for top-down models it now recordscentroid_scale/instance_scale/crop_sizedistinctly rather than collapsing to one shared value (#728). - Fixed
anchor_parthaving no upfront validation forcentered_instance/multi_class_topdown/centered_instance_segmentationmodels — a typo'd or nonexistentanchor_partused to pass config setup cleanly and only fail deep inside dataset construction with a misleading error. A clear, correctly-attributed error is now raised upfront (#729). - Fixed the LR scheduler selection silently ignoring its own documented priority order (
cosine_annealing_warmup > linear_warmup_linear_decay > step_lr > reduce_lr_on_plateau) — any user who set a preferred scheduler without also explicitly nulling the always-populated-by-defaultreduce_lr_on_plateausilently gotReduceLROnPlateauinstead, no error or warning. The scheduler is now selected in the documented priority order (#729).
See the sleap-nn v0.3.3 release notes for full details.
sleap-io — unchanged (0.9.2)
0.9.2 remains the latest sleap-io release; no bump needed this cycle.
Full Changelog: v1.6.4...v1.6.5