* improve spacing of face selection in mobile drawer
* fix spacing
* sort face names alphabetically
* Improve face selection dialog
* Use a state to track when face image loads
The naturalWidth and naturalHeight will always be 0 until the image loads. So we use onLoad and a state to track loading and then calculate the area after it has loaded
* Verify that a camera only tracks objects that are possible to track
* Fix test
* genai docs tweak
* Disable openvino model cache
* Clenaup
* Sanitize floats for estimated speed and angle
Users can configure speed zones in such a way that velocity estimates from Norfair cause a value of inf to be stored as an estimated speed. FastAPI doesn't serialize inf as a float, so trying to return this value would result in an API error. Sanitizing the value before storing should correct this.
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add Thai (still need to merge weblate)
* Apply attribute logic to all label types
* Fix area check
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Only check if an object is stationary to avoid mqtt snapshot
* docs heading tweak
* Add more API descriptions
* Add missing lib for new rocm onnxruntime whl
* Update inference times to reflect better rocm performance
* Cleanup resetting tracked object activity
* remove print
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Fix the `Any` typing hint treewide
There has been confusion between the Any type[1] and the any function[2]
in typing hints.
[1] https://docs.python.org/3/library/typing.html#typing.Any
[2] https://docs.python.org/3/library/functions.html#any
* Fix typing for various frame_shape members
Frame shapes are most likely defined by height and width, so a single int
cannot express that.
* Wrap gpu stats functions in Optional[]
These can return `None`, so they need to be `Type | None`, which is what
`Optional` expresses very nicely.
* Fix return type in get_latest_segment_datetime
Returns a datetime object, not an integer.
* Make the return type of FrameManager.write optional
This is necessary since the SharedMemoryFrameManager.write function can
return None.
* Fix total_seconds() return type in get_tz_modifiers
The function returns a float, not an int.
https://docs.python.org/3/library/datetime.html#datetime.timedelta.total_seconds
* Account for floating point results in to_relative_box
Because the function uses division the return types may either be int or
float.
* Resolve ruff deprecation warning
The config has been split into formatter and linter, and the global
options are deprecated.
* face library i18n fixes
* face library i18n fixes
* add ability to use ctrl/cmd S to save in the config editor
* Use datetime as ID
* Update metrics inference speed to start with 0 ms
* fix android formatted thumbnail
* ensure role is comma separated and stripped correctly
* improve face library deletion
- add a confirmation dialog
- add ability to select all / delete faces in collections
* Implement lazy loading for video previews
* Force GPU for large embedding model
* GPU is required
* settings i18n fixes
* Don't delete train tab
* webpush debugging logs
* Fix incorrectly copying zones
* copy path data
* Ensure that cache dir exists for Frigate+
* face docs update
* Add description to upload image step to clarify the image
* Clean up
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Don't update thumbnail/snapshot if frame is not in the frame cache
This follows up on changes originally made in https://github.com/blakeblackshear/frigate/pull/17671 - it is possible that is_better_thumbnail is true but the frame_time for the object is not the same as the current_frame_time. So rather than checking the frame cache, this change will only update the thumbnail_data when the two frame time values are the same.
* add camera name to debug log
* add support for multi-line plates
* config for model size
* default to small model
* add license plate as attribute to motorcycle
* use model size
* docs
* attribute map
* i18n key fix
* Save initial frame of new objects to frame cache
Objects that move quickly through the frame and are only seen briefly may not have the update() method called to save thumbnail_data, and may not have the initial frame saved to the tracked object frame cache. This caused a "Frame missing from frame cache" message that was patched by #7313 but this sometimes caused the wrong frame to be chosen for the thumb/snapshot.
* Tracking tweaks
- When registering new objects, use the past detections from Norfair to populate self.positions and self.stationary_box_history. This prevents the first call of update_position() from triggering a +1 on the object's stationary count (because the iou would be 1.0).
- Add a specific tracker for dedicated LPR cam license_plate objects using a lower R value and higher distance threshold to account for fast moving plates.
- Add helpful debug messages and keep them disabled with `if False:`
* Correctly ensure updates are more periodic when lpr or face detection is needed
* Cleanup
* Update api schema
* Don't update for stationary objects
* Simplify check
* Remove
* remove license plate from attributes for dedicated lpr cameras
* ensure we always have a color
* use frigate+ models with dedicated lpr cameras
* docs
* docs clarity
* docs enrichments
* use license_plate as object type
* backend
* backend fixes
* api for search queries
* frontend
* docs
* add filterable scroll list to more filters pane for identifiers
* always publish identifier
* Remove thumbnail from dict
* Create thumbnail diectory
* Cleanup handling of tracked object images
* Make thumbnail optional
* Handle cases where thumbnail is used
* Expand options for thumbnail api
* Fix up the does not exist condition
* Remove absolute usages of thumbnails
* Write thumbnails for external events
* Reduce webp quality
* Use webp everywhere in frontend
* Formatting
* Always consider all events when re-indexing
* Add thumbnail deletion and cleanup path management
* Cleanup imports
* Rename def
* Don't save thumbnail for every object
* Correct event count
* Use correct function
* Include thumbnail in query
* Remove unused
* Fix requiring exception
* add path point tracking to backend
* types
* draw paths on lifecycle pane
* make points clickable
* don't display a path if we don't have any saved path points
* only object lifecycle points should have a click handler
* change to debug log
* better debug log message
* utility functions
* backend config
* backend object speed tracking
* draw speed on debug view
* basic frontend zone editor
* remove line sorting
* fix types
* highlight line on canvas when entering value in zone edit pane
* rename vars and add validation
* ensure speed estimation is disabled when user adds more than 4 points
* pixel velocity in debug
* unit_system in config
* ability to define unit system in config
* save max speed to db
* frontend
* docs
* clarify docs
* utility functions
* backend config
* backend object speed tracking
* draw speed on debug view
* basic frontend zone editor
* remove line sorting
* fix types
* highlight line on canvas when entering value in zone edit pane
* rename vars and add validation
* ensure speed estimation is disabled when user adds more than 4 points
* pixel velocity in debug
* unit_system in config
* ability to define unit system in config
* save max speed to db
* frontend
* docs
* clarify docs
* fix duplicates from merge
* include max_estimated_speed in api responses
* add units to zone edit pane
* catch undefined
* add average speed
* clarify docs
* only track average speed when object is active
* rename vars
* ensure points and distances are ordered clockwise
* only store the last 10 speeds like score history
* remove max estimated speed
* update docs
* update docs
* fix point ordering
* improve readability
* docs inertia recommendation
* fix point ordering
* check object frame time
* add velocity angle to frontend
* docs clarity
* add frontend speed filter
* fix mqtt docs
* fix mqtt docs
* don't try to remove distances if they weren't already defined
* don't display estimates on debug view/snapshots if object is not in a speed tracking zone
* docs
* implement speed_threshold for zone presence
* docs for threshold
* better ground plane image
* improve image zone size
* add inertia to speed threshold example
* Don't track shared memory in frame tracker
* Don't track any instance
* Don't assign sub label to objects when multiple cars are overlapping
* Formatting
* Fix assignment
* Fix access
* Reorganize tracked object for imports
* Separate out rockchip build
* Formatting
* Use original ffmpeg build
* Fix build
* Update default search type value