All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Install script for installations without docker
- JupyterLab Integration for Administrators
- pyAPI:
- Allow to request annotations via LOSTDataframes (see #144)
- Allow to request annotation labels via label_name (see #144)
- Allow to add meta information to annotations via pyAPI
- request_annos: Added ability to deal with ImageAnno objects from database in order to request annos for a copy of the ImageAnno object.
- Configurations for LOST via database
- pyAPI: Allow to add a image comment via api. This comment will be shown in ImgBar in SIA
- ImageAnnos: Added img_actions attribute -> Tracks all annotation actions performed by an annotator
- SIA:
- Added max canvas size mode. Where canvas takes the maximum container size and is not image oriented as before.
- Added comment support for 2d annotations
- Added an InfoBox (AnnoStats) that shows the number of annotation per label in an image
- This box allows also to hide annotations of a specific label
- See #86, #160 and #161
- MIA:
- Show labels as tags
- Allow to zoom into images in an extra modal
- Cronjob that removes annotations that are not assigned to any image
- ExamplePipes:
- restructured whole lost out of the box pipeline project
- Dashboard:
- Personal statistics for annotator and designer roles
- Statistics:
- Designer statistics for designers - includes all annotation activities of the users of the designer's pipelines
- Datasources:
- Allow to connect to external filesystems (azure blob storage, s3 bucket, ssh / sftp)
- Allow to upload and delete files via GUI
- Allow to create directories via GUI
- PipelineStart:
- Allow to specify annotation options for SIA and MIA Annotation Tasks
- PipelineRunning:
- Allow to adapt annotation options for SIA and MIA Annotation Tasks
- PipeProject:
- Allow to import, update and export pipe projects via UI
- LabelTrees:
- Allow to import and export label trees via UI
- VisibilityLevels and Roles:
- Added Admin role + Admin Area
- Added global and user specific visibility levels
- Global datasources and label trees
- User (Designer) - specific datasources and label trees
- LDAP
- Allow to connect to external ldap servers in order to authenticate with external users
- AnnotationTask
- Allow to generate multiple exports with given presets at any time
- Pipeline import:
- Import pipelines via git/github or zipfile
- Pipeline export:
- Export lost pipelines to zip file
- Extendend Logging:
- Added option for using graylog as central logging platform (Linux support only !)
- Use fsspec for filesystem abstraction
- SIA: Do not send any image urls to frontend
- MIA
- Do not send any image urls to frontend
- If a mia task is annoBased, crop annos on the fly (do not store anno crops in filesystem)
- fileMan: Use fsspec instead of os for filesystm operations
- SiaReview:
- Trigger notification if annotations have been changed but not saved when navigation to another image
- Updated frontend to Core-UI-3
- Use Dask as scheduler instead of clelery
- Replace Anaconda package manager with mamba
- LOST standard export format
- Added anno_style and anno_format
- Removed unused columns from dataframe
- Export anno_data to lists instead of dicts
- Changed dot column name style to underscore style
- SIA:
- Save changed and created annotations instantly to backend
- PipeEngine bug: Created wrong pipe graph, when first element in pe list was not first element in pipeline graph
- Fixed raw sql in access to be compatible with postgresql
- Fixed copy bug in import script -> Copied to wrong location, when path had tailing '/'
- PipeStart: Empty labels in annotask not possible anymore
- SIA:
- Endless image loading bug
- Filter Bug -> Do not copy annotations from previous image when filter is active!
- Mia anno_based feature + Mia request again
- EditPipeline: Fixed leaking user information to unprivileged users
- removed lost-cv images. This is now integrated into the lost image
- pyAPI:
- request_bbox_annos since it is a special case of request_annos
- request_image_anno since it is a special case of request_annos
- add_anno since it has not been used until now
- Added user and password to amqp url if set in .env file (see l3p-cv#133)
- ImgBlacklist:
- Do not log every blacklist load
- Warn for other argument types than lists in blacklist add method
- Return always lists in get_whitelist method
- Version in lost backend init
- KeyError while trying to remove script from worker
- Try to fix readthedocs requirements
- SIA:
- Added maxAnnos to canvasConfig. This allows to define a maximum number of annotations that are allowed per image.
- Pipeline View:
- Added Force Annotation Release-button in running pipeline view for annotation tasks in order to manually release annotations that are locked for inactive users (fixes l3p-cv#120)
- to_dict()/to_df() method for annotation export -> use annotator.user_name for annotator entry in dict/dataframe
- db.access -> Use with_for_update method when locking images for an annotator in SIA tasks to prevent assignment of same image to multiple annotators
- Refactor User Management frontend with using reactstrap
- Logmodal update only scroll position if the the scroll position is at the bottom of the textarea
- frontend/src/lost_settings.js -> Automatically determine production or development mode from environment variable
- Moved packages from frontend/src/components/pipeline/package.json to frontend/src/package.json
- Pipeline throws error when the user pressed ctrl key
- SIA:
- Frontend annotation time measurement: Annotation time is now measured in frontend, based on user events. For each annotation, user interaction time is measured.
- Delete last node of polygon/ line when hitting delete key in create mode (see l3p-cv#102)
- Added copy & paste for annotations (see l3p-cv#82)
- Added Sia image filters -> Image can now be rotated and histogram equalization can be applied for dark images
- Use j-Key as shortcut for junk images
- BaseImage: Installed opencv + dependencies
- SIA:
- Do not lose polygon annotation when hitting enter in create mode
- Do not allow to draw a polygon consisting of two points (see l3p-cv#101)
- Do not collapse line with two points, when confirming with enter
- Pipeline import:
- Script parsing fails when list/dictionary literals are not valid JSON (see l3p-cv#97)
- Updated conda in order to get lost-cv container running
- AnnotationTask deadlock (see l3p-cv#27)
- A background job was implemented that will release all annotations that have been locked for a specific user for longer than the timespan of SESSION_TIMEOUT (defined in .env file). This job is called on a regular basis in the frequency defined by SESSION_TIMEOUT.
- Defining SESSION_TIMEOUT in .env file leads to exception.
- Sorting Running Pipeline and Start Pipeline by Date does not worked correctly
- DB User: Added api_token column + patch
- Designer can update Arguments in Running Pipeline in Script Nodes
- Implement Worker Live Log
- Don't report anno_task's current iteration annotations
- Report webservices: filter options
- Report webservices: order by pipe element id
- Report webservices for annotation tasks - get annotations per label and annotations per day statistics
- Token webservice for user - get a valid api token
- SIAReview:
- Review tool for annotation tasks in designer interfaces
- Allows to view and adjust annotations for SIA and MIA tasks
- Allows also to filter annotations by iteration
- Docs: Description of Utf-8 char encoding fix (see l3p-cv#72)
- Live logs: Show logs live in pipeline frontend when clicking on logs (see l3p-cv#84)
- Allow html tags inside task instructions and label descriptions (see l3p-cv#78)
- Updated nodejs version in oder to get ci running
- SIA:
- Added next/ prev image shortcut via ArrowLeft/ArrowRight keys (see l3p-cv#67)
- Added camera move on wasd keys
- SIA: Show annotation nodes in foreground and label above annotation to prevent that nodes are not accessible by the annotator (see l3p-cv#74)
- PyAPI: get_label_tree method did not return any label tree
- PyAPI: get_label_tree method did not return any label tree
- Docs: Migration guide -> How to migrate from 0.0.6 to 1.1.0 (see l3p-cv#71)
- Reduction of docker images size (see l3p-cv#68)
- Use docker-compose for gpu worker (see l3p-cv#65)
- Usermanagement: Integrated usermanagement refactoring (see also l3p-cv#47)
- SIA:
- Always reset annotation mode to view when getAnnoBackendFormat is called
- Delete annotation in sia canvas correctly, when they are moved out of the image.
- Prevent user from moving image out of canvas
- Confirm label in LabelInput by click on the respective label
- Configure name of the default Label by a prop
- Provide method to reset canvas zoom
- It is now possible to define custom label colors via canvas possibleLabels props
- SIA: Fixed all annotations lost bug. (see also l3p-cv#51)
- When a new annotation was created and deleted before a backend update was performed, SIA sent this annotation to backend for an db update
- The backend then tried to update a db record that did not exists which caused an exception.
- The result was that all annotation where lost
- SIA: Fixed crash on changing image when label input is active.
- SIA Fixed jumping camera when zooming into the image
- SIA Fixed LabelInput on wrong position when image was zoomed
- SIA: Delete annotation by hitting Backspace
- Example pipeline for multi label support in SIA
- SIA:
- Close label input field also when clicking on a annotation
- Autoscale font size in AnnoBar
- MIA: Frontend undo button
- Heavy frontend cleanup
- MIA: Allow to assign label by mouse click in dropdown also if underlaying image is excluded
- anno_helper.divide_into_patches: output of shifted bbox coordinates.
- blacklist: fixed behaviour of get_whitelist method. Do not put images automatically on blacklist.
- SIA: Added button to delete all 2D annos
- Update AnnoTask progress bar on sia update events
- adapted imageai package installation for gpu container
- Blacklist class for image blacklisting
- Added anno helper & vis to docs
- Removed LifeSign from Logger
- LifeSign from logging
- frontend cleanup: removed old tools (sia/pipeline)
- fixed destroyed conda env in lost-cv-gpu container
- SIA: New features
- Fullscreen mode
- New GUI design in order to enlarge the image canvas
- Assignment of image labels for captioning
- Multi label support -> Assignment of multiple labels per annotation or image
- Full redo/ undo support
- Introduced info boxes to show additional information
- An annotator may mark an image as Junk if it should not be considered for annotation
- A minimum area for annotations can be defined.
- Database:
- Added description field to ImageAnno and TwoDAnno. This can be a description that can be added by an annotator or algorithm und was added for future features.
- Added new table(track) for track annotation, to prepare the database for the ISA (Image Sequence Annoation) tool.
- SIA: Complete rewrite in react.
- Config of SIA in pipeline definition files.
- Database:
- In ImageAnno changed track_n -> track_id
- SIA: In pipeline definition files config -> actions -> edit. It is not longer possible to allow/ deny actions when editing an annotation, since it was a feature that nobody used.
- Cron: Set AnnoTask to finished if there no annotations in the current iteration
- Docs: Added description of @KonradAdamczyk on how to install LOST from a backup
- LOST notification system: @KonradAdamczyk fixed missing lost_url
- GPU Worker lost-cv-gpu now contains the scikit-learn library
- Annotation context can now also be added to monochrome images
- Fixed typos in pipeline gui
- Fixed import of script ENV variables that have been commented out (see commit 72fddfa)
- Fixed offline availability since frontend was loading fonts from web
- allow pipelines to be started by users other than admin (groups/user id mix-up)
- allow arbitrary ports for api access through lost frontend
- Check if pipeline definition files match specification before import or update.
- Allow custom nginx configuration.
- allow assigning annotasks to all users and groups in system (see issue #19)
- change label of predicted annotations in sia (see issue #23).
- prevent users from deleting themselves.
- prevent users from deleting their default group, which will prevent pipelines from starting.
- go to last image in sia: not one image too far anymore (see issue #31).
- removed redundant data for sia annotations (see issue #29)
- added jwt blacklist
- Adjust loop iterations when starting a pipeline
- prevent admin user from removing its own designer role
- update_pipe_project.py bug: update of wrong script (see issue #21)
- logout bug: clean redux store and reset axios auth header (see issue #18)