Changelog¶
v1.6.5¶
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
v1.6.4¶
SLEAP v1.6.4
SLEAP v1.6.4 is a release packed with GUI improvements — Label QC label-error detection, a negative-frame training workflow, Merge Instance, motion-trail rendering controls, and per-instance visibility tools — alongside 25 bug fixes covering frame selection, skeleton persistence, drag-and-drop, Wayland/Windows dialog issues, and inference-pipeline crashes, plus updated dependencies (sleap-io 0.9.2 with re-identification, Category, and Event annotations; sleap-nn 0.3.1 with instance segmentation, sliding-window tiling, and pretrained backbones).
Quick install/upgrade:
uv tool install --python 3.13 "sleap[nn]==1.6.4" --torch-backend autoSee the v1.6.0 release notes for full details on the latest major release.
New Features
Add optional "Mean Node Score" column to Instances panel (#2696)
Adds an optional "Mean Node Score" column to the Instances panel, showing each predicted instance's mean point confidence over its visible nodes, mirroring sleap-nn's filter_min_mean_node_score filter. The column is hidden by default and toggled from View > Show Mean Node Score, giving users GUI visibility into a value previously only accessible via the CLI.
Improve loss plot y-axis scaling and add batch subsample dropdown (#2699)
Replaces a hard-coded floor in the training loss plot's log-scale y-axis calculation with log-space-aware padding so the loss curve fills the plot instead of being squeezed into a thin sliver, and adds a "Batch Subsample" dropdown (1/10/100) that thins out batch-loss scatter points for faster rendering on long training runs without discarding the underlying data.
Add "Include unlabeled frames" option to Render Video Clip dialog (#2701)
Adds an "Include unlabeled frames in range" checkbox to the Render Video Clip dialog, wiring the GUI through to sleap-io's existing full-range rendering semantics so exported clips can include every frame in a range (with overlays only where instances exist) instead of just labeled frames — previously only available via sio render --all-frames.
Add Accept All Predictions bulk action (#2702)
Adds an "Accept All Predictions..." action under the Labels menu that converts every unused predicted instance across the whole project into a user instance in one step, complementing the existing per-frame "Add Instances from All Predictions" command.
Expose peak threshold in inference dialog (#2704)
Exposes a Peak Threshold field (with a "Default" checkbox) in the GUI inference dialog, letting users tune the minimum confidence for node detections without dropping to the CLI's --peak_threshold flag.
Show current epoch runtime in training monitor (#2705)
The training monitor now shows per-epoch runtime alongside total runtime in the plot title, making it easy to spot a stalled epoch without manual arithmetic.
Add Previous User Labeled Frame navigation (Ctrl+Shift+U) (#2706)
Adds a "Previous User Labeled Frame" command that mirrors the existing "Next User Labeled Frame" (Ctrl+U), letting users navigate backward through frames containing user-created instances.
Add frame range filter for labeling suggestions (#2707)
Labeling suggestions can now be restricted to an explicit From/To frame range when the target is "Current Video," applying to every suggestion method except frame-chunk (which already has its own range control).
Add Actual Size (1:1) view option (#2708)
Adds a "View > Actual Size (1:1)" toggle that displays the video at native resolution instead of SLEAP's default zoom-to-fit, addressing complaints that low-resolution videos looked overly pixelated when upsampled to fit the window.
Add keyboard shortcut for Propagate Track Labels toggle (#2714)
Adds a default P keyboard shortcut for the "Propagate Track Labels" toggle, so users can flip that setting during proofreading without reaching for the Tracks menu each time.
Add Replace Videos button to Videos dock (#2715)
Adds a "Replace Videos" button to the Videos dock, alongside "Add Videos" and "Remove Video," so replacing a project's video no longer requires a trip to the File menu.
Negative frames — mark empty frames as background training examples (#2716)
Adds a full GUI workflow for marking a frame as a "negative frame" (confirmed-empty, no animals), including a toggle command, seekbar/canvas visual indicators, two new training-config options (Use Negative Frames, Negative Loss Weight), and a Label QC safety check. This closes a GUI gap for a capability sleap-io and sleap-nn already supported but that had been requested since 2022 (#640).
Label QC label-error detectors + GUI (#2770)
Adds a full Label QC label-error detection suite — five new detectors (left/right flip, chimera instances, duplicate/split instances, chain-order errors, missing nodes) — plus a revamped GUI with per-detector toggles, threshold sliders, filter-by-issue-type, and reviewed-state tracking. Also includes a spine-relative flip-detection fix that cut false-positive flip flags from 7.6% to 2.0% on real-world data.
Per-instance visibility & view-only toggles in the Instances dock (#2772)
Adds per-instance visibility and "view only" checkboxes to the Instances dock, letting users hide/show individual instances on the canvas or isolate a single instance for inspection without touching the saved project data.
Merge Instance — combine two partial instances into one (#2773)
Adds a "Merge Instance" action that combines two partially-labeled user instances in the same frame (e.g., one with anterior keypoints, one with posterior) into a single instance via shift/ctrl-select in the Instances dock, taking the union of their labeled nodes.
Per-instance & Label QC node-visibility controls (#2784)
Bundles three related Label GUI improvements on a shared per-instance node-visibility model: a Shift+V shortcut for "Show Non-Visible Nodes," a per-instance "Invisible Nodes" checkbox in the Instances dock, and a Label QC "Display" mode selector to reduce clutter when reviewing crowded frames.
Guide crop size / input scaling for top-down models (#2793)
Adds inline guidance to the training config dialog to steer users away from common top-down model mistakes — an info button explaining that input scaling should usually stay at 1.0 for centered-instance models, plus warnings when the effective crop size would fall below 100px or below the largest labeled instance. Also fixes a latent bug where validation warnings were rendered below the fold and effectively invisible.
Expose motion-trail options in the render/export dialog (#2819)
Adds a "Motion Trails" section to the Render Video Clip export dialog, exposing sleap-io's trail rendering options (length, node, width, opacity, fade, color) directly in the GUI so users no longer need the sio render --trails CLI to produce trailed videos.
Reframe live trail overlay onto sleap-io vocabulary (#2827)
Reframes the live in-player trail overlay to match sleap-io's trail semantics: trails now render for untracked/single-instance projects (previously required a Track and showed nothing), a new Trail Node menu lets users pick which node the trail follows, and fade is now a true alpha gradient. Replaces the removed "Trail Shade" preference with a "Trail Opacity" control.
CLI Updates
Show build commit hash in sleap doctor and startup banner (#2767)
sleap doctor and the startup banner now show the exact git commit a SLEAP install was built from (for editable and git-URL installs), and a new sleap doctor --commit flag resolves the commit for PyPI/conda releases via the GitHub API — useful for diagnosing installs that came from GitHub rather than a tagged release.
Bug Fixes
Fix Frame Selection and Frame Count in GUI (Shift + Drag and Shift + Double Click) (#2078)
Fixed Shift+Drag and Shift+Double-Click frame selection on the seekbar producing a frame count that didn't match the video's actual frame count, caused by an incorrect slider-width calculation and an extra +1 in the frame-count display.
Fix #2684: persist skeleton on save when no instances are labeled (#2686)
Fixed a skeleton edited only via the New Node/New Edge buttons being silently dropped on save when the project had no labeled instances yet, because the GUI's in-progress skeleton was never attached to labels.skeletons until an instance existed.
Fix blank progress dialog during Generate Suggestions (#2695)
Fixed "Generate Suggestions" blocking the main GUI thread and rendering its progress dialog as a black rectangle (Linux/Wayland) or triggering the spinning beach ball (macOS); suggestion generation now runs on a background thread with a responsive progress dialog.
Fix Copy Prior Frame copying stale prediction instead of user correction (#2698)
Fixed "Copy Prior Frame" landing on a stale, uncorrected prediction instead of the user's correction when both existed in the prior frame; the copy source now prefers user instances over unused predictions.
Fix parent widget on LearningDialog to fix window stacking on Windows (#2703)
Fixed training/inference dialogs appearing behind the main SLEAP window on Windows by giving LearningDialog a parent widget so Qt can manage window stacking correctly.
Clarify Delete Predictions beyond Frame Limit dialog text (#2711)
Clarified the "Delete Predictions beyond Frame Limit" dialog, whose title and field labels previously implied instances inside the range would be deleted — the opposite of the actual behavior.
Skip predicted instances in crop size auto-computation (#2717)
Crop size auto-computation in the training dialog now ignores PredictedInstance objects and accounts for augmentation padding, fixing cases where a handful of outlier predictions (or missing rotation/scale padding) skewed the auto-computed crop size away from what sleap-nn actually uses during training.
Fix single-node skeleton new-instance IndexError (#2719)
Fixed a crash (silently swallowed as a no-op) when creating a new instance on a single-node skeleton after at least one instance already existed, caused by an IndexError in the node-pair alignment helper that assumes at least two nodes.
Handle list-valued Video.filename (ImageVideo) in Label QC detector (#2739)
Fixed Label QC's "Run Analysis" crashing with TypeError: unhashable type: 'list' on projects using the ImageVideo backend (image-sequence imports from CVAT/COCO), where Video.filename is a list rather than a string.
Keep videos table populated when a video frame fails to read (#2743)
Fixed a single video that intermittently fails to read its first frame (e.g., a flaky network drive on Windows) blanking the entire Videos table instead of just that row.
Label QC only analyzes user-labeled instances (#2746)
Fixed Label QC flagging unreviewed model predictions on suggested frames instead of analyzing only manually-confirmed ground truth; also fixes a related bug where clicking a flagged row could jump to the wrong instance.
Fix misleading error when running inference on empty project (#2750)
Fixed a misleading "You have unsaved changes" error shown when running inference/training on a brand-new, never-saved project; the pre-flight check now distinguishes "no videos," "never saved," and "unsaved changes" and shows the message that matches the project's actual state.
Refresh Label QC dock on project load (#2754)
Fixed the Label QC dock reporting "Need at least 2 instances to run QC analysis" immediately after opening a project that clearly has labeled instances, because the dock's cached Labels reference wasn't refreshed on every project load.
Force invisible_as_nan in Label QC geometry (#2759)
Fixed Label QC's geometry computation relying on sleap-io's default handling of invisible nodes, which could leak placeholder display coordinates into edge/angle/distance statistics and produce spurious "unusual joint angle"/"unusual edge length" flags.
Accept drag-and-drop file opens on Linux/macOS (#2761)
Fixed dragging a .slp file or video onto the main SLEAP window doing nothing on Linux and macOS (it only worked on Windows), because the drag-accept check looked for a Windows-only MIME type instead of the cross-platform text/uri-list.
Spread occluded nodes via force-directed layout when converting predictions (#2771)
Fixed occluded/undetected nodes rendering at a garbage default location when "show non-visible nodes" was enabled after converting predictions to user instances; hidden nodes are now spread across the skeleton body via a force-directed layout while staying hidden.
Set parent widget on seekbar tooltip to fix Wayland popup warnings (#2780)
Fixed Wayland flooding stderr with "Failed to create popup" warnings on every seekbar hover, by giving the per-frame tooltip an explicit parent widget so Qt can establish the required transient-parent relationship.
Warn when picked inference config has no trained model (#2788)
Fixed the inference dialog's model-config dropdown silently staying empty with the Run button greyed out when a picked training config had no trained checkpoint; the GUI now warns explicitly and also recognizes checkpoints stored in a custom ckpt_dir.
Render videos table row when a video backend fails to open (#2799)
Fixed a crash (AttributeError: 'NoneType' object has no attribute 'filename') in the Videos table when a video's backend failed to open (e.g., a momentary lock or slow network drive), which could abort an active-learning session right after training.
Decode inference subprocess output as UTF-8 (#2801)
Fixed the GUI inference runner decoding subprocess output with the OS locale encoding (cp1252 on Windows), which crashed with UnicodeDecodeError on certain Unicode output and masked the real underlying inference error.
Use points_array compatibility shim in DeleteAreaPredictions (#2822)
Fixed a crash in "Delete Predictions from Area" (AttributeError: 'PredictedInstance' object has no attribute 'points_array') caused by a call site that hadn't been migrated to the compatibility shim after sleap-io removed the points_array attribute.
Use current sleap-io API in plot_instance edge drawing (#2823)
Fixed sleap.util.plot_instance() raising AttributeError when drawing skeleton edges, due to two more leftover call sites from the sleap-io API migration; this public function isn't wired into any current GUI/CLI path but is used by external scripts.
Properly quote Hydra overrides in exported train-script.sh (#2829)
Fixed Hydra override values containing an = (such as auto-generated run names) still raising OverrideParseException in exported train-script.sh, because a prior fix (#2612) wrapped values in shell quotes that bash strips before Hydra ever sees them. Overrides are now quoted for Hydra itself and separately shell-escaped so both layers see a valid token.
Treat trainer_accelerator as machine-specific when loading a saved profile (#2830)
Fixed a saved training profile's trainer_accelerator value (e.g., mps from a Mac) carrying over verbatim when reloaded on a different machine (e.g., Linux + CUDA or CPU-only), by treating it as machine-specific like the existing trainer_devices/num_workers handling.
Default training config file dialog to show JSON and YAML together (#2832)
Fixed the training-config file picker defaulting to a "JSON only" filter that hid .yaml/.yml files until manually switched; a combined "Config files" filter is now the default.
Other
Serialize gh-pages pushes across docs and PR-preview workflows (#2690)
Fixed the docs deployment pipeline racing itself — the "Deploy MkDocs" and "Docs PR Preview" workflows both pushed to gh-pages under mismatched concurrency groups, causing rejected pushes on most develop merges for about two months.
Use official uv Windows install, bump version pins, fix broken nn.sleap.ai links (#2693)
Documentation fix: switched the Windows uv install command to the official form that explicitly bypasses PowerShell's execution policy (the old command could silently close PowerShell on restricted systems), bumped pinned version examples to current releases, and repaired 11 broken nn.sleap.ai links.
Align license section with README (#2700)
Brought the docs.sleap.ai landing page's license section in line with the README and the actual Clear BSD LICENSE file, removing outdated "research/academic use only" language.
Add workflow_dispatch to manually redeploy versioned docs (#2712)
Added a manual trigger to the docs deployment workflow so a published release's docs (e.g., a stale latest alias) can be redeployed from develop without waiting for a new release or push.
Remove 24 orphaned " copy" image duplicates (#2713)
Removed 24 unreferenced " copy" image duplicates (~12 MB) from the docs assets, trimming the size of every future gh-pages build.
Rename Debug Mode menu to Experimental Features (#2725)
Renamed the Help menu's "Debug Mode" toggle to "Experimental Features" (and its backing state key) as groundwork for gating upcoming experimental features behind the same switch; a pure rename with no behavior change.
Streamline installation page with one-liner commands and OS auto-detect (#2730)
Restructured the installation docs page around a TL;DR block with one-liner install/upgrade/develop commands, collapsed redundant sections, and added OS auto-detection to Windows/macOS/Linux tabs site-wide.
Split TL;DR install commands into per-command copy blocks (#2731)
Split the installation TL;DR's combined install/upgrade/develop code block into three separate blocks so each command's copy button copies only that command instead of all three at once.
Dependency Updates
sleap-io 0.7.1 → 0.9.2
⚠️ Breaking: merge track matching now defaults toidentity, notname—Labels.merge()/Labels.match()(andsio merge) no longer collapse tracks just because they share a name; passtrack="name"to restore the old name-collapsing behavior.⚠️ Breaking: COCO polygon segmentation now rasterizes to masks by default —sio.load_coco()returns aUserSegmentationMaskper annotation instead of vectorUserROIs; passsegmentation_format="roi"to keep the old representation.⚠️ Breaking:Identity.colorremoved — color now lives inIdentity.metadata(adict[str, str]) instead of a dedicated field.⚠️ Breaking:.categoryis now aCategoryobject, not a plain string — construction (category="mouse") still works via an implicit converter, but reading it back requires.category.name.- Re-identification subsystem — new
Identity(cross-file ground-truth identity) andEmbedding(per-detection appearance vector) types attach to every detection modality, collect intoLabels.identities, and persist to.slp; appearance vectors stay off-disk unlesssave_embedding_vectors=True. - First-class
Category— a third grouping axis alongsideTrackandIdentityfor class/object-detector labels, with its own catalog, scores, embeddings, andrender --color-by category. - Frame-spanning
Eventannotations — sleap-io's first annotation with a temporal extent for behavior bouts, stimulus epochs, or review flags; persists only to.slp. - Unified modality interconversion — pose, centroid, bounding box, segmentation mask, and ROI share one verb set (
.to_centroid(),.to_bbox(),.to_roi(),.to_mask()) plus batchconvert()entry points. - Remote loading —
.slpand video loadable directly fromhttp(s),s3,gs/gcs,az/abfs, and Google Drive share links; newsio.download()/sio downloadfetches a remote file to disk. - DeepLabCut project import —
sio.load_dlc_project()imports a full DLC project (skeleton edges, source videos, train/test splits). - COCO instance segmentation — the COCO reader imports polygon/RLE segmentation as
SegmentationMaskannotations, with optional category→track mapping. - Virtual on-read video cropping —
Video.crop()provides a cropped view without re-encoding, round-trips through.slp, and bakes to real files viasio apply-crops. - Major I/O scalability fix (multi-camera sessions) —
RecordingSession3D point data moved out of the monolithicsessions_jsonstring into a columnar/session_dataHDF5 group; a real 108k-frame, 3-camera project'ssessions_jsonshrank from 524 MB to single digits of MB, fixing files that were unreadable in browser-based (h5wasm/JS) tooling. - Embedding-write performance fix — a 15,000-frame project's
.pkg.slpembedding time dropped from ~32 min to ~4 s by dropping gzip on already-compressed frame bytes; image-sequence embedding also gained a lossless byte-copy fast path. - Faster merges — appending merges are now O(N) instead of O(N²) (~218 s → ~0.75 s on a 9k-frame merge).
- Reliability for very large projects —
.slpsaving is hardened against HDF5's 64 KB per-attribute limit for provenance, merge history (capped at 1000 records by default), and per-video source metadata. - Data-preservation fixes — analysis HDF5 export no longer drops instances in untracked multi-animal projects; merge preserves the
is_negativebackground-frame flag; DLC/COCO readers retain empty frames; foreignVideo/filename lookups resolve via a newLabels.match_video(). - Other additions — motion trail overlays for rendering, name-based skeleton symmetry inference, machine-readable
sio show --json, gzip-compressed mask/ROI datasets, and pynwb 4 compatibility.
See the sleap-io v0.9.2 release notes for full details (and the linked v0.7.1/v0.8.0/v0.9.0/v0.9.1 notes for the intermediate steps).
sleap-nn 0.2.0 → 0.3.1
⚠️ Breaking: retrain required for whole-frame segmentation models —semantic_segmentationandbottomup_segmentationmodels trained before v0.3.1 have GT masks misaligned with the image grid; affected models must be retrained.⚠️ Breaking: mask-evaluation default metrics changed —run_evaluation(match_method="mask")now excludes GT masks linked to aPredictedInstanceby default, raising default recall/F1 on affected files; passuser_labels_only=Falseto restore old behavior.⚠️ Breaking:sleap-nn predictnow means pose inference — in v0.2.0,predictran exported ONNX/TensorRT models andtrackran pose inference; that's now reversed.trackstill works as a legacy command; exported-model inference moves tosleap-nn predict --runtime onnx|tensorrt/Predictor.from_export_dir(...).⚠️ Breaking: prediction.slpoutput is non-embedded by default — predictions reference the original source videos instead of writing a self-contained.pkg.slp; pass--embed trueto restore embedding.⚠️ Breaking: trainingseednow defaults to42(was unset) — changes train/val split RNG versus v0.2.0; setseed: nullfor the old fully-random behavior.⚠️ Breaking: frame-caching failures during training now hard-fail instead of warning and continuing.⚠️ Breaking: centroid target-source resolution changed —centroid_sourceis now resolved once per dataset rather than per frame, which can change the effective training set for mixed-annotation datasets.- New unified
sleap-nn predictcommand +PredictorPython API — a single entry point from model dir(s) + data tosio.Labels, with streaming, raw-tensor access, and in-memory frame prediction. - Centroid-only models are first-class — train/predict/evaluate a lone centroid head end-to-end, and (0.3.1) train directly from
UserCentroidannotations, including centroid-only frames (active-learning workflows). - Instance segmentation (experimental in 0.3.0, hardened in 0.3.1) — bottom-up, top-down, and SAM-prompted backends; 0.3.1 adds a whole-frame
semantic_segmentationmodel type and a clDice mask metric. - Sliding-window tiling (0.3.1) — cuts 4K++ frames with small objects into overlapping tiles for native-resolution inference.
- Pretrained HuggingFace backbones (0.3.1) — any
AutoBackbone(ConvNeXtV2, ResNet, Swinv2, DINOv2/v3, ...) usable as an encoder viasleap-nn[backbones]. - Kalman tracking —
--use_kalmanjoins optical-flow shift tracking. - Restored CPU/GPU overlap in
predict(0.3.1) — a prior refactor had silently made frame decoding synchronous with GPU inference; overlap is restored. - GPU (CUDA 13/cu130) is now the default backend, with remote-URL
--data_pathand repeatable--output_format. ⚠️ sleap-io dependency bumped to>=0.9.2,<0.10.0— audited through sleap-io's re-ID/Category/Eventannotations and large-project save hardening; sleap-io's breaking changes there don't affect sleap-nn code paths.
See the sleap-nn v0.3.0 and v0.3.1 release notes for full details.
Full Changelog: v1.6.3...v1.6.4
v1.6.3¶
SLEAP v1.6.3
SLEAP v1.6.3 is a patch release with bug fixes for training launch, multi-video clip rendering, GUI exports for image-directory projects, prediction-to-user-label conversion, and updated dependencies (sleap-io 0.7.0 with a unified annotation architecture, sleap-nn 0.2.0 with negative-frame training and faster CLI startup).
Quick install/upgrade:
uv tool install --python 3.13 "sleap[nn]==1.6.3" --torch-backend autoSee the v1.6.0 release notes for full details on the latest major release.
Bug Fixes
Fix multi-GPU training from GUI on Windows and macOS (#2660)
Fixed multi-GPU training failing to launch from the GUI on Windows and macOS with ValueError: __main__.__spec__ is None. Training subprocesses are now invoked as a Python module (python -m sleap.cli train) instead of through the entry-point script, which lets PyTorch Lightning's DDP strategy correctly spawn worker processes.
Fix top-down training overwriting models when using a custom run name (#2659)
Fixed a bug where top-down training with a custom run_name saved both the centroid and centered-instance models into the same folder, causing the second model to overwrite the first and breaking inference. The model-type suffix (e.g., .centroid.n=42, .centered_instance.n=42) is now always appended so each model gets its own run folder.
Fix NaN-predicted nodes converting to visible user labels (#2676)
Fixed a bug where double-clicking a PredictedInstance (or running "Add instances from all predictions") could place nodes with NaN-predicted coordinates at random on-screen locations marked as visible, instead of as invisible user labels at a sensible fallback location. Two stacked bugs along the conversion path were fixed: uninitialized memory from Instance.empty() was leaking into "missing" node slots, and a parameter-shadowing bug in add_random_nodes could leak visible=True from a previously processed valid node onto subsequent NaN nodes.
Fix multi-video clip rendering: deduplication, frame order, source video, and FPS (#2671)
Fixed four independent bugs in the Render Video Clip dialog that combined to produce double skeletons, out-of-order frames, the wrong source video, and clips played at 1/4 real time on multi-video projects. User-corrected predictions are now deduplicated before rendering, frames are written in sorted order, the dialog's video selection is honored over the main-window selection, and a new "Match source video FPS" checkbox (on by default) keeps high-fps behavioral footage at real speed instead of clamping to 30 fps.
Fix crashes in export and replace-video dialogs for image-directory projects (#2669)
Fixed TypeError crashes in File > Export Analysis HDF5..., Export Analysis CSV..., and Replace Videos... when a project contained ImageVideo (image-directory) backends. These commands previously assumed video.filename was a single string, but ImageVideo returns a list of per-frame image paths; affected sites now normalize to a representative path before use.
Fix incorrect intensity augmentation defaults in training profiles (#2647)
Fixed legacy default values for intensity augmentation parameters (Gaussian noise, uniform noise, contrast, brightness) in all nine bundled training profiles, which would have produced unusable training images (fully black or washed-out) if the corresponding augmentations were enabled. Defaults are now standardized to a conservative range matching sleap-nn. Most users are unaffected because these augmentations are off by default, but anyone who had manually enabled them should now get sensible behavior.
Other
Use sleap-io for analysis HDF5 and CSV exports (#2649)
Refactored analysis HDF5 and CSV export (from the GUI and sleap-convert) to use sleap-io's save_analysis_h5() and save_csv() functions, replacing SLEAP's internal implementations. Output files remain backwards compatible (MATLAB axis ordering preserved), and exports from the SLEAP GUI now produce identical files to those from the sleap-io CLI.
Revise README badges and contributors section (#2661)
Removed the Conda downloads badge and reorganized the contributors section in the project README. Documentation/metadata change only; no user-facing functionality affected.
Dependency Updates
sleap-io 0.6.5 → 0.7.0
- Unified annotation architecture:
Instance,BoundingBox,LabelImage,SegmentationMask,ROI, andCentroidare now first-class annotation types nested insideLabeledFrame, each withUser*(ground-truth) andPredicted*(withscore) variants and a uniformtracking_scorefield. - First-class instance segmentation: New
LabelImagetype for Cellpose / StarDist / Mask R-CNN / SAM workflows, with streaming write, lazy read, multi-resolutionscale/offsetmetadata, batch constructors (from_stack,from_binary_masks), and segmentation overlay rendering (API +sio render --overlay). - First-class detection: New
BoundingBoxtype withx1/y1/x2/y2representation and full I/O across SLP, COCO, Ultralytics, GeoJSON, and JABS, plus rotated-box rendering. - 3D pose data structures: New
Identity(cross-session animal identity),Instance3D, andPredictedInstance3Dfor multi-camera workflows that round-trip with sleap-io.js and luc3d. - New format support: Norpix
.seqvideo files, TrackMate CSV reader (auto-detected bysio convert), h5wasm/sleap-io.js-written SLP files, and GeoJSON ROI I/O. - Performance: O(1) frame and track index lookups across
Labels, plus chunked SLP v2.2 label-image storage delivering ~43x faster writes and zero-decompression label-image merge.
See the sleap-io v0.7.0 release notes for full details.
sleap-nn 0.1.3 → 0.2.0
- sleap-io v0.7.0 adoption: Pinned to
>=0.7.0,<0.8.0to pick up the unifiedUser*/Predicted*annotation architecture (drives the minor version bump). - Negative frame training: Opt-in
use_negative_frameslets user-confirmed empty frames suppress false-positive detections on SingleInstance, Centroid, BottomUp, and BottomUpMultiClass models, with per-sample loss metrics and cache-safe loading on Lustre/DDP/containers. - Config picker parity and smarter defaults:
sleap-nn config <slp>(TUI) now emits byte-identical YAML to the web-app config picker for all six pipelines, with corrected augmentation/head/trainer schema, matchingmax_striderecommendations, defaults flipped to Cache to Memory + 2 workers, and a simplified--pipeline topdownthat emits paired centroid + centered_instance configs. sleap-nn infoCLI: New subcommand prints a rich summary of any trained model directory — architecture, hyperparameters, training results, and evaluation metrics.- Simpler install and faster CLI:
torch/torchvisionare now default dependencies (no[torch]extra needed; new[cpu]/[gpu]extras), and lazy imports cutsleap-nn -hstartup from ~8s to ~1.2s. - Training and inference fixes: ConvNeXt ONNX export no longer crashes on odd intermediate feature maps, multi-GPU training launched from GUIs is fixed via a
__main__.__spec__re-spawn check,check_memory()no longer reads every HDF5 frame (~21 min → <1 s), intensity augmentation defaults are back on the correct 0–1 scale, and node count / confidence filters now apply in track-only mode. - Tracking robustness:
hungarian_matching()no longer crashes on all-NaN cost matrices; non-finite values are replaced with large finite placeholders. - Export and checkpoint metadata:
ExportMetadatanow carries ananchor_partfield, and savedinitial_config.yaml/training_config.yamlalways reflect the runningsleap_nn.__version__at checkpoint time. TensorRT/ONNX export pipeline picked up additional bug fixes and broader test coverage.
See the sleap-nn v0.1.3 and v0.2.0 release notes for full details.
Full Changelog: v1.6.2...v1.6.3
v1.6.2¶
SLEAP v1.6.2
SLEAP v1.6.2 is a patch release with bug fixes for GUI performance, data integrity, training configuration, and updated dependencies.
Quick install/upgrade:
uv tool install --python 3.13 "sleap[nn]==1.6.2" --torch-backend autoSee the v1.6.0 release notes for full details on the latest major release.
Bug Fixes
Fix GUI freeze when adding instances on suggested frames (#2632)
Fixed a performance regression that caused the GUI to freeze for ~10 minutes when adding instances on videos with large suggestion sets (~100k suggestions). The status bar update had O(n×m) complexity which has been reduced to O(n+m).
Fix skeleton node removal not updating instance point data (#2621)
Fixed a critical bug where deleting nodes from a skeleton via the GUI did not update instance point arrays. This caused file corruption where saved files couldn't be reopened due to shape mismatches. Files now correctly update point data when nodes are removed.
Improve training dialog UI with smart field visibility (#2619)
Training dialog improvements:
- Added toggle visibility for early stopping and OHKM parameter fields
- Hide OHKM fields for centroid models where they don't apply
- Fixed incorrect label "Sigma for Edges" → "Sigma for Identity" in multi-class bottom-up pipeline options
Fix Hydra override parsing error in exported train-script.sh (#2612)
Fixed OverrideParseException errors when running exported training scripts on SLURM clusters. The ckpt_dir and run_name values are now properly quoted to handle special characters.
Fix anchor part sync for top-down-id pipeline (#2610)
Fixed anchor_part selection not syncing correctly for the top-down-id pipeline in the training configuration dialog.
Dependency Updates
sleap-io 0.6.4 → 0.6.5
- ROI and Segmentation Mask support (experimental): New
ROIclass for vector geometry andSegmentationMaskclass for raster masks - COCO Detection & Segmentation I/O (experimental): Read/write bounding box, polygon, and RLE mask annotations
- Ultralytics Detection & Segmentation I/O (experimental): Extended YOLO format support
- NumPy 2.x compatibility: Fixed serialization errors when saving
.slpfiles
See the sleap-io v0.6.5 release notes for full details.
sleap-nn 0.1.0 → 0.1.2
- 6.7x faster bottom-up inference on NVIDIA A40 GPUs
- TUI Config Generator: Interactive wizard for generating training configs on remote systems
- Post-processing filters: New
--filter_min_visible_nodes,--filter_min_mean_node_scoreoptions - Multi-GPU fixes: Fixed DDP collective mismatch crashes and NCCL deadlocks
- Tracking fixes: Fixed track stealing bug and spurious track creation
See the sleap-nn v0.1.1 and v0.1.2 release notes for full details.
Full Changelog: v1.6.1...v1.6.2
v1.6.1¶
SLEAP v1.6.1
SLEAP v1.6.1 is a patch release with bug fixes for Linux Qt compatibility, training configuration saving, and a new --video-backend CLI option.
Quick install/upgrade:
uv tool install --python 3.13 "sleap[nn]==1.6.1" --torch-backend autoSee the v1.6.0 release notes for full details on the latest major release.
Bug Fixes
Fix Linux Qt library conflicts (#2604)
On some Linux distributions (Debian 12, Fedora 43, and others with system Qt 6 packages), SLEAP could crash on launch with ImportError: undefined symbol errors due to conflicts between system Qt libraries and PySide6's bundled Qt. SLEAP now ensures PySide6's bundled Qt libraries take precedence on Linux by setting LD_LIBRARY_PATH and QT_PLUGIN_PATH before launching.
Fix training config save dialog bugs (#2603)
Fixed two bugs in the Training Configuration dialog reported in #2602:
- Run names were ignored when saving configs: User-entered run names were overwritten with auto-generated timestamps when using "Save configuration files..." or "Export training job package...". Run names are now preserved correctly.
- YAML file picker showed no files: The "Select training config file..." dropdown's file browser failed to show
.yaml/.ymlfiles due to an incorrect file filter separator. Fixed to use Qt's expected format.
New Features
--video-backend CLI option (#2604)
A new --video-backend flag allows selecting the video decoding backend when launching SLEAP:
sleap --video-backend FFMPEGThis is useful for working around h264 codec errors that can occur with OpenCV's default backend on some Linux systems. The setting persists across sessions via user preferences.
Other Changes
- Added
workflow_dispatchtrigger to the build workflow for manual CI re-runs - Added display/GUI and video codec troubleshooting documentation
Full Changelog: v1.6.0...v1.6.1
v1.6.0¶
What's New in SLEAP 1.6
SLEAP 1.6 is a major update with new backbone architectures, a redesigned training and inference experience, automated label quality control, ONNX/TensorRT export for faster deployment, a unified CLI, and MANY bug fixes. This release spans 70+ PRs since v1.5.2.
Quick start:
uv tool install --python 3.13 "sleap[nn]==1.6.0" --torch-backend autoSee below for more detailed installation instructions.
Major Changes
New Backbone Architectures in Training Dialog (#2579)
SLEAP 1.6 brings ConvNeXt and Swin Transformer backbone support to the GUI training dialog, alongside UNet:
- ConvNeXt -- Modern convolutional architecture in tiny/small/base/large variants (28M-198M parameters) with optional ImageNet pretrained weights for faster convergence.
- Swin Transformer (SwinT) -- Transformer-based backbone in tiny/small/base variants (28M-88M parameters) with optional ImageNet pretrained weights.
Select these from the training dialog's new backbone selector dropdown. See the sleap-nn model documentation for details.
Unified sleap CLI
SLEAP now has a single sleap command as the primary entry point. Running sleap launches the GUI, and subcommands provide access to all tools:
sleap # Launch the GUI
sleap doctor # System diagnostics and troubleshooting
sleap export-model # Export models to ONNX/TensorRTAll sleap-io and sleap-nn CLI commands are now integrated as sleap subcommands (#2524, #2541, #2559, #2587, #2595, #2597):
| Command | Description |
|---|---|
sleap doctor |
System diagnostics and troubleshooting |
sleap show |
Display labels file summary |
sleap convert |
Convert between label formats |
sleap split |
Split labels into train/val/test |
sleap unsplit |
Recombine split labels |
sleap merge |
Merge multiple labels files |
sleap render |
Render pose videos |
sleap fix |
Fix/repair labels files |
sleap embed / sleap unembed |
Manage embedded video data |
sleap trim |
Trim labels to subset |
sleap reencode |
Re-encode embedded videos |
sleap transform |
Coordinate-aware video transformations |
sleap filenames |
List video filenames in labels |
sleap train |
Train models (from sleap-nn) |
sleap predict |
Run inference (from sleap-nn) |
sleap export-model |
Export models to ONNX/TensorRT |
ONNX & TensorRT Model Export
Export trained models to optimized formats for 3-6x faster inference (#2573, #2594, #2595, #2597):
sleap export-model model.ckpt -o model.onnx --format onnx
sleap export-model model.ckpt -o model.engine --format tensorrtRun inference on exported models:
sleap predict model.onnx video.mp4 -o predictions.slpBenchmark results (NVIDIA RTX A6000, batch size 8):
| Model Type | PyTorch | TensorRT FP16 | Speedup |
|---|---|---|---|
| Single Instance | 3,111 FPS | 11,039 FPS | 3.5x |
| Centroid | 453 FPS | 1,829 FPS | 4.0x |
| Top-Down | 94 FPS | 525 FPS | 5.6x |
| Bottom-Up | 113 FPS | 524 FPS | 4.6x |
To install export dependencies, reinstall with the appropriate extra: "sleap[nn,export]==1.6.0" (ONNX), "sleap[nn,export-gpu]==1.6.0" (ONNX + GPU), or "sleap[nn,tensorrt]==1.6.0" (TensorRT). See the sleap-nn Export Guide for full benchmarks and details.
Label Quality Control (#2547)
New sleap.qc module with GMM-based anomaly detection to automatically identify annotation errors. Accessible via Analyze > Label QC... in the GUI.
- Detects 10+ error types: isolated misses, jitter, visibility errors, scale issues, left-right swaps, gross misses, missing instances, and duplicates
- Dockable GUI widget with score histograms and sensitivity controls
- Keyboard navigation (Space/Shift+Space) to quickly review flagged instances
- Export to CSV or add flagged instances to Suggestions for batch review
Redesigned Training & Inference Dialogs (#2506, #2509, #2519, #2556, #2557, #2579)
The training and inference dialogs have been completely redesigned with native Qt for a faster, more polished experience:
- 55x faster config loading via rapidyaml and lazy loading
- Smaller dialog that fits on 1280x720 screens
- Augmentation controls simplified with on/off checkboxes and rotation presets (default: full ±180°)
- Device and worker settings default from user preferences
- Random Seed field for reproducible train/validation splits
- Evaluation metrics can be computed at configurable epoch intervals (mOKS, mAP, mAR, PCK, distance metrics logged to WandB)
- Prediction handling modes: Choose Keep, Replace, or Clear all predictions during inference
- "Random sample (current video)" inference target for quick model testing
- Form state persists after clicking Cancel
Real-Time Inference Progress (#2575)
The inference dialog now provides detailed progress feedback:
- Threaded inference: UI remains responsive during long-running jobs
- Live progress display:
Predicted: 100/1,410 | FPS: 38.4 | ETA: 34s - Log viewer: Dark-themed scrollable log showing subprocess output in real-time
- Working cancel button: Properly terminates the inference process
- "Delete All Predictions" now completes in milliseconds (was minutes on large datasets)
Video Rendering Overhaul (#2558)
Rendering is now powered by sleap-io's rendering engine with a live preview before exporting:
- 12+ new color palettes and 5 marker shapes
- Color by track, instance, or node
- Alpha transparency support for overlays
- Non-blocking video export with progress bar and cancel support
See the rendering documentation for details.
Filter Overlapping Instances (#2574)
New post-inference deduplication to remove duplicate predictions:
- IOU method: Filter by bounding box overlap
- OKS method: Filter by keypoint-based similarity
- Available in both the GUI (checkbox + threshold slider) and CLI (
--filter_overlappingflags)
sleap doctor Diagnostics (#2524, #2551, #2553)
The sleap doctor command has been overhauled:
- Consolidated, copy-paste-friendly diagnostic output
- Git info display for editable installs (branch, commit hash)
- Comprehensive UV and conda introspection with conflict warnings
- System resources display (RAM and disk usage)
-o/--outputflag to save diagnostics to file- Spinner during PyTorch import to show the command is working
How to Install
Step 1: Install uv (skip if already installed)
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install SLEAP v1.6.0
uv tool install --python 3.13 "sleap[nn]==1.6.0" --torch-backend autoThat's it! SLEAP is now available system-wide. The --torch-backend auto flag automatically detects your GPU (NVIDIA, AMD, Intel, or CPU). Run uv self update first if you get an error about this flag.
Step 3: Verify installation and launch
sleap doctor # Check your setup
sleap # Launch the GUINote: The
sleap-labelcommand from v1.5.x still works as an alias for launching the GUI.
Upgrading from v1.5.x?
uv tool install --reinstall --python 3.13 "sleap[nn]==1.6.0" --torch-backend autoQuick data viewing (no permanent install)
uvx sleap labels.slpVersion compatibility
| SLEAP | sleap-io | sleap-nn |
|---|---|---|
| 1.6.x | 0.6.x | 0.1.x |
| 1.5.x | 0.5.x | 0.0.x |
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer to the Migrating to 1.5+ docs for more details!
Dependency Updates
sleap-io v0.6.4 (#2597)
- ~90x faster SLP loading with lazy loading mode for large prediction files
- Pose rendering at ~50 FPS for publication-ready videos (
sleap render) - Data codecs for converting Labels to pandas DataFrames, NumPy arrays, and dictionaries
- Content-based video matching for reliable cross-platform merges even when file paths differ
- New
Labels.match()API for inspecting matching results without merging - Negative frames support: Mark frames as containing no instances (
LabeledFrame.is_negative) - 8 new CLI commands:
merge,unsplit,fix,embed,unembed,trim,reencode,transform - CSV format support for MATLAB interoperability
- Safe video matching prevents silent data corruption during merges
- Embedded images preserved during CLI operations (
sio fix,sio convert, etc.) - 23x faster
.pkg.slpsaves, 2.7x faster embedded video loading - Bug fixes for video matching, rendering, embedded videos, skeleton consolidation
sleap-nn v0.1.0 (#2597)
- ONNX/TensorRT export for 3-6x faster inference
- Epoch-end evaluation metrics: mOKS, mAP, mAR, PCK, and distance metrics logged to WandB
- Post-inference filtering: Greedy NMS to remove duplicate predictions
- 17-51x faster peak refinement (integral refinement now works on Mac)
- GUI progress mode: JSON output for real-time progress in SLEAP GUI
- Faster inference via GPU-accelerated normalization (17% typical, up to 50% for large RGB)
- CUDA 13.0 support for latest NVIDIA GPUs
- Provenance tracking embeds full reproducibility metadata in output files
- Training progress bar during dataset caching (no more apparent "freeze")
- Bug fixes for ConvNeXt/SwinT training, CSV logging, embedded video handling
Bug Fixes
Critical Fixes
- Fixed catastrophic data loss bug where removing a video could delete frames from ALL videos with the same resolution (#2535)
- Fixed GUI freeze when editing predictions with NaN coordinates on Linux Qt 6.10+ (#2467)
- Fixed prediction deletion incorrectly removing user-labeled instances (#2478)
- Fixed predictions not fully converted to instances when adding from predictions (#2539)
macOS Fixes
- Fixed crash when opening training dialog on macOS with Homebrew installed (libpng conflict) (#2571)
- Fixed dialog button ordering on macOS (now consistent across platforms) (#2576)
Training & Inference Fixes
- Fixed augmentation settings not loading from baseline configs (#2592)
- Fixed checkpoint directory override bug in training dialog (#2586)
- Fixed "Export Training Job Package" crash with
ConfigAttributeError: Missing key zmq(#2566) - Fixed plateau detection to use absolute threshold mode (#2469)
- Fixed loss monitor to recognize sleap-nn metric naming convention (#2579)
GUI Fixes
- Fixed "Previous Labeled Frame" navigation skipping one frame (#2585)
- Fixed
sleap labelparsing "label" as a filename argument (#2588) - Fixed dark mode for training dialog main tab (#2572)
- Fixed frame error spam when scrubbing
.pkg.slpfiles (#2554) - Fixed GUI freeze during labeled video export (#2484)
- Fixed WandB checkbox being re-enabled when not logged in (#2536)
- Fixed delete unused tracks crash with untracked instances (#2503)
Other Fixes
- Fixed
--exclude_user_labeledflag not working in inference (#2552) - Fixed predictions output path for multi-video inference (#2475)
- Fixed RGB/BGR channel flip in training visualization popup (#2488)
- Fixed skeleton loading returning list instead of single Skeleton (#2493)
- Fixed missing file dialog for ImageVideo backend (#2498)
- Fixed tracking target instance count not passed when
post_connect_single_breaksenabled (#2504)
Other Improvements
- "Check for Updates" dialog showing versions for sleap, sleap-io, and sleap-nn (Help menu) (#2499)
- Instance Size Distribution widget for analyzing bounding box sizes across your dataset with click-to-navigate (#2528)
- Crop size visualization in training dialog for top-down models (#2483)
- "Delete Predictions on User-Labeled Frames" for cleaning up duplicate instances (#2505)
- Startup banner with version info when launching the GUI (#2517)
- Progress dialog with cancel support for package export (#2522)
- Legacy SLEAP metrics support for loading metrics from v1.4.1 and earlier (#2480)
- WandB improvements: Run URL display and auto-browser-open (#2525)
- Python 3.13 is now the default recommended version (#2565)
- Removed 8 unused dependencies for faster installation (#2486)
- Revamped installation documentation with simplified single-command install (#2567, #2589)
- Revamped tutorial and guide documentation for v1.6 (#2596)
Breaking Changes
From sleap-io
- Merge API parameter renames:
video_matcher=renamed tovideo=,frame_strategy=renamed toframe=
From sleap-nn
- Crop size semantics changed: Top-down models now crop first, then resize (changes the meaning of the crop size parameter)
- Output file naming changed:
labels_train_gt_0.slpis nowlabels_gt.train.0.slp
New Contributors
Full Changelog: v1.5.2...v1.6.0
v1.6.0a3¶
SLEAP v1.6.0a3
About the v1.6 Pre-release Series
This is a pre-release for SLEAP v1.6.0. It contains many new features and improvements, but is not yet considered stable. For production use, see v1.5.2.
We are releasing a series of pre-releases that incrementally build towards the stable v1.6.0 release. Each pre-release adds new features and bug fixes:
| Version | Summary |
|---|---|
| v1.6.0a0 | Unified sleap CLI, redesigned training dialog (55x faster loading), bug fixes for adding instances from predictions |
| v1.6.0a1 | Label QC for automated error detection, 8 new CLI commands from sleap-io, video rendering with live preview |
| v1.6.0a2 | Revamped installation docs, epoch-end evaluation metrics, content-based video matching, bug fix for export training package |
| v1.6.0a3 (current) | ConvNeXt/SwinT backbones, ONNX/TensorRT export, real-time inference progress, macOS bug fixes |
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer to the Migrating to 1.5+ docs for more details!
How to Install
Step 1: Install uv (skip if already installed)
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install SLEAP v1.6.0a3
uv tool install --python 3.13 "sleap[nn]==1.6.0a3" --with "sleap-io==0.6.3" --with "sleap-nn==0.1.0a4" --prerelease allow --torch-backend autoThat's it! SLEAP is now available system-wide. The --torch-backend auto flag automatically detects your GPU (NVIDIA, AMD, Intel, or CPU). Be sure to do a uv self update if you get an error about this flag.
Step 3: Verify installation
sleap doctorUpgrading from v1.6.0a2?
uv tool upgrade sleap --upgrade-package sleap-io --upgrade-package sleap-nnOr for a clean reinstall:
uv tool install --reinstall --python 3.13 "sleap[nn]==1.6.0a3" --with "sleap-io==0.6.3" --with "sleap-nn==0.1.0a4" --prerelease allow --torch-backend autoRollback to stable
If you encounter issues, rollback to the latest stable release:
uv tool install --python 3.13 "sleap[nn]==1.5.2" --torch-backend autoVersion compatibility
| SLEAP | sleap-io | sleap-nn |
|---|---|---|
| 1.6.0a3 | 0.6.3 | 0.1.0a4 |
| 1.6.0a2 | 0.6.2 | 0.1.0a2 |
| 1.6.0a1 | 0.6.1 | 0.1.0a1 |
What's New in v1.6.0a3
New Backbone Architectures (#2579)
Train models using modern transformer-based and ConvNeXt architectures as alternatives to UNet:
- ConvNeXt: Select from tiny/small/base/large variants (28M-198M parameters) with optional ImageNet pretrained weights for faster convergence
- Swin Transformer (SwinT): Select from tiny/small/base variants (28M-88M parameters) with optional ImageNet pretrained weights
Access these from the training dialog's new backbone selector dropdown.
ONNX/TensorRT Model Export (#2573)
Export trained models to optimized formats for 3-6x faster inference:
sleap-nn-export model.ckpt -o model.onnx --format onnx
sleap-nn-export model.ckpt -o model.engine --format tensorrtRun inference on exported models:
sleap-nn-predict model.onnx video.mp4 -o predictions.slpBenchmark results (NVIDIA RTX A6000, batch size 8):
| Model Type | PyTorch | TensorRT FP16 | Speedup |
|---|---|---|---|
| Single Instance | 3,111 FPS | 11,039 FPS | 3.5x |
| Centroid | 453 FPS | 1,829 FPS | 4.0x |
| Top-Down | 94 FPS | 525 FPS | 5.6x |
| Bottom-Up | 113 FPS | 524 FPS | 4.6x |
See the sleap-nn Export Guide for full benchmarks and usage details.
Real-Time Inference Progress (#2575)
The inference dialog now provides detailed progress feedback:
- Threaded inference: UI remains responsive during long-running jobs
- Live progress display:
Predicted: 100/1,410 | FPS: 38.4 | ETA: 34s - Log viewer: Dark-themed scrollable log showing subprocess output in real-time
- Working cancel button: Properly terminates inference when clicked
Filter Overlapping Instances (#2574)
New GUI controls to remove duplicate/overlapping predictions after inference:
- Enable filtering checkbox in the Preprocessing/Postprocessing section
- Method selection: IOU (bounding box overlap) or OKS (keypoint-based similarity)
- Threshold control: Lower values = more aggressive filtering (default: 0.8)
Also available via CLI:
sleap-nn-track model.ckpt video.mp4 --filter_overlapping --filter_overlapping_method oks --filter_overlapping_threshold 0.5Evaluation During Training (#2579)
New evaluation section in the training dialog:
- Enable evaluation checkbox to compute metrics during training
- Frequency control to set how often evaluation runs (in epochs)
- Metrics logged to WandB: mOKS, mAP, mAR, PCK, distance percentiles
Performance Improvements
- Delete All Predictions (#2575): Now completes in milliseconds instead of minutes on large datasets
- 17-51x faster peak refinement in sleap-nn (v0.1.0a4): Enables integral refinement on Mac (previously disabled)
Bug Fixes
macOS Fixes
- Fixed crash when opening training dialog on macOS with Homebrew installed. The crash was caused by a conflict between Homebrew's libpng and macOS's ImageIO framework during Qt font rendering. (#2571)
- Fixed dialog button ordering on macOS. Training and inference dialog buttons now appear in consistent order across all platforms (Mac, Windows, Linux). (#2576)
- Fixed default button highlighting: The "Run" button now correctly appears as the default (highlighted) button instead of "Copy to clipboard". (#2576)
UI Fixes
- Fixed dark mode for training dialog main tab. The background now properly follows the system theme instead of remaining white. (#2572)
- Fixed loss monitor to recognize sleap-nn's metric naming convention (
train/loss,val/loss). (#2579)
Other Fixes
- Fixed ConvNeXt/SwinT training crash in sleap-nn: Resolved skip connection channel mismatch that caused errors during validation. (sleap-nn v0.1.0a4)
- Fixed inference progress ending at 99%: Now correctly shows 100% when complete. (sleap-nn v0.1.0a4)
- Fixed CSV learning rate logging: The
learning_ratecolumn intraining_log.csvis no longer empty. (sleap-nn v0.1.0a4)
Dependency Updates
sleap-nn v0.1.0a4
Changes since v0.1.0a2 (the previous minimum version):
- ONNX/TensorRT Export: Export models to optimized formats for 3-6x faster inference
- Post-Inference Filtering: Greedy NMS to remove duplicate predictions (
--filter_overlapping) - 17-51x Faster Peak Refinement: Fast tensor indexing replaces kornia's
crop_and_resize - GUI Progress Mode: New
--guiflag enables JSON output for real-time GUI progress - Simplified Train CLI:
sleap-nn train config.yaml(positional config path) - Bug fixes for ConvNeXt/SwinT training, CSV logging, progress display
sleap-io v0.6.3
Changes since v0.6.2 (the previous minimum version):
- Negative Frames Support: Mark frames as containing no instances (
LabeledFrame.is_negative) - Embedded Images Preserved: CLI commands (
sio fix,sio convert, etc.) no longer strip embedded images - Smart Skeleton Consolidation: Compatible skeletons are reassigned instead of deleted
Full Changelog
Enhancements
- Add ConvNeXt and SwinT backbone options to training dialog by @talmo in #2579
- Improve inference dialog with real-time progress and UI fixes by @talmo in #2575
- Add filter_overlapping controls to training/inference dialogs by @talmo in #2574
- Bump sleap-io to 0.6.3 and sleap-nn to 0.1.0a3, add new CLI commands by @talmo in #2573
Fixes
- Fix macOS crash caused by Homebrew libpng conflict by @talmo in #2571
- Fix training dialog main tab background to match config tabs by @talmo in #2572
- Fix Mac dialog button order and default button styling by @talmo in #2576
Workflows
Dependencies
Full Changelog: v1.6.0a2...v1.6.0a3
v1.6.0a2¶
SLEAP v1.6.0a2
About the v1.6 Pre-release Series
This is a pre-release for SLEAP v1.6.0. It contains many new features and improvements, but is not yet considered stable. For production use, see v1.5.2.
We are releasing a series of pre-releases that incrementally build towards the stable v1.6.0 release. Each pre-release adds new features and bug fixes:
| Version | Summary |
|---|---|
| v1.6.0a0 | Unified sleap CLI, redesigned training dialog (55x faster loading), bug fixes for adding instances from predictions |
| v1.6.0a1 | Label QC for automated error detection, 8 new CLI commands from sleap-io, video rendering with live preview |
| v1.6.0a2 (current) | Revamped installation docs, epoch-end evaluation metrics, content-based video matching, bug fix for export training package |
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer to the Migrating to 1.5+ docs for more details!
How to Install
Step 1: Install uv (skip if already installed)
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install SLEAP v1.6.0a2
uv tool install --python 3.13 "sleap[nn]==1.6.0a2" --with "sleap-io==0.6.2" --with "sleap-nn==0.1.0a2" --prerelease allow --torch-backend autoThat's it! SLEAP is now available system-wide. The --torch-backend auto flag automatically detects your GPU (NVIDIA, AMD, Intel, or CPU). Be sure to do a uv self update if you get an error about this flag.
Step 3: Verify installation
sleap doctorUpgrading from v1.6.0a1?
uv tool upgrade sleap --upgrade-package sleap-io --upgrade-package sleap-nnOr for a clean reinstall:
uv tool install --reinstall --python 3.13 "sleap[nn]==1.6.0a2" --with "sleap-io==0.6.2" --with "sleap-nn==0.1.0a2" --prerelease allow --torch-backend autoRollback to stable
If you encounter issues, rollback to the latest stable release:
uv tool install --python 3.13 "sleap[nn]==1.5.2" --torch-backend autoVersion compatibility
| SLEAP | sleap-io | sleap-nn |
|---|---|---|
| 1.6.0a2 | 0.6.2 | 0.1.0a2 |
| 1.6.0a1 | 0.6.1 | 0.1.0a1 |
| 1.6.0aN | 0.6.x | 0.1.0aN |
| 1.6.x | 0.6.x | 0.1.x |
| 1.5.x | 0.5.x | 0.0.x |
What's New in v1.6.0a2
-
Revamped Installation Documentation:
- Complete rewrite of installation docs with simplified workflow (#2567)
- Single universal install command for all platforms using
--torch-backend auto - Reduced from 8 installation paths to 2 (tool install + development setup)
- New
uvx sleap labels.slpoption for viewing data without permanent installation - Streamlined upgrade flow with
uv tool upgrade sleap
-
Python 3.13 Default:
- Python 3.13 is now the default recommended version (#2565)
- Python 3.12 remains supported
-
Bug Fixes:
-
- Content-Based Video Matching: Videos are now automatically matched by pose annotations or pixel content, enabling reliable cross-platform merges even when file paths differ
- New
Labels.match()API: Inspect matching results without merging — ideal for evaluation workflows - Video Color Mode Control: New
Labels.set_video_color_mode()method andsio fix --video-colorCLI option - Bug fixes for HDF5 dataset matching and provenance conflict handling
-
- Epoch-End Evaluation Metrics: Real-time mOKS, mAP, mAR, PCK, and distance metrics logged to WandB during training
- Robust Video Matching: Uses sleap-io's
Labels.match()API for better cross-platform evaluation - Bug fixes for embedded video handling and centroid model ground truth matching
Full Changelog
Enhancements
Fixes
Workflows
- Fix docs workflow race condition with concurrency group by @talmo in #2563
- Housekeeping: Python 3.13 default and sleap-support skill by @talmo in #2565
Dependencies
Full Changelog: v1.6.0a1...v1.6.0a2
v1.6.0a1¶
SLEAP v1.6.0a1
About the v1.6 Pre-release Series
This is a pre-release for SLEAP v1.6.0. It contains many new features and improvements, but is not yet considered stable. For production use, see v1.5.2.
We are releasing a series of pre-releases that incrementally build towards the stable v1.6.0 release. Each pre-release adds new features and bug fixes:
| Version | Summary |
|---|---|
| v1.6.0a0 | Unified sleap CLI, redesigned training dialog (55x faster loading), bug fixes for adding instances from predictions |
| v1.6.0a1 (current) | Label QC for automated error detection, 8 new CLI commands from sleap-io, video rendering with live preview |
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer to the Migrating to 1.5+ docs for more details!
How to Install
Step 1: Install uv (skip if already installed)
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install SLEAP v1.6.0a1
Windows/Linux with NVIDIA GPU (CUDA 12.8)
uv tool install --reinstall --python 3.12 "sleap[nn]==1.6.0a1" --with "sleap-io==0.6.1" --with "sleap-nn==0.1.0a1" --prerelease allow --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simpleWindows/Linux with NVIDIA GPU (CUDA 13.0)
uv tool install --reinstall --python 3.12 "sleap[nn]==1.6.0a1" --with "sleap-io==0.6.1" --with "sleap-nn==0.1.0a1" --prerelease allow --index https://download.pytorch.org/whl/cu130 --index https://pypi.org/simpleWindows/Linux without GPU (CPU only)
uv tool install --reinstall --python 3.12 "sleap[nn]==1.6.0a1" --with "sleap-io==0.6.1" --with "sleap-nn==0.1.0a1" --prerelease allow --index https://download.pytorch.org/whl/cpu --index https://pypi.org/simplemacOS
uv tool install --reinstall --python 3.12 "sleap[nn]==1.6.0a1" --with "sleap-io==0.6.1" --with "sleap-nn==0.1.0a1" --prerelease allowStep 3: Verify installation
sleap doctorUpgrading from v1.6.0a0?
Use the same commands as above. The --reinstall flag will create a clean environment with the new dependencies.
Rollback to stable
If you encounter issues, rollback to the latest stable release:
# Windows/Linux (CUDA 12.8)
uv tool install --reinstall --python 3.12 "sleap[nn]==1.5.2" --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simple
# Windows/Linux (CPU only)
uv tool install --reinstall --python 3.12 "sleap[nn]==1.5.2" --index https://download.pytorch.org/whl/cpu --index https://pypi.org/simple
# macOS
uv tool install --reinstall --python 3.12 "sleap[nn]==1.5.2"Version compatibility
| SLEAP | sleap-io | sleap-nn |
|---|---|---|
| 1.6.0a1 | 0.6.1 | 0.1.0a1 |
| 1.6.0aN | 0.6.x | 0.1.0aN |
| 1.6.x | 0.6.x | 0.1.x |
| 1.5.x | 0.5.x | 0.0.x |
What's New in v1.6.0a1
-
Label Quality Control (QC):
- New
sleap.qcmodule with GMM-based anomaly detection to automatically identify annotation errors (#2547) - Detects 10+ error types: isolated misses, jitter, visibility errors, scale issues, left-right swaps, gross misses, missing instances, and duplicates
- Dockable GUI widget accessible via Analyze > Label QC... with score histograms and sensitivity controls
- Keyboard navigation (Space/Shift+Space) to quickly navigate flagged instances
- Export to CSV or add flagged instances to Suggestions for review
- New
-
Enhanced CLI:
- 8 new CLI commands from sleap-io:
sleap merge,sleap unsplit,sleap fix,sleap embed,sleap unembed,sleap trim,sleap reencode,sleap transform(#2559) - See the sleap-io CLI documentation for detailed usage
- 8 new CLI commands from sleap-io:
-
Video Rendering Overhaul:
- Now powered by sleap-io's rendering engine — see rendering documentation for details (#2558)
- Live preview of rendered frames with all style options before exporting
- 12+ new color palettes and 5 marker shapes with options to color by track, instance, or node
- Alpha transparency support for overlays
- Non-blocking video export with progress bar and cancel support
-
Training Dialog Improvements:
- Form state now persists after clicking Cancel (#2557)
- Device and worker settings default from user preferences instead of being overwritten by profiles (#2557)
- Updated all baseline profiles to use full ±180° rotation augmentation (#2557)
- Added Random Seed field for reproducible train/validation splits (#2557)
- New tooltips for Input Scaling, Batch Size, Predict On, and tracker fields (#2556)
-
Inference Improvements:
-
sleap doctorImprovements:- Consolidated, copy-paste-friendly diagnostic output (#2553)
- Git info display for editable installs (branch, commit hash) (#2553)
- Comprehensive UV and conda introspection with conflict warnings (#2553)
- System resources display (RAM and disk usage) (#2553)
- New
-o/--outputflag to save diagnostics to file (#2553) - Added spinner during PyTorch import to show command is working (#2551)
- Fixed path truncation in tables (#2551)
-
Bug Fixes:
- Fixed terminal spam from "Error processing frame" messages when scrubbing
.pkg.slpfiles (#2554)
- Fixed terminal spam from "Error processing frame" messages when scrubbing
-
- 8 new CLI commands:
merge,unsplit,fix,embed,unembed,trim,reencode,transform - CSV format support for MATLAB interoperability
- Coordinate-aware video transformations
- 23x faster
.pkg.slpsaves, 2.7x faster embedded video loading - Bug fixes for video matching, rendering, and embedded videos
- 8 new CLI commands:
-
- Training progress bar during dataset caching (no more apparent "freeze")
- Automatic WandB local log cleanup to save disk space
- Simplified log format for cleaner output
Full Changelog
Enhancements
- Add sleap.qc module for label quality control by @talmo in #2547
- Add sleap-io v0.6.1 CLI commands by @talmo in #2559
- Upgrade video rendering to use sleap-io API with live preview and non-blocking progress by @talmo in #2558
- Improve training config dialog UX by @talmo in #2557
- Add missing tooltips to training config and tracker form fields by @talmo in #2556
- Add "Random sample (current video)" inference target option by @talmo in #2555
- Improve sleap doctor with consolidated diagnostic output by @talmo in #2553
- Improve sleap doctor UX: add spinner and fix path truncation by @talmo in #2551
Fixes
- Suppress frame error spam when scrubbing pkg.slp files by @talmo in #2554
- Add --exclude_user_labeled flag to sleap-nn-track CLI shim by @talmo in #2552
Workflows
Dependencies
Full Changelog: v1.6.0a0...v1.6.0a1
v1.6.0a0¶
SLEAP v1.6.0a0
About the v1.6 Pre-release Series
This is a pre-release for SLEAP v1.6.0. It contains many new features and improvements, but is not yet considered stable. For production use, see v1.5.2.
We are releasing a series of pre-releases that incrementally build towards the stable v1.6.0 release. Each pre-release adds new features and bug fixes:
| Version | Summary |
|---|---|
| v1.6.0a0 (current) | Unified sleap CLI, redesigned training dialog (55x faster loading), bug fixes for adding instances from predictions |
| v1.6.0a1 | Label QC for automated error detection, 8 new CLI commands from sleap-io, video rendering with live preview |
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer to the Migrating to 1.5+ docs for more details!
How to Install
Step 1: Install uv (skip if already installed)
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install SLEAP v1.6.0a0
Windows/Linux with NVIDIA GPU (CUDA 12.8)
uv tool install --force --python 3.12 "sleap[nn]==1.6.0a0" --with "sleap-io==0.6.0" --with "sleap-nn==0.1.0a0" --prerelease allow --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simpleWindows/Linux with NVIDIA GPU (CUDA 13.0 - NEW!)
uv tool install --force --python 3.12 "sleap[nn]==1.6.0a0" --with "sleap-io==0.6.0" --with "sleap-nn==0.1.0a0" --prerelease allow --index https://download.pytorch.org/whl/cu130 --index https://pypi.org/simpleWindows/Linux without GPU (CPU only)
uv tool install --force --python 3.12 "sleap[nn]==1.6.0a0" --with "sleap-io==0.6.0" --with "sleap-nn==0.1.0a0" --prerelease allow --index https://download.pytorch.org/whl/cpu --index https://pypi.org/simplemacOS
uv tool install --force --python 3.12 "sleap[nn]==1.6.0a0" --with "sleap-io==0.6.0" --with "sleap-nn==0.1.0a0" --prerelease allowStep 3: Verify installation
sleap doctorUpgrading from v1.5.x?
Use the same commands as above. The --force flag will replace your existing installation.
Rollback to stable
If you encounter issues, rollback to the latest stable release:
# Windows/Linux (CUDA 12.8)
uv tool install --force --python 3.12 "sleap[nn]==1.5.2" --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simple
# Windows/Linux (CPU only)
uv tool install --force --python 3.12 "sleap[nn]==1.5.2" --index https://download.pytorch.org/whl/cpu --index https://pypi.org/simple
# macOS
uv tool install --force --python 3.12 "sleap[nn]==1.5.2"Version compatibility
| SLEAP | sleap-io | sleap-nn |
|---|---|---|
| 1.6.0aN | 0.6.x | 0.1.0aN |
| 1.6.x | 0.6.x | 0.1.x |
| 1.5.x | 0.5.x | 0.0.x |
What's New in v1.6.0a0
-
Unified CLI:
-
Training GUI Overhaul:
- 55x faster config loading and much faster dialog startup (#2506, #2516)
- Completely redesigned training dialog with native Qt, unified frame targeting, and 356 new tests (#2519)
- New Frame Target Selector for flexible training/inference frame selection (#2519)
- Prediction handling modes: Keep, Replace, or Clear all predictions during inference (#2519)
- Smaller dialog that fits on 1280x720 screens (#2509, #2519)
- Augmentation controls simplified with on/off checkboxes and rotation presets (#2509)
- WandB integration improvements with run URL display and auto-browser-open (#2525)
-
Crop Size Visualization:
-
New Features:
- "Check for Updates" dialog showing versions for sleap, sleap-io, and sleap-nn (#2499)
- "Delete Predictions on User-Labeled Frames" for cleaning up duplicate instances (#2505)
- Startup banner with version info and branding when launching
sleap-label(#2517) - Progress dialog with cancel support for package export (#2522)
- Support for loading legacy SLEAP metrics from v1.4.1 and earlier (#2480)
-
Critical Bug Fixes:
- Fixed GUI freeze when editing predictions with NaN coordinates on Linux Qt 6.10+ (#2467)
- Fixed catastrophic data loss bug where removing a video could delete frames from ALL videos with the same resolution (#2535)
- Fixed prediction deletion incorrectly removing user-labeled instances (#2478)
- Fixed predictions not being fully converted to instances when adding from predictions (#2539)
-
- ~90x faster SLP loading with new lazy loading mode for large prediction files
- Pose rendering at ~50 FPS for publication-ready videos (
sleap render) - Data codecs for converting Labels to pandas DataFrames, NumPy arrays, and dictionaries
- Safe video matching prevents silent data corruption during merges
- Fixed package export losing videos without labeled frames (#282)
- Fixed video provenance breaking during merge operations (#302)
- Breaking: Merge API simplified (
video_matcher=→video=,frame_strategy=→frame=)
-
- Faster inference via GPU-accelerated normalization (17% for typical video, up to 50% for large RGB images)
- CUDA 13.0 support for latest NVIDIA GPUs
- Provenance tracking embeds full reproducibility metadata in output files
- Enhanced WandB with interactive visualizations and per-head loss logging
- Fixed crash on frames with empty instances (#385)
- Fixed
--exclude_user_labeledbeing ignored with--video_index(#397) - Fixed run folder cleanup when training canceled via GUI (#392)
- Breaking: Crop size semantics changed - top-down models now crop first, then resize
- Breaking: Output file naming changed (
labels_train_gt_0.slp→labels_gt.train.0.slp)
-
Other dependency changes:
- Removed 8 unused dependencies for faster installation (#2486)
Full Changelog
Enhancements
- Add unified CLI with
sleapcommand by @talmo in #2524 - Add sleap-io CLI command inheritance (
show,convert,split,filenames,render) by @talmo in #2541 - Add "Check for Updates" to Help menu and implement update checker by @jaw039 in #2499
- Refactor training/inference dialog with native Qt and unified frame targeting by @talmo in #2519
- Training GUI QOL improvements (augmentation checkboxes, rotation presets, overfit mode) by @talmo in #2509
- Improve training dialog startup performance (~55x faster config loading) by @talmo in #2506
- Add crop size visualization for top-down training pipelines by @gitttt-1234 in #2483
- Add Instance Size Distribution widget for crop size analysis by @talmo in #2528
- Add Delete Predictions on User-Labeled Frames feature by @talmo in #2505
- Add support for loading legacy SLEAP metrics (<=v1.4.1) by @gitttt-1234 in #2480
- Add progress dialog and completion notification for package export by @talmo in #2522
- Add startup banner with version info and branding by @talmo in #2517
- Improve baseline config display names in training config selector by @gitttt-1234 in #2471
- Fix WandB checkbox state and add run URL display by @talmo in #2525
Fixes
- Fix GUI freeze when editing predictions with NaN coordinates by @gitttt-1234 in #2467
- Fix remove_video() to use identity comparison instead of matches_content() by @talmo in #2535
- Fix prediction deletion to prevent removing labeled instances by @gitttt-1234 in #2478
- Add failing tests for predictions-not-fully-added bugs (and fix) by @talmo in #2539
- Fix GUI freeze during labeled video export by @gitttt-1234 in #2484
- Fix skeleton loading returning list instead of single Skeleton by @gitttt-1234 in #2493
- Fix missing file dialog for ImageVideo backend (list of frame paths) by @alicup29 in #2498
- Fix delete unused tracks crash with untracked instances by @talmo in #2503
- Fix plateau detection to use absolute threshold mode by @gitttt-1234 in #2469
- Update predictions output path for inference (multi-video) by @gitttt-1234 in #2475
- Fix RGB/BGR channel flip in training visualization popup by @gitttt-1234 in #2488
- Pass tracking_target_instance_count when post_connect_single_breaks enabled by @talmo in #2504
- Fix analytics pinger by adding missing tf_version field by @talmo in #2538
- Fix ID model config detection and optimize training dialog by @talmo in #2516
- Hide crop size field for non-cropping model types by @talmo in #2515
- Fix training config form not pre-populating from selected config by @talmo in #2514
- Fix rotation custom angle field visibility in training editor by @talmo in #2513
- Fix training/inference dialog minimum width and WandB login state by @talmo in #2523
- Fix WandB checkbox being re-enabled when not logged in by @talmo in #2536
- Fix crop size overlay to track view center like receptive field by @talmo in #2527
- Improve preferences/config logging and error handling by @talmo in #2507
- Fix GUI error handling for preferences and training cancellation by @talmo in #2526
Dependencies
- Update to sleap-io 0.6.0 merge API by @talmo in #2540
- Update sleap-nn dependency to >=0.1.0a0 and add CUDA 13.0 support by @talmo in #2545
- Remove unused dependencies from pyproject.toml by @gitttt-1234 in #2486
- Move dev dependencies to PEP 735 dependency-groups by @talmo in #2530
- Bump version to 1.6.0a0 by @talmo in #2521
- Replace background.png with background.jpg by @talmo in #2520
Documentation
- Add pre-release installation documentation by @talmo in #2548
- Streamline installation documentation by @talmo in #2531
- Expand git installation docs for multi-package scenarios by @talmo in #2537
- Update installation docs and fix notebook install commands by @talmo in #2492
- Improve installation documentation structure and clarity by @talmo in #2489
- Add updating dependencies sections to installation docs by @talmo in #2470
- Update documentation and Colab links from main to develop branch by @talmo in #2481
Workflows
- Add CI aggregation job for docs-only PRs by @talmo in #2542
- Fix docs versioning to not set pre-releases as latest by @talmo in #2544
Other
New Contributors
Full Changelog: v1.5.2...v1.6.0a0
v1.5.2¶
What's Changed
SLEAP v1.5.2 – Bug Fixes & Dependency Updates
This release includes important bug fixes for GUI rendering and Windows compatibility, dependency updates for improved stability, and further documentation improvements.
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer Migrating to 1.5+ docs for more details!
How to install?
You can now install SLEAP quickly using uv
Step 1: Install uv - an ultra-fast Python package manager
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install sleap
# Windows/ Linux (CUDA)
uv tool install --python 3.13 "sleap[nn]==1.5.2" --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simple
# Windows/ Linux (CPU)
uv tool install --python 3.13 "sleap[nn]==1.5.2" --index https://download.pytorch.org/whl/cpu --index https://pypi.org/simple
# macOS
uv tool install --python 3.13 "sleap[nn]==1.5.2"
Check the full installation guide for platform-specific instructions and advanced options.
Once you've installed SLEAP, run the below command from anywhere in your terminal
sleap-labelThe GUI should open up!
Upgrading from v1.5.1?
If you already have SLEAP v1.5.1 installed, you can upgrade to v1.5.2 using the following commands based on your installation method:
If installed with uv tool install:
The simplest upgrade command (preserves your original Python version and index URLs):
uv tool upgrade sleapOr, if you want to ensure you're using Python 3.13 and refresh your installation:
uv tool uninstall sleap
# Then reinstall with the commands from the installation section aboveNote:
uv tool upgradeautomatically preserves the index URLs (CUDA/CPU) and Python version from your original installation. If you installed with--index https://download.pytorch.org/whl/cu128, the upgrade will continue using the CUDA 12.8 index.
If installed with pip in a conda environment:
conda activate sleap
pip install --upgrade "sleap[nn]"For platform-specific indexes (CUDA/CPU), add the appropriate --extra-index-url:
# CUDA 12.8
pip install --upgrade "sleap[nn]" --extra-index-url https://download.pytorch.org/whl/cu128 --index-url https://pypi.org/simple
# CPU
pip install --upgrade "sleap[nn]" --extra-index-url https://download.pytorch.org/whl/cpu --index-url https://pypi.org/simpleIf installed with uv add (project-based):
# Navigate to your project directory
uv sync --upgradeIf installed from source:
cd sleap
git pull
uv sync --upgradeAfter upgrading, verify the installation:
python -c "import sleap; sleap.versions()"You should see SLEAP: 1.5.2 in the output.
Highlights
-
Dependency updates:
- Updated minimum
sleap-ioversion to 0.5.7 - Updated minimum
sleap-nnversion to 0.0.4 - Removed
cattrsdependency for simplified dependency management - Added
--python 3.13flag to installation commands to prevent Python 3.14 compatibility issues
- Updated minimum
-
Bug fixes:
- Fixed color rendering in
sleap-render: Videos now display correct colors with proper BGR to RGB conversion (#2444) - Fixed Windows GUI crash: Resolved Qt widget attribute error when loading .slp files on Windows (#2440)
- Fixed instance coloring: Multiple instances in older SLEAP projects now display with distinct colors instead of the same color (#2434)
- Fixed color rendering in
-
Documentation improvements:
- Consolidated repetitive installation documentation (reduced by 55 lines while preserving all essential information)
- Improved
uv addinstallation workflow instructions with Windows troubleshooting tips - Clearer platform-specific installation guidance
Full Changelog: v1.5.1...v1.5.2
v1.5.1¶
What's Changed
SLEAP v1.5.1 – Bug fixes & Documentation Improvements
This release focuses on a few bug fixes in the training pipeline, improving installation instructions, and updating documentation for a smoother user experience.
Note: Starting with SLEAP v1.5+, all deep learning functionality is powered by the PyTorch-based
sleap-nnbackend. TensorFlow models (withUNetbackbones) from earlier versions are still supported for inference. Refer Migrating to 1.5+ docs for more details!
How to install?
You can now install SLEAP quickly using uv
Step 1: Install uv - an ultra-fast Python package manager
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | shStep 2: Install sleap
# Windows/ Linux (CUDA)
uv tool install "sleap[nn]" --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simple
# Windows/ Linux (CPU)
uv tool install "sleap[nn]" --index https://download.pytorch.org/whl/cpu --index https://pypi.org/simple
# macOS
uv tool install "sleap[nn]"
Check the full installation guide for platform-specific instructions and advanced options.
Once you've installed SLEAP, run the below command from anywhere in your terminal
sleap-labelThe GUI should open up!
Highlights
- Improved installation:
- Platform-specific dependency groups for sleap installation with CUDA support.
- Fixed CUDA installation issues on Windows.
- Updated installation instructions and options for clarity.
- Documentation updates:
- Fixed typos and broken links.
- Improved CLI docs with new options and guidance on legacy CLIs.
- Fixed MkDocs versioning and improved doc site structure.
- Error handling: sleap-nn import errors are now handled gracefully with clear user guidance.
- Bug fixes: Minor fixes across CLI and docs to improve stability.
Full Changelog: v1.5.0...v1.5.1
v1.5.0¶
What's New in SLEAP 1.5
SLEAP 1.5 represents a major milestone with significant architectural improvements, performance enhancements, and new installation methods. Here are the key changes:
Major Changes
Updated dependencies
We have now updated to support Python 3.12+ and support many new versions of the many libraries that SLEAP uses. This should make it much easier to install on modern platforms, support new architectures, and make development much easier.
UV-Based Installation
SLEAP 1.5+ now uses uv for installation, making it much faster than previous methods. Get up and running in seconds with our streamlined installation process.
PyTorch Backend
Neural network backend switched from TensorFlow to PyTorch via sleap-nn, providing:
- Much faster training and inference speeds: Up to 2.5x faster training and inference times.
- Modern deep learning capabilities: PyTorch with upcoming integrations with a whole slew of modern deep learning models and packages.
- Improved developer experience: Check out the dedicated backend repo at https://github.com/talmolab/sleap-nn
- Multi-GPU training: Full support for using multiple GPUs for accelerated and larger scale training.
- Backwards compatibility: You are able to use your existing trained SLEAP models from v1.4.1 for the UNet backend with no changes (see notes below).
Refreshed Documentation Websites
- The new landing page is now live at: https://sleap.ai
- The new documentation is now live at: https://docs.sleap.ai
- The old docs (v1.4.1) are will remain available at: https://legacy.sleap.ai
Standalone Libraries
SLEAP GUI is now supported by two new packages for modular workflows:
SLEAP-IO
I/O backend for handling labels, processing .slp files, and data manipulation. Essential for any SLEAP workflow and can be used independently for data processing tasks.
SLEAP-NN
PyTorch-based neural network backend for training and inference. Perfect for custom training pipelines, remote processing, and headless server deployments.
Torch Backend Changes
New Backbones
SLEAP 1.5 introduces three powerful new backbone architectures (check here for more details):
- UNet - Classic encoder-decoder architecture for precise pose estimation
- SwinT - Swin Transformer for state-of-the-art performance
- ConvNeXt - Modern convolutional architecture with improved efficiency
Legacy Support
We've maintained full backward compatibility:
- GUI Support: SLEAP now uses a new YAML-based config file structure, but you can still upload and work with old SLEAP JSON files in the GUI. For details on converting legacy SLEAP 1.4 config/JSON files to the new YAML format, see our conversion guide.
- TensorFlow Model Inference: Continue to support running inference on old TensorFlow models (UNet backbone only). Check using legacy models for more details.
v1.4.1¶
SLEAP 1.4.1 releases many new changes since the last big release 1.3.3. We hope users enjoy these long awaited new features and fixes!
From 1.3.2+, to install SLEAP through pip use pip install sleap[pypi] to ensure all dependencies are gathered.
As a reminder:
The 1.3.1 dependency update requires Mamba for faster dependency resolution. If you already have anaconda installed, then you can set the solver to libmamba in the base environment:
conda update -n base conda conda install -n base conda-libmamba-solver conda config --set solver libmambaAny subsequent
mambacommands in the docs will need to be replaced withcondaif you choose to use your existing Anaconda installation.Otherwise, follow the recommended installation instruction for Mamba.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap=1.4.1
mamba (Mac):
mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1
pip (any OS except Apple Silicon):
pip install sleap[pypi]==1.4.1
Highlights
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- Highlight instance box on hover by @talmo in #2055
- Enable touchpad pinch to zoom by @talmo in #2058
- Do not always color skeletons table black by @roomrys in #1952
- Make status bar dependent on UI mode by @7174Andy in #2063
- Graceful failing with seeking errors by @talmo in #1712
- Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Fix GUI crash on scroll by @roomrys in #1883
Full Changelog
Enhancements
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Increase range on batch size by @roomrys in #1513
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- support loading slp files with non-compound types and str in metadata by @lambdaloop in #1566
- change inference pipeline option to tracking-only by @shrivaths16 in #1666
- Only propagate Transpose Tracks when propagate is checked by @vaibhavtrip29 in #1748
- Add batch size to GUI for inference by @shrivaths16 in #1771
- Add ZMQ support via GUI and CLI by @shrivaths16 in #1780
- Change menu name to match deleting predictions beyond max instance by @shrivaths16 in #1790
- Adding ragged metadata to
info.jsonby @shrivaths16 in #1765 - Add option to export to CSV via sleap-convert and API by @eberrigan in #1730
- Add
normalized_instance_similaritymethod by @gitttt-1234 in #1939 - Update installation docs 1.4.1 by @roomrys in #1810
- Option for Max Stride to be 128 by @MweinbergUmass in #1941
- Allow csv and text file support on sleap track by @emdavis02 in #1875
- Added Three Different Cases for Adding a New Instance by @7174Andy in #1859
- Generate suggestions using max point displacement threshold by @gqcpm in #1862
- Add object keypoint similarity method by @getzze in #1003
- Allowing inference on multiple videos via
sleap-trackby @emdavis02 in #1784 - Add
Keep visualizationscheckbox to training GUI by @hajin-park in #1824 - Menu option to open preferences directory and update to util functions to pathlib by @shrivaths16 in #1843
- Add tracking score as seekbar header options by @talmo in #2047
- Don't mark complete on instance scaling by @talmo in #2049
- Add check for instances with track assigned before training ID models by @talmo in #2053
- Add menu item for deleting instances beyond frame limit by @shrivaths16 in #1797
- Highlight instance box on hover by @talmo in #2055
- Make node marker and label sizes configurable via preferences by @talmo in #2057
- Enable touchpad pinch to zoom by @talmo in #2058
- Separate the video name and its filepath columns in
VideoTablesModelby @7174Andy in #2052 - Make status bar dependent on UI mode by @7174Andy in #2063
Fixes
- Graceful failing with seeking errors by @talmo in #1712
- Fix IndexError for hdf5 file import for single instance analysis files by @shrivaths16 in #1695
- Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Make the hdf5 videos store as int8 format by @lambdaloop in #1559
- Scale new instances to new frame size by @ssrinath22 in #1568
- Fix package export by @talmo in #1619
- View Hyperparameter nonetype fix by @shrivaths16 in #1766
- Set selected instance to None after removal by @roomrys in #1808
- Fix zmq inference by @roomrys in #1800
- Remove no module named work error by @roomrys in #1956
- Use
tf.math.modinstead of%by @roomrys in #1931 - Do not always color skeletons table black by @roomrys in #1952
- Do not apply offset when double clicking a
PredictedInstanceby @roomrys in #1888 - Fix typo to allow rendering videos with mp4 (Mac) by @roomrys in #1892
- Fix GUI crash on scroll by @roomrys in #1883
- Handle case when no frame selection for trail overlay by @roomrys in #1832
- Fix COCO Dataset Loading for Invisible Keypoints by @felipe-parodi in #2035
- Fix import PySide2 -> qtpy by @talmo in #2065
Dependencies
- Replace imgaug with albumentations by @talmo in #1623
- Fix out of bounds albumentations issues and update dependencies by @eberrigan in #1724
- Update to new TensorFlow conda package by @eberrigan in #1726
- Fix conda builds by @eberrigan in #1776
- Handle skeleton encoding internally by @eberrigan in #1970
- Handle skeleton decoding internally by @roomrys in #1961
- Add imageio dependencies for pypi wheel by @roomrys in #1950
- Add missing imageio-ffmpeg to meta.ymls by @roomrys in #1943
- Manually handle
Instance.from_predictedstructuring when notNoneby @roomrys in #1930 - Refactor
LossViewerto use matplotlib by @eberrigan in #1899 - Replace all Video structuring with Video.cattr() by @roomrys in #1911
- Use positional argument for exception type by @roomrys in #1912
- Remove unsupported |= operand to prepare for PySide6 by @roomrys in #1910
- Replace QtDesktop widget in preparation for PySide6 by @roomrys in #1908
- Use | instead of + in key commands by @roomrys in #1907
- Use
Video.from_filenamewhen structuring videos by @roomrys in #1905 - Refactor video writer to use imageio instead of skvideo by @eberrigan in #1900
- Pin ndx-pose<0.2.0 by @talmo in #1978
Documentation
- Add bonsai guide for sleap docs by @croblesMed in #2050
- Add channels for pip conda env by @roomrys in #2067
Refactors
- Set default callable for
match_lists_functionby @roomrys in #1520 - Allow passing in
Labelstoapp.mainby @roomrys in #1524 - Replace (broken)
--unragwith--raggedby @roomrys in #1539 - Add function to create app by @roomrys in #1546
- Refactor
AddInstancecommand by @roomrys in #1561 - Add
InstancesListclass to handle backref toLabeledFrameby @roomrys in #1807 - Refactor
LossViewerto use underscores for internal method names by @roomrys in #1919 - Remove unused AsyncVideo class by @roomrys in #1917
- Sort encoded
Skeletondictionary for backwards compatibility by @roomrys in #1975
Workflows
- Fix CI on macosx-arm64 by @talmo in #1734
- Upgrade build actions for release by @eberrigan in #1779
- Fix website build and remove build cache across workflows by @eberrigan in #1786
- Fix windows conda package upload and build ci by @eberrigan in #1792
- Add workflow to test conda packages by @roomrys in #1935
- Add comment on issue workflow by @roomrys in #1946
- Add discussion comment workflow by @roomrys in #1945
New Contributors
- @scott-yj-yang made their first contribution in #1328
- @lambdaloop made their first contribution in #1559
- @ssrinath22 made their first contribution in #1568
- @keyaloding made their first contribution in #1822
- @hajin-park made their first contribution in #1824
- @emdavis02 made their first contribution in #1784
- @gqcpm made their first contribution in #1862
- @MweinbergUmass made their first contribution in #1941
- @felipe-parodi made their first contribution in #2035
- @croblesMed made their first contribution in #2050
Full Changelog: v1.3.4...v1.4.1
v1.3.4¶
SLEAP 1.3.4 has no changes to the SLEAP source code, but adds constraints to the attrs and opencv versions being pulled in.
From 1.3.2+, to install SLEAP through pip use pip install sleap[pypi] to ensure all dependencies are gathered.
As a reminder:
The 1.3.1 dependency update requires Mamba for faster dependency resolution. If you already have anaconda installed, then you can set the solver to libmamba in the base environment:
conda update -n base conda conda install -n base conda-libmamba-solver conda config --set solver libmambaAny subsequent
mambacommands in the docs will need to be replaced withcondaif you choose to use your existing Anaconda installation.Otherwise, follow the recommended installation instruction for Mamba.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.3.4
mamba (Mac):
mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.3.4
pip (any OS except Apple Silicon):
pip install sleap[pypi]==1.3.4
Full Changelog
- Constrain attrs (mac) and opencv (linux) in 1.3.4 #1927
v1.4.1a2¶
SLEAP v1.4.1a2 is a pre-release. See 1.3.3 for the latest stable release. The crucial change here is Fix zmq inference by @roomrys in #1800 since inference was not working in the pre-release v1.4.1a1 due to the addition of zmq port options for training in #1780 that were not being used for inference.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap_v1.4.1a2 -c conda-forge -c nvidia -c sleap/label/dev -c anaconda sleap=1.4.1a2
mamba (Mac):
mamba create -y -n sleap_v1.4.1a2 -c conda-forge -c anaconda -c sleap/label/dev sleap=1.4.1a2
pip (any OS except Apple Silicon):
pip install sleap[pypi]==1.4.1a2
What's Changed
Fixes
Workflow Changes
- Fix windows conda package upload and build ci by @eberrigan in #1792
- Bump to v1.4.1a2 by @eberrigan in #1835
Enhancements and Refactors
- Set selected instance to None after removal by @roomrys in #1808
- Add
InstancesListclass to handle backref toLabeledFrameby @roomrys in #1807
Full Changelog: v1.4.1a1...v1.4.1a2
v1.4.1a1¶
SLEAP v1.4.1a1 is a pre-release. See 1.3.3 for the latest stable release. There are many changes to dependencies in this pre-release: if you are having installation issues with v1.3.3, you should try this version instead.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap_v1.4.1a1 -c conda-forge -c nvidia -c sleap/label/dev -c anaconda sleap=1.4.1a1
mamba (Mac):
mamba create -y -n sleap_v1.4.1a1 -c conda-forge -c anaconda -c sleap/label/dev sleap=1.4.1a1
pip (any OS except Apple Silicon):
pip install sleap[pypi]==1.4.1a1
What's Changed
Enhancements
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Increase range on batch size by @roomrys in #1513
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- support loading slp files with non-compound types and str in metadata by @lambdaloop in #1566
- change inference pipeline option to tracking-only by @shrivaths16 in #1666
- Only propagate Transpose Tracks when propagate is checked by @vaibhavtrip29 in #1748
- Add batch size to GUI for inference by @shrivaths16 in #1771
- Add ZMQ support via GUI and CLI by @shrivaths16 in #1780
- Change menu name to match deleting predictions beyond max instance by @shrivaths16 in #1790
- Adding ragged metadata to
info.jsonby @shrivaths16 in #1765 - Add option to export to CSV via sleap-convert and API by @eberrigan in #1730
Refactors
- Set default callable for
match_lists_functionby @roomrys in #1520 - Allow passing in
Labelstoapp.mainby @roomrys in #1524 - Replace (broken)
--unragwith--raggedby @roomrys in #1539 - Add function to create app by @roomrys in #1546
- Refactor
AddInstancecommand by @roomrys in #1561
Fixes
- Graceful failing with seeking errors by @talmo in #1712
- Fix IndexError for hdf5 file import for single instance analysis files by @shrivaths16 in #1695
- Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Make the hdf5 videos store as int8 format by @lambdaloop in #1559
- Scale new instances to new frame size by @ssrinath22 in #1568
- Fix package export by @talmo in #1619
- View Hyperparameter nonetype fix by @shrivaths16 in #1766
Dependency Changes
- Replace imgaug with albumentations by @talmo in #1623
- Fix out of bounds albumentations issues and update dependencies by @eberrigan in #1724
- Update to new TensorFlow conda package by @eberrigan in #1726
- Fix conda builds by @eberrigan in #1776
Workflow Changes
- Fix CI on macosx-arm64 by @talmo in #1734
- Upgrade build actions for release by @eberrigan in #1779
- Fix website build and remove build cache across workflows by @eberrigan in #1786
- Bump to 1.4.1a1 by @eberrigan in #1791
Website Changes
New Contributors
- @scott-yj-yang made their first contribution in #1328
- @lambdaloop made their first contribution in #1559
- @ssrinath22 made their first contribution in #1568
Full Changelog: v1.3.3...v1.4.1a1
v1.4.1a0¶
What's Changed
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Increase range on batch size by @roomrys in #1513
- Set default callable for
match_lists_functionby @roomrys in #1520 - Allow passing in
Labelstoapp.mainby @roomrys in #1524 - Replace (broken)
--unragwith--raggedby @roomrys in #1539 - Add function to create app by @roomrys in #1546
- Refactor
AddInstancecommand by @roomrys in #1561 - Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Make the hdf5 videos store as int8 format by @lambdaloop in #1559
- Scale new instances to new frame size by @ssrinath22 in #1568
- Fix package export by @talmo in #1619
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- support loading slp files with non-compound types and str in metadata by @lambdaloop in #1566
- change inference pipeline option to tracking-only by @shrivaths16 in #1666
- Add ABL:AOC 2023 Workshop link by @roomrys in #1673
- Graceful failing with seeking errors by @talmo in #1712
- Fix IndexError for hdf5 file import for single instance analysis files by @shrivaths16 in #1695
- Replace imgaug with albumentations by @talmo in #1623
- Fix out of bounds albumentations issues and update dependencies by @eberrigan in #1724
- Update to new TensorFlow conda package by @eberrigan in #1726
- Fix CI on macosx-arm64 by @talmo in #1734
- Add option to export to CSV via sleap-convert and API by @eberrigan in #1730
- Only propagate Transpose Tracks when propagate is checked by @vaibhavtrip29 in #1748
- View Hyperparameter nonetype fix by @shrivaths16 in #1766
- Adding ragged metadata to
info.jsonby @shrivaths16 in #1765 - Add batch size to GUI for inference by @shrivaths16 in #1771
- Fix conda builds by @eberrigan in #1776
- Upgrade build actions for release by @eberrigan in #1779
New Contributors
- @scott-yj-yang made their first contribution in #1328
- @lambdaloop made their first contribution in #1559
- @ssrinath22 made their first contribution in #1568
Full Changelog: v1.3.3...v1.4.1a0
v1.4.0a0¶
What's Changed
- Add options to set background color when exporting video by @scott-yj-yang in #1328
- Increase range on batch size by @roomrys in #1513
- Set default callable for
match_lists_functionby @roomrys in #1520 - Allow passing in
Labelstoapp.mainby @roomrys in #1524 - Replace (broken)
--unragwith--raggedby @roomrys in #1539 - Add function to create app by @roomrys in #1546
- Refactor
AddInstancecommand by @roomrys in #1561 - Import DLC with uniquebodyparts, add Tracks by @getzze in #1562
- Make the hdf5 videos store as int8 format by @lambdaloop in #1559
- Scale new instances to new frame size by @ssrinath22 in #1568
- Fix package export by @talmo in #1619
- Add resize/scroll to training GUI by @KevinZ0217 in #1565
- support loading slp files with non-compound types and str in metadata by @lambdaloop in #1566
- change inference pipeline option to tracking-only by @shrivaths16 in #1666
- Add ABL:AOC 2023 Workshop link by @roomrys in #1673
- Graceful failing with seeking errors by @talmo in #1712
- Fix IndexError for hdf5 file import for single instance analysis files by @shrivaths16 in #1695
- Replace imgaug with albumentations by @talmo in #1623
- Fix out of bounds albumentations issues and update dependencies by @eberrigan in #1724
- Update to new TensorFlow conda package by @eberrigan in #1726
- Fix CI on macosx-arm64 by @talmo in #1734
- Add option to export to CSV via sleap-convert and API by @eberrigan in #1730
- Only propagate Transpose Tracks when propagate is checked by @vaibhavtrip29 in #1748
- View Hyperparameter nonetype fix by @shrivaths16 in #1766
- Adding ragged metadata to
info.jsonby @shrivaths16 in #1765 - Add batch size to GUI for inference by @shrivaths16 in #1771
- Fix conda builds by @eberrigan in #1776
New Contributors
- @scott-yj-yang made their first contribution in #1328
- @lambdaloop made their first contribution in #1559
- @ssrinath22 made their first contribution in #1568
Full Changelog: v1.3.3...v1.4.0a0
v1.3.3¶
This is a brown-bag release following insufficient restrictions on allowable tensorflow versions for the "pypi" extra sleap[pypi] in 1.3.2. While the conda packages for 1.3.2 were not affected (since tensorflow is pulled in from anaconda), the PyPI only package installed via pip install sleap[pypi] had conflicts between the version of tensorflow and the version of keras. See 1.3.0, 1.3.1, and 1.3.2 for previous notable changes.
From 1.3.2+, to install SLEAP through pip use pip install sleap[pypi] to ensure all dependencies are gathered.
As a reminder:
The 1.3.1 dependency update requires Mamba for faster dependency resolution. If you already have anaconda installed, then you can set the solver to libmamba in the base environment:
conda update -n base conda conda install -n base conda-libmamba-solver conda config --set solver libmambaAny subsequent
mambacommands in the docs will need to be replaced withcondaif you choose to use your existing Anaconda installation.Otherwise, follow the recommended installation instruction for Mamba.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.3.3
mamba (Mac):
mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.3.3
pip (any OS except Apple Silicon):
pip install sleap[pypi]==1.3.3
Full Changelog
Fixes
- Do not try to remove item if already deleted by @roomrys in #1498
- Set
LD_LIBRARY_PATHon mamba activate by @roomrys in #1496 - Reset
LD_LIBRARY_PATHon deactivate by @roomrys in #1502
Dependencies
- Add version restirctions to tensorflow for pypi by @roomrys in #1485
- Remove
imageiopin by @roomrys in #1501
Full Changelog: v1.3.2...v1.3.3
v1.3.2¶
SLEAP 1.3.2 adds some nice usability features thanks to both the community ideas and new contributors! See 1.3.0 and 1.3.1 for previous notable changes.
From 1.3.2+, to install SLEAP through PyPI use pip install sleap[pypi] to ensure all dependencies are gathered.
As a reminder:
The 1.3.1 dependency update requires Mamba for faster dependency resolution. If you already have anaconda installed, then you can set the solver to libmamba in the base environment:
conda update -n base conda conda install -n base conda-libmamba-solver conda config --set solver libmambaAny subsequent
mambacommands in the docs will need to be replaced withcondaif you choose to use your existing Anaconda installation.Otherwise, follow the recommended installation instruction for Mamba.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.3.2
mamba (Mac):
mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.3.2
pip (any OS except Apple Silicon):
pip install sleap[pypi]==1.3.2
Highlights
- Limit max tracks via track-local queues by @shrivaths16 and @talmo in #1447
- Add option to remove videos in batch by @gitttt-1234 in #1382 and #1406
- Add shortcut to export analysis for current video by @KevinZ0217 in #1414 and #1444
- Add video path and frame indices to metrics by @roomrys in #1396
- Add a button for copying model config to clipboard by @KevinZ0217 in #1433
- Add Option to Export CSV by @gitttt-1234 in #1438
Full Changelog
Enhancements
- Add option to remove videos in batch by @gitttt-1234 in #1382 and #1406
- Add
Trackwhen addInstanceby @roomrys in #1408 - Add
Videoto cache when addingTrackby @roomrys in #1407 - Add shortcut to export analysis for current video by @KevinZ0217 in #1414 and #1444
- Add video path and frame indices to metrics by @roomrys in #1396
- Improve error message for detecting video backend by @roomrys in #1441
- Add a button for copying model config to clipboard by @KevinZ0217 in #1433
- Add Option to Export CSV by @gitttt-1234 in #1438
- Limit max tracks via track-local queues by @shrivaths16 and @talmo in #1447
Fixes
- Minor fix in computation of OKS by @shrivaths16 in #1383 and #1399
- Fix
Filedialogto work across (mac)OS by @roomrys in #1393 - Fix panning bounding box by @gitttt-1234 in #1398
- Fix skeleton templates by @roomrys in #1404
- Fix labels export for json by @roomrys in #1410
- Correct GUI state emulation by @roomrys in #1422
- Update status message on status bar by @shrivaths16 in #1411
- Fix error thrown when last video is deleted by @shrivaths16 in #1421
- Add model folder to the unzip path by @roomrys in #1445
- Fix drag and drop by @talmo in #1449
Dependencies
New Contributors
- @shrivaths16 made their first contribution in #1383
- @gitttt-1234 made their first contribution in #1382
- @KevinZ0217 made their first contribution in #1414
Full Changelog: v1.3.1...v1.3.2
v1.3.1¶
After the massive 1.3.0 release, SLEAP 1.3.1 underwent a much needed dependency and build update. SLEAP 1.3.1 has conda packages for Mac OS X and Apple Silicon 🎉. In terms of features, 1.3.1 has just a few small upgrades/fixes. Be sure to check back in for bigger features still in the works! 🚧 🔨 👀
The 1.3.1 dependency update requires Mamba for faster dependency resolution. If you already have anaconda installed, then you can install Mamba in the base environment:
conda install mamba -n base -c conda-forgeOtherwise, follow the recommended installation instruction for Mamba.
Quick install
mamba (Windows/Linux/GPU):
mamba create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.3.1
mamba (Mac):
mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.3.1
pip (any OS except Apple Silicon):
pip install sleap==1.3.1
Highlights
- Update environment creation by @roomrys in #1366
- Add
--max_instancestosleap-trackand GUI by @roomrys in #1305 - Increase GUI crop size range from 512 to 832 by @roomrys in #1295
- Allow returning PAF graph during low level inference by @calebweinreb in #1329
- Fix GUI resume training by @roomrys in #1314
- Fixes GPU memory polling using environment variable filtering by @ericleonardis in #1272
Full Changelog
Enhancements
- Centralize video extensions by @talmo in #1244
- Organize docks by @roomrys in #1265
- Increase GUI crop size range from 512 to 832 by @roomrys in #1295
- Add
--max_instancestosleap-trackand GUI by @roomrys in #1305 - Allow returning PAF graph during low level inference by @calebweinreb in #1329
Fixes
- Disable data caching by default for SingleImageVideos by @talmo in #1243
- Fix single frame GUI increment by @roomrys in #1254
- Fix conversion to numpy array when last frame(s) do not have labels by @talmo in #1307
- Ensure frames to predict list is unique by @roomrys in #1293
- Fix GUI resume training by @roomrys in #1314
- Do not choose
top_kinstances ifmax_instances< num centroids by @roomrys in #1313 - Remove
--labelsand redundantdata_pathby @roomrys in #1326 - Create copy of config info to modify (gui) by @roomrys in #1325
- Fixes GPU memory polling using environment variable filtering by @ericleonardis in #1272
- Set
split_by_inds,test_labels, andvalidation_labelsto default (GUI) by @roomrys in #1331 - Fix (remove)
SingleImageVideocaching by @roomrys in #1330
Dependencies
New Contributors
- @ericleonardis made their first contribution in #1272
- @calebweinreb made their first contribution in #1329
Full Changelog: v1.3.0...v1.3.1
v1.3.0¶
For 1.3.0 we want to give our users some cool new features worth upgrading for! This release includes a many enhancements we hope our users will enjoy as well as its fair share of bug fixes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.3.0
pip (any OS except Apple Silicon):
pip install sleap==1.3.0
What's Changed
Highlights
- Added scaling functionality for both the instances and bounding box. by @sean-afshar in #1133
- Add Skeleton Templates by @aaprasad in #1122
- Resumable Training by @jimzers in #1130
- Tracking: robust assignment of the best score to an instance by @getzze in #1062
- Set max instances for top down models by @sheridana in #1070
- Flexibly resize input layer of
tf.keras.Modelupon loading trained model by @roomrys in #1084 - GUI Training: Use hidden params from loaded config by @roomrys in #1053
- Nix export of tracking results by @jgrewe in #1068
- Expose MoveNet to the Inference GUI by @sheridana in #1190
- Add option to "Add Videos..." from single image files by @eberrigan in #1183
- Add GUI and API option to remove unused tracks by @roomrys in #1210
- Add instance and track copy/pasting by @talmo in #1206
- Expose supervised ID models to GUI by @sheridana in #1213
- Ensure data format compatibility by @roomrys in #1222
Full Changelog
Documentation
- Change 'M1' to 'Apple Silicon' by @roomrys in #1188
- Update the Documentation badge by @roomrys in #1211
Enhancements
- GUI Training: Use hidden params from loaded config by @roomrys in #1053
- Add optional unragging arg to model export by @sheridana in #1054
- Tracking: robust assignment of the best score to an instance by @getzze in #1062
- Set max instances for top down models by @sheridana in #1070
- Flexibly resize input layer of
tf.keras.Modelupon loading trained model by @roomrys in #1084 - Add Option to Make Trail Shade Darker/Lighter by @roomrys in #1103
- Nix export of tracking results by @jgrewe in #1068
- Added scaling functionality for both the instances and bounding box. by @sean-afshar in #1133
- Add better error message for top down by @roomrys in #1121
- Add central padding to SizeMatcher by @jiayinghsu in #1129
- Added MoveNet as an external model reference by @jiayinghsu in #1141
- Resumable Training by @jimzers in #1130
- GenericTableModel/View improvements by @jgrewe in #1163
- Add Skeleton Templates by @aaprasad in #1122
- Add better error message for top down by @roomrys in #1121
- Add option of 2 for marker size by @roomrys in #1205
- Support new DLC multi-animal configs by @roomrys in #1204
- Expose MoveNet to the Inference GUI by @sheridana in #1190
- Add option to "Add Videos..." from single image files by @eberrigan in #1183
- Add GUI and API option to remove unused tracks by @roomrys in #1210
- Add instance and track copy/pasting by @talmo in #1206
- Expose supervised ID models to GUI by @sheridana in #1213
- Toggle grayscale of all videos using "Toggle Grayscale" button by @roomrys in #1215
Fixes
- Fix config option to
split_by_indsby @roomrys in #1060 - Don't create instances during inference if no points were found by @talmo in #1073
- Add one-line fix to VideoWriterSkyvideo by @roomrys in #1082
- Fix parser for sleap-export by @roomrys in #1085
- Refactor commands to load project as
AppCommands by @roomrys in #1098 - Create signal that updates plot instead of removing and replotting items by @roomrys in #1134
- Fix symmetric skeletons (via table input) by @roomrys in #1136
- Fix body vs symmetry subgraph filtering by @talmo in #1142
- Handle changing backbones in training editor GUI by @talmo in #1140
- Hotfix for video save #1098 by @roomrys in #1148
- Update no-cuda-env to fix pillow errors by @roomrys in #1201
- Fix environment.yml by @talmo in #1202
- Fix typo in
Skeleton.__repr__by @roomrys in #1200 - Split trainer cli function into two functions by @roomrys in #1197
- Threaded inference by @talmo in #1203
- Emit the signals to reset table views when data is empty by @talmo in #1207
- Ensure data format compatibility by @roomrys in #1222
New Contributors
- @jgrewe made their first contribution in #1068
- @sean-afshar made their first contribution in #1133
- @eberrigan made their first contribution in #1183
Full Changelog: v1.2.9...v1.3.0
v1.3.0a0¶
Pre-release of SLEAP v1.3.0.
For 1.3.0 we want to give our users some cool new features worth upgrading for! This pre-release includes lots of enhancements and it's fair share of bug fixes.
Warning: This is a pre-release! Expect bugs and strange behavior when testing.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c sleap/label/dev -c nvidia -c conda-forge sleap=1.3.0a0
pip (any OS except Apple Silicon):
pip install sleap==1.3.0a0
Highlights
- Added scaling functionality for both the instances and bounding box. by @sean-afshar in #1133
- Add Skeleton Templates by @aaprasad in #1122
- Resumable Training by @jimzers in #1130
- Tracking: robust assignment of the best score to an instance by @getzze in #1062
- Set max instances for top down models by @sheridana in #1070
- Flexibly resize input layer of
tf.keras.Modelupon loading trained model by @roomrys in #1084 - GUI Training: Use hidden params from loaded config by @roomrys in #1053
- Nix export of tracking results by @jgrewe in #1068
Full changelog
Documentation
Enhancements
- GUI Training: Use hidden params from loaded config by @roomrys in #1053
- Add optional unragging arg to model export by @sheridana in #1054
- Tracking: robust assignment of the best score to an instance by @getzze in #1062
- Set max instances for top down models by @sheridana in #1070
- Flexibly resize input layer of
tf.keras.Modelupon loading trained model by @roomrys in #1084 - Add Option to Make Trail Shade Darker/Lighter by @roomrys in #1103
- Nix export of tracking results by @jgrewe in #1068
- Added scaling functionality for both the instances and bounding box. by @sean-afshar in #1133
- Add better error message for top down by @roomrys in #1121
- Add central padding to SizeMatcher by @jiayinghsu in #1129
- Added MoveNet as an external model reference by @jiayinghsu in #1141
- Resumable Training by @jimzers in #1130
- GenericTableModel/View improvements by @jgrewe in #1163
- Add Skeleton Templates by @aaprasad in #1122
- Add better error message for top down by @roomrys in #1121
Fixes
- Fix config option to
split_by_indsby @roomrys in #1060 - Don't create instances during inference if no points were found by @talmo in #1073
- Add one-line fix to VideoWriterSkyvideo by @roomrys in #1082
- Fix parser for sleap-export by @roomrys in #1085
- Refactor commands to load project as
AppCommands by @roomrys in #1098 - Create signal that updates plot instead of removing and replotting items by @roomrys in #1134
- Fix symmetric skeletons (via table input) by @roomrys in #1136
- Fix body vs symmetry subgraph filtering by @talmo in #1142
- Handle changing backbones in training editor GUI by @talmo in #1140
- Hotfix for video save #1098 by @roomrys in #1148
New Contributors
- @jgrewe made their first contribution in #1068
- @sean-afshar made their first contribution in #1133
v1.2.9¶
Stable release of SLEAP v1.2.9. This release has lots of bug fixes, a few GUI enhancements, and one CLI fix.
See the release notes for v1.2.0, v1.2.1, v1.2.2, v1.2.7 for previous major changes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.2.9
pip (any OS):
pip install sleap==1.2.9
See the Installation page in the docs for more info.
Highlights
- Prefer user instances when calling Labels.numpy() (#996)
- Add upper limit of the instance count in prediction score labeling suggestion method (#981)
- Add more options to render video: wedges, palette, and distinctly color (#998)
- Always draw user instances even if all nodes marked as not visible (#1002)
- Add frame chunk method in labeling suggestions (#1007)
Full changelog
Documentation
Enhancements
- Prefer user instances when calling Labels.numpy() (#996)
- Add more options to render video: wedges, palette, and distinctly color (#998)
- Add upper limit of the instance count in prediction score labeling suggestion method (#981)
- Speed-up cache for multi-video projects (#1017)
- Increase max number for target instances in simple tracker form (#1037)
- Share usage data #1038
- Add frame chunk method in labeling suggestions (#1007)
Fixes
- Fix printing of auto-selected GPU free memory (#955)
- Fix add suggestions when target is current video (#956)
- Fix
sleap-exportcli arg parsing (#962) - Fix cattr in Python 3.9 (#967)
- Fix editing track name clears the old entry on double-click (#980)
- Prune saved shifted instances (#1001)
- Update suggestions upon video removal (#1009)
- Correctly add .h5 extension to analysis files on Linux (#1010)
- GUI Table: Do not set item value if same as current value (#1022)
- Always draw user instances even if all nodes marked as not visible (#1002)
- Shifted instances: make sure ref_instances is not empty (#1029)
- Trails prefer user instances over predicted (#1036)
v1.2.8¶
Stable release of SLEAP v1.2.8. This release is a hotfix for a couple of issues in v1.2.7.
See the release notes for v1.2.0, v1.2.1, v1.2.2, v1.2.7 for previous major changes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.2.8
pip (any OS):
pip install sleap==1.2.8
See the Installation page in the docs for more info.
Full changelog
Fixes
v1.2.7¶
Stable release of SLEAP v1.2.7. This release merges the m1 branch with the main branch along with the usual bug fixes, new feature enhancements, and documentation updates.
See the release notes for v1.2.0, v1.2.1, and v1.2.2 for previous major changes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.2.7
pip (any OS):
pip install sleap==1.2.7
See the Installation page in the docs for more info.
Highlights
- M1 Mac support (#886)
- Fix shifted predictions on multi-resolution projects (#902)
- Add GPU Memory Polling Function (#911)
- Run sleap-track on video using index (#920)
Full changelog
Documentation
- Add more documentation for nwb extension (#861)
- Add conda downloads badge to README (#869)
- Update link to contributing guideline
- Update CLA
Enhancements
- Integrate retracking into sleap-track (#898)
- M1 Mac support (#886)
- Run sleap-track on video using index (#920)
- Use saved optical flow to use only on adjacent frames (#870)
- Modify inference and centroid model to allow Bonsai ingestion (#850)
- Append Unique Suggestions (#874)
- Add GPU Memory Polling Function (#911)
Fixes
- Add new track to linked predicted instance (#879)
- Edit CI workflow to run on forked PRs
- Fix naming convention for sleap-convert (#881)
- Fix cropping when rendering video (#842)
- Fix shifted predictions on multi-resolution projects (#902)
- Redraw plot to update trails after moving node (#910)
- Force node to be placed w/in video (#912)
v1.2.6¶
Stable release of SLEAP v1.2.6. This release is a hotfix for a conda packaging issue introduced in v1.2.5.
See the release notes for v1.2.0, v1.2.1, v1.2.2, v1.2.3, v1.2.4, v1.2.5 for previous major changes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.2.6
pip (any OS):
pip install sleap==1.2.6
See the Installation page in the docs for more info.
Highlights
N/A
Full changelog
Documentation
N/A
Enhancements
N/A
Fixes
- Fix conda packaging for
pynwbandndx-pose(#860)
v1.2.5¶
Stable release of SLEAP v1.2.5. This release contains an adaptor for reading/writing NWB Files using ndx-pose, some bug fixes, and minor documentation update.
See the release notes for v1.2.0, v1.2.1, and v1.2.2 for previous major changes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.2.5
pip (any OS):
pip install sleap==1.2.5
See the Installation page in the docs for more info.
Highlights
Add read/write adaptor for ndx-pose (#835, #845)
Full changelog
Documentation
Update assisted-labeling docs, installation docs, and environment_no_cuda.yml (#847)
Enhancements
Add read/write adaptor for ndx-pose (#835, #845)
Expose attributes of NWBFile and create Labels API for exporting to NWB (#855)
Fixes
Change existing skeleton to match loaded skeleton (#840)
Recalculate crop size if user-specified crop size indivisible by max stride (#841)
v1.2.4¶
Stable release of SLEAP v1.2.4. This release contains some bug fixes, new feature enhancements, and documentation updates.
See the release notes for v1.2.0, v1.2.1, and v1.2.2 for previous major changes.
Quick install
conda (Windows/Linux/GPU):
conda create -y -n sleap -c sleap -c nvidia -c conda-forge sleap=1.2.4
pip (any OS):
pip install sleap==1.2.4
See the Installation page in the docs for more info.
Highlights
- Add option to predict on all videos (#749)
- Add dropdown to choose video to generate suggestions on (#786)
- Add button to toggle grayscale of current video (#788)
Full changelog
Documentation
- Add links to discussion (#748)
- Contributing Guide, Code of Conduct, and Issues Template (#746)
- Update tracking docs (#761)
Enhancements
- Add option to predict on all videos (#749)
- Create multiple analysis files for multi-video projects (#768)
- Add button to toggle grayscale of current video (#788)
- Choose video to generate suggestions (#786)
- Add CLI sleap-render command to render videos (#796)
- Allow user to set grayscale when replacing videos (mp4/avi only) (#787)
- Support grayscale for SingleImageVideo backend (#789)