Skip to content

Changelog

v1.5.1 (2025-10-02)

  • Bump version to 1.5.1 (#2398)
  • Update docs on new CLIs (#2397)
  • Fix links in SLEAP docs (#2396)
  • Bug fixes (#2395)
  • Update installation documentation (#2394)
  • Fix Docs Typos and Update Installation Instructions (#2392)
  • Fix CUDA installation on Windows (#2391)
  • Add CLIs for train and track (#2390)
  • Fix mkdocs versioning (#2389)
  • Gracefully handle sleap-nn import errors (#2388)
  • Add platform-specific nn dependency group (#2387)
  • Minor updates to docs (#2382)
  • Fix sleap-diagnostic and Installation Options (#2383)

v1.5.0 (2025-09-30)

  • Migrate to mkdocs for sleap documentation (#2367)
  • Exclude docs and tests from build artifacts (#2380)
  • Add get_centroid() Function for Centroid Computation (#2377)
  • Fix: Set trainer_devices to null in Trainings Config in GUI to indicate "auto" (#2376)
  • Match sleap-nn style for metrics (#2375)
  • Fix Table Not Showing up When Merging Projects (#2373)
  • Minor bug fixes (#2372)
  • Fix Export Clip Video (#2330)
  • Fix Failing Test for Write Visuals (#2366)
  • Fix exportLabelsFilePackage Test Failure (#2364)
  • Fix sleap-render frame batch loading (#2363)
  • Fix incorrect save/export dialog call (#2362)
  • Remove train val split (#2359)
  • Fix sleap-track flag syntax (#2358)
  • Fix zmq parameters (#2357)
  • Fix sleap-train ports (#2356)
  • Remove deprecated CLI args (#2355)
  • Fix sleap-render CLI command for annotated frames (#2354)
  • Fix skeleton template loading (#2353)
  • Fix sleap-track CLI command & flags (#2351)
  • Amick/fix sleap train cli (#2349)
  • Fix Prediction Instance Not Showing Up After Inference (#2348)
  • remove extra argument (#2347)
  • Fix Timestamp Field in Metrics Table (#2345)
  • Allow duplicated instance nodes to be moveable & ungrabbable (#2346)
  • Add adaptors to support legacy CLIs (#2335)
  • Add More Metrics to SLEAP from sleap-nn (#2344)
  • Fix minor bugs in inference dialog (#2343)
  • Fix CLI for inference with tracker (#2342)
  • Add condition to handle bool output_dir (#2341)
  • Fix Bug for Displaying Mean Score in Labeling Suggestion Table (#2340)
  • Fix Bug When Matching Nodes (#2339)
  • Fix export package dialog error (#2338)
  • Fix sleap-convert CLI (#2334)
  • Fix sleap-diagnosis CLI (#2333)
  • Update sleap-inspect CLI to be Compatible with sleap-io (#2332)
  • Modify GUI dialog fields (#2331)
  • Fix Labeling Predicted Instances by Double-clicking (#2329)
  • Fix Test for Tracks (#2328)
  • Fix Evaluation Modal (#2279)
  • More test fixing (#2327)
  • Fix asynchronous video worker cancels loading of latest frame (#2325)
  • Fix Tests and Enhancements to Pass the CI Tests (#2321)
  • Fix add average instance corner bug (#2323)
  • Fix sleap-nn cli and add training params (#2322)
  • Refactor GUI form config to omegaconf objects (#2318)
  • Fix even more tests (#2320)
  • Fix more tests (#2319)
  • Partially fix API changes in test suite (#2304)
  • Fix node relabelling nodes random placement (#2317)
  • Fix Applying Distinct Colors To Edges and Nodes (#2316)
  • Replace instance_to_showattribute to get_instance_to_show() function (#2315)
  • Fix Removing Labeling Suggestions Functionality in the GUI (#2314)
  • Fix Run Training Button and Replace Video.frames to Video.shape[0] (#2309)
  • Fix Suggestion Generation in the GUI (#2312)
  • Fix bug in adding new node to existing skeleton (#2313)
  • QGraphicsItem ungrabMouse function call fix (#2310)
  • Fix add tracks in GUI (#2307)
  • Fix saving instance (#2306)
  • Fix Video Search Video Functionality (#2305)
  • Fix saving pkg files (#2301)
  • Fix video thread safety (#2303)
  • Fix fill_missing function Error (#2302)
  • Temporary fix for MediaVideo backend (#2300)
  • Replace Instances() Function (#2298)
  • Integrate sleap io Skeleton to SLEAP GUI (base PR) (#2282)
  • Integrate SLEAP-NN into GUI (#2249)
  • Fix video player threading architecture to eliminate QBasicTimer errors (#2278)
  • DevOps clean-up (#2248)
  • Remove sleap.nn and use uv (#2247)
  • Small improvements to tracking (#1894)
  • Pin miniforge version (#2181)
  • Move select sleap.nn.viz functions to sleap.utils (#2168)
  • Remove VisualPredictor class (#2167)
  • Add Pipeline.from_data method (#2160)
  • Remove CLI for "mostly depreciated" trackcleaner (#2161)
  • Remove TrainingJobConfig use in LossViewer (#2162)
  • Enhance progress reporting in inference (#2156)
  • Extract clip as video, slp and pkg.slp (#2155)
  • Allow tracking on Instances (by adding Instance.tracking_score) (#1302)
  • Ctrl + Click and Drag to copy instance (#2072)
  • Fix port already in use when running inference (#2064)
  • Add resolution grouping to image dataset import for DLC (#2087)
  • Fix input scaling in centered-instance model (#2054)
  • Allow max tracking args for Kalman filter (#1986)
  • Release 1.4.1 (#2068)
  • Add -c sleap/label/dev channel for win/linux - also trigger website build
  • Bump version to 1.4.1 (#2062)
  • Make status bar dependent on UI mode (#2063)
  • Separate the video name and its filepath columns in VideoTablesModel (#2052)
  • Add channels for pip conda env (#2067)
  • Fix import PySide2 -> qtpy (#2065)
  • Enable touchpad pinch to zoom (#2058)
  • Make node marker and label sizes configurable via preferences (#2057)
  • Highlight instance box on hover (#2055)
  • Add menu item for deleting instances beyond frame limit (#1797)
  • Add check for instances with track assigned before training ID models (#2053)
  • Don't mark complete on instance scaling (#2049)
  • Add bonsai guide for sleap docs (#2050)
  • Add tracking score as seekbar header options (#2047)
  • Lint
  • Fix COCO Dataset Loading for Invisible Keypoints (#2035)
  • Disable comment bot for now
  • Sort encoded Skeleton dictionary for backwards compatibility (#1975)
  • Pin ndx-pose<0.2.0 (#1978)
  • Handle skeleton encoding internally (#1970)
  • Handle skeleton decoding internally (#1961)
  • Add normalized_instance_similarity method (#1939)
  • Remove no module named work error (#1956)
  • Do not always color skeletons table black (#1952)
  • Add imageio dependencies for pypi wheel (#1950)
  • Update installation docs 1.4.1 (#1810)
  • Add missing imageio-ffmpeg to meta.ymls (#1943)
  • Add workflow to test conda packages (#1935)
  • Add comment on issue workflow (#1946)
  • Add discussion comment workflow (#1945)
  • Option for Max Stride to be 128 (#1941)
  • Use tf.math.mod instead of % (#1931)
  • Manually handle Instance.from_predicted structuring when not None (#1930)
  • Refactor LossViewer to use underscores for internal method names (#1919)
  • Refactor LossViewer to use matplotlib (#1899)
  • Remove unused AsyncVideo class (#1917)
  • Replace all Video structuring with Video.cattr() (#1911)
  • Use positional argument for exception type (#1912)
  • Remove unsupported |= operand to prepare for PySide6 (#1910)
  • Replace QtDesktop widget in preparation for PySide6 (#1908)
  • Use | instead of + in key commands (#1907)
  • Use Video.from_filename when structuring videos (#1905)
  • Refactor video writer to use imageio instead of skvideo (#1900)
  • Do not apply offset when double clicking a PredictedInstance (#1888)
  • Fix typo to allow rendering videos with mp4 (Mac) (#1892)
  • Fix GUI crash on scroll (#1883)
  • Allow csv and text file support on sleap track (#1875)
  • Added Three Different Cases for Adding a New Instance (#1859)
  • Generate suggestions using max point displacement threshold (#1862)
  • Add object keypoint similarity method (#1003)
  • Allowing inference on multiple videos via sleap-track (#1784)
  • Add Keep visualizations checkbox to training GUI (#1824)
  • Menu option to open preferences directory and update to util functions to pathlib (#1843)
  • Handle case when no frame selection for trail overlay (#1832)

v1.4.1a2 (2024-06-28)

  • Updated trail length viewing options (#1822)
  • Bump to v1.4.1a2 (#1835)
  • Add InstancesList class to handle backref to LabeledFrame (#1807)
  • Set selected instance to None after removal (#1808)
  • Fix zmq inference (#1800)
  • Fix windows conda package upload and build ci (#1792)

v1.4.1a1 (2024-06-02)

  • Bump to 1.4.1a1 (#1791)
  • Fix website build and remove build cache across workflows (#1786)
  • Change menu name to match deleting predictions beyond max instance (#1790)
  • Add ZMQ support via GUI and CLI (#1780)

v1.4.1a0 (2024-05-28)

v1.4.1 (2024-12-19)

  • Release 1.4.1 (#2068)
  • Add -c sleap/label/dev channel for win/linux - also trigger website build
  • Bump version to 1.4.1 (#2062)
  • Make status bar dependent on UI mode (#2063)
  • Separate the video name and its filepath columns in VideoTablesModel (#2052)
  • Add channels for pip conda env (#2067)
  • Fix import PySide2 -> qtpy (#2065)
  • Enable touchpad pinch to zoom (#2058)
  • Make node marker and label sizes configurable via preferences (#2057)
  • Highlight instance box on hover (#2055)
  • Add menu item for deleting instances beyond frame limit (#1797)
  • Add check for instances with track assigned before training ID models (#2053)
  • Don't mark complete on instance scaling (#2049)
  • Add bonsai guide for sleap docs (#2050)
  • Add tracking score as seekbar header options (#2047)
  • Lint
  • Fix COCO Dataset Loading for Invisible Keypoints (#2035)
  • Disable comment bot for now
  • Sort encoded Skeleton dictionary for backwards compatibility (#1975)
  • Pin ndx-pose<0.2.0 (#1978)
  • Handle skeleton encoding internally (#1970)
  • Handle skeleton decoding internally (#1961)
  • Add normalized_instance_similarity method (#1939)
  • Remove no module named work error (#1956)
  • Do not always color skeletons table black (#1952)
  • Add imageio dependencies for pypi wheel (#1950)
  • Update installation docs 1.4.1 (#1810)
  • Add missing imageio-ffmpeg to meta.ymls (#1943)
  • Add workflow to test conda packages (#1935)
  • Add comment on issue workflow (#1946)
  • Add discussion comment workflow (#1945)
  • Option for Max Stride to be 128 (#1941)
  • Use tf.math.mod instead of % (#1931)
  • Manually handle Instance.from_predicted structuring when not None (#1930)
  • Refactor LossViewer to use underscores for internal method names (#1919)
  • Refactor LossViewer to use matplotlib (#1899)
  • Remove unused AsyncVideo class (#1917)
  • Replace all Video structuring with Video.cattr() (#1911)
  • Use positional argument for exception type (#1912)
  • Remove unsupported |= operand to prepare for PySide6 (#1910)
  • Replace QtDesktop widget in preparation for PySide6 (#1908)
  • Use | instead of + in key commands (#1907)
  • Use Video.from_filename when structuring videos (#1905)
  • Refactor video writer to use imageio instead of skvideo (#1900)
  • Do not apply offset when double clicking a PredictedInstance (#1888)
  • Fix typo to allow rendering videos with mp4 (Mac) (#1892)
  • Fix GUI crash on scroll (#1883)
  • Allow csv and text file support on sleap track (#1875)
  • Added Three Different Cases for Adding a New Instance (#1859)
  • Generate suggestions using max point displacement threshold (#1862)
  • Add object keypoint similarity method (#1003)
  • Allowing inference on multiple videos via sleap-track (#1784)
  • Add Keep visualizations checkbox to training GUI (#1824)
  • Menu option to open preferences directory and update to util functions to pathlib (#1843)
  • Handle case when no frame selection for trail overlay (#1832)
  • Updated trail length viewing options (#1822)
  • Bump to v1.4.1a2 (#1835)
  • Add InstancesList class to handle backref to LabeledFrame (#1807)
  • Set selected instance to None after removal (#1808)
  • Fix zmq inference (#1800)
  • Fix windows conda package upload and build ci (#1792)
  • Bump to 1.4.1a1 (#1791)
  • Fix website build and remove build cache across workflows (#1786)
  • Change menu name to match deleting predictions beyond max instance (#1790)
  • Add ZMQ support via GUI and CLI (#1780)
  • Upgrade build actions for release (#1779)

v1.4.0a0 (2024-05-20)

  • Fix conda builds (#1776)
  • Add batch size to GUI for inference (#1771)
  • Adding ragged metadata to info.json (#1765)
  • View Hyperparameter nonetype fix (#1766)
  • Only propagate Transpose Tracks when propagate is checked (#1748)
  • Add option to export to CSV via sleap-convert and API (#1730)
  • Fix CI on macosx-arm64 (#1734)
  • Update to new TensorFlow conda package (#1726)
  • Fix out of bounds albumentations issues and update dependencies (#1724)
  • Replace imgaug with albumentations (#1623)
  • Fix IndexError for hdf5 file import for single instance analysis files (#1695)
  • Graceful failing with seeking errors (#1712)
  • Add ABL:AOC 2023 Workshop link (#1673)
  • change inference pipeline option to tracking-only (#1666)
  • support loading slp files with non-compound types and str in metadata (#1566)
  • Add resize/scroll to training GUI (#1565)
  • Fix package export (#1619)
  • Scale new instances to new frame size (#1568)
  • Make the hdf5 videos store as int8 format (#1559)
  • Import DLC with uniquebodyparts, add Tracks (#1562)
  • Refactor AddInstance command (#1561)
  • Add function to create app (#1546)
  • Replace (broken) --unrag with --ragged (#1539)
  • Allow passing in Labels to app.main (#1524)
  • Set default callable for match_lists_function (#1520)
  • Increase range on batch size (#1513)
  • Add options to set background color when exporting video (#1328)
  • Remove no-op code from #1498

v1.3.4 (2024-09-03)

  • Do not build conda packages on release Already built and tested
  • Retry website build
  • Trigger website build
  • Manually re-build windows and ubuntu packages
  • Update build runner
  • Add pandas back to host to be safe
  • Trigger wheel build and test
  • Change osx-64 to osx-arm64
  • Retry mac build with py3.9
  • Try rebuild with linux opencv<=4.8.1
  • Update checkout and miniconda runners
  • Test the wheel and conda build
  • Constrain attrs, python, opencv and bump version
  • Update installation docs

v1.3.3 (2023-09-15)

  • SLEAP 1.3.3 (#1505)
  • Brown bag bump to 1.3.3 (#1484)
  • Reset LD_LIBRARY_PATH on deactivate (#1502)
  • Remove imageio pin (#1501)
  • Add version restrictions to tensorflow for pypi (#1485)
  • Set LD_LIBRARY_PATH on mamba activate (#1496)
  • Do not try to remove item if already deleted (#1498)
  • Revert notebook commands to 1.3.1
  • Add note about using mamba vs conda commands
  • Add libmamba solver instructions

v1.3.2 (2023-09-10)

  • Update installation docs
  • SLEAP 1.3.2
  • Bump to 1.3.2 (#1482)
  • Add pip extras (#1481)
  • Limit max tracks via track-local queues (#1447)
  • Fix Auto-select GPU (#1474)
  • Migrate to importlib_resources backport (#1458)
  • Handle error message edge case when finding yaml paths (#1456)
  • Add message if drag drop fails (#1451)
  • Pin tensorflow-hub<0.14.0 (#1446)
  • Fix drag and drop (#1449)
  • Add Option to Export CSV (#1438)
  • Add model folder to the unzip path (#1445)
  • Change the hotkey for exporting h5 analysis (#1444)
  • Add a button for copying model config to clipboard (#1433)
  • Improve error message for detecting video backend (#1441)
  • Fix error thrown when last video is deleted (#1421)
  • Update status message on status bar (#1411)
  • Correct GUI state emulation (#1422)
  • Add video path and frame indices to metrics (#1396)
  • Fix labels export for json (#1410)
  • Add shortcut to export analysis for current video (#1414)
  • Modify compute OKS function (#1399)
  • Add Video to cache when adding Track (#1407)
  • Fix Remove Videos in Batch (#1406)
  • Add Track when add Instance (#1408)
  • Fix skeleton templates (#1404)
  • Fix panning bounding box (#1398)
  • Fix Filedialog to work across (mac)OS (#1393)
  • Add option to remove videos in batch (#1382)
  • Minor fix in computation of OKS (#1383)
  • Pin micromamba version (#1376)

v1.3.1 (2023-06-30)

  • SLEAP 1.3.1 (#1373)
  • Update environment creation (#1366)
  • Bump to 1.3.1 (#1335)
  • Fix SingleImageVideo caching (#1330)
  • Allow returning PAF graph during low level inference (#1329)
  • Set split_by_inds, test_labels, and validation_labels to default (GUI) (#1331)
  • Fixes GPU memory polling using environment variable filtering (#1272)
  • Create copy of config info to modify (gui) (#1325)
  • Remove --labels and redundant data_path (#1326)
  • Add --max_instances to sleap-track and GUI (#1305)
  • Do not choose top_k instances if max_instances < num centroids (#1313)
  • Fix GUI resume training (#1314)
  • Ensure frames to predict list is unique (#1293)
  • Fix conversion to numpy array when last frame(s) do not have labels (#1307)
  • Increase GUI crop size range from 512 to 832 (#1295)
  • Layout docks in a tab configuration (instead of stacked) (#1289)
  • Fix intermittent bug (file-corruption) that has snuck into the tests (#1267)
  • Organize docks (#1265)
  • Add video search to "robustify" (excessively) fragile test (#1262)
  • Fix single frame GUI increment (#1254)
  • Centralize video extensions (#1244)
  • Disable data caching by default for SingleImageVideos (#1243)
  • SLEAP v1.3.0 (#1231)
  • Pin protoc to get website build working (#1236)
  • Bump to 1.3.0 (#1230)
  • Toggle grayscale of all videos using "Toggle Grayscale" button (#1215)
  • Ensure data format compatibility (#1222)
  • Expose supervised ID models to GUI (#1213)
  • Add instance and track copy/pasting (#1206)
  • Add GUI and API option to remove unused tracks (#1210)
  • Update the Documentation badge (#1211)
  • Add option to "Add Videos..." from single image files (#1183)
  • Emit the signals to reset table views when data is empty (#1207)
  • Expose MoveNet to the Inference GUI (#1190)
  • Support new DLC multi-animal configs (#1204)
  • Threaded inference (#1203)
  • Add option of 2 for marker size (#1205)
  • Split trainer cli function into two functions (#1197)
  • Fix typo in Skeleton.__repr__ (#1200)
  • Fix environment.yml (#1202)
  • Update no-cuda-env to fix pillow errors (#1201)
  • v1.3.0a0 build attempt 4
  • Add nixio dependency to conda build
  • v1.3.0a0 build attempt 3
  • Fix tensorflow-hub dependency (attempt 2)
  • v1.3.0a0 build attempt 2
  • Fix tensorflow-hub dependency
  • Bump to 1.3.0a0 (#1189)
  • Update docs: change 'M1' to 'Apple Silicon' (#1188)
  • Add Skeleton Templates (#1122)
  • GenericTableModel/View improvements (#1163)
  • Resumable Training (#1130)
  • Added MoveNet as an external model reference (#1141)
  • Add central padding to SizeMatcher (#1129)
  • Hotfix for video save #1098 (#1148)
  • Add better error message for top down (#1121)
  • Added scaling functionality for both the instances and bounding box. (#1133)
  • Handle changing backbones in training editor GUI (#1140)
  • Fix body vs symmetry subgraph filtering (#1142)
  • Nix export of tracking results (#1068)
  • Fix symmetric skeletons (via table input) (#1136)
  • Create signal that updates plot instead of removing and replotting items (#1134)
  • Add Option to Make Trail Shade Darker/Lighter (#1103)
  • Flexibly resize input layer of tf.keras.Model upon loading trained model (#1084)
  • Refactor commands to load project as AppCommands (#1098)
  • Fix parser for sleap-export (#1085)
  • Add one-line fix to VideoWriterSkyvideo (#1082)
  • Don't create instances during inference if no points were found (#1073)
  • Set max instances for top down models (#1070)
  • Tracking: robust assignment of the best score to an instance (#1062)
  • Fix config option to split_by_inds (#1060)
  • Add optional unragging arg to model export (#1054)
  • GUI Training: Use hidden params from loaded config (#1053)

v1.3.0a0 (2023-02-24)

v1.3.0 (2023-03-23)

  • SLEAP v1.3.0 (#1231)
  • Pin protoc to get website build working (#1236)
  • Bump to 1.3.0 (#1230)
  • Toggle grayscale of all videos using "Toggle Grayscale" button (#1215)
  • Ensure data format compatibility (#1222)
  • Expose supervised ID models to GUI (#1213)
  • Add instance and track copy/pasting (#1206)
  • Add GUI and API option to remove unused tracks (#1210)
  • Update the Documentation badge (#1211)
  • Add option to "Add Videos..." from single image files (#1183)
  • Emit the signals to reset table views when data is empty (#1207)
  • Expose MoveNet to the Inference GUI (#1190)
  • Support new DLC multi-animal configs (#1204)
  • Threaded inference (#1203)
  • Add option of 2 for marker size (#1205)
  • Split trainer cli function into two functions (#1197)
  • Fix typo in Skeleton.__repr__ (#1200)
  • Fix environment.yml (#1202)
  • Update no-cuda-env to fix pillow errors (#1201)
  • v1.3.0a0 build attempt 4
  • Add nixio dependency to conda build
  • v1.3.0a0 build attempt 3
  • Fix tensorflow-hub dependency (attempt 2)
  • v1.3.0a0 build attempt 2
  • Fix tensorflow-hub dependency
  • SLEAP 1.3.0a0 (#1192)
  • Bump to 1.3.0a0 (#1189)
  • Update docs: change 'M1' to 'Apple Silicon' (#1188)
  • Add Skeleton Templates (#1122)
  • GenericTableModel/View improvements (#1163)
  • Resumable Training (#1130)
  • Added MoveNet as an external model reference (#1141)
  • Add central padding to SizeMatcher (#1129)
  • Hotfix for video save #1098 (#1148)
  • Add better error message for top down (#1121)
  • Added scaling functionality for both the instances and bounding box. (#1133)
  • Handle changing backbones in training editor GUI (#1140)
  • Fix body vs symmetry subgraph filtering (#1142)
  • Nix export of tracking results (#1068)
  • Fix symmetric skeletons (via table input) (#1136)
  • Create signal that updates plot instead of removing and replotting items (#1134)
  • Add Option to Make Trail Shade Darker/Lighter (#1103)
  • Flexibly resize input layer of tf.keras.Model upon loading trained model (#1084)
  • Refactor commands to load project as AppCommands (#1098)
  • Fix parser for sleap-export (#1085)
  • Add one-line fix to VideoWriterSkyvideo (#1082)
  • Don't create instances during inference if no points were found (#1073)
  • Set max instances for top down models (#1070)
  • Tracking: robust assignment of the best score to an instance (#1062)
  • Fix config option to split_by_inds (#1060)
  • Add optional unragging arg to model export (#1054)
  • GUI Training: Use hidden params from loaded config (#1053)

v1.2.9 (2022-11-10)

  • Merge main into develop (#1043)
  • Bump version to v1.2.9 (#1042)
  • Add frame chunk method in labeling suggestions (#1007)
  • Share usage data (#1038)
  • Increase max number for target instances in simple tracker form (#1037)
  • Trails prefer user instances over predicted (#1036)
  • Fix docs in Model_evaluation.ipynb (#1034)
  • Shifted instances: make sure ref_instances is not empty (#1029)
  • Always draw user instances even if all nodes marked as not visible (#1002)
  • Custom __repr__ methods for GUI classes (#1027)
  • Speed-up cache for multi-video projects (#1017)
  • GUI Table: Do not set item value if same as current value (#1022)
  • Correctly add .h5 extension to analysis files on Linux (#1010)
  • Bug fix: Update suggestions upon video removal (#1009)
  • Prune saved shifted instances (#1001)
  • Added 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)
  • Prefer user instances when calling Labels.numpy() (#996)
  • Fixed editing track name clears the old entry on double-click (#980)
  • Fix typo in save_shifted_instances (#974)
  • Update GH Actions Ubuntu Image to 20.04 (#985)
  • Docs update (#993)
  • Add sample movies to docs (#992)
  • Fix cattr in Python 3.9 (#967)
  • Fix export cli arg parsing (#962)
  • Fix add suggestions when target is current video (#956)
  • Fix printing of auto-selected GPU free memory (#955)
  • Clarify M1 macs are not supported for pip package
  • Format cli docs and clarify pip installation docs (#954)
  • Bump to v1.2.8 (#952)
  • Add test and fix for GPU memory query (#950)
  • Fix sleap-export CLI and add docs (#951)

v1.2.8 (2022-09-13)

  • SLEAP v1.2.8 (#953)

v1.2.7 (2022-09-11)

  • SLEAP v1.2.7 (#943)
  • Update to SLEAP v1.2.7 (#933)
  • Register ForwardRef('PredictedInstance') structure hook (#940)
  • Add GPU Memory Polling Function (#911)
  • Append Unique Suggestions (#874)
  • Modify inference and centroid model to allow Bonsai ingestion (#850)
  • Use saved optical flow to use only on adjacent frames (#870)
  • Run sleap-track on video using index (#920)
  • Pin tensorflow < 2.9.0 (#919)
  • Force node to be placed w/in video (#912)
  • Redraw plot to update trails after moving node (#910)
  • Update CLA
  • Update link to contributing guideline
  • M1 Mac support (#886)
  • One line fix for shifted predictions (#902)
  • Integrate retracking into sleap-track (#898)
  • Fix cropping when rendering video (#842)
  • Fix naming convention for sleap-convert (#881)
  • Edit CI workflow to run on forked PRs
  • Add new track to linked predicted instance (#879)
  • Add conda downloads badge to README (#869)
  • Add doc update for Labels.export_nwb (#864)
  • Merge main into develop (#863)
  • Add more documentation for nwb extension (#861)
  • Fix NWB conda packaging (#860)
  • SLEAP v1.2.5 (develop) (#856)
  • Expose attributes of NWBFile and create Labels API for exporting to NWB (#855)
  • Recalculate crop size if user-specified crop size indivisible by max stride (#841)
  • Update installation and labeling docs and no cuda yml (#847)
  • Fix Save As bug (#845)
  • Change existing skeleton to match skeleton loaded via "Load Skeleton" button (#840)
  • Add read/write adaptor for ndx-pose (#835)
  • Remove cli.rst (back from the dead)
  • SLEAP v1.2.4
  • SLEAP v1.2.4
  • Remove low-scoring predictions before merging inference results (#817)
  • Fix h5py dependency (#815)
  • Support grayscale for SingleImageVideo backend (#789)
  • Allow user to set grayscale when replacing videos (mp4/avi only) (#787)
  • Add CLI sleap-render command to render videos (#796)
  • Choose video to generate suggestions (#786)
  • Analysis HDF5 should prefer user-labeled instance over predicted instance (#772)
  • Add button to toggle grayscale of current video (#788)
  • Revert "Add button to toggle grayscale"
  • Add button to toggle grayscale
  • Add support for videos that have less frames than the desired (random) Samples per Video (#783)
  • Generate suggestions for videos with less frames than samples per video (#781)
  • Update tracking docs (#761)
  • Create multiple analysis files for multi-video projects (#768)
  • Update codecov.yml
  • Update codecov.yml
  • Create codecov.yml
  • Update bug_report.md
  • Contributing Guide, Code of Conduct, and Issues Template (#746)
  • Add option to predict on all videos (#749)
  • Update codecov badge token
  • Add links to discussion (#748)
  • Fix Imports in test_format.py (#732)
  • Test CI
  • SLEAP v1.2.3 (#726)
  • Update links from murthylab to talmolab (#724)
  • Add support for AlphaTracker import (#716)
  • Speed-up labeling suggestions look-up (#709)
  • Add edges to analysis h5 (#707)
  • Add support for new single animal DLC format (#704)
  • Datasets and paper link update
  • Add troubleshooting guide
  • Add more notebooks to docs (#698)
  • Talmo/pre v1.2.2 (#696)
  • Hide predicted instances with hotkey (#694)
  • Fix formatting to read and save tracking scores (#693)
  • add hide instance menu item and hotkey (#692)
  • Training monitor enhancements (#691)
  • Create unique default shortcuts (#686) (#690)
  • Fix topological sorting to always start with root node (#688)
  • Fix numpy conversion in inference (#687)
  • Bump minor version (#684)
  • Supervised Identity Prediction (#460) (#679)
  • Add support for new maDLC labels format (#678)

v1.2.6 (2022-07-26)

  • SLEAP v1.2.6 (#862)

v1.2.5 (2022-07-23)

  • SLEAP v1.2.5 (#857)
  • Main and develop should be at a singularity (#821)
  • v1.2.4 build attempt 2
  • SLEAP v1.2.4 (#818)

v1.2.4 (2022-06-28)

  • Remove cli.rst (back from the dead)
  • SLEAP v1.2.4
  • SLEAP v1.2.4
  • Remove low-scoring predictions before merging inference results (#817)
  • Fix h5py dependency (#815)
  • Support grayscale for SingleImageVideo backend (#789)
  • Allow user to set grayscale when replacing videos (mp4/avi only) (#787)
  • Add CLI sleap-render command to render videos (#796)
  • Choose video to generate suggestions (#786)
  • Analysis HDF5 should prefer user-labeled instance over predicted instance (#772)
  • Add button to toggle grayscale of current video (#788)
  • Revert "Add button to toggle grayscale"
  • Add button to toggle grayscale
  • Add support for videos that have less frames than the desired (random) Samples per Video (#783)
  • Generate suggestions for videos with less frames than samples per video (#781)
  • Update tracking docs (main) (#775)
  • Update tracking docs (#761)
  • Create multiple analysis files for multi-video projects (#768)
  • Update codecov.yml
  • Update codecov.yml
  • Create codecov.yml
  • Update bug_report.md
  • Contributing Guide, Code of Conduct, and Issues Template (#746)
  • Add links to Discussion page across website (to main) (#750)
  • Add option to predict on all videos (#749)
  • Update codecov badge token
  • Add links to discussion (#748)
  • Fix Imports in test_format.py (#732)
  • Test CI
  • SLEAP v1.2.3 (#727)

v1.2.3 (2022-05-10)

  • SLEAP v1.2.3 (#726)
  • Update links from murthylab to talmolab (#724)
  • Add support for AlphaTracker import (#716)
  • Speed-up labeling suggestions look-up (#709)
  • Add edges to analysis h5 (#707)
  • Add support for new single animal DLC format (#704)
  • Docs update (#700)
  • Datasets and paper link update
  • Add troubleshooting guide
  • Add more notebooks to docs (#699)
  • Add more notebooks to docs (#698)
  • Talmo/pre v1.2.2 (#696)
  • Hide predicted instances with hotkey (#694)
  • Fix formatting to read and save tracking scores (#693)
  • add hide instance menu item and hotkey (#692)
  • Training monitor enhancements (#691)
  • Create unique default shortcuts (#686) (#690)
  • Fix topological sorting to always start with root node (#688)
  • Fix numpy conversion in inference (#687)
  • Bump minor version (#684)
  • Supervised Identity Prediction (#460) (#679)
  • Add support for new maDLC labels format (#678)

v1.2.2 (2022-04-03)

  • Talmo/pre v1.2.2 (#696)
  • Hide predicted instances with hotkey (#694)
  • Fix formatting to read and save tracking scores (#693)
  • add hide instance menu item and hotkey (#692)
  • Training monitor enhancements (#691)
  • Create unique default shortcuts (#686) (#690)
  • Fix topological sorting to always start with root node (#688)
  • Fix numpy conversion in inference (#687)

v1.2.1 (2022-03-20)

  • v1.2.1 (#685)
  • Enable TensorFlow 2.8 support (#683)
  • Doc fixes (#682)
  • Fix CD and readme rendering on PyPI
  • v1.2.0 (#675)
  • Update docs for 1.2.0 (#674)
  • Fix quick install command
  • v1.1.5 (#577)

v1.2.0a6 (2022-02-24)

  • Build using tensorflow 2.6.3 (#660)
  • Lazy evaluation of frame list in inference CLI (#659)
  • Trigger build

v1.2.0a5 (2022-02-16)

  • Fix dependencies (#656)

v1.2.0a4 (2022-02-16)

  • Bump alpha version for hotfix
  • Fix gui inference (#655)

v1.2.0a3 (2022-02-13)

  • Fix CD builds (#653)
  • Update one last dep
  • Pre-1.2.0a3 CD updates (#652)
  • Make PAF distance penalty more usable (#650)
  • Use rich to print inference CLI inputs and provenance (#651)
  • Bump minor versions and relax some constraints (#647)
  • Fix data loading regression in #634 (#646)
  • Fix regression in #639 breaking multi-size inference (#645)
  • Fix path resolution in training & inference (#643)
  • Training job generation tweaks (#642)
  • Fix failing grayscale conversion at inference time on GPU (#639)
  • Drag and drop (#632)

v1.2.0a2 (2021-12-29)

  • Add cuda-nvcc (#623)
  • Training profile tweaks (#622)
  • Numpy conversions (#621)
  • Fixes single instance model visualization during training (#620)
  • Node/instance visibility fixes (#619)
  • Retrigger build
  • Rebuild conda package with cuda run requirements
  • Added command to return to last interacted frame (#613)
  • Update rich to 10.16.1
  • Add batch set button in video importer (#613)
  • Ensure randomly initialized points don't go beyond frame bounds (#613)
  • Build attempt -> 1.2.0a1
  • Fix PAF grouping when edges aren't sorted
  • Escape regex properly
  • Skip broken test locally
  • More permissive versions - h5py 3.1.0 to 3.6.0 - scipy 1.4.1 to 1.7.1
  • Update deprecated numpy usage
  • More permissive builds - Allows numpy 1.19.5 or 1.21.2 - Allows for tensorflow 2.6.2 or 2.7.0 - Separate build files for manual vs release - Only use custom conda packages for conda build
  • CI without cuda
  • Try CI with numpy 1.21.2
  • Fix edge case when evaluating centroid models
  • Disable build on push
  • Fix build and rerun

v1.2.0a1 (2021-12-21)

  • Talmo/tf26 (#617)
  • Try to fix ubuntu conda build
  • Fix conda builds

v1.2.0a0 (2021-11-17)

v1.2.0 (2022-03-15)

  • v1.2.0 (#675)
  • Update docs for 1.2.0 (#674)
  • Build using tensorflow 2.6.3 (#660)
  • Lazy evaluation of frame list in inference CLI (#659)
  • Trigger build
  • Fix dependencies (#656)
  • Bump alpha version for hotfix
  • Fix gui inference (#655)
  • Fix CD builds (#653)
  • Update one last dep
  • Pre-1.2.0a3 CD updates (#652)
  • Make PAF distance penalty more usable (#650)
  • Use rich to print inference CLI inputs and provenance (#651)
  • Bump minor versions and relax some constraints (#647)
  • Fix data loading regression in #634 (#646)
  • Fix regression in #639 breaking multi-size inference (#645)
  • Fix path resolution in training & inference (#643)
  • Training job generation tweaks (#642)
  • Fix failing grayscale conversion at inference time on GPU (#639)
  • Drag and drop (#632)
  • Add cuda-nvcc (#623)
  • Training profile tweaks (#622)
  • Numpy conversions (#621)
  • Fixes single instance model visualization during training (#620)
  • Node/instance visibility fixes (#619)
  • Retrigger build
  • Rebuild conda package with cuda run requirements
  • Added command to return to last interacted frame (#613)
  • Update rich to 10.16.1
  • Add batch set button in video importer (#613)
  • Ensure randomly initialized points don't go beyond frame bounds (#613)
  • Build attempt -> 1.2.0a1
  • Fix PAF grouping when edges aren't sorted
  • Escape regex properly
  • Skip broken test locally
  • More permissive versions - h5py 3.1.0 to 3.6.0 - scipy 1.4.1 to 1.7.1
  • Update deprecated numpy usage
  • More permissive builds - Allows numpy 1.19.5 or 1.21.2 - Allows for tensorflow 2.6.2 or 2.7.0 - Separate build files for manual vs release - Only use custom conda packages for conda build
  • CI without cuda
  • Try CI with numpy 1.21.2
  • Fix edge case when evaluating centroid models
  • Disable build on push
  • Fix build and rerun
  • Talmo/tf26 (#617)
  • Fix quick install command
  • Try to fix ubuntu conda build
  • Fix conda builds
  • Update to TensorFlow 2.7 (#609)
  • Update readme with help links
  • Pre-1.1.5 updates - Remove version from some places - Add open in colab button in model eval notebook - Update installation doc - Add a general Help page - Add some deep links to the CLI sections
  • High level load metrics (#573)
  • Labels.split() (#574)
  • Skeleton merge conflicts (#572)
  • Fix single instance predictor not using peak threshold param (#571)
  • Small GUI fixes (#570)
  • Empty instance fixes (#569)
  • Update codecov badge branch
  • Minor QOL update (#562)
  • Add CLI options for specifying the GPU when training (#547)
  • Minor typo fixed (#538)
  • fix code samples in documentation (#535)
  • Update docs
  • Bump version to 1.1.3
  • Revert changes from merge into main
  • Set Twine version to fix pypi uploads on build

v1.1.5 (2021-08-02)

  • v1.1.5 (#577)
  • Bump to v1.1.4 (#563)
  • Bump to 1.1.3 (#529)

v1.1.4 (2021-06-17)

  • Update codecov badge branch
  • Minor QOL update (#562)
  • Add CLI options for specifying the GPU when training (#547)
  • Minor typo fixed (#538)
  • fix code samples in documentation (#535)
  • Update docs
  • Bump version to 1.1.3
  • Revert changes from merge into main
  • Set Twine version to fix pypi uploads on build

v1.1.3 (2021-03-26)

  • Bump to 1.1.3 (#529)

v1.1.2 (2021-03-24)

  • Update notebook (#526)
  • Bump version (#525)
  • Update notebooks (#522)
  • Fix SizeMatcher inference scaling (#524)
  • Switch to using high level load_model when using CLI entrypoint (#523)
  • Fix SLEAP notebooks (#520)
  • Remove size matching twice in centroid training viz pipeline building (#519)
  • Bump version for release (#506)
  • [WIP] Fix multi size video support (#501)
  • Minor fixes and enhacements (#505)
  • Revert "Pulling finished work from #484 into a separate PR" (#504)
  • Fix post-training errors (#503)
  • Add support for specifying the minimum score in PAF matching (#502)
  • Isolated fix for issue #480 (#498)
  • Update docs (#495)
  • Pulling finished work from #484 into a separate PR (#493)
  • Merge main to develop post release (#492)
  • Merge main back into develop (#491)

v1.1.1 (2021-03-08)

  • Merge develop to master (#507)
  • Update docs (#496)
  • Test keep_files
  • Test docs subfolders
  • Remove appveyor
  • Release version 1.1.0
  • Prep for master->main (#475)

v1.1.0a12 (2021-02-23)

  • Bump version to 1.1.0a12
  • Separate versions of preferences and other config files (#488)

v1.1.0a11 (2021-02-23)

  • Bump pre-release version for mock test
  • master->main after rebase
  • Prep for master->main (#474)
  • Docs overhaul (#478)

v1.1.0a10 (2021-02-08)

  • Bump pre-release version
  • Miscellaneous QOL (#467)
  • Update PULL_REQUEST_TEMPLATE.md
  • Add CLA (#473)
  • Update authors list (#471)
  • Create PULL_REQUEST_TEMPLATE.md
  • Type check + Lint in CI (#470)
  • Multi-size videos in data pipelines (#440)
  • Symmetry-aware flip augmentation (#455)
  • Apply black to 'sleap' and 'tests' (#465)
  • Merging is now aware of the source video if available. (#462)

v1.1.0a9 (2021-01-17)

  • Bump prerelease version
  • Inference CLI fixes (#459)
  • Pin dev dependency

v1.1.0a8 (2021-01-09)

  • Bump prerelease version
  • Workaround for Qt freezing in Mac OS Big Sur (fixes #450)
  • Implement offset regression (#447)
  • Add a couple of top level aliases from nn.system module (#446)
  • Inference fixes and cleanup (#445)
  • windows path
  • ignore order
  • ignore order
  • realistic tests
  • tests
  • Small fix: correctly pass arguments (#433)
  • Add downloads and docs badge
  • extract
  • data
  • format
  • adjust
  • wip
  • Add single instance to stride resolution in the GUI
  • Bump initial learning rate to 1e-3 for pretrained profiles
  • Fix test
  • Add more training profiles with pretrained encoder - Removed mobilenetv2 profile -- all profiles default to efficientnetb0 (but this can be easily changed from the dropdown in the GUI) - Adjust default bottomup profiles to have equal loss weights and larger sigma for PAFs
  • Add test for variable input channels
  • Fix model construction - Add tests for forward pass
  • Fix profiles
  • Add pretrained encoder models to GUI - Add two base profiles
  • Update conda build scripts
  • Initial implementation of pretrained encoder backbone.
  • Update gitignore
  • Reset build workflow to release-triggered
  • Try to fix anaconda login on ubuntu (again)
  • Try to fix anaconda login on ubuntu
  • Manually trigger build and fix anaconda login
  • No push triggering for builds :)
  • Switch to github.event.release.prerelease for build conditional
  • Trigger building manually on push
  • Update setup-miniconda and website workflow

v1.1.0a7 (2020-12-10)

  • Update CI and build conditionals
  • Bump alpha version
  • High level model loading interface - sleap.load_model (sleap.nn.inference.load_model) instantiates the appropriate predictor class and tracker based on simple args. - Standardize inference_model attribute
  • Remove deprecation notice from tracker cleaner
  • Explicit OS versions in CI workflow
  • Move PySide2 to dedicated conda package - Explicit OS versions in the build script
  • Bump minor version to 1.0.10
  • Switch back to build triggering on release only
  • Fix typo in instance cropper
  • Add a LambdaMap transformer for generic transformations in pipelines - Doc fixes
  • Add input key specification in some transformers for flexibility. - Fix some docs
  • Remove transformer for PAF grouping from data pipelines
  • (Hopefully the last) PAF grouping overhaul - Drastically improved performance for batch inference - Cleaned up API and added test coverage for main algorithm steps - Improved docs
  • Fix CPU thrashing
  • Push all 'old' confige to the end without altering order otherwise.
  • Nits
  • lint
  • add comment
  • Fix config order when loading
  • Try to fix conda builds
  • Add test release filtering to release checker
  • Lint / nits
  • Fix config test
  • Add old training profiles back in

v1.1.0a6 (2020-12-04)

  • Remove redundant str from LabeledFrame
  • Bump alpha version (for CI test)
  • Scope CI workflow to only trigger when library or tests are updated
  • Test package build with new sleap/tensorflow package - Website workflow now triggers only on change to readme or docs/* - Update environment files
  • Fix path again
  • Fix paths for website builder
  • Fix shell for website builder
  • Reset package build script to release triggered
  • Checkout before install
  • Install base package before building website
  • Website builder makefile
  • Just specify python version instead of conda
  • Use conda for website build
  • Website build action fix
  • Implement website build action
  • Fix branch conditional
  • Fix env var in Windows build

v1.1.0a5 (2020-12-03)

  • Fix build script - Ubuntu: PyPI and conda packages should be working, testing with wildcard filename - Windows: disable pip package upload (worked before because it was skipped) - Windows: try build and upload with powershell

v1.1.0a4 (2020-12-03)

  • Bump alpha version (for CI test)

v1.1.0a3 (2020-12-03)

  • Bump alpha version (for CI test)
  • Update miniconda GH action version

v1.1.0a2 (2020-11-16)

  • Bump alpha version
  • Bump alpha version
  • Update the GUI skeleton after inference if it changed (#414)
  • fix flow tracker failing at flow_shift_instances()
  • Hotfix for backbone output stride detection - This will soon be handled differently/removed from the config entirely
  • Update conda build.sh
  • Update badges
  • Fix merge typo
  • Reset build configuration for release-based processing
  • Attempt to fix Windows conda build (5)
  • Attempt to fix Windows conda build (4)
  • Attempt to fix Windows conda build (3)
  • Attempt to fix Windows conda build (2)
  • Attempt to fix Windows conda build
  • Bump prerelease version
  • Fix new export commands
  • Menu reorganization - Instance selection moved to Go menu - Fit instances to view moved to top of View menu - Render clip moved to View menu - Instance, prediction and track manipulation moved to Labels menu - Added more options for exporting packages - Add links to documentation, code and website to Help menu - Add release checking to Help menu
  • Release checker - Added new version checking through the GitHub REST API
  • Add the ability to export image data for custom frames and suggestions - Labels.save and labels.save (instance method) can now embed the user labeled frames, all labeled frames (including empty ones), and/or suggested frames (which don't have associated LabeledFrames). This makes it easier to export frames for inference together with the ones used for training.
  • Add convenience methods for interacting with exported packages - HDF5Videos now have has_embedded_images, source_video_available, and embedded_frame_inds properties to check for embedded images - HDF5Video now auto-detects the exported package format, indicated by having sub-datasets named "/video" and "/frame_numbers" - Tests
  • Bump alpha version
  • Add tests for fit instance rect detection
  • Training config validation in the GUI - Add validation fraction to config editor - Remove output stride from backbone config UI - Infer output stride from heads - Constrain max stride from heads - Disable tensorboard logging by default - Disable OHKM by default - Correctly detect multiple built-in profiles
  • Update built-in baseline profiles - Remove dataset specific fields (e.g., "anchor_part") - Add medium/large RF variants - Remove unused profiles - Disable tensorboard logging by default - Standardize optimization parameters
  • Add head type to the run name suffix when saving a training pipeline - Prevents multi-model training jobs from being overwritten (#415)
  • Keep previous state when fit to zoom is enabled with no instances - Addresses use case of when user is zoomed to instances but then seeks back/forward to frames with no predictions (#416)
  • Bump alpha version
  • Minor codestyle fixes and update deprecated attrs constructor
  • Set h5py required version to 2.10 to prevent breaking tf.keras in 3.0
  • Add maDLC labels import support
  • Conda package build tweaks - Explicit pip install of PyPI dependencies in Conda package build - Conda package version from sleap.version - Test after build
  • Re-bump version
  • Revert alpha version
  • Bump alpha version
  • Fix test
  • Attempt to fix conda build - Remove redundant packages with pip managed ones - Switch to just installing cuda rather than tensorflow using conda - Specify default numpy version
  • Test fix
  • Fix for Labels.has_frame when using cache - More tests
  • Clean up environment and dependency redundancy and update appveyor
  • Bump alpha version
  • Add tests
  • Remove conflicting predictions from labels when merging after inference. - Predicted instances in frames that are also present in the new labels will be removed before merging (fixes #413). - Formatting
  • Formatting and style
  • Add remove_user_instances and remove_predictions to Labels - These will remove user or predicted instances from the dataset, optionally conditioned on another dataset to remove conflicts.
  • Add has_frame method to Labels for quick checking of frame existence
  • Add describe method to Labels for easy inspection of dataset stats
  • Bump minor alpha version
  • Version fence numpy for TensorFlow update
  • Bump minor alpha version
  • Switch to hashing LabeledFrames by ID - Drastically improves frame removal time, and we're not using equality by attribute values anyway - Added more flexible frame removal methods
  • Bump tensorflow from 2.1 to 2.1.2
  • Fix type warning in run_tracker
  • Bump to 1.0.9
  • Update docs with link to preprint

v1.1.0a1 (2020-11-06)

v1.1.0 (2021-02-23)

  • Remove appveyor
  • Release version 1.1.0
  • Bump version to 1.1.0a12
  • Separate versions of preferences and other config files (#488)
  • Bump pre-release version for mock test
  • master->main after rebase
  • Prep for master->main (#474)
  • Prep for master->main (#475)
  • Docs overhaul (#478)
  • Bump pre-release version
  • Miscellaneous QOL (#467)
  • Update PULL_REQUEST_TEMPLATE.md
  • Add CLA (#473)
  • Update authors list (#471)
  • Create PULL_REQUEST_TEMPLATE.md
  • Type check + Lint in CI (#470)
  • Multi-size videos in data pipelines (#440)
  • Symmetry-aware flip augmentation (#455)
  • Apply black to 'sleap' and 'tests' (#465)
  • Merging is now aware of the source video if available. (#462)
  • Bump prerelease version
  • Inference CLI fixes (#459)
  • Pin dev dependency
  • Bump prerelease version
  • Workaround for Qt freezing in Mac OS Big Sur (fixes #450)
  • Implement offset regression (#447)
  • Add a couple of top level aliases from nn.system module (#446)
  • Inference fixes and cleanup (#445)
  • windows path
  • ignore order
  • ignore order
  • realistic tests
  • tests
  • Small fix: correctly pass arguments (#433)
  • Add downloads and docs badge
  • extract
  • data
  • format
  • adjust
  • wip
  • Add single instance to stride resolution in the GUI
  • Bump initial learning rate to 1e-3 for pretrained profiles
  • Fix test
  • Add more training profiles with pretrained encoder - Removed mobilenetv2 profile -- all profiles default to efficientnetb0 (but this can be easily changed from the dropdown in the GUI) - Adjust default bottomup profiles to have equal loss weights and larger sigma for PAFs
  • Add test for variable input channels
  • Fix model construction - Add tests for forward pass
  • Fix profiles
  • Add pretrained encoder models to GUI - Add two base profiles
  • Update conda build scripts
  • Initial implementation of pretrained encoder backbone.
  • Update gitignore
  • Reset build workflow to release-triggered
  • Try to fix anaconda login on ubuntu (again)
  • Try to fix anaconda login on ubuntu
  • Manually trigger build and fix anaconda login
  • No push triggering for builds :)
  • Switch to github.event.release.prerelease for build conditional
  • Trigger building manually on push
  • Update setup-miniconda and website workflow
  • Update CI and build conditionals
  • Bump alpha version
  • High level model loading interface - sleap.load_model (sleap.nn.inference.load_model) instantiates the appropriate predictor class and tracker based on simple args. - Standardize inference_model attribute
  • Remove deprecation notice from tracker cleaner
  • Explicit OS versions in CI workflow
  • Move PySide2 to dedicated conda package - Explicit OS versions in the build script
  • Bump minor version to 1.0.10
  • Switch back to build triggering on release only
  • Fix typo in instance cropper
  • Add a LambdaMap transformer for generic transformations in pipelines - Doc fixes
  • Add input key specification in some transformers for flexibility. - Fix some docs
  • Remove transformer for PAF grouping from data pipelines
  • (Hopefully the last) PAF grouping overhaul - Drastically improved performance for batch inference - Cleaned up API and added test coverage for main algorithm steps - Improved docs
  • Fix CPU thrashing
  • Push all 'old' confige to the end without altering order otherwise.
  • Nits
  • lint
  • add comment
  • Fix config order when loading
  • Try to fix conda builds
  • Remove redundant str from LabeledFrame
  • Bump alpha version (for CI test)
  • Scope CI workflow to only trigger when library or tests are updated
  • Test package build with new sleap/tensorflow package - Website workflow now triggers only on change to readme or docs/* - Update environment files
  • Fix path again
  • Fix paths for website builder
  • Fix shell for website builder
  • Reset package build script to release triggered
  • Checkout before install
  • Install base package before building website
  • Website builder makefile
  • Just specify python version instead of conda
  • Use conda for website build
  • Website build action fix
  • Implement website build action
  • Fix branch conditional
  • Fix env var in Windows build
  • Fix build script - Ubuntu: PyPI and conda packages should be working, testing with wildcard filename - Windows: disable pip package upload (worked before because it was skipped) - Windows: try build and upload with powershell
  • Bump alpha version (for CI test)
  • Bump alpha version (for CI test)
  • Add test release filtering to release checker
  • Lint / nits
  • Fix config test
  • Add old training profiles back in
  • Update miniconda GH action version
  • Bump alpha version
  • Update badges
  • Fix merge typo
  • Reset build configuration for release-based processing
  • Attempt to fix Windows conda build (5)
  • Attempt to fix Windows conda build (4)
  • Attempt to fix Windows conda build (3)
  • Attempt to fix Windows conda build (2)
  • Attempt to fix Windows conda build
  • Fix requirements.txt
  • Update GH Action dependency
  • Initial attempt at package build workflow (2)
  • Initial attempt at package build workflow
  • Keep confmap visualization at fixed zoom.
  • Switch to tf.data.Dataset.cache for preloading. - Appears to avoid deadlocks with the generator method in 2.3.
  • Fix inference model creation for bottomup and single instance
  • Fix training pipeline creation with shuffling - Previously was not correctly setting the shuffle buffer size attribute
  • Move inference model creation to private method for flexibility
  • Enable visualization of raw instance point arrays - Add automatic conversion of image tensors to numpy arrays
  • Implement bottom-up inference layer and model - Update predictor to use inference classes - Add automatic pipeline creation for Labels in InferenceModels
  • PAF grouping module fixes - Fix incorrectly saving line scores to fraction correct score - Handle matching when no peak candidates available for particular edges - Add batch-level grouping method to PAFScorer - Docstrings
  • Add pipeline creation method to sleap.Labels - Creates a (optionally) batched pipeline for reading labels
  • Set default batch sizes for inference
  • Modify some defaults for training forms - Set marker edge color to be transparent in training monitor so overlapping markers are visible - Fix training monitor batch number field (no longer in logs in TF2.3)
  • Fix peak finding for visualization during topdown instance training
  • Fix for topdown cropping when no peaks found in batch
  • Add single instance inference layer and model - Tests - Update predictor - Minor docstring fixes
  • Fix RandomCropper and add tests
  • Set coverage to sleap/
  • Skip conda list on windows since it's still broken
  • Try to fix workflow again
  • Try to fix workflow
  • Try out codecov for coverage via workflow - Merge pytest job step
  • Fix broken unit tests - Native file dialog check on Linux (default dtype changes by platform) - explicit dtype for describe_tensors tests
  • Add caching and attempt to fix broken tests - conda list breaks on windows, so just removing it - Try to fix broken gui tests by running via xvfb on ubuntu
  • Fix workflow command and add environment file without cuda
  • Pilot GH Actions testing
  • Add channels to environment.yml
  • Bump minor version
  • Recreate model in keras model inference transformer
  • Add RandomCropper transformer for data augmentation - Applies random cropping to the input. Useful for training on very large FOV/resolution images. - Optimize bottom-up data generators for large number of instances.
  • Add range specification of example indices to LabelsReader
  • Add nn.data.pipelines and nn.inference to toplevel imports
  • Add range specification of example indices to VideoReader
  • Add pipeline creation method to sleap.Video - Creates a VideoReader-based pipeline from the Video instance with optional batching, prefetching and frame index specification - InferenceModel.predict() will automatically call this method if predicting on a sleap.Video
  • Version fence numpy due to TF 2.3 requirements
  • Add base InferenceLayer and InferenceModel classes - These handle all preprocessing and variable size output batching during inference. - Add docstrings and tests for new topdown classes. - Automatically infer model output stride. - Enable local offset refinement for peak finding.
  • Add option to convert unragged examples to numpy arrays - Uses the same utility function as tf.keras.Model.predict
  • Revert colorspace normalization to using static shapes
  • Add bounds for confmaps viz
  • Clean up and unify peak finding methods - find_local_peaks and find_global_peaks now work as single entrypoint and allow specification of the refinement method - Re-enabled quarter pixel local-offset refinement
  • Fix for global peak finding with integral regression - Fixes edge case where the first peak coordinate is NaN results in crash when cropping local patches. - Add test for edge case.
  • Update conda.yml
  • Create conda.yml
  • Change model construction to create flat list of output tensors. - Fixes bottom-up training. - Necessary in order to keep shapes lined up with data generator. - Head tensor specification should just refer to the output tensor names explicitly to avoid ambiguous nesting/ordering.
  • Clean up topdown predictor classmethod creation
  • Fix evaluate_model saving metrics even if save=False is specified
  • Separate topdown model creation from loader classmethod. - Allows for creation of the predictor from memory. - Automatically created when running predict() if not already provided.
  • Fix grouping dtype sometimes being incorrect when using GT instances
  • Remove duplicate PyPI requirements from environment.yml - These get pulled in through setup.py -> requirements.txt.
  • Fix broken normalizer test - Switched to using static shapes, which should be known from the provider anyway. - Unclear what the cause is, but it seems that dynamic shapes can't be evaluated properly for inferring normalization mode, at least in the test example.
  • Fix topdown training visualization
  • Docstrings and tests for FindInstancePeaks - Now supports raw tensors without being in an example. - Added tests with a dummy model.
  • Peak finding fixes for cases with no peaks - Added tests for main peak finding methods
  • Fix topdown model when max_instances IS specified
  • Fix topdown model when max_instances is not specified
  • Set image shape explicitly in providers. - Necessary in some pipeline configurations where the shape may need to be specified for certain ops like resizing.
  • Make sure unrag_tensor uses the right dtype for calculating the shape
  • Fix ground truth instance peaks layer - Now matches sample-wise and matches the correct number of centroids - Add more tests to catch this case
  • Implement new topdown ground truth layers - Refactoring of nn.inference and docstrings - Tests - Edge case still needs to be fixed: matching in ground truth instance peaks layer will duplicate instances to match bounding shape. This results in one broken test for tracking.
  • Unragging functions for converting ragged tensors to concrete - unrag_example: unrags all items in a dict to their bounding shape. - unrag_tensor: unrag a single tensor with possibly multiple ragged dimensions and with the ability to specify the max size to pad to. - Add option to leave batched examples as ragged tensors in Batcher
  • Add general purpose utility for describing tensors - Use in pipeline.describe()
  • Add pipeline peek and describe methods - QOL additions to make it easier to inspect the outputs of pipelines when composing custom ones.
  • Specify tensor shapes for variable length values in LabelsProvider - Needed in TF 2.3 for ragged batching
  • QOL: Better string representations for some of the core data structures - Labels, LabeledFrame and Skeleton now show counts instead of spamming the full default attrs repr and str.
  • Add slice indexing to labels
  • Enable saving labels packages with images from frames without instances - Makes it possible to save extra images, e.g., for inference or for use in semi-supervised learning contexts.
  • Single model topdown implementation. - Centroid cropping and instance prediction all in one tf.keras.Model! - Results in massive speed-up over the tf.data.Dataset-based inference with separate models. - Still missing version with ground truth for mocking sub-components.
  • Color by track when plotting labeled frame via lf.plot()
  • Extend image resizing and padding to work with rank 4 (batched) images.
  • Remove old implementations of peak finding functions for transformers
  • Re-implement general purpose peak finders. - These are a little redundant, but enable the fast implementation of local and global peak finding using integral regression with batches. - This replaces the implementations in nn.data.inference. - Fixes batched global peak finding bug.
  • Parametrize device for KeyMover transformer - Remove debug print statements
  • Remove unused conda-cpu build config
  • Update tests for TF2.3 - Fix layer name test: tf.keras.layers.Add sometimes gets instantiated as a direct op? - Fix Batcher to check for ragged tensor type before conversion. This is because tf.data.experimental.dense_to_ragged_batch will now leave elements as tf.Tensors if shape is fixed and known.
  • Update to TensorFlow 2.3 - Replace tensorflow CUDA packages with direct cudatoolkit/cudnn since we install tensorflow from pypi anyway. - Update AppVeyor build script hack to ignore conda cuda packages for lower build times.

v1.0.10a9 (2020-11-16)

  • Bump alpha version
  • Update the GUI skeleton after inference if it changed (#414)
  • fix flow tracker failing at flow_shift_instances()
  • Hotfix for backbone output stride detection - This will soon be handled differently/removed from the config entirely
  • Update conda build.sh

v1.0.10a8 (2020-11-06)

  • Bump prerelease version
  • Fix new export commands
  • Menu reorganization - Instance selection moved to Go menu - Fit instances to view moved to top of View menu - Render clip moved to View menu - Instance, prediction and track manipulation moved to Labels menu - Added more options for exporting packages - Add links to documentation, code and website to Help menu - Add release checking to Help menu
  • Release checker - Added new version checking through the GitHub REST API
  • Add the ability to export image data for custom frames and suggestions - Labels.save and labels.save (instance method) can now embed the user labeled frames, all labeled frames (including empty ones), and/or suggested frames (which don't have associated LabeledFrames). This makes it easier to export frames for inference together with the ones used for training.
  • Add convenience methods for interacting with exported packages - HDF5Videos now have has_embedded_images, source_video_available, and embedded_frame_inds properties to check for embedded images - HDF5Video now auto-detects the exported package format, indicated by having sub-datasets named "/video" and "/frame_numbers" - Tests

v1.0.10a7 (2020-11-05)

  • Bump alpha version
  • Add tests for fit instance rect detection
  • Training config validation in the GUI - Add validation fraction to config editor - Remove output stride from backbone config UI - Infer output stride from heads - Constrain max stride from heads - Disable tensorboard logging by default - Disable OHKM by default - Correctly detect multiple built-in profiles
  • Update built-in baseline profiles - Remove dataset specific fields (e.g., "anchor_part") - Add medium/large RF variants - Remove unused profiles - Disable tensorboard logging by default - Standardize optimization parameters
  • Add head type to the run name suffix when saving a training pipeline - Prevents multi-model training jobs from being overwritten (#415)
  • Keep previous state when fit to zoom is enabled with no instances - Addresses use case of when user is zoomed to instances but then seeks back/forward to frames with no predictions (#416)

v1.0.10a6 (2020-11-03)

  • Bump alpha version
  • Minor codestyle fixes and update deprecated attrs constructor
  • Set h5py required version to 2.10 to prevent breaking tf.keras in 3.0
  • Add maDLC labels import support

v1.0.10a5 (2020-10-29)

  • Conda package build tweaks - Explicit pip install of PyPI dependencies in Conda package build - Conda package version from sleap.version - Test after build

v1.0.10a4 (2020-10-28)

  • Re-bump version
  • Revert alpha version
  • Bump alpha version
  • Fix test
  • Attempt to fix conda build - Remove redundant packages with pip managed ones - Switch to just installing cuda rather than tensorflow using conda - Specify default numpy version

v1.0.10a3 (2020-10-28)

  • Test fix
  • Fix for Labels.has_frame when using cache - More tests
  • Clean up environment and dependency redundancy and update appveyor
  • Bump alpha version
  • Add tests
  • Remove conflicting predictions from labels when merging after inference. - Predicted instances in frames that are also present in the new labels will be removed before merging (fixes #413). - Formatting
  • Formatting and style
  • Add remove_user_instances and remove_predictions to Labels - These will remove user or predicted instances from the dataset, optionally conditioned on another dataset to remove conflicts.
  • Add has_frame method to Labels for quick checking of frame existence
  • Add describe method to Labels for easy inspection of dataset stats

v1.0.10a2 (2020-10-22)

  • Bump minor alpha version
  • Version fence numpy for TensorFlow update

v1.0.10a1 (2020-10-22)

v1.0.10 (2020-12-10)

  • Bump minor version to 1.0.10
  • Fix CPU thrashing
  • Push all 'old' confige to the end without altering order otherwise.
  • Nits
  • lint
  • add comment
  • Fix config order when loading
  • Add test release filtering to release checker
  • Lint / nits
  • Fix config test
  • Add old training profiles back in
  • Bump alpha version
  • Update the GUI skeleton after inference if it changed (#414)
  • fix flow tracker failing at flow_shift_instances()
  • Hotfix for backbone output stride detection - This will soon be handled differently/removed from the config entirely
  • Update conda build.sh
  • Bump prerelease version
  • Fix new export commands
  • Menu reorganization - Instance selection moved to Go menu - Fit instances to view moved to top of View menu - Render clip moved to View menu - Instance, prediction and track manipulation moved to Labels menu - Added more options for exporting packages - Add links to documentation, code and website to Help menu - Add release checking to Help menu
  • Release checker - Added new version checking through the GitHub REST API
  • Add the ability to export image data for custom frames and suggestions - Labels.save and labels.save (instance method) can now embed the user labeled frames, all labeled frames (including empty ones), and/or suggested frames (which don't have associated LabeledFrames). This makes it easier to export frames for inference together with the ones used for training.
  • Add convenience methods for interacting with exported packages - HDF5Videos now have has_embedded_images, source_video_available, and embedded_frame_inds properties to check for embedded images - HDF5Video now auto-detects the exported package format, indicated by having sub-datasets named "/video" and "/frame_numbers" - Tests
  • Bump alpha version
  • Add tests for fit instance rect detection
  • Training config validation in the GUI - Add validation fraction to config editor - Remove output stride from backbone config UI - Infer output stride from heads - Constrain max stride from heads - Disable tensorboard logging by default - Disable OHKM by default - Correctly detect multiple built-in profiles
  • Update built-in baseline profiles - Remove dataset specific fields (e.g., "anchor_part") - Add medium/large RF variants - Remove unused profiles - Disable tensorboard logging by default - Standardize optimization parameters
  • Add head type to the run name suffix when saving a training pipeline - Prevents multi-model training jobs from being overwritten (#415)
  • Keep previous state when fit to zoom is enabled with no instances - Addresses use case of when user is zoomed to instances but then seeks back/forward to frames with no predictions (#416)
  • Bump alpha version
  • Minor codestyle fixes and update deprecated attrs constructor
  • Set h5py required version to 2.10 to prevent breaking tf.keras in 3.0
  • Add maDLC labels import support
  • Conda package build tweaks - Explicit pip install of PyPI dependencies in Conda package build - Conda package version from sleap.version - Test after build
  • Re-bump version
  • Revert alpha version
  • Bump alpha version
  • Fix test
  • Attempt to fix conda build - Remove redundant packages with pip managed ones - Switch to just installing cuda rather than tensorflow using conda - Specify default numpy version
  • Test fix
  • Fix for Labels.has_frame when using cache - More tests
  • Clean up environment and dependency redundancy and update appveyor
  • Bump alpha version
  • Add tests
  • Remove conflicting predictions from labels when merging after inference. - Predicted instances in frames that are also present in the new labels will be removed before merging (fixes #413). - Formatting
  • Formatting and style
  • Add remove_user_instances and remove_predictions to Labels - These will remove user or predicted instances from the dataset, optionally conditioned on another dataset to remove conflicts.
  • Add has_frame method to Labels for quick checking of frame existence
  • Add describe method to Labels for easy inspection of dataset stats
  • Bump minor alpha version
  • Version fence numpy for TensorFlow update
  • Bump minor alpha version
  • Switch to hashing LabeledFrames by ID - Drastically improves frame removal time, and we're not using equality by attribute values anyway - Added more flexible frame removal methods
  • Bump tensorflow from 2.1 to 2.1.2
  • Fix type warning in run_tracker
  • Bump to 1.0.9
  • Update docs with link to preprint
  • Fix track serialization bug when using Kalman filter - This would sometimes create tracks with spawn frames set as numpy arrays, which would fail to serialize after tracking.
  • Fix learning finished dialog signal attribute name
  • Fix part affinity field preview overlay
  • Add sleap.io.asyncvideo module.
  • Close gui windows after test.
  • Update correctly the configuration for validation fraction
  • Add set_message method.
  • Improve test coverage and typing.
  • Add clean target to Makefile.
  • Better docstrings, minor refactoring.
  • Add module docstring.
  • Better docstrings.
  • More/better docstrings for io.format
  • Support for pafs in model overlay.
  • Base class for overlays, better docstrings, pafs.
  • FormBuilderModalDialog can init by form name.
  • Add module docstring.
  • Better docstrings.
  • Add module docstring.
  • Better docstrings.
  • Better docstrings.
  • Better docstrings.
  • Use PyPI sleap account (not api token)
  • Bump alpha version (for testing pypi api token).
  • Use PyPI api token (from sleap account).
  • Add module docstring and typing.
  • Add module docstring.
  • Add module docstring.
  • Add docstring and test.
  • Add docstrings.
  • Add docstrings.
  • Add module docstring.
  • Add module docstring.
  • Add docstrings and test coverage.
  • Improve module docstring.
  • Improve docstrings and test coverage.
  • Remove print statements and add docstring to nn.tracking.run_tracker
  • Comment typo
  • Metrics evaluation improvements - Add ability to consider non-user instances as GT - Fix docstrings - Update matching to not mutate frame instance lists
  • Fix many docstrings and type annotations in io.dataset - Fix typo in numpy index support in contains
  • Add numpy index support to Labels.contains
  • Added more convenience accessors to Labels - labels[(Video, numpy)] - labels[Video, frame_idx]
  • Add Labels.has_missing_videos property - Tests
  • Add Video.is_missing property to check for missing file - Tests - Fix some comments/docstring formats
  • Add tests for sleap.load_file
  • Add convenience scalar skeleton and video properties to Labels - Returns the first skeleton/video for single skeleton/video labels - Tests
  • Add instance method for saving labels. - This wraps Labels.save_file(labels, ...) -> labels.save(...)
  • Remove unused labels export and data generation methods
  • Add support for sleap.Labels indexing with numpy arrays - Update the docstring for getitem - Tests
  • Fix typo in convenience LabeledFrame plotting methods and add note.
  • High level sleap labels loader - Simple loading via sleap.load_file() - Automatically searches for missing videos in the labels folder. - Adjust module docstring - Add docstring to find_path_using_paths
  • Add convenience plotting methods for labeled frames.
  • Typo in module docstring
  • Comment out pipeline timing debug.
  • Add methods and tests for NumpyVideo.
  • Add debug timing for pipeline transformers.
  • Add submodule for zmq messaging.

v1.0.9a3 (2020-08-18)

  • Disable GPU memory pre-allocation by default during training. - This affects some systems with low memory GPUs.
  • Use empty window when opening new project.
  • Add method to rotate/translate instance w/ matrix.
  • Better docstring, rename private methods.
  • Better docstring.

v1.0.9a2 (2020-08-17)

  • Hotfix for batcher unragging - Checks for tensor class before attempting to unrag. - Bump to 1.0.9a2
  • Better docstrings.
  • Validate skeleton for bottom up models.
  • Add PAF magnitude TensorBoard/saved image visualization during training
  • Add set_message method.
  • Improve test coverage and typing.
  • Add clean target to Makefile.
  • Better docstrings, minor refactoring.
  • Add module docstring.
  • Better docstrings.
  • More/better docstrings for io.format
  • (Really) add coveralls badge
  • Add Coveralls badge
  • Support for pafs in model overlay.
  • Base class for overlays, better docstrings, pafs.
  • FormBuilderModalDialog can init by form name.
  • Add module docstring.
  • Better docstrings.
  • Add module docstring.
  • Better docstrings.
  • Better docstrings.
  • Better docstrings.

v1.0.9a1 (2020-07-31)

v1.0.9 (2020-09-04)

  • Bump to 1.0.9
  • Update docs with link to preprint
  • Fix track serialization bug when using Kalman filter - This would sometimes create tracks with spawn frames set as numpy arrays, which would fail to serialize after tracking.
  • Fix learning finished dialog signal attribute name
  • Fix part affinity field preview overlay
  • Add sleap.io.asyncvideo module.
  • Close gui windows after test.
  • Update correctly the configuration for validation fraction
  • Disable GPU memory pre-allocation by default during training. - This affects some systems with low memory GPUs.
  • Use empty window when opening new project.
  • Hotfix for batcher unragging - Checks for tensor class before attempting to unrag. - Bump to 1.0.9a2
  • Add method to rotate/translate instance w/ matrix.
  • Better docstring, rename private methods.
  • Better docstring.
  • Better docstrings.
  • Validate skeleton for bottom up models.
  • Add PAF magnitude TensorBoard/saved image visualization during training
  • Add set_message method.
  • Improve test coverage and typing.
  • Add clean target to Makefile.
  • Better docstrings, minor refactoring.
  • Add module docstring.
  • Better docstrings.
  • More/better docstrings for io.format
  • Support for pafs in model overlay.
  • Base class for overlays, better docstrings, pafs.
  • FormBuilderModalDialog can init by form name.
  • Add module docstring.
  • Better docstrings.
  • Add module docstring.
  • Better docstrings.
  • Better docstrings.
  • Better docstrings.
  • Use PyPI sleap account (not api token)
  • Bump alpha version (for testing pypi api token).
  • Use PyPI api token (from sleap account).
  • Add module docstring and typing.
  • Add module docstring.
  • Add module docstring.
  • Add docstring and test.
  • Add docstrings.
  • Add docstrings.
  • Add module docstring.
  • Add module docstring.
  • Add docstrings and test coverage.
  • Improve module docstring.
  • Improve docstrings and test coverage.
  • Remove print statements and add docstring to nn.tracking.run_tracker
  • Comment typo
  • Metrics evaluation improvements - Add ability to consider non-user instances as GT - Fix docstrings - Update matching to not mutate frame instance lists
  • Fix many docstrings and type annotations in io.dataset - Fix typo in numpy index support in contains
  • Add numpy index support to Labels.contains
  • Added more convenience accessors to Labels - labels[(Video, numpy)] - labels[Video, frame_idx]
  • Add Labels.has_missing_videos property - Tests
  • Add Video.is_missing property to check for missing file - Tests - Fix some comments/docstring formats
  • Add tests for sleap.load_file
  • Add convenience scalar skeleton and video properties to Labels - Returns the first skeleton/video for single skeleton/video labels - Tests
  • Add instance method for saving labels. - This wraps Labels.save_file(labels, ...) -> labels.save(...)
  • Remove unused labels export and data generation methods
  • Add support for sleap.Labels indexing with numpy arrays - Update the docstring for getitem - Tests
  • Fix typo in convenience LabeledFrame plotting methods and add note.
  • High level sleap labels loader - Simple loading via sleap.load_file() - Automatically searches for missing videos in the labels folder. - Adjust module docstring - Add docstring to find_path_using_paths
  • Add convenience plotting methods for labeled frames.
  • Typo in module docstring
  • Add set_message method.
  • Improve test coverage and typing.
  • Add clean target to Makefile.
  • Better docstrings, minor refactoring.
  • Add module docstring.
  • Better docstrings.
  • More/better docstrings for io.format
  • (Really) add coveralls badge
  • Add Coveralls badge
  • Support for pafs in model overlay.
  • Base class for overlays, better docstrings, pafs.
  • FormBuilderModalDialog can init by form name.
  • Add module docstring.
  • Better docstrings.
  • Add module docstring.
  • Better docstrings.
  • Better docstrings.
  • Better docstrings.
  • Use PyPI sleap account (not api token)
  • Bump alpha version (for testing pypi api token).
  • Use PyPI api token (from sleap account).
  • Add module docstring and typing.
  • Add module docstring.
  • Add module docstring.
  • Add docstring and test.
  • Add docstrings.
  • Add docstrings.
  • Add module docstring.
  • Add module docstring.
  • Add docstrings and test coverage.
  • Improve module docstring.
  • Improve docstrings and test coverage.
  • Remove print statements and add docstring to nn.tracking.run_tracker
  • Comment typo
  • Metrics evaluation improvements - Add ability to consider non-user instances as GT - Fix docstrings - Update matching to not mutate frame instance lists
  • Fix many docstrings and type annotations in io.dataset - Fix typo in numpy index support in contains
  • Add numpy index support to Labels.contains
  • Added more convenience accessors to Labels - labels[(Video, numpy)] - labels[Video, frame_idx]
  • Add Labels.has_missing_videos property - Tests
  • Add Video.is_missing property to check for missing file - Tests - Fix some comments/docstring formats
  • Add tests for sleap.load_file
  • Add convenience scalar skeleton and video properties to Labels - Returns the first skeleton/video for single skeleton/video labels - Tests
  • Add instance method for saving labels. - This wraps Labels.save_file(labels, ...) -> labels.save(...)
  • Remove unused labels export and data generation methods
  • Add support for sleap.Labels indexing with numpy arrays - Update the docstring for getitem - Tests
  • Fix typo in convenience LabeledFrame plotting methods and add note.
  • High level sleap labels loader - Simple loading via sleap.load_file() - Automatically searches for missing videos in the labels folder. - Adjust module docstring - Add docstring to find_path_using_paths
  • Add convenience plotting methods for labeled frames.
  • Typo in module docstring
  • Comment out pipeline timing debug.
  • Add methods and tests for NumpyVideo.
  • Add debug timing for pipeline transformers.
  • Add submodule for zmq messaging.

v1.0.8 (2020-07-15)

  • Bump version.
  • Bug fixes to metrics dialogs.
  • Make sure we got frames when safely loading frames
  • Add basic metrics GUI.
  • Support for instance-following crop in vis output.
  • Control colors used for exporting visuals on video.
  • Allow exporting entire annotated video.

v1.0.7 (2020-07-15)

  • Bump version.
  • Add basic metrics GUI.
  • Support for instance-following crop in vis output.
  • Control colors used for exporting visuals on video.
  • Allow exporting entire annotated video.

v1.0.6 (2020-07-06)

  • Bump version.
  • Exclude --data... from inference cli call.
  • Requre numpy>=1.18.1
  • Remove debugging print statement from plotting method.
  • Add Label indexing via range or lists.
  • Convert anchor part to None (if none).
  • Update tracker options image.
  • Bump version.
  • Bug fixes related to anchor part selection.
  • Fix test for when env var not set.
  • Add file ext in non-native file dialog.

v1.0.5 (2020-06-30)

  • Convert anchor part to None (if none).
  • Update tracker options image.
  • Bump version.
  • Bug fixes related to anchor part selection.
  • Fix test for when env var not set.
  • Add file ext in non-native file dialog.
  • Remove old kalman filter code file.
  • Bump version to 1.0.4.
  • Add 'bold lines' pref for bolder lines!
  • Don't send unused kf arg to cli.
  • Bug fix, pass arg to connect_single_track_breaks
  • Add Min Centroid Proximity seekbar graph
  • Increase header height to 40px.
  • Fix test by exposing max_node_count attrib.
  • Pref setting for max nodes in trail.
  • Add colab explanation and link to notebook repo.
  • Add guide for saving custom training profile.
  • Add more receptive field explanation.
  • Update dialog images for current app version.
  • More minor clarifications to labeling doc.
  • Minor change of wording
  • Minor improvements
  • Fix tracking fields to match cli.
  • Add SLEAP_USE_DUMMY_VIDEOS env var for debugging.
  • Fix test for grouping iter.
  • Remove debug print.
  • Add --verbose for inst info in sleap-inspect.
  • Only load HDF5 video once.
  • Support more optimizers in the training backend - Adds support for configuring the initial learning rate for SGD and RMSprop
  • Use title case for table column labels.
  • Batch size CLI dtype hotfix
  • Bump alpha version
  • Add version number to GUI window title
  • Initial refactoring of Kalman filter.
  • Add optional batching for topdown inference - Batching -> keras model inference -> unbatching - Only for topdown confmaps for now - Exposed to CLI
  • Different performance logging for example vs frame inference times
  • Show track lines behind frame marks in seekbar.
  • Added basic information on function. Removed return statement as frames are modified in place
  • Added Kalman Filter

v1.0.4a7 (2020-06-25)

  • Bump alpha version.
  • Read analysis h5 w/o track/node names dsets.
  • pip install scipy==1.4.1 inside conda pkg

v1.0.4a6 (2020-06-25)

  • Add scipy<=1.4.1 to conda pkg reqs, bump v.

v1.0.4a5 (2020-06-25)

  • Add scipy<=1.5 to conda pkg reqs, bump sleap v.

v1.0.4a4 (2020-06-25)

  • Bump alpha version.
  • Pin scipy requirement to pre-1.5.
  • Add Kalman filter tracker to GUI.
  • Add pykalman to requirements
  • Refactor Tracker + Kalman filters.
  • Add debug option to hide shorter tracks in seekbar
  • Fixes + test coverage to kalman matching functs.
  • Fixes + test coverage to kalman matching functs.

v1.0.4a3 (2020-06-17)

  • Bump alpha version
  • Fix confidence map generator tests to account for sigma stride scaling
  • Fix upsampling stack tests to account for input intermediate features
  • Fix logging string formatting in evaluate_model.
  • Add prediction and metric evaluation at the end of training procedure.
  • Fix circular imports in evals
  • Remove warning when video paths cannot be found by default. - This reduces sometimes large amount of spam when loading labels projects interactively that have many video files.
  • Fix logging -> logger scope in training.
  • Set default integral refinement patch size to 5. - Slightly faster and sufficient with sigma = 1 in simulation experiments.
  • Add docstrings to evaluation module and add convenience method. - evaluate_model can be used during training to generate predictions and metrics.
  • Confidence map sigmas are now scaled by their output stride. - This enables a consistent spread in crops around peaks for subpixel refinement and reduces quantization error.
  • Add automatic Provider instantiation for Predictor classes.
  • Add run() method to Pipeline as a convenience consumer function. - Returns all examples from a pipeline in a single call.
  • Add numpy() method to Instances analogous to EagerTensors.
  • Include the output of the encoder in intermediate feature list. - Now models that use UpsamplingStack can output to heads with the same output stride as the encoder's max stride, i.e., the features before any upsampling layers. - Fix error message when missing feature activation for a head.
  • Fix model construction with no intermediate features
  • Start new track after gap in tracking.
  • Modified the matching algorithm.
  • Exclude invalid matches.
  • Improvements to gui inference frame list support
  • Minor cleaning.
  • Major re-write of Kalman tracking code.
  • Add type annotations and more docstrings.
  • Add Track to sleap top level imports.
  • Split track cull/connect functs, move tests.
  • Add colab explanation and link to notebook repo.
  • Add guide for saving custom training profile.
  • Add more receptive field explanation.
  • Update dialog images for current app version.
  • More minor clarifications to labeling doc.
  • Minor change of wording
  • Minor improvements
  • Fix tracking fields to match cli.
  • Add SLEAP_USE_DUMMY_VIDEOS env var for debugging.
  • Fix test for grouping iter.
  • Remove debug print.
  • Add --verbose for inst info in sleap-inspect.
  • Only load HDF5 video once.
  • Support more optimizers in the training backend - Adds support for configuring the initial learning rate for SGD and RMSprop
  • Use title case for table column labels.

v1.0.4a2 (2020-05-26)

  • Batch size CLI dtype hotfix

v1.0.4a1 (2020-05-26)

v1.0.4 (2020-06-26)

  • Bump version to 1.0.4.
  • Add 'bold lines' pref for bolder lines!
  • Don't send unused kf arg to cli.
  • Bug fix, pass arg to connect_single_track_breaks
  • Add Min Centroid Proximity seekbar graph
  • Increase header height to 40px.
  • Fix test by exposing max_node_count attrib.
  • Pref setting for max nodes in trail.
  • Bump alpha version.
  • Read analysis h5 w/o track/node names dsets.
  • pip install scipy==1.4.1 inside conda pkg
  • Add scipy<=1.4.1 to conda pkg reqs, bump v.
  • Add scipy<=1.5 to conda pkg reqs, bump sleap v.
  • Bump alpha version.
  • Pin scipy requirement to pre-1.5.
  • Add Kalman filter tracker to GUI.
  • Add pykalman to requirements
  • Refactor Tracker + Kalman filters.
  • Add debug option to hide shorter tracks in seekbar
  • Fixes + test coverage to kalman matching functs.
  • Fixes + test coverage to kalman matching functs.
  • Bump alpha version
  • Fix confidence map generator tests to account for sigma stride scaling
  • Fix upsampling stack tests to account for input intermediate features
  • Fix logging string formatting in evaluate_model.
  • Add prediction and metric evaluation at the end of training procedure.
  • Fix circular imports in evals
  • Remove warning when video paths cannot be found by default. - This reduces sometimes large amount of spam when loading labels projects interactively that have many video files.
  • Fix logging -> logger scope in training.
  • Set default integral refinement patch size to 5. - Slightly faster and sufficient with sigma = 1 in simulation experiments.
  • Add docstrings to evaluation module and add convenience method. - evaluate_model can be used during training to generate predictions and metrics.
  • Confidence map sigmas are now scaled by their output stride. - This enables a consistent spread in crops around peaks for subpixel refinement and reduces quantization error.
  • Add automatic Provider instantiation for Predictor classes.
  • Add run() method to Pipeline as a convenience consumer function. - Returns all examples from a pipeline in a single call.
  • Add numpy() method to Instances analogous to EagerTensors.
  • Include the output of the encoder in intermediate feature list. - Now models that use UpsamplingStack can output to heads with the same output stride as the encoder's max stride, i.e., the features before any upsampling layers. - Fix error message when missing feature activation for a head.
  • Fix model construction with no intermediate features
  • Start new track after gap in tracking.
  • Modified the matching algorithm.
  • Exclude invalid matches.
  • Improvements to gui inference frame list support
  • Minor cleaning.
  • Major re-write of Kalman tracking code.
  • Add type annotations and more docstrings.
  • Add Track to sleap top level imports.
  • Split track cull/connect functs, move tests.
  • Add colab explanation and link to notebook repo.
  • Add guide for saving custom training profile.
  • Add more receptive field explanation.
  • Update dialog images for current app version.
  • More minor clarifications to labeling doc.
  • Minor change of wording
  • Minor improvements
  • Fix tracking fields to match cli.
  • Add SLEAP_USE_DUMMY_VIDEOS env var for debugging.
  • Fix test for grouping iter.
  • Remove debug print.
  • Add --verbose for inst info in sleap-inspect.
  • Only load HDF5 video once.
  • Support more optimizers in the training backend - Adds support for configuring the initial learning rate for SGD and RMSprop
  • Use title case for table column labels.
  • Batch size CLI dtype hotfix
  • Bump alpha version
  • Add version number to GUI window title
  • Initial refactoring of Kalman filter.
  • Add optional batching for topdown inference - Batching -> keras model inference -> unbatching - Only for topdown confmaps for now - Exposed to CLI
  • Different performance logging for example vs frame inference times
  • Show track lines behind frame marks in seekbar.
  • Added basic information on function. Removed return statement as frames are modified in place
  • Added Kalman Filter
  • Add colab explanation and link to notebook repo.
  • Add guide for saving custom training profile.
  • Add more receptive field explanation.
  • Update dialog images for current app version.
  • More minor clarifications to labeling doc.
  • Minor change of wording
  • Minor improvements
  • Fix tracking fields to match cli.
  • Add SLEAP_USE_DUMMY_VIDEOS env var for debugging.
  • Fix test for grouping iter.
  • Remove debug print.
  • Add --verbose for inst info in sleap-inspect.
  • Only load HDF5 video once.
  • Support more optimizers in the training backend - Adds support for configuring the initial learning rate for SGD and RMSprop
  • Use title case for table column labels.
  • Batch size CLI dtype hotfix
  • Bump alpha version
  • Add version number to GUI window title
  • Initial refactoring of Kalman filter.
  • Add optional batching for topdown inference - Batching -> keras model inference -> unbatching - Only for topdown confmaps for now - Exposed to CLI
  • Different performance logging for example vs frame inference times
  • Show track lines behind frame marks in seekbar.
  • Added basic information on function. Removed return statement as frames are modified in place
  • Added Kalman Filter

v1.0.3 (2020-05-22)

  • Bump version
  • Fix installing tf w/ gpu link
  • Fix tensorflow url in install docs
  • Add command to add user for all pred inst in frame
  • Don't add predicted instances with all nans.
  • Remove empty frame when all frame inst's removed.
  • Add gpu support info to install doc.
  • Require numpy>=1.16
  • output_stride options as list of powers of 2

v1.0.2 (2020-05-14)

  • Bump version to 1.0.2, remove last n in docs.
  • Update model config screenshot in docs.
  • Add early stopping to config dialog.
  • Link to colab notebook w/ example dataset.
  • Use auto crop size in baseline td profiles.
  • Add missing config dialog image.
  • Explain some hyperparams in docs.
  • Add link in docs to sample dataset repo.

v1.0.1 (2020-05-12)

  • Bump version in install docs.
  • Pin attrs=19.3 and bump SLEAP to v1.0.1
  • Pass original image in td pipe to flow tracker.
  • Fixing release badge
  • Fix dataset name in example.
  • Absolute path for image in README.

v1.0.0 (2020-05-11)

  • Brief explanation of labeling suggestions.
  • Add initial labeling to tutorial TOC.
  • Bump version to 1.0.0!
  • Absolute path for image in README.
  • Update colab notebook link.

v0.2.2a6 (2020-05-11)

  • Bump version
  • Upload to real PyPI instead of test server.
  • Update docs for release.
  • Fix license link and text.
  • Start app with new project.
  • Update README.rst
  • Add link to license
  • Update README.rst
  • Add (currently unused) KeyDeviceMover transformer.
  • Add test for Tracker.make_tracker_by_name.
  • Tracker bug fix, skip tracking if 'none' tracker.

v0.2.2a5 (2020-05-06)

  • Bump version
  • Get track trail width from prefs.
  • Include score in predicted point tooltip.
  • Add PredictedInstance.points_and_scores_array
  • Better arg interaction for get_points_array().
  • Fixed regression on id tracking/cleaning modes.
  • Enable suggested frames inference cli/gui.
  • Enable inference on dataset file from gui.
  • Reformat with black.
  • Encapsulate data for inference run into objects.
  • Pin new versions of imgstore and opencv
  • Move predicted frame grouping code into submodule.
  • Accept list of new video paths in training cli.
  • Revert "Remove NumpyVideo backend."
  • Rename slp.learning.training to .dialog
  • Modify inference cli for predicting on dataset.
  • List trained config w/o initial if both present.

v0.2.2a4 (2020-04-30)

  • Bump version to 0.2.2a4.
  • Add (missing!) export clip dialog.

v0.2.2a3 (2020-04-30)

  • Bump version to 0.2.2a3
  • Add scikit-video to requirements.
  • Add dialog for export clip options.
  • Add function to open file in default app.
  • Remove extra linebreak
  • Convert annotation colors to BGR
  • Use .avi or .mp4 as appropriate for video writer.
  • Bug fixes to handling of opencv color conversion
  • Explicitly test opencv video writer.
  • Move RGB -> BGR conversion into opencv writer class.
  • Better checking for ffmpeg availability.
  • Use VideoWriter submodule.
  • Remove NumpyVideo import option.
  • Add VideoWriter module for writing avi/mp4 files.
  • Add scale arg and unit tests.
  • Remove NumpyVideo backend.
  • Add method to safely load list of frames.
  • Include jpegs needed for tests.
  • Improve test coverage for io.video.
  • Improve test coverage for pathutils.
  • Remove unused, empty config file.
  • Fix incorrect test.
  • Update docs for cli.
  • Add docstring.
  • Remove -m cli from docstring.
  • Add cli entry-point for labels info.
  • Refactor slider code.

v0.2.2a2 (2020-04-23)

  • Bump version to 0.2.2a2
  • Add tracking-only mode to GUI.
  • Expose peak_threshold in cli.
  • Remove old no longer applicable comment.
  • Show message while saving training package.
  • Default training package name to [root].pkg.slp
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Change to SSH keys for docs github push
  • Update appveyor.yml
  • Fix git credential store issue
  • Update appveyor.yml
  • Update appveyor.yml
  • Update install instructions.
  • Add support for retracking mode.
  • Labels.find accepts Iterable of frame idxs.
  • Add base Predictor, minor refact. in helper funcs.
  • Add 'preparing...' message in training monitor.
  • Add docstrings.
  • Set matplotlib backend at training setup.
  • Send tensorboard arg to cli from gui.
  • Add cli arg for track cleaning iou threshold.
  • Scale training img preview overlays to cover img.
  • Add (disabled) code for NMS during track cleaning.
  • Remove old, unused form config.
  • Default run rame now time.head.frame_count
  • Only log new predictions if there are some.
  • Set layout before anything that affects visibility
  • Use .slp ext for cached datasets in run dir.
  • Tweaks to training editor form.
  • Default training monitor to show all epochs.
  • Add DummyVideo backend.
  • Explicit check for None video (not implicit bool)

v0.2.2a1 (2020-04-13)

  • Bump pre-release version
  • Infer colorspace (RGB/grayscale) from model input layer if not specified - Fixes issues of mismatching shapes when the video backend does not automatically detect grayscale. - Added make_labels argument to predictor.predict methods to create a sleap.Labels instance from the predictions.
  • Add .slp extension to video backend detection from filename
  • Ensure that video matching first checks for backend type in evals
  • Visualize instances that have skeletons without edges
  • Expose integral regression refinement parameters in predictor classes
  • Replace global integral regression with local patch refinement. - Still uses integral regression, but first crops a patch around the integer-valued coordinates. - This massively reduces the rate of false positives due to bad values at the edge of confidence maps.
  • Bump version to 0.2.1
  • Explain load/save api in docstring.
  • Add tracking + sleap version to provenance data.
  • Better formatting for provenance info.
  • Changes to how inference results are saved.
  • Add provenance field to Labels.
  • Improvements to training/inference config export.
  • Improve Labels.load_file api for missing videos.
  • Lazy loading for HDF5Video.
  • Git should ignore autosummary api docs.
  • Add toc to guides/tutorials.
  • Break tutorials/howtos into separate files.
  • Fixes for building api docs on windows.
  • Header template for api docs.
  • Automatically build api doc tree.
  • Reorganizing api docs (in progress)
  • Update docs for v0.2.0
  • Update tutorial for v0.2.0.
  • Use small font size for website.

v0.2.1a12 (2020-04-08)

  • Bump version.
  • Add baseline profile for training single inst model
  • Add button to save training/inference configs.
  • Add importer for DeepLabCut yaml.
  • Allow search prefix in find_files_by_suffix
  • Remove inference only fps since not working.
  • Remove training profiles from v0.1
  • Rescale points in single inst inf as needed.
  • Bug fix, use np.nansum instead of ndarray.nansum
  • Auto pad single instance trainer to max stride.
  • Load test frame for SingleImageVideo

v0.2.1a11 (2020-04-06)

  • Bump version.
  • Show total and inference only fps/time.
  • Use numpy().nansum() instead of nansum on tensor.
  • Convert img from tensor to ndarray.
  • Remove debug print.
  • Run tracking/create instances frame by frame.
  • Improve test coverage for sleap.util.
  • Better handling of shift+movement shortcut.
  • Add prefs to hide app docks on open.

v0.2.1a10 (2020-04-06)

  • Bump version number to 0.2.1a10
  • Fix topdown not accounting for different scale in centroids vs confmaps - Some optimization could probably be done to increase performance when both models have the same preprocessing settings, but currently is done independently.
  • Save ground truth training labels at the start of training
  • Account for input scaling in bounding box size calculation for topdown.
  • Add read/write file adaptor for analysis hdf5.
  • Check metadata ds to determine if readable.
  • For max stride, show pow of 2 options in list.
  • Bug fix, enable user/current vid rand frame option
  • Call sleap-train/sleap-track from gui.
  • Typo fix in augmentation config.

v0.2.1a9 (2020-04-01)

  • Bump version number to 0.2.1a9
  • Performance improvement for predicted single instance creation - Previously, calculating the instance score took nearly the entire runtime. Now, tensors are transferred to CPU first before reduction.
  • Fix single instance predictor - Fix a couple of keys not named correctly
  • Add release script for deploying "nightly" build
  • Fix key names in single instance trainer
  • Single instance training
  • Single instance training pipeline builder
  • Single instance confmap generator
  • nn.viz tweaks - Visualization now renders in ij rather than xy coordinates - Fixed range scaling detection

v0.2.1a8 (2020-03-31)

  • Fix pip install PySide2>=5.12.0,<=5.14.1
  • Bump version
  • Pin to PySide2>=5.12.0,<=5.14.1

v0.2.1a7 (2020-03-31)

  • Bump version
  • More details in receptive field preview.

v0.2.1a6 (2020-03-30)

  • Predict options for user labels and cur vid rand.
  • Bump version to 0.2.1a6
  • Bug fix when adding missing points to instance.

v0.2.1a5 (2020-03-28)

  • Bump version to 0.2.1a5
  • More conda build changes, bump to v0.2.1a5

v0.2.1a4 (2020-03-28)

  • Try conda tf 2.1 install, bump to v0.2.1a4

v0.2.1a3 (2020-03-27)

  • Add pip tf to conda package, bump to v0.2.1a3

v0.2.1a2 (2020-03-27)

  • Include seaborn in conda pkg, bump to v0.2.1a2

v0.2.1a1 (2020-03-27)

v0.2.1 (2020-04-13)

  • Bump version to 0.2.1
  • Explain load/save api in docstring.
  • Add tracking + sleap version to provenance data.
  • Better formatting for provenance info.
  • Changes to how inference results are saved.
  • Add provenance field to Labels.
  • Improvements to training/inference config export.
  • Improve Labels.load_file api for missing videos.
  • Lazy loading for HDF5Video.
  • Bump version.
  • Add baseline profile for training single inst model
  • Add button to save training/inference configs.
  • Add importer for DeepLabCut yaml.
  • Allow search prefix in find_files_by_suffix
  • Remove inference only fps since not working.
  • Remove training profiles from v0.1
  • Rescale points in single inst inf as needed.
  • Bug fix, use np.nansum instead of ndarray.nansum
  • Auto pad single instance trainer to max stride.
  • Load test frame for SingleImageVideo
  • Bump version.
  • Show total and inference only fps/time.
  • Use numpy().nansum() instead of nansum on tensor.
  • Convert img from tensor to ndarray.
  • Remove debug print.
  • Run tracking/create instances frame by frame.
  • Improve test coverage for sleap.util.
  • Better handling of shift+movement shortcut.
  • Add prefs to hide app docks on open.
  • Bump version number to 0.2.1a10
  • Fix topdown not accounting for different scale in centroids vs confmaps - Some optimization could probably be done to increase performance when both models have the same preprocessing settings, but currently is done independently.
  • Save ground truth training labels at the start of training
  • Account for input scaling in bounding box size calculation for topdown.
  • Add read/write file adaptor for analysis hdf5.
  • Check metadata ds to determine if readable.
  • For max stride, show pow of 2 options in list.
  • Bug fix, enable user/current vid rand frame option
  • Call sleap-train/sleap-track from gui.
  • Typo fix in augmentation config.
  • Bump version number to 0.2.1a9
  • Performance improvement for predicted single instance creation - Previously, calculating the instance score took nearly the entire runtime. Now, tensors are transferred to CPU first before reduction.
  • Fix single instance predictor - Fix a couple of keys not named correctly
  • Add release script for deploying "nightly" build
  • Fix key names in single instance trainer
  • Single instance training
  • Single instance training pipeline builder
  • Single instance confmap generator
  • Fix pip install PySide2>=5.12.0,<=5.14.1
  • Bump version
  • Pin to PySide2>=5.12.0,<=5.14.1
  • Bump version
  • More details in receptive field preview.
  • Predict options for user labels and cur vid rand.
  • Bump version to 0.2.1a6
  • Bug fix when adding missing points to instance.
  • Bump version to 0.2.1a5
  • More conda build changes, bump to v0.2.1a5
  • Try conda tf 2.1 install, bump to v0.2.1a4
  • Add pip tf to conda package, bump to v0.2.1a3
  • Include seaborn in conda pkg, bump to v0.2.1a2
  • Remove cd in dev deploy script.
  • Change after_deploy to deploy_script.
  • Deploy "dev" builds if develop branch is tagged
  • Bump version to 0.2.1a1
  • Tooltips, cursors, semantic mark types for slider
  • Add file needed for .slp format test in 53b243c4
  • Add gui menu command to export analysis hdf5.
  • Rename 'tracking' format to 'analysis' for clarity
  • Add sleap-convert cli for file format conversions.
  • Allow * as format to try all adaptors.
  • Skip tracking if no frames.
  • Use .slp as default for hdf5 datasets.
  • Git should ignore autosummary api docs.
  • Add toc to guides/tutorials.
  • Break tutorials/howtos into separate files.
  • Filter video backend kwargs when deserializing.
  • Re-write for new inference classes.
  • Add VisualPredictor class for predictions in gui
  • Fixes for building api docs on windows.
  • Header template for api docs.
  • Automatically build api doc tree.
  • Re-remove files from sleap.nn.
  • Remove files that were moved into gui submodules.
  • Remove files that were moved into gui submodules.
  • Reorganizing api docs (in progress)
  • Update docs for v0.2.0
  • Rename Kb Ref to Kb Shortcuts
  • Reset prefs if yaml isn't dict.
  • Bug fix: hadn't updated method name to update cache.
  • Bump develop version to 0.2.0
  • Update tutorial for v0.2.0.
  • nn.viz tweaks - Visualization now renders in ij rather than xy coordinates - Fixed range scaling detection
  • Apply patch from 41431de
  • Apply patch from 6f4163b
  • Revert to 28a0031889.
  • Use small font size for website.
  • Only use Qt as matplotlib backend if available.
  • More distinctive slider marks.
  • Create RLock only when needed.
  • Better typing.
  • Fix UNet tests. - Commit 33339cd changed how UNet was built to ensure stride symmetry across encoder vs decoder branches, but this broke the tests. - Inspecting the output shapes closely reveals a discrepancy between the reference and the CARE implementations, so added an attribute to switch off between these. - Fixed pooling when using a stem such that stacked architectures can be correctly instantiated. - Fixed and added more tests.
  • Delete outdated test and nn modules. - Lots of these will need to be rewritten for the new format, but should be easy enough to port them from the git history later. - There's still a bit of legacy code in nn, but will refactor later.
  • Use SingleImageVideo instead of imgstore.
  • Fix paths inside SingleImageVideo.
  • Use RLock around ffmpeg seek/read.
  • Use Qt backend for matplotlib.
  • Add missing --gpu-last to cli args.
  • Normalize images for visualization - Fixes image plotting when doing weird normalization like caffe-mode.
  • Filtering for failed centroid detection in topdown inference. - Fixes #322: properly handles case where no centroids are detected.
  • Typing typo in single instance inference pipeline
  • Add flexible device specification to inference CLI.
  • Implement dataset filtering transformer. - Allows for exclusion of specific elements in a dataset given a callable that evaluates a conditional on each element. - Fixes #314: bottom-up inference now properly excludes examples that when inference fails to find any local peaks.
  • Added mocking for multi-model inference pipelines. - Allows for evaluation with a single model (e.g., just centroids) when ground truth data is available.
  • Missing kwarg in single instance predictor
  • Implement integral regression for subpixel peak finding.
  • Add VSCode to gitignore
  • New dialog for complex instance deleting.
  • Always default to most recent training config.
  • Make sure cfg has head_name before use.
  • Correctly pass full image to flow from topdown.
  • Minor improvements to DLC importer.
  • Move max frames to preview into const.
  • Add training_instances property, user for training
  • Only use user frames for datagen preview.
  • Redraw receptive field widget when changed.
  • Center receptive field box in preview.
  • Move recept field widget into own file.
  • Better layout/titles for datagen preview windows.
  • Refactor gui modules into submodules.
  • Add tests for frame merging.
  • Adjust receptive field preview for img scale.
  • Resize if needed for datagen preview.
  • Fix minor arg passing error.
  • Bug fix for updating config file list.
  • Autodetect crop size for datagen preview.
  • Remove debug print.
  • Add datagen preview.
  • Fix typing on from_numpy arg.
  • Bug fix for training config file list.
  • Update config file menus on dialog re-open.
  • Remove negative sample menu commands.
  • Expose video.test_frame and use instead of frame 0
  • Use DataFrame.iloc since ix deprecated.
  • Less frequent progress loggging.
  • Wrap inference with error handling.
  • Add tracker to inference form.
  • Call tracker.final_pass for track cleaning.
  • Integrate tracking with topdown/bottomup inference
  • Convert float img to uint8 for cv2 flow shift.
  • Accept ndarray in ensure_int.
  • Fix incorrect return var name.
  • Add nn.data.ensure_int function.
  • Remove debug print.
  • Inference mode for learning dialog.
  • Sanitize node names used for tf loss metrics.
  • Check if labels has skeleton before using.
  • Only squeeze grayscale images.
  • Range for data.instance_cropping.crop_size
  • Support for OptionalSpinWidget value range
  • Show scale/crop for each head, not shared.
  • Add sublime project files to .gitignore
  • Minimal working receptive field preview widget
  • Move kernel_size to (const) class property.
  • Accept ndarray in GraphicsView.setImage()
  • Convert '' skip_connection to None.
  • Tweaks to training forms.
  • Add string_list field type.
  • Don't raise error in ensure_grayscale.
  • Add track param to PredictedInstance.from_arrays
  • Replace NaNs with inf for linear_sum_assignment.
  • Allow X,-Y range in frame_list()
  • Add functionality for using trained models.
  • Accept path to json config in cli.
  • Add UI for "use trained model"
  • Add methods to enable/disable whole form.
  • Check for model in config file dir.
  • Changed 'learning' back to 'inference' where needed.
  • Replace legacy training profiles with.
  • Remove unused imports
  • Add Instance.from_pointsarray() method
  • Add has_trained_model to ConfigFileInfo
  • Use slotted class (not dict) for config info.
  • Menu for using saved configs.
  • Enable training dialog from app gui.
  • Minimal cli and SingleInstancePredictor
  • Add which_oneof_attrib_name method and test cov.
  • Fixed validation img filename pattern.
  • Add support for inference args.
  • UNet architecture fixes - Add pooling block at the end of the encoder stack. This is necessary since UNet uses the last conv in each block as the skip source, so the encoder blocks cannot end with a max pooling. Additionally, the first block cannot start with a max pooling on the input, so we add an extra pooling-only block at the end of the encoder stack to compensate. - Middle block implemented. This block adds convolutions without pooling at the end of the encoder stack. It increases the number of filters, and then decreases back to the input filter count. When set to True, the model construction is exactly identical to the legacy models. - Added comment about middle block to config. - Fixed incorrect upsampling blocks: should not have batch norm and the filters after the first refinement conv should decrease (within the block). - Implemented several of the functionalities required above in the simple encoder/decoder blocks.
  • Fix for handling not saving outputs with visualization callbacks.
  • Initial version of inference gui rewrite.
  • Add none_label for optional_int fields.
  • Even more logging in Trainer.
  • Fix find_instance_crop_size qualification
  • Add sleap.nn.training to nn/init.py imports
  • More logging in Trainer.
  • Major clean up of sleap.nn. - Remove all unused or orphaned modules or functions. - Add basic module-level docstrings. - Minor formatting - Import most submodules from top level sleap init (adds only ~400ms startup time to "import sleap")
  • Full inference pipelines implemented for topdown and bottomup. - Both can be initialized from just run paths. - Both have a .predict() method that creates LabeledFrames on demand. - Both have a .predict_generator() method that generates raw examples for flexibility in postprocessing.
  • Expand transformers for topdown postprocessing - PredictedInstanceCropper and PredictedCenterInstanceNormalizer now pass forward centroid and peak confidences.
  • Additional plotting/visualization utilities
  • Add from_arrays convenience classmethod for PredictedInstances
  • Add videos attribute to providers for consistent video lookup
  • Add PointsResizer transformer to account for scale during inference
  • Rewrote PAF grouping module to for data pipeline inference - PartAffinityFieldInstanceGrouper is the transformer - Pretty under-commented and incomplete typing - PAFScorer should definitely be broken up somehow
  • Run data pipeline inference ops on the GPU if possible
  • Add best_logical_device_name utility - Returns the best initialized (logical) device name for use with tf.device for explicit tensor device placement.
  • Adjust batch/repeat ordering based on number of samples in the data
  • Fix part names not being stored in the config for MultiInstance models
  • Training/validation split from val fraction config in training
  • sleap.Labels splitting utility
  • Convenience attribute for building the run path in config
  • Add more logging to Trainer and disable PAF quiver plot - Quiver plot has a huge memory leak on the matplotlib side right now
  • Initial inference pipeline implementation - Topdown with centroid + confmap models - Moved old inference.py until deprecated
  • Add single peak-set plotting with colormap cycling
  • Resizer with optional point scaling since GT is not always available
  • VideoReader provider returns video_ind
  • Clean up inference and add topdown-related inference transformers
  • Unbatcher dataset transformer
  • Remove remaining Union-style configs to enable structuring from file - Also fix the global structuring hook for Skeleton
  • Import sleap.nn.config and .system at top level
  • Added summary method to nn.system module
  • Use sleap.nn.system.use_cpu_only in nn tests
  • Added utility functions for querying and setting GPU availability - Check for GPUs available - Set which GPUs to use (or CPU only) - Set memory preallocation policy - Check for initialization - Explicit device initialization
  • Minor formatting
  • Delete unused or replaced modules/tests
  • Timing in setup logging, typing, docstrings and auto-scale visualization
  • Remove unnecessary matplotlib backend specification. - Will probably need to check that this still works across platforms, or provide a parameter to set this explicitly.
  • Add explicit key arg for global peak finder in topdown pipeline builder.
  • nn.training.Trainer implementation. - Handles centroids, topdown and multi-instance model types. - Output type specific trainers: CentroidConfmapsModelTrainer, TopdownConfmapsModelTrainer, BottomUpModelTrainer - CLI with behavior mostly equivalent to old format. Run path should be fully specified since it'll be harder to parse from stdout. - Basic docstrings - Several small functions for setting up the training still need to be rolled into Trainer, or maybe a TrainingJob that sits between the config and the actual trainer.
  • Add serialization/deserialization helper methods to TrainingJobConfig. - Need to re-implement the legacy format parser when unstructuring.
  • Add docstrings to nn.model and expose keras model as attribute. - Now Model.make_model(...) also sets that instance's keras_model attribute for convenience. - Class method constructor from config can optionally update the input config object with argument or inferred data.
  • Visualization fixes - Squeeze singleton image channel (grayscale) - Explicit control of paired peak line plotting - Formatting
  • Add visualization utilities
  • Replace configs that could be set to "auto" with None (#307)
  • Add range for 'double' form fields.
  • Add methods to set form data for stack widget.
  • Fix reduction in multi-PAF generation
  • Misc changes to FormBuilder
  • Add TextOrListWidget for text/list widget.
  • Add OptionalSpinWidget for optional int/doubles.
  • Add loss_weight to bottom up configuration and expand nn.head docstrings
  • Completed docstrings in nn.config.model for the output head types.
  • Implement data pipelines for the 3 major model types - Implements several versions of each pipeline: - base_pipeline: Fetches input data with no optimization. Useful for composing with other pipelines and for quick inspection. - training_pipeline: Generates examples with all data structures needed for training. Uses optimizations to minimize I/O latency across iterations like preloading/prefetching. Applies data augmentation and shuffling. - viz_pipeline: Produces minimal examples necessary for generating visualizations of predictions during training. Necessarily, this implements basic inference, but does not have some optimizations that a full inference pipeline might benefit from. - Lots of repetition but keeping it as-is for now for flexibility
  • Bug fixes in KeyMapper and enforcement of static shapes - Should probably look into this issue more closely since it breaks dynamic shaped inputs (could be an issue for multi-instance inference potentially?)
  • Add flatten_channels option to PAF generator for convenience
  • Rename MultiInstanceConfig.multi_instance -> .confmaps
  • Fix UNet stem construction - Previously the first stem block started with a max pooling directly on the input layer
  • Implement transformer for local peak finding
  • Flip key names for confidence maps vs centroids in generator
  • Typo in model creation from intermediate tensor
  • Preprocessing config docstring typo
  • Initial nn.training module refactoring - Moved old training module to *_legacy.py for now - Added several generic builder functions. These will likely be replaced by the TrainingJob/Trainer classes, but writing them out now to get a sense of where we need coupling.
  • Add missing import for instance cropping utility
  • Clean up callbacks imports and add typing for plotting callbacks
  • Instance crop size estimation utility function - Should probably get moved somewhere else when nn is cleaned up
  • Created initial transformer classes for inference - KerasModelPredictor supports multi-input/output and runs extremely fast on GPU (but the device can be set at the class-level). - Refactored global peak finding to return coordinates in points format and apply thresholding before returning. - GlobalPeakFinder transformer for generic peak finding on any confmaps key with stride adjustment.
  • Create nn.losses module for custom losses/metrics - Created standalone OHKM loss computation function for easier testing. - Added heuristics for ratio-based dynamic hard keypoint detection. - Fix default OHKM ratio config (should be >1)
  • Add profile_graph to TensorBoard configuration. - Removed part_metrics since this will always be enabled.
  • Update ZMQ callback class syntaxes and add ModelCheckpoint event
  • Add global structuring hooks for sleap.Skeleton - This allows for (un)structuring instances without needing to write any extra code for instances nested in larger attrs classes.
  • Import architecture classes in nn.architectures
  • Refactor nn.heads and nn.model - classmethods for instantiation from config classes - Moved old modules to *_legacy.py until TrainingJob conversion is done - Several tweaks to configs
  • Add KeyMapper to nn.data.pipelines
  • oneof decorator injects a which_oneof method to retrieve the set attrib
  • ResNet from config
  • Upsampling stack from config and explicit control of skips
  • Hourglass from config
  • LEAP from config
  • Refactor Unet -> UNet and implement construction from config.
  • Implement oneof decorator to enforce mutual exclusivity - This achieves validation to enforce the behavior desired for the mutually-exclusive attribute classes. - Classes decorated with attr.s and oneof will raise an error if more than one attribute is set to not None when instantiated.
  • Add old config module docstring back in.
  • Split nn.config.py into submodules for legibility + initial ModelConfig - Config sections now sit in their own submodules, but the syntax is the same since all config classes are imported in nn/config/init.py. - Initial implementation of ModelConfig. Totally decoupled from previous Model/ModelConfig implementations. - High level architecture parameters are now explicitly specified for each architecture and "oneof"-style options will just be specified by having different attributes which validators can check for mutual exclusivity. This should make it easier to serialize into more readable json as opposed to the old system of specifying the class name and doing some voodoo to construct the correct one. - This decoupling comes at the cost of reduced flexibility in model customization (though this can overcome with "generic" model configs like EncoderDecoder), as well as requiring manual specification of parameters for each architecture.
  • Add attribute for specifying UNet stem kernel size. - Useful for increasing receptive field without adding more blocks. - Defaults still match the canonical architecture and tests.
  • Major nn refactor in preparation for new Model/ModelConfig classes - Cleaned up nn.architectures to remove architectures that need major updating before they can be ported, removed unused utility functions. - We'll port in the deleted architectures from other branches when we're ready, but in the meanwhile they can't be used without major rewrites. - Exception: hrnet module which is not pretrained and will require minor adjustments to fit new format. - Replace old nn.model module with nn.model_config - Removed PreprocessingConfig from nn.model since that's covered elsewhere in nn.config.DataConfig. - Removed preprocessing-related args from legacy classmethod builders in ModelConfig.
  • Move AugmentationConfig to nn.config module
  • Resizing from config
  • Normalizer from config
  • More flexible concatenation operators for Pipeline
  • Basic pipeline concatenation
  • InstanceCentroidFinder from config
  • Instance cropping formatting.
  • Instance cropping from config.
  • Pipeline attributes default to empty lists. - This is necessary to build partial pipelines without providers.
  • Initial nn.config implementation. - This contains simple attr attribute classes with all user-facing configuration options related to training. - This supersedes the previous TrainingJob class and should contain all serializable job-related parameters. - Functional modules should be able to be instantiated from these, but can be decoupled in the actual implementation.
  • Add LabelsReader splitting utility function
  • Added example_indices attribute to providers. - Replaces the ds_index argument to the make_dataset method - Allows for flexible specification of subsets of the data to be used without having to create new source data objects (e.g., sleap.Labels). This makes it easier to read subsets of videos or to split the labels for train/val/test sets. - Examples generated by LabelsReader now include an "example_ind" key to indicate the index of the example within the original data.
  • Initial data.training module for training-related data ops
  • Tests for dataset_ops
  • Preloader now stores elements in an attribute.
  • Add comment about preloading cost and add as option to pipelines.
  • Fix stochastic deadlocks in tf.py_functions. - These resulted random hangs during training that could not be interrupted via SIGINT or otherwise. - Solution was to remove TF ops from inside py_functions in the data pipeline. - Interesting side effect is a big performance speedup. - See: https://github.com/tensorflow/tensorflow/issues/32454
  • Create Preloader transformer. - Loads elements of the pipeline at creation time rather than during execution. This is a workaround to weird thread safety issues with using Labels as a provider during training.
  • Filter irrelevant kwargs from model backbone.
  • Add pipelines submodule to nn.data.
  • Use new pipeline in datagen test.
  • Formatting and commenting out unused attributes for now
  • Fix truncation rounding error during instance cropping. - float32 precision sometimes results in bounding box sizes that are #.9997, which can result in an incorrect crop, even though the centered bounding boxes are created with exact dimensions.
  • Add initial generic pipelines for generating training data. - BottomUpPipeline: for building standard multi-confmap + PAF pipelines - TopDownPipeline: for building standard instance cropped pipelines
  • Dataset operations transformers module - Transformers that operate over multiple elements of the data: - Shuffler - Batcher (this one is tricky with variable length elements) - Prefetcher
  • Initial pipeline builders implementation
  • Fix Resizer not applying scaling to points.
  • Add Resizer transformer
  • Add missing documentation to Normalizer
  • Add Normalizer transformer
  • Remove debugging comments
  • Add dev_requirements.txt to environment.yml
  • Add editable package install to conda environment.yml
  • Add PAF generator class and tests
  • Edge maps transformers module. - Implements edge confidence maps; equivalent of part confidence maps where scalar values are scaled by the distance of the sampling grid points to the line segment formed by edges. - Implement part affinity fields as simple unit vectors weighted by the edge confidence maps for masking.
  • Fix expand_to_rank when rank is higher than the target. - Add test.
  • Add data module level init.py
  • Remove indentation on blank lines
  • Fixes and tests for normalization
  • Remove indentation on blank lines
  • Move make_grid_vectors to nn.data.utils as it's reused across modules.
  • Resizing transformers module
  • Missing import in utils and added tests
  • imgaug/numpy monkey patch for some version combinations. - Track issue: https://github.com/aleju/imgaug/issues/537
  • Add rank expansion data utility.
  • Initial data normalization method implementations. - Documented the normalization modes expected when using different pretrained models from tf.keras.applications. - Still needs tests and a transformer block class.
  • Modified the "scale" key to a 2-tuple indicating the x- and y-scaling. - The general expectation is that points in individual examples are already on the image grid scale. - The "scale" key can be used to track scaling operations, including aspect ratio changes. This information is sufficient to map points on example images/confidence maps to the raw images. - Commented scaling behavior across pipeline modules. - Changed behavior of MultiConfidenceMaps to compute confidence maps on the current image grid under the assumption that the "instances" key is at the same scale as the "image".
  • Rename instance cropping image size to "full_image_*" - "Full" to indicate it refers to the input to the instance cropper, which may have been modified relative to the "raw" image, e.g., due to padding/scaling. - Rename attribute drop_full_image to keep_full_image
  • Store raw image size in examples generated by data providers. - Useful for downstream processing that affects shape.
  • Add confidence map generation transformers. - Low level confidence map generation functions - Multi-instance confidence map generator - Multi-instance centroid confidence map generator - Instance-cropped center instance confidence map generator - Instance-cropped all instance confidence map generator - Tests
  • Add instance cropping transformer. - Agnostic to centroid calculation method. - Propagates all frame example metadata to individual instance examples. - Tests for coordinate transformations correctness, especially for tricky bounding box and cropping calculations.
  • Remove unnecessary import from instance centroid tests.
  • Add instance centroid finder transformer. - Implements bbox midpoint and anchor part-based centroid finding. This can later be extended to include other centroid computation methods like backup anchors, median, mean, etc. - Add base data pipeline utils module.
  • Remove unnecessary import from augmentation test
  • Transformer for data augmentation via imgaug - Separate AugmentationConfig class, possibly to be exported for serialization of the configuration.
  • Remove old nn.data module and start new data pipeline implementation. - The new modules will generalize the data processing steps to make it easier to test, re-use code and optimally compose tf.data-based pipelines. - Individual blocks will specify their input/output requirements such that dataset examples will know what to expect and can be validated at a higher level. - Enables attrs-based classes for configuring individual blocks. - Added initial data providers from Labels and raw videos, unifying both training and inference data loading.
  • Incomplete condition for preprocessing config
  • ModelConfig completeness properties
  • Add missing imports for json loading
  • Update ModelConfig for new OutputHead format - Expanded PreprocessingConfig to account for all current preprocessing steps, with checks for required parameters for training vs inference - Additional methods for initialization of ModelConfig from legacy formats. Almost all parameters can now be retrieved from old training job files.
  • Type annotation for is_complete outputs
  • Make run/dataset-specific head attributes optional - OutputTypes now have an is_complete attribute to indicate whether sufficient information has been provided to be able to instantiate the layers. - Can now structure generic output heads without dataset specific information (e.g., skeletons) to allow for specification of "template" configurations
  • Initial implementation of new model configuration module. - Support for structuring from legacy file format. - Initial tests.
  • Add validator for OutputHead type vs config.
  • Add necessary properties for valid backbone architectures. - maximum_stride, output_stride and make_backbone are sufficient to specify the necessary information for preprocessing data before the backbone and to generate the tensors using a common interface.
  • Add centered attribute to SinglePartConfmaps for topdown mode.
  • Remove part_names requirement for PartAffinityFields head.
  • Additional test for centroid confmap configuration without args
  • Expanded validation of output head configuration.
  • Broke up architecture tests into subtests for cleaner debugging.
  • Initial implementation of generic model head types.
  • Fix point-only dataset generator from concrete arrays.
  • Fix available architectures.
  • Implement hourglass backbone. - Add skip connection from stem output to the input of each stack's decoder path. This enables recovery of features from the input. - Fix Unet tests with new skip. - Fix available architectures.
  • Bump requirements to TensorFlow 2.1 - Removed conda package in favor of pip which is better maintained - Switch to tensorflow instead of tensorflow-gpu as CUDA deps are now included in the main package, but works for non-GPU systems as well - Windows: Requires MSVC 2019: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
  • Generalize to stacked encoder-decoder architectures. - Added stem to Unet for initial downsampling.
  • Fix Unet symmetry without middle block
  • Re-implement Unet using EncoderDecoder class
  • Add more options to encoder blocks to control skip connection sources - Enable conv block without pooling - Enable pooling before convs within a block - Account for pooling flag when calculating encoder stride - Keep only the first intermediate features at each encoder stride for forming skip connections - Corrected decoder stride calculation when searching for source features
  • Implement encoder-decoder meta-architecture - Created base classes for generalized encoder-decoder architecture. These provide a common API and building blocks for architectures like LEAP CNN, UNet, stacked hourglass, FC-DenseNet and more. - Re-implemented LEAP CNN using EncoderDecoder class. - Test coverage
  • Move IntermediateFeature to sleap.nn.architectures.common
  • More ResNet refactoring - Fix some typing issues - Allow for backbone creation without upsampling stack - Remove default upsampling stack configuration - Fix stem dilation to use correct output stride attribute - Fix output stride calculation - Fix preset variant classes - Add tests
  • Switch to rate-based filter sizes in upsampling stack - Add upsampling stack filter rate tests - Hide visible GPUs for tests
  • Upsampling stack fixes - Fix stride calculation - Fix computed block count dtype - More sensible default for transposed conv filters - Add tests
  • Refactor ResNet implementation - Enable variable output stride for the features backbone with support for pretrained weights via dilated convolution compensation. - Added generic upsampling module to provide common patterns for the decoder portion of architectures. This will be used to refactor and unify the implementation of a variety of architectures. - Changed interface of the backbone to: make_backbone(x_in) -> (x_out, intermediate_outputs) for more flexibility in multi-head configurations. Head instantiation will be done separately upstream in sleap.nn.model.Model creation.
  • Add option to return points with instance confmaps dataset
  • Fix rotation augmentation sign flip
  • Add Keras callback to log matplotlib figures to TensorBoard

v0.1.16 (2020-03-12)

  • Add tensorboard=2.0 to conda dependencies.
  • Use setup.version for conda package.
  • Bump version to 0.1.15
  • Add DeepLabCut import to menu.
  • Use DataFrame.iloc since ix deprecated.
  • Add contributors and funding info
  • Add citation info to README
  • Fixes for loading shortcut config.
  • Add get_defaults arg to get default config
  • Fixes to labels cache updating.
  • Clarified docstring for save_frame_data_hdf5
  • Note that prediction count for video in status bar
  • Bug fix: don't use set for counting labeled frames
  • Add support for preferences, custom keys for nav.
  • Add shortcuts for frame next/prev/step.
  • Add license info for color palettes
  • Bumping alpha version to test appveyor cache.
  • Require PySide2>=5.12 (not ==5.12.0).
  • Also cache pip in appveyor.
  • Bumping alpha version to test appveyor cache.
  • Clean (remove bz2's) before trying to cache.
  • Just cache bz2 files (using new dir).
  • Just cache bz2 files (using new dir).
  • Just cache bz2 files.
  • Cache conda packages for appveyor build.
  • Default to empty option_list for form combo box.
  • Remove debug print.
  • Access sleap/version.py in setup without import.
  • Add diagnostic script for install debugging.
  • Clean up appveyor.yml from pypi testing.
  • Try uploading wheel (w/o running tests).
  • Try uploading (w/o running tests).
  • Try uploading (w/o running tests).
  • Try uploading to test pypi from appveyor.
  • Better cache refresh for new/remove instance.
  • Refactor cache from Labels into LabelsDataCache.
  • Fix typo in get_track_occupany method name.
  • Remove code for negative sample anchors.
  • Remove duplicate video callback code.
  • Use labels obj instead of filename in test.
  • Remove enable_source_video attrib from HDF5Video
  • Bug fix when scrolling so slider handle in view.
  • Support mixed-video backend for training packages.

v0.1.14 (2020-02-12)

  • Always use non-native file dialogs on linux.
  • Relative path fix for grid test fixtures
  • Add tests for gridfix
  • Convert to midpixel coordinates in gui.
  • Pin imgaug version to 0.3.0.
  • Fix bug from typo in 88739c4f for reading hdf5.
  • Add align_instances_on_most_stable method.
  • Limit queue size so we don't run out of memory.
  • Separate method for reading hdf5 non-inst data.
  • Add info.align module for making "mean" instance.
  • Don't reset stop_training during predict callback.
  • Resize and move training image window.
  • Add save_viz option to training forms.
  • Show image dir window when there are images to show.
  • Add window for watching training viz.
  • Add on_epoch signal to LossViewer.
  • Adjust train_subprocess method for save_viz.
  • Tweaks to test for loaded video.
  • Tweaks for 0 indexing and small frame counts.
  • Integrate track cleaner into inference/tracking.
  • Use [X, Y) range consistently for slider.
  • Revert "Avoid throwing exception for invalid frms"
  • Avoid throwing exception for invalid frames.
  • Improved background frame loading.

v0.1.13 (2020-01-29)

  • Delay updating caches until all deletes.
  • Bug fix, gen_cm_fn threw if given 3rd arg.
  • Implement visualization saver callback. - Moved visualization plotting from local to Trainer class method. - Added tf.keras callback for saving plots to disk. - Added CLI option to enable visualization saving (similar to --tensorboard).
  • Change default OKS sigma for evaluation function to human data minimum.
  • Add longer trail len options (100, 200, 500)
  • Improved trail code, set to use single node.
  • Pass skeleton for instance_crop_ctr_node_ind.
  • Add instance_crop_ctr_node_ind field.
  • Support for optional_index list.
  • Remove model-specific training params from form.
  • Comment helper function for TensorBoard plotting.
  • Typo in node loss output type check
  • Implement OHKM and node-wise losses - Allows for dynamic tuning of error weight by channel. - Node-wise loss can be computed as a metric for monitoring training progress by body part. - Add training job options to enable new features. - Loaded models now are not compiled. This enables custom losses to be saved without requiring to be available in the loaded context.
  • Select spawned track instance on nav to next spawn
  • Better track trails in gui.
  • Bug fix, don't clear cache if doesn't exist.
  • Use nodes instead of edges for gui inst bbox.
  • Cache counts of user/predicted frames.
  • Scope logging by data split
  • Quick and dirty visualization in TensorBoard

v0.1.12 (2020-01-27)

  • Always show horiz scroll in slider.
  • Include tracking.window in inference form.
  • Add for lines in print of cli call.
  • Scroll to ensure slider handle is always visible.
  • Filter irrelevant kwargs to Video.from_filename().
  • Bug fix for empty shortcut keys.
  • Bug fix for topdown sample indices.
  • Fix to cli description in docstring.
  • Use 1-based idx for tables/videos in gui.
  • Add command to delete current frame predictions.
  • Bug fixes to tests.
  • Update suggestions table on add/del instance.
  • Ensure that table sort doesn't break row idxs.
  • Shift-double-click to add with nodes "completed".
  • Enable tracking-only inference pipeline from gui.
  • Add highlight for predictions mixed w/ non-pred.
  • Add back abspath() lost in merge.
  • Save path prefix changes in config file.
  • Add function to save config yaml.
  • Only unsaved changes if inference returns predicts
  • Bug fix when merging videos from labels.
  • Add code for auto path prefix fixes w/ config file
  • Fix sort in table between numbers and strings.
  • Allow saving Labels with relative path.
  • Add predicted_instances access to Labels class.
  • Add tracking-only ui to sleap-track.
  • Add "dummy" option to VideoLoader.
  • Avoid duplicating paths in training profile list.
  • Bug fix for changing track w/in selected range.
  • Slightly thicker track lines (1.5 -> 2)
  • Add h5 file used in adaptor tests.
  • Bug fix, zoom to fit wasn't running for new frames
  • Update frame load request delay from recent avg.
  • Modularize data io into format adaptors.
  • Use trail length menu for showing/hiding trails.

v0.1.11 (2020-01-21)

  • Load video as grayscale if models have one channel
  • Bug fix, don't always retrain topdown.
  • Fix for monkey patch backward compatibility (numpy < 1.17)
  • Bug fix for topdown choice in editor.
  • Temporary monkey patch for imgaug bug with numpy >= 1.18.
  • Tiny typo in data augmentation generator leading to no rotation aug.
  • Bug fix, topdown now returns (nan, nan) points.
  • Hotfix for case where there are no centroids detected in inference.
  • Speed-up to track overlay.
  • Remove cuda from explicit environments.
  • Add test for passing search paths to Labels.load_file().
  • Accept list of search paths instead of callback.
  • Use worker thread to load images in background.
  • Bug fix to heights for slider w/o tracks.
  • Add UI to replace videos in project.
  • Keys to skip to first/last contiguously occupied frame.
  • Double-click to select contiguously occupied frames.
  • Show number/percent of predicted frames in status bar.
  • Update tick marks when zoom changes.
  • Line in seekbar marking new track column.
  • Improvements to seekbar slider UI.
  • Add command to select from current to frame N.
  • Use thousands separators in frame numbers.
  • TrainingJob.is_trained returns False if model is not found - Previously it would throw an exception from TrainingJob.model_path, which would break the inference GUI if there were empty folders from failed runs with existing training json files - Change TrainingJob.model_path final exception type to more appropriate FileNotFoundError
  • Better chaining of batchwise ops for inference classes - Slightly slower but much more memory efficient

v0.1.10 (2019-12-12)

  • Add docs for edge style.
  • Better wedge width (for smaller nodes).
  • Default to line (not wedge) edge style.
  • Basic image aug when previewing training data.
  • Use default string for edge style (bug fix).
  • Add wedge/line styles for edge drawing.
  • Reorganize api docs, minor how-to fixes.
  • Add minimal docstring for Predictor class.
  • Remove old remote info superseded by howto.
  • Add images used in howtos.
  • Add howtos for merge, tracking, proofreading.
  • Add howtos to documentation.
  • Add more cli/training package ref documentation.
  • Add brightness/contrast training augmentation.

v0.1.9 (2019-12-09)

  • Add uses_image property to condidate classes.
  • Use N,-M range for inference on clip.
  • Inference cli accepts "0,-123" as frame range.
  • Reformat with black.
  • Use topdown class for confmaps w/o pafs.
  • Fix RegionProposalSet creation in extractor class
  • Add PassthroughRegionProposalExtractor.
  • Normalize any int dtype.
  • Added classmethod for RegionProposalSet creation with uncropped images - Added documentation to RegionProposalSet class
  • Sort cleaned tracks.

v0.1.8 (2019-12-06)

  • Improve get_primary_point_displacement_series.
  • Add get_track_count method.
  • Add include_trails param for getting frame tracks.
  • Change default trail length to 10.
  • Show trails for tracks not in current frame.
  • Add longer track trail options.
  • Ignore missing videos for LEAP if non-gui.
  • LEAP import GUI changes.
  • Remove debug printing.
  • Handle loading job with old dir structure.
  • Add contact and a couple of link text changes
  • Add weight downloading to FAQ
  • Add conda-build recipe for sleap-cpu.
  • Test set_field_options method for forms.
  • Set node option list for suggestions form.
  • Add methods to set field option list by name.
  • Commit img to numpy before tracking call.
  • Split tutorial into two parts.
  • Check for unsaved file before training/inference.
  • Update labeled suggestion count for new instances.
  • Move argparser into main so used by sleap-label.
  • Set frame on newly added instances.
  • Move cli into main() for sleap-track.
  • Update tutorial and re-organize docs.
  • Use full name of BSD3 license.

v0.1.7 (2019-12-02)

  • Tweaks to training editor.
  • Adjust param name for test.
  • Check for options in yaml before using.
  • Replace node_idx field with list of node names.
  • Add support for passing in options lists.
  • Save videos/tracks/suggestions in hdf5 datasets.
  • Re-enable training editor with support for new classes.
  • Add new model type and architectures.

v0.1.6 (2019-11-27)

  • Remove -gpu from tensorflow requirement in setup.
  • Remove line break from conda build files.
  • Rename sleap.gui.active in docs.
  • Exclude tensorflow-gpu from setup requirements.
  • Add jsmin to pip packages inside conda sleap pkg.
  • Bug fix when making frames from predictions.
  • Remove keras from conda build env.
  • Use tensorflow 2.0 from conda.
  • Move minimal training profiles into examples dir.
  • Send model type via zmq as string.
  • Sort dict with instances for frames in chunk.
  • Reset run_name before training (not always).
  • More robust message receiving.
  • Add (back) training zmq, run_name in cli.
  • Integrate tf2 nn code with gui.
  • Use new inference modules for overlays.
  • Get hdf5 dataset dtype from test frame.
  • Remove support for hdf5 confmap/paf overlays.
  • Bug fix to eb4ee45cd, pass model paths.
  • Add find_files_by_suffix function.
  • Bug fix, don't overwrite instance_box_length arg.
  • Bug fix to is_trained property.
  • Add node_names to tracking h5.
  • Bug fix, re-enable contextual menu on mouse move.
  • Validate RegionProposalExtractor.merged_box_length
  • Bug fixes for when 0 or 1 peak connections found.
  • Ensure region.merged_box_length > 0.
  • Add cli for running tracking by itself.
  • Hacky bug fix, MediaVideo accepts HDF5 attributes.
  • New Predictor class with policy-based pipeline.
  • Fix pretrained NASNetLarge
  • Expose TensorBoard profiling parameter
  • Multi-head averaging for multi-scale output backbones
  • Expand DenseNet multi-head capability - Fix feature sharing across scales and heads
  • HRNet fixes
  • Add ability to pass in additional training callbacks - Added HDF5Video parameters to utils.VideoLoader
  • Add Tensorboard callback to Trainer
  • Fix cli help, use get_package_file.
  • Remove debug printing.
  • Show minimal message during suggestion generation.
  • Bug fix, shift click to complete points.
  • Update promo movie in the readme (finally)
  • Fix instance cropping using reference center node
  • Quick test fix
  • Add minimal training jobs for other model output types
  • Evaluation submodule with OKS and generalized VOC metrics
  • Mock inference classes that pass GT via the same interface
  • Add centroid point dataset for datagen (without confmaps)
  • Fix rounding in region proposal box grouping
  • Region proposal extraction without merging
  • Store skeleton in training job if not specified in file. - Add Skeleton constructor from simple skeleton data - SimpleSkeleton is now JSON serializable - Allow for providing external skeleton when creating InferenceModel
  • Add more printing during training setup. - TODO: switch to logging
  • More casting at the data generators.
  • Remove deprecated submodules. Breaking commit.
  • More aggressive casting during data generation
  • Add minimal centroid training file.
  • Training pipeline configuration - Support for comments in training job json files via jsmin - CSV logging of training history - Callback-based final model saving - Flexible run name generation - Model path checking using new and old pathing scheme - Instance method for TrainingJob saving - Saving jobs with 4 spaces indentation by default - Handle model specification without skeleton: null - Expose most of the useful objects in Trainer as private attributes, allowing for access to model and data even if Trainer.train() is interrupted. - More outputs with trainer verbosity - Allow specifying val/test data in CLI
  • Auto calculate steps per epoch
  • Fix PAF sampling grid yx->xy orientation
  • Static shape fixes to instance cropping
  • Basic training CLI clean up.
  • Add basic training CLI matching old format. - Bonus: sleap-train works now!
  • Expose more UDenseNet parameters and correct docstring.
  • Handle model and list outputting backbones more gracefully in Model. - Use Trainer.verbosity attribute for callbacks as well.
  • Add support for creating TrainingJobs from JSON strings.
  • Centroid dataset generation and working trainer - Add hints and explicitly enforce static shapes in dataset generation - Fix typos in Trainer methods
  • Add image attribute to LabeledFrame for convenient frame fetching - Bug fix to training data generation in Labels
  • Training pipeline implemented for everything but centroid confmaps.
  • Initial datagen and training re-implementation.
  • Expose attribute for number of filters in transposed conv heads.
  • Fix usage of HigherHRNet attributes in backbone construction.
  • Add HigherHRNet and UDenseNet backbones.
  • Create nn.data submodule for tf.data.Dataset-based data generation. - imgaug-based augmentation - Instance cropping from centroid or reference node - Confidence map generated for basic and topdown-style models - PAF generation
  • Small bugfix in pretrained NASNet initialization and MobileNet typo
  • Bug fix, include all frames for deepposekit
  • Bug fix to demo confmap/paf overlay windows.
  • Make points visible for PoseTrack dataset.
  • Add support for PoseTrack varient of COCO dataset.
  • Add support for importing DeepPoseKit and COCO.
  • Add support for importing DeepPoseKit and COCO.
  • Add scale to training dialog.
  • More typing, cache for iou boxes.
  • Refactor duplicate code out of Tracker classes.
  • Bug fix, get number of frames from video.
  • Remove FIXME's (test was right).
  • Make the local/refinement tests pass.
  • Add tests for nn.region_proposal.
  • Note peak-finding test which now fail.
  • Add tests for nn.paf_grouping.
  • Added threshold for minimum required points for spawning new tracks
  • Added generic tracker that operates on points only - Takes any similarity function and matching function - Added similarity functions: IOU and centroid distance
  • Initial implementation of topdown peak finder
  • Add tests for nn.paf_grouping.
  • Hotfix for TrainingJob/Model imports mess
  • Refactor InferenceModel to be simpler layer on top of a tf.keras.Model. - Can still be created from a TrainingJob using a factory class method. - Handles multi-inputs/outputs more generically - Less tied to TrainingJob/backbone construction, instead computes most properties implicitly. - Added a new utility method to replace .predict() without changing the input tensor to allow for arbitrary input sizes. This is handled implicitly now through the model's call() method.
  • Add peak-finding test for all zeros.
  • Revert local peak finding algorithm - New version didn't have a good way to deal with adjacent local peaks - Added iteration based method to deal with per-channel max filtering. This avoids moving a lot of memory on the GPU as with the old "channel packing" method, at the cost of more constraints on autograph since the channel dimension must be statically inferable. - Refactor ConfmapPeakFinder to batch above autographed functions calls.
  • Refactor which calls get autographed in centroid predictor - Now batching occurs above autographed functions to minimize retracing - Exposed more peak finding parameters at base class level
  • Check for training_job.json within model folder when deserializing
  • Typo in utils.VideoLoader.n_chunks property
  • Add integration test for nn.peak_finding.
  • Add tests for nn.peak_finding.
  • Bug fix for getting random prediction frames.
  • Command line utility for merging tracks.
  • Add test for velocity suggestions.
  • Add suggestioned frames based on high pt velocity.
  • Don't break when there are no tracks.
  • Add support for header series as numpy array.
  • Add hog feature suggestion, better bag of features
  • Disable contextual menu when clicking node.
  • Connect app state to instance overlay.
  • Add menu options for new displacement graph.
  • Fix input shape specification when building new backbones
  • Flow shift tracker refactoring - More faithful to original algorithm (no propagating shifted instances) - Matching options: Greedy or Hungarian - Generic instance similarity function - Use best shifted instance in the window by track ID - Filter shifted instances by optical flow scores and ignore instances with few points - Added tracking score field to PredictedInstances (good signal for proofreading) - Added image scaling as preprocessing for optical flow calculation
  • Add keras_applications-based network backbones. - Fix DenseNet implementation and add variants as well as generalized - Add MobileNetV1 and MobileNetV2 - Add NASNet Mobile, Large and generalized
  • PAF grouper refactoring
  • Add property to Skeleton to return edges as pairs of node indices
  • Add method for calc'ing single node displacement.
  • Fix merge conflicts
  • Divisibility check in resizing and extended batched call
  • Intermediate changes in inference modules overhaul - Peak finding redone - Centroid-based region proposals - Video loading via tf.data.Dataset - Initial tests stub via tf.test.TestCase unittests
  • Use bag of words for brisk, parallel per video.
  • Write tracks as tuples to save space.
  • Bug fix, connect state vars to color manager.
  • Sort groups by numeric rather than alpha order.
  • Moved suggestion pipeline into object.
  • Add test for brisk and pipeline.
  • Add default value for brisk thresh.
  • Add test to ensure hdf5 video import works.
  • Add test, remove debug print.
  • Refactor feature-based frame suggestions.
  • Suggestions grouped by video, interleave sortable.
  • Add group interleave sort option for suggestions.
  • Apply node/edge color to skeleton tables.
  • Initialize dicts in init so not shared.
  • Refactor gui coloring code.
  • conda install Pillow, block installing pyqt
  • Rename active learning gui test file.
  • Rename gui/active.py to gui/inference.py
  • Add support for instance placement methods.
  • Bug fixes for new suggestion format.
  • Remove code that was commented out.
  • Rename "active learning" to "training".
  • Re-enable prediction on suggested/random frames.
  • Mode drop-down menus in learning gui dialog.
  • Add black and pre-commit to dev reqs.
  • Store cluster/group id for suggestions.
  • Complete rewrite of core inference modules. - nn.peak_finding: - Global peak finding - Local peak finding via max filtering with threshold - Gaussian smoothing for suppressing spurious local peaks - Centered cropping - Local direction offset-based subpixel peak refinement - Autographed functions for fast graph mode execution of core ops - Generalized high level wrappers with lightweight eager mode control flow (e.g., different flags, defaults, variable outputs, etc.)
  • Enable Tensorboard through CLI and change default profile save path - Training job JSON now defaults to "{run_path}/training_job.json"
  • Use force-directed graph for node placement.
  • Don't die if ~/.sleap/ already exists.
  • Use config files stored in ~/.sleap/.
  • Get frame_range with default empty range.
  • Add test coverage for track-related commands.
  • Add commands for change point location/visibility.
  • Bug fix when setting track from other video.
  • Major refactoring to app gui code.
  • gui refactoring
  • gui refactoring
  • gui refactoring
  • Added a couple of common properties to flow shifted instances
  • Fix to checkpoint every epoch, not batch
  • Fix dynamic preprocessing for ResNet backbone for TF2/graph mode
  • Fix deprecated kwargs for checkpointing through Keras callback
  • gui refactoring
  • gui refactoring
  • gui refactoring (in progress)
  • Bug fix: out of range peaks crashed PAF line integral lookups
  • Temporarily disabled autograph on functions getting retraced often.
  • Refactored peak finding. - Rewrote all processing code in pure TF. - Enabled some autographing, but still need to rework some of the sub-functions to move more processing into graph mode. - Updated predictor to use new peak finding functions.
  • gui refactoring
  • Update to TF 2.0 - Removed standalone Keras dependency - Added conda package dependencies for CUDA Toolkit and cuDNN - Added TF 2.0 as pip dependency
  • gui refactoring
  • Update inference overlay to use InferenceModel

v0.1.5 (2019-10-21)

  • Add pip install to unix conda build script.
  • Ignore any error when loading saved models for gui
  • Add FileDialog.openMultiple() method.
  • Import submodules we want available at top-level.
  • Add button to abort loading when missing files.
  • Better gui for finding multiple missing files.
  • Prompt for save dir if needed.
  • Add missing import.
  • Add option for saving/not saving predictions file.
  • Make sure that all directories in save path exist.
  • Add test for empty hdf5 saving.
  • Bug fix, don't die when saving hdf5 without nodes.
  • Show full filename in missing video dialog.
  • Require jsonpickle 1.2 instead of 1.1.
  • Add wrapper class for file dialogs.

v0.1.4 (2019-10-09)

  • Bug fix (typo in function name).
  • Bug fix when adding nodes to instance in gui.
  • Don't import Signal from QtCore.
  • Draw first predicted node with thicker line.
  • Added back previousLabeledFrameIndex().
  • Use new merge method in active learning.
  • Use conda-build=3.17
  • Only upsample if there are peaks.
  • Added support for from_predicted in saved HDF5.
  • Add options for selecting models in inference gui.
  • Wrappers for QFileDialog functions w/o options arg
  • Add init.py for sleap.gui.overlays module.
  • Add init.py for sleap.info module.
  • More test coverage for io.video
  • Add missing arg to docstring.
  • Fixes so HDF5 selected images -> imgstore works.
  • Add last_frame_idx property on videos.
  • Ignore errors when trying to plot initial frame.
  • Add support for en/decoding frames stored in hdf5.
  • Add param to add default suffix when saving.
  • Move LossMonitor test into gui tests dir
  • LossViewer releases zmq socket when closed.
  • sLEAP -> SLEAP in readme.
  • Update inference overlay to use InferenceModel
  • Only include negative samples from labeled frames.
  • Make empty frame for empty hdf5 video.
  • Use player.view in track overlay.
  • Improve rangelist test coverage.
  • Use subset of frames for hdf5 test.
  • Close hdf5 videos in test.
  • Release hdf5 labels object in test.
  • Use "." for paths of hdf5 video in labels file.
  • Enable hdf5 package export in gui.
  • Add support for saving hdf5 w/ labels and imgs.
  • --nonnative param to use Qt file dialogs.
  • Fixes to docs.
  • Fixed docstrings (no foos allowed).
  • Fixed docstrings (no foos allowed).
  • Better docstrings and typing, minor refactoring.
  • Fixed incorrect test.
  • Better typing and docstrings.
  • Better typing and docstrings.
  • Fixed syntax error (function name).
  • Fixed docstring arg name.
  • Fixed docstring arg name.
  • Better typing and docstrings.
  • Better typing and docstrings.
  • Better docstrings, typing, minor refactoring.
  • Docstring edits.
  • Add Track to module docstring.
  • Rename, add docstrings and tests.
  • Add docstring.
  • Refactor, add docstrings and tests.
  • Reformat all tests with black.
  • Better typing and docstrings.
  • Better typing and docstrings.
  • Wrap docstrings to 79 chars.
  • coveralls instead of python-coveralls
  • coveralls instead of python-coveralls
  • Revert "Remove unused, undocumented, methods."
  • appveyor debugging
  • Fixed typing on make_cattr.
  • Remove unused, undocumented, untested methods.
  • Better typing and docstrings.
  • Add .coveralls.yml
  • coveralls --service=arg
  • coveralls --service arg
  • Use coveralls command line args.
  • Add env variables for coveralls.
  • Reformat all code with black.
  • pytest-cov in appveyor script.
  • pytest-cov in appveyor script.
  • Coveralls in appveyor script.
  • Coveralls in appveyor script.
  • Remove unused (broken) method.
  • For cv2 dependency use opencv-python-headless.
  • Add test for sleap.io.visuals.
  • Use file with user data for demo code.
  • Combobox (menu) for merge methods.
  • Show table of clean merge results.
  • Active inference changes - Removed disk serialization of predictions (it was being overwritten after each video anyway) - Progress dialog works - Canceling works gracefully - Broken: asynchronous call so that the GUI remains responsive
  • Major refactoring of inference module - Created a InferenceModel class that holds all of the metadata required to run models from a TrainingJob. This includes input/output scale, skeletons, Keras model loading and caching, variable input shape, normalization and other convenience properties. - Added some generic attributes to the sleap.nn.Model class to allow for storing or inferring output scaling (depends on architecture details, so it can be overloaded in backbones). - sleap.nn.loadmodel module removed. - Predictor refactored to take advantage of InferenceModel caching and reuse multiprocessing pool (fixes: #155). - Previously, models were being reloaded from disk and copies made every time a new crop size was encountered. - Previously, a new pool was being opened on every predict() call. - Refactored DataTransform usage to account for discrepancies between input scale vs output scale vs relative output scale vs scale across models. - Fix: DataTransform-based scaling would always convert images to float64 dtype. - Refactored TensorFlow-based peak finding for GPU execution. - Account for unspecified confmaps tensor at graph creation time. - Fix subpixel refinement algorithm to enable greater resolution than original data scale. - General rework of offset adjustment. - Exposed supersampling parameters (window size, window batching) - Fix tensors being overwritten or dropping out of context - Fixes: #149 - Exposed peak finding options and other inference functionality as Predictor attributes. - Renamed: Instance.visible_points_array -> Instance.points_array - Sensible cropping defaults in profiles and function kwargs. - Indented default profiles for readability. - General unfucking of syntax errors, anti-patterns, typos, etc.
  • Gui for merging w/ conflict resolution.
  • Merge conflict only if instances are same type.
  • Methods for complex merging of labels.
  • Bug fixes to demo functions.
  • Formatting changes (from pylint).
  • Fix delete_symmetry and add test.
  • Better typing and docstrings.
  • Docstring improvements.
  • Add score column to suggestions, columns sortable.
  • Add seekbar headers to gui.
  • Maintain order of tracks when updating top level.
  • Allow for importing Lambda layers with TensorFlow functions
  • --all-frames arg includes initial empty frames
  • Explicit input_video type handling in inference
  • Proper handling of nested skeletons when structuring TrainingJob - Also fix HDF5Video edge case
  • Clean up imports
  • Fixes for showing/clearing header.
  • Added ResNet50 architecture - Generalized output scale calculation - Generalized backbone typing
  • Minor typo
  • Fix stacked hourglass implementation - Added output scale calculation to Model class - Fix cattrs structuring when deserializing models - Add SHG params to training editor - Miscellaneous typos
  • Add dummy frame to otherwise empty imgstore.
  • Only load defered imgstore once (bug fix)
  • Check track_range not None before comparing (bug fix)
  • Keep list order when merging in new videos
  • Include empty frames in track occupancy matrix
  • Use weak_filename_match() to match video paths.
  • Defer loading imgstore until accessing video data.
  • Small inference fixes in prediction
  • rename and move Import... menu command
  • remove duplicate instances when merging frames
  • show labeled frame and user frame counts
  • use track_range.start to next find spawn frame
  • add start property to RangeList
  • keep w/in array bounds (when user adding new profile)
  • ignore empty tracks for track occupancy h5
  • catch errors during save and notify user
  • add save_file method, detects format from name
  • Autodetect initial video settings in import gui.
  • Overlay to show track labels (when appropriate)
  • Overlay to show negative anchors, command to clear
  • Overlay to show negative anchors, command to clear
  • Gui and class for viewing/changing menu shortcuts.
  • prevent training/inference if model overlay loaded
  • re-ordered colors used for overlays
  • Change Instance.points() method to property.
  • Add visible_points_array property and rename p_a()
  • Update video for ModelData if shapes match
  • Make sure video matches video for ModelData object
  • Install sleap package in appveyor.
  • pip install .
  • tweak bounds for when ignoring outliers
  • gui controls for log scale/outliers/batches to show
  • use Instance for selection in viewer
  • iqr*1.5 for outliers, ensure > 0 for log scale
  • resize output from multiscale confmaps/centroids
  • test _dont_use_pafs gui option
  • add active learning option to not use pafs
  • show current video index in statusbar
  • ignore event to set empty tooltip
  • Revert "use widget in status bar"
  • use widget in status bar to show permanent message
  • cache video data shown in table
  • only update relevant dataviews (for speed)
  • minor refactoring in code to find copy instance
  • bug fix to previousLabeledFrameIndex()
  • match nodes by id (not name) when updating skel.
  • test modifying instance skeleton
  • allow saving project with just skeleton
  • Partial test coverage for active learning.
  • refactor active learning code into more functions
  • disable save_confmaps_pafs since not currently working
  • update empty gui skeleton from labels skeleton
  • Add unify arg to Labels.extend_from(), new tests.
  • Hash skeleton by id, remove eq override
  • don't test for strict skeleton identity
  • Attempt to fix bugs from active learning results
  • add method to find instance in frame
  • check labels is not None when updating gui
  • create output dir if doesn't exist
  • note change when skeleton added
  • support for header (graph), use mark objects
  • disable blur when upsampling (it's not working)
  • bug fix when confmaps/paf multiscale different
  • bug fix, use tolist() to get list of Python ints
  • show full video filename (don't truncate)
  • allow 0-1000 negative samples
  • show number of user labeled frames in status bar
  • use / for imgstore paths (bug fix)
  • use / for imgstore paths
  • args to control merge/size for centroid boxes
  • remove unused crop_iou_threshold
  • determine channels from centroid model
  • bug fixes to last commit
  • expose gaussian size and sigma from peak_tf_inference
  • opencv-python 3.4.2.17 => 3.4.1.15
  • predict on range of frames
  • bug fix when creating Instance w/ zero points
  • re-arranged methods in Labels class
  • don't autoconvert to grayscale
  • bug fix to pass new tests
  • more tests
  • more tests
  • include pid in tmp dir name for json.zip
  • bug fix, invisible pts weren't nan in points_array
  • accept short name for default training profiles in cli
  • default to only user labeled frames in imgstore
  • handle missing nodes in nodes()
  • remove .h5 from name before appending
  • bug fix, handle mark_type f
  • use load_file instead of load_json
  • command to export labels zip with imgstore
  • use relative paths to imgstore yaml
  • Command line interface for training
  • suggested frames with low scoring instances
  • thinner slider mark for suggestions
  • show instance score in dataview
  • Labels.load_file() determines filetype from name
  • raise error during test by checking channels
  • Defer loading MediaVideo reader until needed
  • bug fix to remove_video()
  • bug fix when checking depth/down_blocks
  • improve gui video callback (for missing videos)
  • double click instance to add missing points
  • fix points if needed when inst.points accessed
  • allow node addition
  • fix (and test) removing node from Instance
  • don't copy _nodes from Instance to PredictedInstance
  • allow node deletion by caching node list
  • check down_blocks if no depth for model
  • fix conda build to include rapidjson
  • remove gui option to save confmaps/pafs during inference

v0.1.3 (2019-08-30)

  • only convert if type is PointArray
  • support for merging hdf5 labels into open labels
  • Convert PredictedPoint to Point if in Instance
  • (Hopefully) more robust default training profiles
  • bug fix (again) for output_path
  • don't double crop size for centroid cropping
  • bug fix to confmap overlay
  • model overlay supports centroids
  • method to invert scaling on images
  • save gui inference results in h5
  • bug fix for merge, output_path now attribute
  • enable saving labels h5 from gui
  • only show one model overlay at a time
  • rename overlays.hdf5 module to overlays.base
  • Feature to load model and show predictions in gui
  • fixed typing annotations
  • update monitor in chunks, show only last 2000 batches
  • check if row inst still exists
  • ensure bounding boxes within (trimmed) image
  • datagen cropping improvements
  • Option to return confmaps from tf peakfinding
  • Bug fix for from_predicted inst tracks
  • Bug fix for dependencies.
  • Bug fix, make sure peaks matrix has rows for nodes
  • Bug fix, Predictor takes args instead of predict()
  • gui support for loading h5 labels
  • video callback and update caches when loading h5
  • Turn off append mode on HDF5 for now. Need to fix.
  • Remoed cbor import. This was old and just a test.
  • Add HDF5 output to inference. Make it default.
  • Support for appending to HDF5 label files.
  • Fixed HDF5 serialization bugs.
  • HDF5 saving and loading for Labels
  • Fixed some performance issues with JSON serialization.
  • Converted points dict on Instance to a PointArray.
  • Point classes are now np.record subclasses.
  • Switched ujson out for rapidjson.
  • Swapped json for ujson.

v0.1.2 (2019-08-21)

  • Change default training profiles.
  • fields for up/down blocks in training editor
  • Tensorflow peak-finding
  • --frames arg to visuals cli
  • Merge subchunk lfs with same frame idx
  • Less frequent intermediate saving during inference
  • Check for bounding_box_size on trained model
  • Bug fixes to centroid merging code.
  • Merge overlapping centroid crops into larger crops.
  • Bug fixes to centroid code clean-up
  • Clean-up centroid prediction code
  • Bug fixes for refactoring
  • Refactor inference code.
  • use cumulative scale of transformations
  • move unused legacy code into separate file
  • remove unused training server
  • merge labeled frames w/ same idx after extending
  • skeleton.matches() now ignores skeleton name
  • frames() wraps around once there's no subsequent match
  • don't use multiscale in default training profiles
  • revert training monitor Y range outlier code
  • menu command to go to next user labeled frame
  • add frames() to iterate over labeled frames
  • use first skeleton in labels
  • bug fix, explicit check for None
  • keyboard shortcuts for prev/next labeled frame
  • update Y range in training monitor less often
  • Multiscale inference + training fixes.
  • check for bounding box before using
  • save_confmaps_pafs option for expert dialog
  • Multiscale training.
  • remove outliers for y range
  • new commands to delete instances by criteria
  • add track_names dataset to h5
  • add frame limit arg, improve speed for lf search
  • param for 'less overlap' mode (temp solution?)
  • don't save frame images with confmaps/pafs
  • remove test_ from output filename
  • save more visual output data from inference
  • remove unused code
  • fix test for confmaps view
  • show confmaps/pafs in gui as overlay
  • Refactor code to show video overlays into modules.
  • ask fps for exporting clip
  • fps property for MediaVedia
  • show epoch/val loss in chart header
  • move bounding_box_nms into datagen
  • get frame_idx for track from lf, not inst
  • use SINGLE_INSTANCE_PER_CROP in inference
  • instances_nms in parallel peak matching
  • add nodeless_point_dist, ignore nodes when matching
  • add instances_nms for inference
  • add Labels.make_video_callback()
  • support for negative sample anchor points
  • re-organize app menus
  • add missing import
  • use generate_training_data for all data gen
  • add negative_anchors attribute on Labels
  • encapsulate all training datagen
  • more function documentation and modularity
  • docs and tests for rangelist
  • labels.find() accepts range as frame_idx
  • bug fix, check before removing frame from track
  • resize seekbar to only show occupied tracks
  • menu shortcuts for deleting clip/area
  • feature to remove all instances within selected area
  • New 'single instance' mode, uses only confmaps model.
  • Use ranges to cache and modify track occupancy gui.
  • restrict delete to instances in selected track
  • change inst idx in view to idx in lf
  • use lookup table for lf frame idx
  • sort slider marks before grouping
  • adjusted test to look for fewer track marks
  • bug fix for non-track marks in seekbar
  • increase continuity threshhold to 99.5%
  • bug fix for call to _swap_tracks
  • faster track display in seekbar
  • allow weak video path matching for match_to
  • move gui video picker code into Labels
  • command to go to frame number
  • update gui state less often
  • move track swapping code into Labels
  • increased suggestions per video range
  • include frame range in default output filename
  • show both tracks and suggestions in seekbar
  • menu action to delete predictions from selected clip
  • enable compressed json save from gui
  • compress track h5
  • change iou threshhold .8 => .9
  • background to make instance label text more visible
  • pass color manager to TrackTrailManager
  • show score with track for predicted instance
  • preserve instance selection when plotting new frame
  • non-cycling color palette
  • sort instances_to_show by track spawn frame
  • show number of tracks/frame instances
  • check for videos in labels dir
  • support for color palettes
  • skip inference for chunk if no centroids found
  • fix, pass save_confmaps_pafs to predictor
  • option to save confmaps/pafs
  • menu item to export labeled clip
  • better selection range alignment
  • pass frame as singleton to active learning
  • keys to skip by 50 or 500 frames
  • option to show qt progress window
  • queue for progress reporting plus more docs
  • use numpy for bb nms instead of tensorflow
  • log time for image crop/scaling
  • bug fix, syntax in last change
  • set logging level to INFO
  • bug fix to last change
  • bug fix if no centroids, cli arg for logfile
  • call cv2.setNumThreads
  • timing debug from threads
  • parallelize visualization code
  • remove qt imports
  • plot instances using cv2 (much faster) without qt
  • more timing debug
  • generate overlay video in chunks
  • command to delete instance track for entire video
  • just return instance closest to centroid (again)
  • include all instances from crop, iou to .8
  • use nms on centroid crops
  • tweaks to tutorial info re cluster
  • specify default channel in install, mac os instructions
  • more info about inference on cluster
  • try importing ForwardReference
  • require jsonpickle 1.1
  • corrected it's to its
  • fixed links in tutorial

v0.1.1 (2019-07-17)

  • tutorial draft
  • bug fix in swap track (from recent change)
  • changed default batch size from 2 to 4
  • signal to update ui after inference
  • use params from conf job for datagen (if not in form)
  • option to hide non-visible points
  • skip tracking if no instances found
  • default paf learning rate from 1e-4 to 1e-5
  • bug fix active learning predict on choices
  • three modes for active learning dialog
  • options in active learning for what to predict on
  • add hasSelection method
  • only write frames with instances
  • fix for next track spawn
  • snap to nearby mark within handle
  • pca suggestions bug fix
  • resizable seekbar
  • command to go to next track spawn frame
  • cli to output h5 with tracking info
  • write each frame after generation, use offscreen
  • debug output when writing visuals video
  • open compressed labels json files
  • don't save confmaps and pafs by default
  • centroids type in training editor
  • Fixed bug with tracking and centroid cropping.
  • allow importing multiple prediction files
  • Removed tensorflow-gpu from requiremnets.
  • Added tensorflow-gpu to requirements.txt.
  • show info for first/last labeled frame
  • fix track colors in plot_instances()
  • bug fix, copy qimage2ndarray result
  • Set verbosity=0 on Tracker by default.
  • cli to get info about labels file
  • tweaks to io.visuals code
  • plot_instances() as standalone function
  • Save videos with instances as overlay.
  • don't overwrite user params on window show
  • syntax error fix (= -> is)
  • store centroid model once loaded
  • Fix tracking bug with multiple calls to process.
  • check for candidate point before applying transform
  • fix test_labels_json to not assume order
  • reset job option menus on show
  • Turn off verbosity in tracking by default.
  • Switched logging.info messages in tracker to logging.debug.
  • Fixed tracking bug with non-sequential frames.
  • validate that trained models are compatible
  • fix path for final, best, and newest
  • Fixed up inference command line.
  • emit valueChanged when field values change
  • centroids output_type in training editor
  • convert final_model_filename from Windows path
  • base 10 log scale in training monitor
  • show decimation slider in pafs demo window
  • Add from_predicted attribute to Instance
  • initial_samples instead of sample_step for brisk
  • don't copy predicted points with nans
  • bug fixed better, check strides on array
  • decimation bug fixed, swap axes iff column-major
  • Added argument to Labels.save_json for image format.
  • don't break if fps=0 during inference
  • fixes to centroid code
  • scale images for training centroids
  • show seekbar selection range in status bar
  • don't show scrollbars in video seekbar
  • Fix very small bug in tracking.
  • Another tracking fix.
  • don't train centroids unless option set
  • bug fix to picking closest inst in crop
  • Added deterministic temp dir name to Labels.load_json.
  • Some formating changes.
  • return instance closest to centroid for crops
  • hide active learning window instead of closing
  • hide active learning window instead of closing
  • centroid bug fix: get crop size from model
  • remove debug print
  • don't crop when training centroids
  • inference centroid cropping using DataTransform
  • call merge_matching_frames after active learning
  • move merge_frames code into LabeledFrame
  • add Labels method to merge matching frames
  • Fixed mistake with ImgStoreVideo creation.
  • More bugfixes for tracking.
  • copy default centroid config from confmap config
  • add code to train centroids model
  • add ModelOutputType for centroids
  • add centroid datagen
  • Fix tracking bug fix when previous frame has None track.
  • Fixed bug with Labels.save_json and ImgStoreVideo
  • random suggestions by default
  • Fix to Tracking when optical flow fails.
  • fix type (again)
  • fix typo in extend_from
  • extend_from to copy data from another label object
  • slider fix, get marks for only specific video
  • fix match_to test, we can't assume same node order in labels
  • remove debug print in monitor
  • log scale in training monitor
  • add negative samples when training on inst crops
  • cleanup (mostly comments/annotations) in datagen
  • add min_crop_size for instance cropping
  • add dtype (for list) in formbuilder
  • use cattr to structure/unstructure video for inference
  • keep arrow cursor when dragging node
  • add menu item to import predictions
  • code to run prediction async in active learning
  • add match_to arg when loading json
  • no need to stop timer when closing monitor
  • changes to training/monitor communication
  • update dataviews after active learning
  • menu item to delete predictions
  • distinct conf/paf sigma in active learning
  • treat empty string filenane as if none
  • disable channel order swap after resize in inference
  • add random suggestion method, suggestion bug fixes
  • include all points from img when cropping
  • if clip selected in seekbar, predict for that
  • better integration between training_editor and active learning
  • convert image dtype/etc for flow tracking
  • undo h_w_scale since points aren't in two-dim array
  • remove debug print of messages for previous trainingjob
  • check labels is not None instead of implicit bool
  • bug fix to how we structure Instance/PredictedInstance from json
  • add what (confmaps,pafs) to msg from training to monitor
  • handle points from predictions better
  • when rescaling points in inference use h,w scale
  • remove --test-viz arg and corresponding function
  • tweaks to visualizeOutputs
  • hide active learning dialog to show conf/pafs windows
  • fix output_path for active learning inference
  • add Predict menu plus Viz Model Outputs menu item
  • bug fixes to show_*_from_h5
  • add show_pafs_from_h5 function
  • button in active learning to preview datagen
  • fix syntax error
  • hack to resize images so we can train/predict
  • save inference output in models dir with timestamp
  • changed batch size and early st. pat. in defaults
  • add show_confmaps_from_h5()
  • save confmaps/pafs from inference in h5 if output_path set
  • change scale to double in training_editor
  • disable debug print of msg in training monitor
  • bug fix, convert image h,w to ints
  • reset monitor window for each training job
  • bug fix to filename for trained model in active learning
  • bug fix, change scale to float in Trainer
  • reset training monitor between jobs, add "stop" button
  • remove debug printing
  • removing hog for now since it's not implemented correctly
  • check that brisk returned something before using
  • scale (again) means factor between 0 and 1
  • can now use already trained models in active learning
  • item setter for formbuilding fields
  • bug fix, delete button wasn't working
  • better filenames for active learning output
  • add batch_size to active learning form
  • bug fix, move imports outside function

v0.1.0 (2019-06-24)

0.1.15 (2020-03-12)

  • Use setup.version for conda package.
  • Bump version to 0.1.15
  • Add DeepLabCut import to menu.
  • Use DataFrame.iloc since ix deprecated.
  • Add contributors and funding info
  • Add citation info to README
  • Fixes for loading shortcut config.
  • Add get_defaults arg to get default config
  • Fixes to labels cache updating.
  • Clarified docstring for save_frame_data_hdf5
  • Note that prediction count for video in status bar
  • Bug fix: don't use set for counting labeled frames
  • Add support for preferences, custom keys for nav.
  • Add shortcuts for frame next/prev/step.
  • Add license info for color palettes
  • Bumping alpha version to test appveyor cache.
  • Require PySide2>=5.12 (not ==5.12.0).
  • Also cache pip in appveyor.
  • Bumping alpha version to test appveyor cache.
  • Clean (remove bz2's) before trying to cache.
  • Just cache bz2 files (using new dir).
  • Just cache bz2 files (using new dir).
  • Just cache bz2 files.
  • Cache conda packages for appveyor build.
  • Default to empty option_list for form combo box.
  • Remove debug print.
  • Access sleap/version.py in setup without import.
  • Add diagnostic script for install debugging.
  • Clean up appveyor.yml from pypi testing.
  • Try uploading wheel (w/o running tests).
  • Try uploading (w/o running tests).
  • Try uploading (w/o running tests).
  • Try uploading to test pypi from appveyor.
  • Better cache refresh for new/remove instance.
  • Refactor cache from Labels into LabelsDataCache.
  • Fix typo in get_track_occupany method name.
  • Remove code for negative sample anchors.
  • Remove duplicate video callback code.
  • Use labels obj instead of filename in test.
  • Remove enable_source_video attrib from HDF5Video
  • Bug fix when scrolling so slider handle in view.
  • Support mixed-video backend for training packages.
  • Always use non-native file dialogs on linux.
  • Relative path fix for grid test fixtures
  • Add tests for gridfix
  • Convert to midpixel coordinates in gui.
  • Pin imgaug version to 0.3.0.
  • Fix bug from typo in 88739c4f for reading hdf5.
  • Add align_instances_on_most_stable method.
  • Limit queue size so we don't run out of memory.
  • Separate method for reading hdf5 non-inst data.
  • Add info.align module for making "mean" instance.
  • Don't reset stop_training during predict callback.
  • Resize and move training image window.
  • Add save_viz option to training forms.
  • Show image dir window when there are images to show.
  • Add window for watching training viz.
  • Add on_epoch signal to LossViewer.
  • Adjust train_subprocess method for save_viz.
  • Tweaks to test for loaded video.
  • Tweaks for 0 indexing and small frame counts.
  • Integrate track cleaner into inference/tracking.
  • Use [X, Y) range consistently for slider.
  • Revert "Avoid throwing exception for invalid frms"
  • Avoid throwing exception for invalid frames.
  • Improved background frame loading.
  • Delay updating caches until all deletes.
  • Bug fix, gen_cm_fn threw if given 3rd arg.
  • Implement visualization saver callback. - Moved visualization plotting from local to Trainer class method. - Added tf.keras callback for saving plots to disk. - Added CLI option to enable visualization saving (similar to --tensorboard).
  • Change default OKS sigma for evaluation function to human data minimum.
  • Add longer trail len options (100, 200, 500)
  • Improved trail code, set to use single node.
  • Pass skeleton for instance_crop_ctr_node_ind.
  • Add instance_crop_ctr_node_ind field.
  • Support for optional_index list.
  • Remove model-specific training params from form.
  • Comment helper function for TensorBoard plotting.
  • Typo in node loss output type check
  • Implement OHKM and node-wise losses - Allows for dynamic tuning of error weight by channel. - Node-wise loss can be computed as a metric for monitoring training progress by body part. - Add training job options to enable new features. - Loaded models now are not compiled. This enables custom losses to be saved without requiring to be available in the loaded context.
  • Select spawned track instance on nav to next spawn
  • Better track trails in gui.
  • Bug fix, don't clear cache if doesn't exist.
  • Use nodes instead of edges for gui inst bbox.
  • Always show horiz scroll in slider.
  • Include tracking.window in inference form.
  • Add for lines in print of cli call.
  • Scroll to ensure slider handle is always visible.
  • Cache counts of user/predicted frames.
  • Filter irrelevant kwargs to Video.from_filename().
  • Bug fix for empty shortcut keys.
  • Bug fix for topdown sample indices.
  • Fix to cli description in docstring.
  • Use 1-based idx for tables/videos in gui.
  • Add command to delete current frame predictions.
  • Bug fixes to tests.
  • Update suggestions table on add/del instance.
  • Ensure that table sort doesn't break row idxs.
  • Shift-double-click to add with nodes "completed".
  • Enable tracking-only inference pipeline from gui.
  • Add highlight for predictions mixed w/ non-pred.
  • Add back abspath() lost in merge.
  • Save path prefix changes in config file.
  • Add function to save config yaml.
  • Only unsaved changes if inference returns predicts
  • Bug fix when merging videos from labels.
  • Add code for auto path prefix fixes w/ config file
  • Fix sort in table between numbers and strings.
  • Allow saving Labels with relative path.
  • Add predicted_instances access to Labels class.
  • Add tracking-only ui to sleap-track.
  • Add "dummy" option to VideoLoader.
  • Avoid duplicating paths in training profile list.
  • Scope logging by data split
  • Quick and dirty visualization in TensorBoard
  • Load video as grayscale if models have one channel
  • Bug fix, don't always retrain topdown.
  • Fix for monkey patch backward compatibility (numpy < 1.17)
  • Bug fix for topdown choice in editor.
  • Temporary monkey patch for imgaug bug with numpy >= 1.18.
  • Tiny typo in data augmentation generator leading to no rotation aug.
  • Bug fix, topdown now returns (nan, nan) points.
  • Hotfix for case where there are no centroids detected in inference.
  • Bug fix for changing track w/in selected range.
  • Slightly thicker track lines (1.5 -> 2)
  • Add h5 file used in adaptor tests.
  • Bug fix, zoom to fit wasn't running for new frames
  • Update frame load request delay from recent avg.
  • Modularize data io into format adaptors.
  • Use trail length menu for showing/hiding trails.
  • Speed-up to track overlay.
  • Remove cuda from explicit environments.
  • Add test for passing search paths to Labels.load_file().
  • Accept list of search paths instead of callback.
  • Use worker thread to load images in background.
  • Bug fix to heights for slider w/o tracks.
  • Add UI to replace videos in project.
  • Keys to skip to first/last contiguously occupied frame.
  • Double-click to select contiguously occupied frames.
  • Show number/percent of predicted frames in status bar.
  • Update tick marks when zoom changes.
  • Line in seekbar marking new track column.
  • Improvements to seekbar slider UI.
  • Add command to select from current to frame N.
  • Use thousands separators in frame numbers.
  • TrainingJob.is_trained returns False if model is not found - Previously it would throw an exception from TrainingJob.model_path, which would break the inference GUI if there were empty folders from failed runs with existing training json files - Change TrainingJob.model_path final exception type to more appropriate FileNotFoundError
  • Better chaining of batchwise ops for inference classes - Slightly slower but much more memory efficient
  • Add docs for edge style.
  • Better wedge width (for smaller nodes).
  • Default to line (not wedge) edge style.
  • Basic image aug when previewing training data.
  • Use default string for edge style (bug fix).
  • Add wedge/line styles for edge drawing.
  • Reorganize api docs, minor how-to fixes.
  • Add minimal docstring for Predictor class.
  • Remove old remote info superseded by howto.
  • Add images used in howtos.
  • Add howtos for merge, tracking, proofreading.
  • Add howtos to documentation.
  • Add more cli/training package ref documentation.
  • Add brightness/contrast training augmentation.
  • Add uses_image property to condidate classes.
  • Use N,-M range for inference on clip.
  • Inference cli accepts "0,-123" as frame range.
  • Reformat with black.
  • Use topdown class for confmaps w/o pafs.
  • Fix RegionProposalSet creation in extractor class
  • Add PassthroughRegionProposalExtractor.
  • Normalize any int dtype.
  • Added classmethod for RegionProposalSet creation with uncropped images - Added documentation to RegionProposalSet class
  • Sort cleaned tracks.
  • Improve get_primary_point_displacement_series.
  • Add get_track_count method.
  • Add include_trails param for getting frame tracks.
  • Change default trail length to 10.
  • Show trails for tracks not in current frame.
  • Add longer track trail options.
  • Ignore missing videos for LEAP if non-gui.
  • LEAP import GUI changes.
  • Remove debug printing.
  • Handle loading job with old dir structure.
  • Add contact and a couple of link text changes
  • Add weight downloading to FAQ
  • Add conda-build recipe for sleap-cpu.
  • Test set_field_options method for forms.
  • Set node option list for suggestions form.
  • Add methods to set field option list by name.
  • Commit img to numpy before tracking call.
  • Split tutorial into two parts.
  • Check for unsaved file before training/inference.
  • Update labeled suggestion count for new instances.
  • Move argparser into main so used by sleap-label.
  • Set frame on newly added instances.
  • Move cli into main() for sleap-track.
  • Update tutorial and re-organize docs.
  • Use full name of BSD3 license.
  • Tweaks to training editor.
  • Adjust param name for test.
  • Check for options in yaml before using.
  • Replace node_idx field with list of node names.
  • Add support for passing in options lists.
  • Save videos/tracks/suggestions in hdf5 datasets.
  • Re-enable training editor with support for new classes.
  • Add new model type and architectures.
  • Remove -gpu from tensorflow requirement in setup.
  • Remove line break from conda build files.
  • Rename sleap.gui.active in docs.
  • Exclude tensorflow-gpu from setup requirements.
  • Add jsmin to pip packages inside conda sleap pkg.
  • Bug fix when making frames from predictions.
  • Remove keras from conda build env.
  • Use tensorflow 2.0 from conda.
  • Move minimal training profiles into examples dir.
  • Send model type via zmq as string.
  • Sort dict with instances for frames in chunk.
  • Reset run_name before training (not always).
  • More robust message receiving.
  • Add (back) training zmq, run_name in cli.
  • Integrate tf2 nn code with gui.
  • Use new inference modules for overlays.
  • Get hdf5 dataset dtype from test frame.
  • Remove support for hdf5 confmap/paf overlays.
  • Bug fix to eb4ee45cd, pass model paths.
  • Add find_files_by_suffix function.
  • Bug fix, don't overwrite instance_box_length arg.
  • Bug fix to is_trained property.
  • Add node_names to tracking h5.
  • Bug fix, re-enable contextual menu on mouse move.
  • Validate RegionProposalExtractor.merged_box_length
  • Bug fixes for when 0 or 1 peak connections found.
  • Ensure region.merged_box_length > 0.
  • Add cli for running tracking by itself.
  • Hacky bug fix, MediaVideo accepts HDF5 attributes.
  • New Predictor class with policy-based pipeline.
  • Fix pretrained NASNetLarge
  • Expose TensorBoard profiling parameter
  • Multi-head averaging for multi-scale output backbones
  • Expand DenseNet multi-head capability - Fix feature sharing across scales and heads
  • HRNet fixes
  • Add ability to pass in additional training callbacks - Added HDF5Video parameters to utils.VideoLoader
  • Add Tensorboard callback to Trainer
  • Fix cli help, use get_package_file.
  • Remove debug printing.
  • Show minimal message during suggestion generation.
  • Bug fix, shift click to complete points.
  • Update promo movie in the readme (finally)
  • Fix instance cropping using reference center node
  • Quick test fix
  • Add minimal training jobs for other model output types
  • Evaluation submodule with OKS and generalized VOC metrics
  • Mock inference classes that pass GT via the same interface
  • Add centroid point dataset for datagen (without confmaps)
  • Fix rounding in region proposal box grouping
  • Region proposal extraction without merging
  • Store skeleton in training job if not specified in file. - Add Skeleton constructor from simple skeleton data - SimpleSkeleton is now JSON serializable - Allow for providing external skeleton when creating InferenceModel
  • Add more printing during training setup. - TODO: switch to logging
  • More casting at the data generators.
  • Remove deprecated submodules. Breaking commit.
  • More aggressive casting during data generation
  • Add minimal centroid training file.
  • Training pipeline configuration - Support for comments in training job json files via jsmin - CSV logging of training history - Callback-based final model saving - Flexible run name generation - Model path checking using new and old pathing scheme - Instance method for TrainingJob saving - Saving jobs with 4 spaces indentation by default - Handle model specification without skeleton: null - Expose most of the useful objects in Trainer as private attributes, allowing for access to model and data even if Trainer.train() is interrupted. - More outputs with trainer verbosity - Allow specifying val/test data in CLI
  • Auto calculate steps per epoch
  • Fix PAF sampling grid yx->xy orientation
  • Static shape fixes to instance cropping
  • Basic training CLI clean up.
  • Add basic training CLI matching old format. - Bonus: sleap-train works now!
  • Expose more UDenseNet parameters and correct docstring.
  • Handle model and list outputting backbones more gracefully in Model. - Use Trainer.verbosity attribute for callbacks as well.
  • Add support for creating TrainingJobs from JSON strings.
  • Centroid dataset generation and working trainer - Add hints and explicitly enforce static shapes in dataset generation - Fix typos in Trainer methods
  • Add image attribute to LabeledFrame for convenient frame fetching - Bug fix to training data generation in Labels
  • Training pipeline implemented for everything but centroid confmaps.
  • Initial datagen and training re-implementation.
  • Expose attribute for number of filters in transposed conv heads.
  • Fix usage of HigherHRNet attributes in backbone construction.
  • Add HigherHRNet and UDenseNet backbones.
  • Create nn.data submodule for tf.data.Dataset-based data generation. - imgaug-based augmentation - Instance cropping from centroid or reference node - Confidence map generated for basic and topdown-style models - PAF generation
  • Small bugfix in pretrained NASNet initialization and MobileNet typo
  • Bug fix, include all frames for deepposekit
  • Bug fix to demo confmap/paf overlay windows.
  • Make points visible for PoseTrack dataset.
  • Add support for PoseTrack varient of COCO dataset.
  • Add support for importing DeepPoseKit and COCO.
  • Add support for importing DeepPoseKit and COCO.
  • Add scale to training dialog.
  • More typing, cache for iou boxes.
  • Refactor duplicate code out of Tracker classes.
  • Bug fix, get number of frames from video.
  • Remove FIXME's (test was right).
  • Make the local/refinement tests pass.
  • Add tests for nn.region_proposal.
  • Note peak-finding test which now fail.
  • Add tests for nn.paf_grouping.
  • Added threshold for minimum required points for spawning new tracks
  • Added generic tracker that operates on points only - Takes any similarity function and matching function - Added similarity functions: IOU and centroid distance
  • Initial implementation of topdown peak finder
  • Add tests for nn.paf_grouping.
  • Hotfix for TrainingJob/Model imports mess
  • Refactor InferenceModel to be simpler layer on top of a tf.keras.Model. - Can still be created from a TrainingJob using a factory class method. - Handles multi-inputs/outputs more generically - Less tied to TrainingJob/backbone construction, instead computes most properties implicitly. - Added a new utility method to replace .predict() without changing the input tensor to allow for arbitrary input sizes. This is handled implicitly now through the model's call() method.
  • Add peak-finding test for all zeros.
  • Revert local peak finding algorithm - New version didn't have a good way to deal with adjacent local peaks - Added iteration based method to deal with per-channel max filtering. This avoids moving a lot of memory on the GPU as with the old "channel packing" method, at the cost of more constraints on autograph since the channel dimension must be statically inferable. - Refactor ConfmapPeakFinder to batch above autographed functions calls.
  • Refactor which calls get autographed in centroid predictor - Now batching occurs above autographed functions to minimize retracing - Exposed more peak finding parameters at base class level
  • Check for training_job.json within model folder when deserializing
  • Typo in utils.VideoLoader.n_chunks property
  • Add integration test for nn.peak_finding.
  • Add tests for nn.peak_finding.
  • Bug fix for getting random prediction frames.
  • Command line utility for merging tracks.
  • Add test for velocity suggestions.
  • Add suggestioned frames based on high pt velocity.
  • Don't break when there are no tracks.
  • Add support for header series as numpy array.
  • Add hog feature suggestion, better bag of features
  • Disable contextual menu when clicking node.
  • Connect app state to instance overlay.
  • Add menu options for new displacement graph.
  • Fix input shape specification when building new backbones
  • Flow shift tracker refactoring - More faithful to original algorithm (no propagating shifted instances) - Matching options: Greedy or Hungarian - Generic instance similarity function - Use best shifted instance in the window by track ID - Filter shifted instances by optical flow scores and ignore instances with few points - Added tracking score field to PredictedInstances (good signal for proofreading) - Added image scaling as preprocessing for optical flow calculation
  • Add keras_applications-based network backbones. - Fix DenseNet implementation and add variants as well as generalized - Add MobileNetV1 and MobileNetV2 - Add NASNet Mobile, Large and generalized
  • PAF grouper refactoring
  • Add property to Skeleton to return edges as pairs of node indices
  • Add method for calc'ing single node displacement.
  • Fix merge conflicts
  • Divisibility check in resizing and extended batched call
  • Intermediate changes in inference modules overhaul - Peak finding redone - Centroid-based region proposals - Video loading via tf.data.Dataset - Initial tests stub via tf.test.TestCase unittests
  • Use bag of words for brisk, parallel per video.
  • Write tracks as tuples to save space.
  • Bug fix, connect state vars to color manager.
  • Sort groups by numeric rather than alpha order.
  • Moved suggestion pipeline into object.
  • Add test for brisk and pipeline.
  • Add default value for brisk thresh.
  • Add test to ensure hdf5 video import works.
  • Add test, remove debug print.
  • Refactor feature-based frame suggestions.
  • Suggestions grouped by video, interleave sortable.
  • Add group interleave sort option for suggestions.
  • Apply node/edge color to skeleton tables.
  • Initialize dicts in init so not shared.
  • Refactor gui coloring code.
  • conda install Pillow, block installing pyqt
  • Rename active learning gui test file.
  • Rename gui/active.py to gui/inference.py
  • Add support for instance placement methods.
  • Bug fixes for new suggestion format.
  • Remove code that was commented out.
  • Rename "active learning" to "training".
  • Re-enable prediction on suggested/random frames.
  • Mode drop-down menus in learning gui dialog.
  • Add black and pre-commit to dev reqs.
  • Store cluster/group id for suggestions.
  • Complete rewrite of core inference modules. - nn.peak_finding: - Global peak finding - Local peak finding via max filtering with threshold - Gaussian smoothing for suppressing spurious local peaks - Centered cropping - Local direction offset-based subpixel peak refinement - Autographed functions for fast graph mode execution of core ops - Generalized high level wrappers with lightweight eager mode control flow (e.g., different flags, defaults, variable outputs, etc.)
  • Enable Tensorboard through CLI and change default profile save path - Training job JSON now defaults to "{run_path}/training_job.json"
  • Use force-directed graph for node placement.
  • Don't die if ~/.sleap/ already exists.
  • Use config files stored in ~/.sleap/.
  • Add pip install to unix conda build script.
  • Get frame_range with default empty range.
  • Add test coverage for track-related commands.
  • Add commands for change point location/visibility.
  • Bug fix when setting track from other video.
  • Major refactoring to app gui code.
  • gui refactoring
  • gui refactoring
  • gui refactoring
  • Added a couple of common properties to flow shifted instances
  • Fix to checkpoint every epoch, not batch
  • Fix dynamic preprocessing for ResNet backbone for TF2/graph mode
  • Fix deprecated kwargs for checkpointing through Keras callback
  • gui refactoring
  • gui refactoring
  • gui refactoring (in progress)
  • Ignore any error when loading saved models for gui
  • Add FileDialog.openMultiple() method.
  • Import submodules we want available at top-level.
  • Add button to abort loading when missing files.
  • Bug fix: out of range peaks crashed PAF line integral lookups
  • Better gui for finding multiple missing files.
  • Prompt for save dir if needed.
  • Add missing import.
  • Add option for saving/not saving predictions file.
  • Make sure that all directories in save path exist.
  • Add test for empty hdf5 saving.
  • Bug fix, don't die when saving hdf5 without nodes.
  • Show full filename in missing video dialog.
  • Require jsonpickle 1.2 instead of 1.1.
  • Add wrapper class for file dialogs.
  • Temporarily disabled autograph on functions getting retraced often.
  • Refactored peak finding. - Rewrote all processing code in pure TF. - Enabled some autographing, but still need to rework some of the sub-functions to move more processing into graph mode. - Updated predictor to use new peak finding functions.
  • Bug fix (typo in function name).
  • Bug fix when adding nodes to instance in gui.
  • gui refactoring
  • Update to TF 2.0 - Removed standalone Keras dependency - Added conda package dependencies for CUDA Toolkit and cuDNN - Added TF 2.0 as pip dependency
  • Don't import Signal from QtCore.
  • Draw first predicted node with thicker line.
  • Added back previousLabeledFrameIndex().
  • Use new merge method in active learning.
  • gui refactoring
  • Use conda-build=3.17
  • Only upsample if there are peaks.
  • Added support for from_predicted in saved HDF5.
  • Add options for selecting models in inference gui.
  • Wrappers for QFileDialog functions w/o options arg
  • Add init.py for sleap.gui.overlays module.
  • Add init.py for sleap.info module.
  • More test coverage for io.video
  • Add missing arg to docstring.
  • Fixes so HDF5 selected images -> imgstore works.
  • Add last_frame_idx property on videos.
  • Ignore errors when trying to plot initial frame.
  • Add support for en/decoding frames stored in hdf5.
  • Add param to add default suffix when saving.
  • Move LossMonitor test into gui tests dir
  • LossViewer releases zmq socket when closed.
  • sLEAP -> SLEAP in readme.
  • Update inference overlay to use InferenceModel
  • Update inference overlay to use InferenceModel
  • Only include negative samples from labeled frames.
  • Make empty frame for empty hdf5 video.
  • Use player.view in track overlay.
  • Improve rangelist test coverage.
  • Use subset of frames for hdf5 test.
  • Close hdf5 videos in test.
  • Release hdf5 labels object in test.
  • Use "." for paths of hdf5 video in labels file.
  • Enable hdf5 package export in gui.
  • Add support for saving hdf5 w/ labels and imgs.
  • --nonnative param to use Qt file dialogs.
  • Fixes to docs.
  • Fixed docstrings (no foos allowed).
  • Fixed docstrings (no foos allowed).
  • Better docstrings and typing, minor refactoring.
  • Fixed incorrect test.
  • Better typing and docstrings.
  • Better typing and docstrings.
  • Fixed syntax error (function name).
  • Fixed docstring arg name.
  • Fixed docstring arg name.
  • Better typing and docstrings.
  • Better typing and docstrings.
  • Better docstrings, typing, minor refactoring.
  • Docstring edits.
  • Add Track to module docstring.
  • Rename, add docstrings and tests.
  • Add docstring.
  • Refactor, add docstrings and tests.
  • Reformat all tests with black.
  • Better typing and docstrings.
  • Better typing and docstrings.
  • Wrap docstrings to 79 chars.
  • coveralls instead of python-coveralls
  • coveralls instead of python-coveralls
  • Revert "Remove unused, undocumented, methods."
  • appveyor debugging
  • Fixed typing on make_cattr.
  • Remove unused, undocumented, untested methods.
  • Better typing and docstrings.
  • Add .coveralls.yml
  • coveralls --service=arg
  • coveralls --service arg
  • Use coveralls command line args.
  • Add env variables for coveralls.
  • Reformat all code with black.
  • pytest-cov in appveyor script.
  • pytest-cov in appveyor script.
  • Coveralls in appveyor script.
  • Coveralls in appveyor script.
  • Remove unused (broken) method.
  • For cv2 dependency use opencv-python-headless.
  • Add test for sleap.io.visuals.
  • Use file with user data for demo code.
  • Combobox (menu) for merge methods.
  • Show table of clean merge results.
  • Active inference changes - Removed disk serialization of predictions (it was being overwritten after each video anyway) - Progress dialog works - Canceling works gracefully - Broken: asynchronous call so that the GUI remains responsive
  • Major refactoring of inference module - Created a InferenceModel class that holds all of the metadata required to run models from a TrainingJob. This includes input/output scale, skeletons, Keras model loading and caching, variable input shape, normalization and other convenience properties. - Added some generic attributes to the sleap.nn.Model class to allow for storing or inferring output scaling (depends on architecture details, so it can be overloaded in backbones). - sleap.nn.loadmodel module removed. - Predictor refactored to take advantage of InferenceModel caching and reuse multiprocessing pool (fixes: #155). - Previously, models were being reloaded from disk and copies made every time a new crop size was encountered. - Previously, a new pool was being opened on every predict() call. - Refactored DataTransform usage to account for discrepancies between input scale vs output scale vs relative output scale vs scale across models. - Fix: DataTransform-based scaling would always convert images to float64 dtype. - Refactored TensorFlow-based peak finding for GPU execution. - Account for unspecified confmaps tensor at graph creation time. - Fix subpixel refinement algorithm to enable greater resolution than original data scale. - General rework of offset adjustment. - Exposed supersampling parameters (window size, window batching) - Fix tensors being overwritten or dropping out of context - Fixes: #149 - Exposed peak finding options and other inference functionality as Predictor attributes. - Renamed: Instance.visible_points_array -> Instance.points_array - Sensible cropping defaults in profiles and function kwargs. - Indented default profiles for readability. - General unfucking of syntax errors, anti-patterns, typos, etc.
  • Gui for merging w/ conflict resolution.
  • Merge conflict only if instances are same type.
  • Methods for complex merging of labels.
  • Bug fixes to demo functions.
  • Formatting changes (from pylint).
  • Fix delete_symmetry and add test.
  • Better typing and docstrings.
  • Docstring improvements.
  • Add score column to suggestions, columns sortable.
  • Add seekbar headers to gui.
  • Maintain order of tracks when updating top level.
  • Allow for importing Lambda layers with TensorFlow functions
  • --all-frames arg includes initial empty frames
  • Explicit input_video type handling in inference
  • Proper handling of nested skeletons when structuring TrainingJob - Also fix HDF5Video edge case
  • Clean up imports
  • Fixes for showing/clearing header.
  • Added ResNet50 architecture - Generalized output scale calculation - Generalized backbone typing
  • Minor typo
  • Fix stacked hourglass implementation - Added output scale calculation to Model class - Fix cattrs structuring when deserializing models - Add SHG params to training editor - Miscellaneous typos
  • Add dummy frame to otherwise empty imgstore.
  • Only load defered imgstore once (bug fix)
  • Check track_range not None before comparing (bug fix)
  • Keep list order when merging in new videos
  • Include empty frames in track occupancy matrix
  • Use weak_filename_match() to match video paths.
  • Defer loading imgstore until accessing video data.
  • Small inference fixes in prediction
  • rename and move Import... menu command
  • remove duplicate instances when merging frames
  • show labeled frame and user frame counts
  • use track_range.start to next find spawn frame
  • add start property to RangeList
  • keep w/in array bounds (when user adding new profile)
  • ignore empty tracks for track occupancy h5
  • catch errors during save and notify user
  • add save_file method, detects format from name
  • Autodetect initial video settings in import gui.
  • Overlay to show track labels (when appropriate)
  • Overlay to show negative anchors, command to clear
  • Overlay to show negative anchors, command to clear
  • Gui and class for viewing/changing menu shortcuts.
  • prevent training/inference if model overlay loaded
  • re-ordered colors used for overlays
  • Change Instance.points() method to property.
  • Add visible_points_array property and rename p_a()
  • Update video for ModelData if shapes match
  • Make sure video matches video for ModelData object
  • Install sleap package in appveyor.
  • pip install .
  • tweak bounds for when ignoring outliers
  • gui controls for log scale/outliers/batches to show
  • use Instance for selection in viewer
  • iqr*1.5 for outliers, ensure > 0 for log scale
  • resize output from multiscale confmaps/centroids
  • test _dont_use_pafs gui option
  • add active learning option to not use pafs
  • show current video index in statusbar
  • ignore event to set empty tooltip
  • Revert "use widget in status bar"
  • use widget in status bar to show permanent message
  • cache video data shown in table
  • only update relevant dataviews (for speed)
  • minor refactoring in code to find copy instance
  • bug fix to previousLabeledFrameIndex()
  • match nodes by id (not name) when updating skel.
  • test modifying instance skeleton
  • allow saving project with just skeleton
  • Partial test coverage for active learning.
  • refactor active learning code into more functions
  • disable save_confmaps_pafs since not currently working
  • update empty gui skeleton from labels skeleton
  • Add unify arg to Labels.extend_from(), new tests.
  • Hash skeleton by id, remove eq override
  • don't test for strict skeleton identity
  • Attempt to fix bugs from active learning results
  • add method to find instance in frame
  • check labels is not None when updating gui
  • create output dir if doesn't exist
  • note change when skeleton added
  • support for header (graph), use mark objects
  • disable blur when upsampling (it's not working)
  • bug fix when confmaps/paf multiscale different
  • bug fix, use tolist() to get list of Python ints
  • show full video filename (don't truncate)
  • allow 0-1000 negative samples
  • show number of user labeled frames in status bar
  • use / for imgstore paths (bug fix)
  • use / for imgstore paths
  • args to control merge/size for centroid boxes
  • remove unused crop_iou_threshold
  • determine channels from centroid model
  • bug fixes to last commit
  • expose gaussian size and sigma from peak_tf_inference
  • opencv-python 3.4.2.17 => 3.4.1.15
  • predict on range of frames
  • bug fix when creating Instance w/ zero points
  • re-arranged methods in Labels class
  • don't autoconvert to grayscale
  • bug fix to pass new tests
  • more tests
  • more tests
  • include pid in tmp dir name for json.zip
  • bug fix, invisible pts weren't nan in points_array
  • accept short name for default training profiles in cli
  • default to only user labeled frames in imgstore
  • handle missing nodes in nodes()
  • remove .h5 from name before appending
  • bug fix, handle mark_type f
  • use load_file instead of load_json
  • command to export labels zip with imgstore
  • use relative paths to imgstore yaml
  • Command line interface for training
  • suggested frames with low scoring instances
  • thinner slider mark for suggestions
  • show instance score in dataview
  • Labels.load_file() determines filetype from name
  • raise error during test by checking channels
  • Defer loading MediaVideo reader until needed
  • bug fix to remove_video()
  • bug fix when checking depth/down_blocks
  • improve gui video callback (for missing videos)
  • double click instance to add missing points
  • fix points if needed when inst.points accessed
  • allow node addition
  • fix (and test) removing node from Instance
  • don't copy _nodes from Instance to PredictedInstance
  • allow node deletion by caching node list
  • check down_blocks if no depth for model
  • fix conda build to include rapidjson
  • only convert if type is PointArray
  • support for merging hdf5 labels into open labels
  • Convert PredictedPoint to Point if in Instance
  • (Hopefully) more robust default training profiles
  • bug fix (again) for output_path
  • don't double crop size for centroid cropping
  • bug fix to confmap overlay
  • remove gui option to save confmaps/pafs during inference
  • model overlay supports centroids
  • method to invert scaling on images
  • save gui inference results in h5
  • bug fix for merge, output_path now attribute
  • enable saving labels h5 from gui
  • only show one model overlay at a time
  • rename overlays.hdf5 module to overlays.base
  • Feature to load model and show predictions in gui
  • fixed typing annotations
  • update monitor in chunks, show only last 2000 batches
  • check if row inst still exists
  • ensure bounding boxes within (trimmed) image
  • datagen cropping improvements
  • Option to return confmaps from tf peakfinding
  • Bug fix for from_predicted inst tracks
  • Bug fix for dependencies.
  • Bug fix, make sure peaks matrix has rows for nodes
  • Bug fix, Predictor takes args instead of predict()
  • Change default training profiles.
  • fields for up/down blocks in training editor
  • Tensorflow peak-finding
  • --frames arg to visuals cli
  • Merge subchunk lfs with same frame idx
  • Less frequent intermediate saving during inference
  • Check for bounding_box_size on trained model
  • Bug fixes to centroid merging code.
  • Merge overlapping centroid crops into larger crops.
  • Bug fixes to centroid code clean-up
  • Clean-up centroid prediction code
  • Bug fixes for refactoring
  • Refactor inference code.
  • use cumulative scale of transformations
  • move unused legacy code into separate file
  • remove unused training server
  • merge labeled frames w/ same idx after extending
  • skeleton.matches() now ignores skeleton name
  • frames() wraps around once there's no subsequent match
  • gui support for loading h5 labels
  • video callback and update caches when loading h5
  • don't use multiscale in default training profiles
  • revert training monitor Y range outlier code
  • menu command to go to next user labeled frame
  • add frames() to iterate over labeled frames
  • Turn off append mode on HDF5 for now. Need to fix.
  • Remoed cbor import. This was old and just a test.
  • Add HDF5 output to inference. Make it default.
  • Support for appending to HDF5 label files.
  • use first skeleton in labels
  • Fixed HDF5 serialization bugs.
  • bug fix, explicit check for None
  • keyboard shortcuts for prev/next labeled frame
  • HDF5 saving and loading for Labels
  • update Y range in training monitor less often
  • Multiscale inference + training fixes.
  • Fixed some performance issues with JSON serialization.
  • Converted points dict on Instance to a PointArray.
  • check for bounding box before using
  • save_confmaps_pafs option for expert dialog
  • Multiscale training.
  • remove outliers for y range
  • new commands to delete instances by criteria
  • add track_names dataset to h5
  • add frame limit arg, improve speed for lf search
  • param for 'less overlap' mode (temp solution?)
  • don't save frame images with confmaps/pafs
  • remove test_ from output filename
  • save more visual output data from inference
  • remove unused code
  • fix test for confmaps view
  • show confmaps/pafs in gui as overlay
  • Refactor code to show video overlays into modules.
  • ask fps for exporting clip
  • fps property for MediaVedia
  • show epoch/val loss in chart header
  • move bounding_box_nms into datagen
  • get frame_idx for track from lf, not inst
  • Point classes are now np.record subclasses.
  • use SINGLE_INSTANCE_PER_CROP in inference
  • instances_nms in parallel peak matching
  • add nodeless_point_dist, ignore nodes when matching
  • add instances_nms for inference
  • add Labels.make_video_callback()
  • support for negative sample anchor points
  • re-organize app menus
  • add missing import
  • use generate_training_data for all data gen
  • add negative_anchors attribute on Labels
  • encapsulate all training datagen
  • more function documentation and modularity
  • Switched ujson out for rapidjson.
  • docs and tests for rangelist
  • labels.find() accepts range as frame_idx
  • bug fix, check before removing frame from track
  • resize seekbar to only show occupied tracks
  • menu shortcuts for deleting clip/area
  • feature to remove all instances within selected area
  • New 'single instance' mode, uses only confmaps model.
  • Use ranges to cache and modify track occupancy gui.
  • restrict delete to instances in selected track
  • change inst idx in view to idx in lf
  • use lookup table for lf frame idx
  • sort slider marks before grouping
  • adjusted test to look for fewer track marks
  • bug fix for non-track marks in seekbar
  • increase continuity threshhold to 99.5%
  • bug fix for call to _swap_tracks
  • faster track display in seekbar
  • allow weak video path matching for match_to
  • move gui video picker code into Labels
  • command to go to frame number
  • update gui state less often
  • move track swapping code into Labels
  • increased suggestions per video range
  • Swapped json for ujson.
  • include frame range in default output filename
  • show both tracks and suggestions in seekbar
  • menu action to delete predictions from selected clip
  • enable compressed json save from gui
  • compress track h5
  • change iou threshhold .8 => .9
  • background to make instance label text more visible
  • pass color manager to TrackTrailManager
  • show score with track for predicted instance
  • preserve instance selection when plotting new frame
  • non-cycling color palette
  • sort instances_to_show by track spawn frame
  • show number of tracks/frame instances
  • check for videos in labels dir
  • support for color palettes
  • skip inference for chunk if no centroids found
  • fix, pass save_confmaps_pafs to predictor
  • option to save confmaps/pafs
  • menu item to export labeled clip
  • better selection range alignment
  • pass frame as singleton to active learning
  • keys to skip by 50 or 500 frames
  • option to show qt progress window
  • queue for progress reporting plus more docs
  • use numpy for bb nms instead of tensorflow
  • log time for image crop/scaling
  • bug fix, syntax in last change
  • set logging level to INFO
  • bug fix to last change
  • bug fix if no centroids, cli arg for logfile
  • call cv2.setNumThreads
  • timing debug from threads
  • parallelize visualization code
  • remove qt imports
  • plot instances using cv2 (much faster) without qt
  • more timing debug
  • generate overlay video in chunks
  • command to delete instance track for entire video
  • just return instance closest to centroid (again)
  • include all instances from crop, iou to .8
  • use nms on centroid crops
  • tweaks to tutorial info re cluster
  • specify default channel in install, mac os instructions
  • more info about inference on cluster
  • try importing ForwardReference
  • require jsonpickle 1.1
  • corrected it's to its
  • fixed links in tutorial
  • tutorial draft
  • bug fix in swap track (from recent change)
  • changed default batch size from 2 to 4
  • signal to update ui after inference
  • use params from conf job for datagen (if not in form)
  • option to hide non-visible points
  • skip tracking if no instances found
  • default paf learning rate from 1e-4 to 1e-5
  • bug fix active learning predict on choices
  • three modes for active learning dialog
  • options in active learning for what to predict on
  • add hasSelection method
  • only write frames with instances
  • fix for next track spawn
  • snap to nearby mark within handle
  • pca suggestions bug fix
  • resizable seekbar
  • command to go to next track spawn frame
  • cli to output h5 with tracking info
  • write each frame after generation, use offscreen
  • debug output when writing visuals video
  • open compressed labels json files
  • don't save confmaps and pafs by default
  • centroids type in training editor
  • Fixed bug with tracking and centroid cropping.
  • allow importing multiple prediction files
  • Removed tensorflow-gpu from requiremnets.
  • Added tensorflow-gpu to requirements.txt.
  • show info for first/last labeled frame
  • fix track colors in plot_instances()
  • bug fix, copy qimage2ndarray result
  • Set verbosity=0 on Tracker by default.
  • cli to get info about labels file
  • tweaks to io.visuals code
  • plot_instances() as standalone function
  • Save videos with instances as overlay.
  • don't overwrite user params on window show
  • syntax error fix (= -> is)
  • store centroid model once loaded
  • Fix tracking bug with multiple calls to process.
  • check for candidate point before applying transform
  • fix test_labels_json to not assume order
  • reset job option menus on show
  • Turn off verbosity in tracking by default.
  • Switched logging.info messages in tracker to logging.debug.
  • Fixed tracking bug with non-sequential frames.
  • validate that trained models are compatible
  • fix path for final, best, and newest
  • Fixed up inference command line.
  • emit valueChanged when field values change
  • centroids output_type in training editor
  • convert final_model_filename from Windows path
  • base 10 log scale in training monitor
  • show decimation slider in pafs demo window
  • Add from_predicted attribute to Instance
  • initial_samples instead of sample_step for brisk
  • don't copy predicted points with nans
  • bug fixed better, check strides on array
  • decimation bug fixed, swap axes iff column-major
  • Added argument to Labels.save_json for image format.
  • don't break if fps=0 during inference
  • fixes to centroid code
  • scale images for training centroids
  • show seekbar selection range in status bar
  • don't show scrollbars in video seekbar
  • Fix very small bug in tracking.
  • Another tracking fix.
  • don't train centroids unless option set
  • bug fix to picking closest inst in crop
  • Added deterministic temp dir name to Labels.load_json.
  • Some formating changes.
  • return instance closest to centroid for crops
  • hide active learning window instead of closing
  • hide active learning window instead of closing
  • centroid bug fix: get crop size from model
  • remove debug print
  • don't crop when training centroids
  • inference centroid cropping using DataTransform
  • call merge_matching_frames after active learning
  • move merge_frames code into LabeledFrame
  • add Labels method to merge matching frames
  • Fixed mistake with ImgStoreVideo creation.
  • More bugfixes for tracking.
  • copy default centroid config from confmap config
  • add code to train centroids model
  • add ModelOutputType for centroids
  • add centroid datagen
  • Fix tracking bug fix when previous frame has None track.
  • Fixed bug with Labels.save_json and ImgStoreVideo
  • random suggestions by default
  • Fix to Tracking when optical flow fails.
  • fix type (again)
  • fix typo in extend_from
  • extend_from to copy data from another label object
  • slider fix, get marks for only specific video
  • fix match_to test, we can't assume same node order in labels
  • remove debug print in monitor
  • log scale in training monitor
  • add negative samples when training on inst crops
  • cleanup (mostly comments/annotations) in datagen
  • add min_crop_size for instance cropping
  • add dtype (for list) in formbuilder
  • use cattr to structure/unstructure video for inference
  • keep arrow cursor when dragging node
  • add menu item to import predictions
  • code to run prediction async in active learning
  • add match_to arg when loading json
  • no need to stop timer when closing monitor
  • changes to training/monitor communication
  • update dataviews after active learning
  • menu item to delete predictions
  • distinct conf/paf sigma in active learning
  • treat empty string filenane as if none
  • disable channel order swap after resize in inference
  • add random suggestion method, suggestion bug fixes
  • include all points from img when cropping
  • if clip selected in seekbar, predict for that
  • better integration between training_editor and active learning
  • convert image dtype/etc for flow tracking
  • undo h_w_scale since points aren't in two-dim array
  • remove debug print of messages for previous trainingjob
  • check labels is not None instead of implicit bool
  • bug fix to how we structure Instance/PredictedInstance from json
  • add what (confmaps,pafs) to msg from training to monitor
  • handle points from predictions better
  • when rescaling points in inference use h,w scale
  • remove --test-viz arg and corresponding function
  • tweaks to visualizeOutputs
  • hide active learning dialog to show conf/pafs windows
  • fix output_path for active learning inference
  • add Predict menu plus Viz Model Outputs menu item
  • bug fixes to show_*_from_h5
  • add show_pafs_from_h5 function
  • button in active learning to preview datagen
  • fix syntax error
  • hack to resize images so we can train/predict
  • save inference output in models dir with timestamp
  • changed batch size and early st. pat. in defaults
  • add show_confmaps_from_h5()
  • save confmaps/pafs from inference in h5 if output_path set
  • change scale to double in training_editor
  • disable debug print of msg in training monitor
  • bug fix, convert image h,w to ints
  • reset monitor window for each training job
  • bug fix to filename for trained model in active learning
  • bug fix, change scale to float in Trainer
  • reset training monitor between jobs, add "stop" button
  • remove debug printing
  • removing hog for now since it's not implemented correctly
  • check that brisk returned something before using
  • scale (again) means factor between 0 and 1
  • can now use already trained models in active learning
  • item setter for formbuilding fields
  • bug fix, delete button wasn't working
  • better filenames for active learning output
  • add batch_size to active learning form
  • bug fix, move imports outside function
  • get arch from backbone_name in TrainingJob
  • move config, training_profiles into sleap dir
  • move active learning gui into ActiveLearningDialog class
  • moved yaml into config/, removed old training gui
  • add files to MANIFEST.in
  • editor for training profiles, accessible from active learning
  • various tweaks to formbuilder
  • add default scale=1 to match_peaks_paf
  • track unsaved change after active learning
  • rescale points to original image during inference
  • show instead of open for progress dialog
  • add training_profiles/ and other active learning tweaks
  • run training async for active learning
  • distinguish suggested frames w/ predicted instances in slider
  • gui to select trainingjobs for active learning
  • add sigmal to Trainer
  • store widgets on object, new combobox widget class
  • catch and raise ValueError if unable to load json
  • call repaint after updating widget value
  • update ui after active learning
  • add active learning menu item
  • bug fixes to active learning code
  • Bug fix to resize code for inference.
  • add instance_crops to import
  • add back singleton channel after resizing
  • code to run active learning pipeline
  • Add from_training_jobs constructor to Predictor class.
  • bug fix if training without save_dir
  • Add scale and instance_crop to Trainer.
  • support img/point scaling in datagen
  • Documentation update.
  • Changed train_async to use apply_async
  • Added model filenames to TrainingJob.
  • Added scikit-learn to requirements.txt
  • Added JSON serialization for training parameters.
  • enable/disable gui buttons as appropriate
  • Add ResizingStackedWidget for StackBuilderWidget
  • Move message timer into monitor.
  • close zmq socket/context when done
  • fix test for video table filenames
  • show parent dir + filename in video table
  • downsample frames before trying to cluster for suggestions
  • cap instance crop size at 512x512
  • with_tracking param, smaller batch size
  • add augmentation scale params to form
  • mark frames in slider only if instances in frame
  • Add option to run prediction on specific frames
  • Fix (maybe) of random test_labels_json failure.
  • Modified Augmentor for serialization\deserialization.
  • pip install opencv-python==3.4.2.17 (fixed)
  • Use pkg_resources to find yaml files.
  • Fix inference test to use file with user instances
  • Only use user instances for training datagen.
  • add ./ to yaml file paths
  • include yaml files in package
  • Enable tensorboard_dir on training client
  • Add epoch train/val loss to monitor.
  • Add gui for finding missing videos in json.
  • add tensorboard_dir param for training (hidden)
  • skip paf if no distance between nodes
  • don't break if json doesn't include tracks
  • Add --test-viz param to inference cli
  • Add default button to training client gui.
  • Bug fix, make sure frame suggestions are ints
  • Add option to resize input layer for inference.
  • Add training option for instance cropping.
  • Check for frame data in demo_pafs()
  • Major cleanup to training gui client code.
  • Cleanup zqm when finished in LossViewer.
  • Check for frame confmaps in demo_confmaps()
  • Add internal min_length arg to quiverplot code.
  • Add method to set_form_data to YamlFormWidget.
  • Minor bug fixes for training pafs/leap_cnn
  • Bug fix if there's empty inst list.
  • Add instance_crops function to datagen.
  • Add valueChanged signal to YamlFormWidget.
  • Fixed some dependecy issues.
  • Add support for importing DeepLabCut csv files.
  • Add imgstore_from_filenames method to Video class.
  • Training now takes points instead of confmaps/pafs.
  • Added imgaug and scikit-image to requirements.
  • TigerGPU CI test fixes.
  • Lets make imgstore default video codec 'mjpeg/avi'
  • Replace 'h264/mkv' format support for 'avc1/mp4'
  • Fixed blunt find/replace of "file"/"filename"
  • Added support for loading Labels JSON with frame data.
  • Support for augmenting list of point_arrays.
  • Bug fix for datagen of points near image bounds.
  • Move demo code into demo_datagen and demo_datagen_time.
  • Make generate_confmaps/pafs use *_from_points
  • New functions for datagen from point_arrays.
  • Decimation param on demo_pafs
  • Labels.save_json supported saving frame data now.
  • Add invisible_as_nan param on Instance.points_array
  • Remove debug prints
  • Added support for frame number indexing on ImgStoreVideo.
  • Add test for datagen/matching peaks and pafs.
  • Another bug fix to pafs datagen.
  • Bug fix to paf datagen.
  • Fixed test_imgstore_video so it writes to tmpdir.
  • Rewrite generate_confidence_maps, much faster.
  • Bug fix, normalize if ptp <= 1 (not just < 1).
  • Use demo_confmaps in demo code
  • Add demo_confmaps() and support for (0-255) ints.
  • Remove testing file from repo.
  • Rewrite generate_pafs to make it much faster.
  • Add demo_pafs() for showing video with pafs.
  • Fixed inference and confmap gen bugs.
  • Setting up imgstore for saving frame data.
  • demo for testing datagen/inference
  • Add standalone param to video_demo()
  • Add video_demo(labels) function for testing labels
  • Add video_demo(labels) function for testing labels
  • Use yaml config file for menu keyboard shortcuts.
  • Color node for completion even if not "visible".
  • Extract labels with clip
  • Bug fix to ensure frame_idx is int.
  • Allow user to selected predicted instance...
  • Mark missing nodes as not visible
  • Add params for brisk suggestion method.
  • Bug fixes for brisk suggestion method.
  • Add brisk suggestion method.
  • Add params for hog suggestion method.
  • Refactoring and added hog suggestion method.
  • Support for additional suggestion methods.
  • For quiverplot decimation, don't swap axes.
  • Menu tweaks (earlier was missing code).
  • Menu tweaks.
  • Only show predicted instances if no matching inst
  • Added pyyaml as a dependency.
  • UI to set params when generating suggestions.
  • YamlFormWidget builds entire form widget from yaml
  • Support for file_open and file_dir types in FormBuilderLayout.
  • Add QtWidgets import to formbuilder.
  • Custom QFormLayout which builds form fields from list.
  • Improvements to display of suggestion marks.
  • Bug fix for loading json without suggestions.
  • Basic implementation of frame suggestion.
  • Fixes to documentation.
  • Bug fix to GraphicsView signal.
  • Copy track from prev frame to new instance.
  • Bug fix to slider setTracksFromLabels.
  • Misc bug fixes to app gui.
  • Select instance in view when select from table.
  • Add timer to trigger function to update gui.
  • Change README loading from README.md to README.rst
  • Update README.rst
  • Update appveyor.yml
  • Update index.rst
  • Delete README.md
  • Create README.rst
  • Create includeme.rst
  • Anaconda deployment fixes. Its working!
  • Update bld.bat
  • Debugging anaconda deploy still
  • Debugging deploy to conda
  • Debugging deploy [skip_ci]
  • Adding conda build and conda client
  • Fixing appveyor.yml deploy of docs
  • Setup conda deploy on tag build.
  • Installation instructions update.
  • Fixes to the conda build recipe.
  • Make edge with non-visible node semi-transparent.
  • Additional video viewer test.
  • Additional dataviews tests.
  • Additional VideoSlider test.
  • Add test for import matlab labels file.
  • Add support for opening matlab labels files.
  • Adjust video data from [0,1] to [0,255] if needed.
  • Bug fix: check for bounding rect before using.
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Update appveyor.yml
  • Fixing appveyor again.yml
  • Fixing appveyor again.yml
  • Fixing appveyor again.yml
  • Fixing appveyor again.yml
  • Change button label to show video.
  • Fixing appveyor.yml
  • Fixing appveyor.yml
  • Trying to setup appveyor build of docs on master.
  • Adjust track length test.
  • Allow user to set track trail length.
  • Allow user to change track names.
  • Show track name (in color) in LabeledFrameTable.
  • Add test for TrackColorManager.
  • Add TrackColorManager class to determine track color.
  • Add tests for VideoSlider.
  • Bug fixes to VideoSlider event handling.
  • Add docs and tests for TrackTrailManager.
  • Add docs and tests for TrackTrailManager.
  • Shift+arrow key to select region in seekbar.
  • rebuilt docs
  • Better support for adding track.
  • Include predicted instances when zoom to fit.
  • Show marks for instances both with/without tracks.
  • Update track menu/seekbar marks after adding track.
  • Prompt for save if closing with unsaved changes.
  • Track setting w/ seekbar selection.
  • Add 'new track' menu item to app.
  • Fix track trail colors (index using labels.tracks).
  • Ability to set/swap track for an instance.
  • Option to show predicted instances in color.
  • Comment out app Training dock.
  • Mark instance tracks on VideoSlider.
  • Use TrackTrailManager to show track trails in app.
  • Add test for datagen (forgot file in 547cd0).
  • Path to video in test file now relative.
  • Add test for data_gen.
  • Bug fix: avoid div by zero for slider w/ range 1.
  • Fixed Instance.contains.
  • Added some basic documentation updates for different modules
  • Basic code to plot path for nodes.
  • Enable (and fix) code to start/stop training from GUI.
  • Fix param name in training form config.
  • Bug fix: use class instances of t0 and sub.
  • Add required import (os).
  • YAML file used to build training GUI form.
  • Very basic version of training app.
  • Move LossViewer into separate file.
  • Support for file_open and file_dir types in FormBuilderLayout.
  • Add QtWidgets import to formbuilder.
  • Custom QFormLayout which builds form fields from list.
  • Remove unused matplotlib import.
  • Fixed issues with inference pipeline.
  • Show track name in video as [none] if no track.
  • Fix video player test so it passes.
  • PredictedInstance in gui app.
  • Bug fix: count all instances when returning idx.
  • Check subtype rather than type to match PredictedInstance.
  • Fixed bug with serializing PredicedInstance and PredictedPoint to JSON.
  • Add track label for instances in QtVideoPlayer.
  • Bug fix: use instance.nodes to check nodes in instance.
  • Fix path to video in test json file.
  • Minor bug fix: instance.nodes is now property.
  • Fixed tests for old LEAP JSON datasets.
  • Fixed some bugs in tracking and added tests.
  • JSON serialization of inference data structures.
  • Added small fly video for testing.
  • Combined InstanceArray into Instance.
  • Set theme jekyll-theme-minimal
  • Change port number for client/server results.
  • Add train command to client/server.
  • Code to try out zmq.
  • Fixed more inference bugs, should be good now.
  • Bug fixes for inference. Still broke though.
  • Fixed skeleton edge ordering bug.
  • Added conversion of InstanceArray to Instance.
  • Added a points_array method to Instance class.
  • Refactor and document inference/tracking stuff.
  • Bug fix for wheelEvent in video GUI.
  • Bug fix in gui (set accept/ignore for wheelEvents).
  • Bug fix for new instance button in GUI.
  • Add buttons to load/save skeleton from gui.
  • Unfuck previous merge mistake
  • Training callback features - Model saving (but no training metadata) - Training controller over ZMQ (stopping and learning rate) - Exposed Model.fit_generator multiprocessing args
  • When adding instance in UI, copy points from...
  • Add instanceDoubleClicked signal to GraphicsView.
  • Demo code uses signal instead of (removed) callback.
  • When adding instance in UI, copy points from...
  • Mark point as complete when visibility toggled.
  • Show predicted instances in viewer.
  • Extract clips to new video viewer window.
  • Revamped training interface - Added all parameters for current/intended features (there may be some more for architecture customization) - Progress reporting for training over ZMQ PUB - Renamed confmaps to generic outputs and added output_type to be able to specify confmaps/pafs/embeddings/etc - Cleaned up model building - Parametrized optimizers - Cleaned up callback creation - Created initial consumer for ZMQ progress reporter with Qt plotting
  • Initial densenet setup
  • Updated confidence map generation for new skeleton node indexing
  • Added scaling to augmenter
  • Unet fixes - Appropriate handling of stacked unet params
  • Updated package requirements with zmq - Also added ipython to dev requirements for convenience
  • Bug fix to UI. Update edges table after node deletion.
  • When adding instance in UI, copy points from prior instance in frame.
  • Add menu command to delete instance selected in video.
  • Add button to open (switch to) video.
  • Non-visible node label color now matches node color
  • Right-click to toggle node visibility.
  • Bug fix to instance rotation UI.
  • App UI bug fix.
  • Seekbar updates in app.
  • Bug fix in VideoSlider demo code.
  • Bug fix to video player event handling.
  • Use VideoSlider instead of QSlider.
  • VideoSlider supports selecting ranges of values.
  • Basic implementation of VideoSlider widget.
  • Added Nat to the authors list.
  • Use filter for dst node options.
  • Bug fixes to zoom.
  • Improve video zoom code.
  • Some fixes for inferenence HDF5 saving.
  • Small fixes to node_to_idx on skeleton.
  • Accept initial filename from command-line in app
  • Bug fix for wheel zooming.
  • Added full fly skeleton JSON file.
  • Changed inference output format from MAT to HDF5
  • PAF inference now uses Skeleton class.
  • Slower instance rotation from scroll-wheel
  • Mark node as not-visible by left-click.
  • Keep nodes same size (visually) when video zooms.
  • Pass events along so that clicking label is like clicking node.
  • Added support for load old LEAP skeleton MAT files.
  • Case-insensitive video extension detection - Added flag for reversing order of RGB/BGR channels
  • Clear status bar message if user cancels transpose
  • When handling selection sequence, don't trigger on_each when user cancels
  • Show instructions (as status message) during transpose
  • Add test for NumpyVideo. Close windows after gui tests.
  • Add NumpyVideo class to wrap ndarray as video object
  • Refactor, document, and test the video viewer
  • Add ability to zoom to fit instances.
  • Add ability to transpose instances by selection
  • Bug fixes to video viewer. - Update selection box position after instance dragged - Update label position after all node positions have been updated
  • Modify "mark all as complete" UI.
  • Save show/hide state for labels/edges when plotting new frame
  • Default to selecting first instance when cycling if none already selected
  • Add basic skeleton selection functionality in video viewer. - click to select, click background to clear selection - type ` to cycle selection - type [1-9] to select corresponding instance
  • Show open dialog when app starts
  • Tweaks to visual formatting of node labels
  • Add basic support for complete attribute on points.
  • Add command to show/hide edges
  • Add basic support for node labels
  • Add command to transpose (first pair of) instances Add call to replot video at various points (e.g. node name changes)
  • Add menu commands for going to marked or prev/next labelled frame
  • Tweaks to app menus
  • Remove duplicate videos and skeletons from Labels
  • Tracking integration - Added tracking data classes - Removed paf_inference and integrated into inference module - Updated flow shift tracker - Updated pipeline code to use new data classes and tracker
  • License and CLI - Updated license in package spec to BSD3 - Changed tracking CLI entrypoint to sleap-track
  • Fix: zoom in video when no mouse button, shift skeleton if during drag
  • Add keyboard shortcuts for menu actions
  • Show filename as window title in app
  • Move and rotate skeleton using Alt key and middle mouse button
  • Major changes to data structures and UI to support Node objects.
  • Add changedPlot signal to QtVideoPlayer
  • Rotate entire skeleton in video using control + mousewheel
  • Move entire skeleton in video when control key pressed
  • Fixed up some bugs with tracking.
  • Refactor inference into Predictor class
  • Added psutil as a dependency.
  • Added basic inference code.
  • Add support in gui app for importing videos
  • Show short filename (no path) in VideosTable
  • UI: select dataview tables by row rather than cell
  • Add filename property to HDF5Video (for uniformity with MediaVideo)
  • Minor bug fix: use np.divide to divide by 0 without warning
  • Minor bug fixes to gui.video.
  • Vectorize decimation code for quiverplot
  • Only show video import options when video selected in open dialog
  • Modify quiverplot test to count points rather than child elements
  • Vectorize arrow-head calculation for quiverplot (decimation broken)
  • Replace QPoint with QPointF in quiverplot
  • Use Qt painter to draw quiverplot arrows
  • Bug fix: Quiver arrows were in wrong direction when decimation > 1.
  • Run QuiverPlot test on small slice of image so it's faster
  • More documentation for ImportVideos module.
  • Add tests for import UI
  • Minor bug fix in ImportParamDialog.
  • Modify import UI so that all selected files shown in single dialog
  • Remove unused matplotlib imports from gui modules
  • Add example code that uses results from import UI.
  • Adjust import param data structure to match Video.from_X() param names.
  • Basic interface for importing videos
  • Minor changes in quiverplot.py to better conform to PEP8.
  • Minor changes in confmapsplot.py to better conform to PEP8.
  • Minor changes in multicheck.py to better conform to PEP8.
  • Move data reads from gui test files into videos fixture.
  • Changes to MultiQuiverPlot and QuiverPlot objects.
  • Change name of unit test function for ConfMapsPlot.
  • Changes to QtAffinityFields.
  • Changes to ConfMapsPlot object for visualizing confidence maps.
  • Add MultiCheck QtWidget for showing multiple numbered checkboxes.
  • Add slider and checkboxes to affinity field demo window.
  • Add blur param to QtAffinityFields().
  • Add new param to docstring in QGraphicsObject.init()
  • Changes to QtAffinityFields object used to visualize affinity fields.
  • Minimal working version of affinity field visualization.
  • Added license
  • Very minimal test for QtConfMaps visualization.
  • import qimage2ndarray and fix indent on docstrings
  • Add docstrings for QtConfMaps and QtConfMap
  • New QtConfMaps object which can be added to view for showing confmaps.
  • Implemented PAF generation from Labels
  • Implemented simple GUI interactions with data structures - Added Video add/remove - Added Skeleton manipulation (but needs to be reworked) - Added video player resetting
  • Added instance iteration in labels and tests - Fixed contains overload for Instance
  • Added labeled frame removal - Added tests for removing items from labels - Added find_last method analogous to find_first for lazy searches - Implemented skeleton contains since the getitem fallback was failing - Added skeleton test for contains - Fix Video initialization from filename class method
  • Extended Labels functionality - Renamed list of LabeledFrames to labeled_frames - Added labels property as an alias - Added skeletons class-level attribute with appropriate serialization/deserialization - Added helper function that maintains the list of videos and skeletons when mutating the list of labeled frames from class-level methods (e.g., append) - Expanded getitem to support indexing by video or (video, frame_idx) - Added common searching functions find and find_first to find labeled frames associated with a particular video or (video, frame_idx) - Added standard sequence methods to LabeledFrame to iterate over instances - Added contains to query for presence of labeled frames with video, (video, frame_idx) or skeleton - Added tests for new Labels functionality
  • Restructured nn submodule to separate architectures
  • Updated data generation for new data classes
  • Clean up and fix setuptools CLI - Deleted old data format-related modules (io.generated and io.labels) - Changed setuptools requirement to plain tensorflow and exclude it from package search - Added CLI entrypoint to main GUI
  • Added base gui functions
  • Fix grayscale detection and tests
  • Implement views for new data classes and update GUI
  • Update Skeleton property usage
  • Fix video dimension ordering and add convenience Video class method for filename-based construction
  • Rename setuptools package from leapy to sleap
  • Added loader for old json format.
  • Added transposed conv as architecture option
  • Added dataviews submodule - Implemented skeleton tables as proper QAbstractTableModel - Removed the old app_generated GUI
  • Skeleton revamp - Corrected a few methods for properly dealing with edge types when filtering the MultiDiGraph - Added methods for adding and removing symmetries - Added convenience properties for accessing (body) edges and symmetries - Breaking change: renamed node_names property to nodes - Still broken: graph and graph_symmetry properties, though these may get deprecated
  • Appveyor fixes
  • Added pandas to requirements.txt
  • Skeleton improvments for relabel.
  • Made graph attribute on skeleton private (_graph).
  • Started to merge new Labels and other data classes - Added dependency qimage2ndarray to correctly render ndarrays - Removed force bool converter in Video.grayscale since it was preventing correct auto-detection of grayscale as default (bool(None) == False)
  • Appveyor depends updated for: cattrs====1.0.0rc0
  • Got rid of dataset output to local directory.
  • Addes JSON output serialization.
  • Turn off conda update in appveyor.
  • Force conda update on appveyor.
  • Appveyor changes to dependencies.
  • Add cattrs to appveyor environment.
  • Cleaned up some of the video serialization. Appveyor fixes.
  • Added Labels and LabeledFrame classes to replace Dataset
  • Some changes to the Video classes.
  • Major changes to dataset.
  • Added intermediate input concatenation for hourglass
  • Fix non-initialized main app
  • Training params
  • Data generation and training
  • Suggested installation instructions
  • Initial data generation routines for training
  • Core functionality in main labeling app - JSON importing with path and indexing fixing - Pandas DataFrame TableView model - Clearer visibility visual indicator - Fix MediaVideo frame count
  • My hands are typing words
  • Video player and initial apps
  • Disable cache on appveyor.
  • More CI fixes.
  • Appveyor RDP setup
  • Added a basic gui test.
  • Added pandas to spec.
  • More appveyor fixes.
  • Appveyor fixes.
  • Support for writing instances to HDF5. Appveyor fixes.
  • Added initial network blocks
  • Disable broken to_hdf5 test for Instance.
  • Added some more dependencies.
  • Initial GUI framework
  • Added more Video methods and tests
  • Added pandas as dependency.
  • Added writing Instances to pandas DataFrame.
  • Add dict access methods to Instance.
  • Update README.md
  • Trying to make the build cache smaller.
  • More fixes.
  • More fixes to test_script
  • Fix test_script section.
  • Fixes
  • path fix
  • More appveyor fixes
  • Switch to x64 Miniconda again.
  • Switch appveyor to x64 python.
  • Appveyor fixes.
  • More appveyor fixes.
  • Renamed appveyor.yaml to appveyor.yml.
  • Added build section back to appveyor.yml
  • Removed build section from appveyor.yml
  • Added a basic API for instances.
  • Initial GUI and video modules
  • Fixed some tigergpu test issues.
  • Added script for running tests on tigergpu.
  • Added install of dev_requirements.txt to appveyor.
  • Added appveyor building
  • Renamed leap to sleap
  • Update README.md
  • Started work on instance level data.
  • Combined DatasetBackend and Dataset classes.
  • Added some features to Dataset
  • Added some features to Skeleton. Setup conda recipe.
  • Added delete_node to Skeleton.
  • Added Skeleton API.
  • Initial code skeleton
  • Initial commit