* 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
* Merge nearby horizontal boxes
* only publish to recognized plate field if object already has a sub label
* don't overwrite sub labels in any situation
* always publish sub label if it's a known plate
* 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
* Section faces by event id
* Make score keeping more robust
* layout improvements
* Cleanup dialog
* Fix clicking behavior
* Add view in explore option
* math.round
* Don't require events
* Cleanup
* Remove selection
* Don't require
* Change dialog size with snapshot
* Use filename as key
* fix key
* Rework layout for mobile
* Handle mobile landscape
* Fix train issue
* Match logic
* Move deletion logic
* Fix reprocessing
* Support creating a new face
* Translations
* Do sorting in frontend
* Adjust unknown
* Cleanup
* Set max limit to faces to recognize
* Fix sorting
* Fix
* add config validator for face and lpr
* more lpr docs tweaks
* fix object lifecycle point clicking for aspect ratios less than 16/9
* fix semantic search indexing i18n keys
* remove ability to set system language
* clarify debug output
* Don't assume landmark file is downloaded
* Rewrite build model task to be asynchronous so it doesn't block the pipeline
* Handle case where face recognition does not respond
* Cleanup
* Make daemon thread
* Increase frequency of updates when internal face detection is used
* Adjust number of required faces based on detection type
* Adjust min_score config to unknown_score
* Only for person
* Improve typing
* Update face rec docs
* Cleanup ui colors
* Cleanup
* Refactor face recognition to allow for running lbph or embedding
* Cleanup
* Use weighted average for faces
* Set correct url
* Cleanup
* Update docs
* Update docs
* Use scipy trimmed mean
* Normalize
* Handle color and gray landmark detection
* Upgrade to new arcface model
* Implement sigmoid function
* Rename
* Rename to arcface
* Fix
* Add face recognition model size to ui config
* Update toast
* Add ability to update Frigate+ model to latest
* UI tweaks
* further UI tweaks
* UI tweaks: add width and height, fix select
* Add placeholder while API call in progress
* Fix Frigate+ enabled check
* Fix config change lost when reloading page
* Add persistent message requiring restart
* Drop down supported detectors and dimensions
* Add width and height to display
* Update FrigatePlusSettingsView.tsx
* Temp fix for Codespaces not loading
* Add i18n, format
* remove unneeded brackets
* missing colon
* Revert "Temp fix for Codespaces not loading"
This reverts commit 75b19674ce.
* Move database and config from homeassistant /config to addon /config
* Re-implement config migration for the add-on
* Align some terms
* Improve function name
* Use local variables
* Add model.path migration
* Fix homeassistant config path
* Ensure migration scripts run before go2rtc and frigate
* Migrate all files I know
* Add ffmpeg.path migration
* Update docker/main/rootfs/etc/s6-overlay/s6-rc.d/prepare/run
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Improve some variable names and organization
* Update docs to reflect addon config dir
* Update live.md with /addon_configs
* Move addon config section to configuration doc
* Align several terminologies and improve text
* Fix webrtc example config title
* Capitalize Add-on in more places
* Improve specific add-on config dir docs
* Align bash and python scripts to prefer config.yml over config.yaml
* Support config.json in migration shell scripts
* Change docs to reflect config.yml is preferred over config.yaml
* If previous config was yaml, migrate to yaml
* Fix typo in edgetpu.md
* Fix formatting of Python files
* Remove HailoRT Beta add-on variant from docs
* Add migration for labelmap and certs
* Fix variable name
* Fix new_config_file var unset
* Fix addon config directories table
* Improve db migration to avoid migrating files like .db.bak
* Fix echo location
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* docs fps recommendation
* add detection_threshold to example
* send uncoverted yuv frame
* copy and convert
* ensure thumbnail is encoded as webp
* keep as jpeg
* config options
* processing in maintainer
* detect and process dedicated lpr plates
* create camera type, add manual event and save snapshot
* use const
* ensure lpr events are always detections, typing fixes
* docs
* docs tweaks
* add preprocessing and penalization for low confidence chars
* ensure config file is updated with booleans instead of strings
* catch onvif error
* ensure object type is available as a ptz tracker
* update live view docs
* Ensure doesn't fail due to missing dir
* Remove redundant settings from tabs
* Adjust selection method for mobile
* Fix button descendent error
* Ensure train is option on mobile
* Cleanup face images
* Cleanup
* Fix case where objects are returned as null
* Fix enabled status not being persisted
* Use config as source of truth when refreshed
* Ensure camera always have config object updated
* Cleanup typing
* Add api to run face recognition on image
* Rework save attempts option
* Cleanup mobile object pane buttons
* Adjust api signature
* Remove param
* Cleanup
* Set maximum number of face images to be kept
* Fix vertical camera scaling
* adjust wording
* Add attributes to search data
* Add button to train face from event
* Handle event id saving in API
* Fix login page
* Increase face image size and add time ago
* Add component for indicating steps in a wizard
* Split out form inputs from dialog
* Add wizard for adding new face to library
* Simplify dialog
* Translations
* Fix scaling bug
* Fix key missing
* Improve multi select
* Adjust wording and spacing
* Add tip for face training
* Fix padding
* Remove text for buttons on mobile
* backend
* backend fixes
* api for search queries
* frontend
* docs
* add filterable scroll list to more filters pane for identifiers
* always publish identifier
* Adding Models
* Final Async Update
* Bug Fixing
* Fix
* Adding fixes
* Working async infer
* Final Documenatation and debug update
* Removing some extra prints
* Post-process correct label push
* config docs fix
* Review Fix
* Review fix 2.0
* Fixing the ASYNC API to work from 30ms to 10ms
* Fix for multi stream async infernce
* Format
* Fix#3
* Format#2
* Remove Unnessery includes
* Sort Imports
* db migration
* db model
* assign admin role on password reset
* add role to jwt and api responses
* don't restrict api access for admins yet
* use json response
* frontend auth context
* update auth form for profile endpoint
* add access denied page
* add protected routes
* auth hook
* dialogs
* user settings view
* restrict viewer access to settings
* restrict camera functions for viewer role
* add password dialog to account menu
* spacing tweak
* migrator default to admin
* escape quotes in migrator
* ui tweaks
* tweaks
* colors
* colors
* fix merge conflict
* fix icons
* add api layer enforcement
* ui tweaks
* fix error message
* debug
* clean up
* remove print
* guard apis for admin only
* fix tests
* fix review tests
* use correct error responses from api in toasts
* add role to account menu
* Monitor if camera is disabled for review items
* Simplify multi camera disabled check
* Cleanup birdseye config handling
* Cleanup
* Remove old listeners
* Fix live cameras not showing on refresh
* Fix live dashboard when birdseye is added
* Handle cameras that are offline / disabled
* Use black instead of green frame
* Fix missing mqtt topics
* Adapt openai.py to work with xAI
It appears xAI is a bit more strict in regards to how the prompt is sent. This changes the prompt to be a dictionary with `"type": "text"` which works with OpenAI and xAI.
* Adapt openai.py to work with xAI
add "detail": "low"
* Adapt openai.py to work with xAI
Apply Ruff formatting and linting fixes
* config options
* metrics
* stop and restart ffmpeg processes
* dispatcher
* frontend websocket
* buttons for testing
* don't recreate log pipe
* add/remove cam from birdseye when enabling/disabling
* end all objects and send empty camera activity
* enable/disable switch in ui
* disable buttons when camera is disabled
* use enabled_in_config for some frontend checks
* tweaks
* handle settings pane with disabled cameras
* frontend tweaks
* change to debug log
* mqtt docs
* tweak
* ensure all ffmpeg processes are initially started
* clean up
* use zmq
* remove camera metrics
* remove camera metrics
* tweaks
* frontend tweaks
* Simplify rocm install and update to 6.3.1
* Build out more necessary packages
* Update to 6.3.3
* Set bake version
* Fix typo
* Ensure NHWC is used
* Reset dev changes
* Write to cache
* recordings data pub/sub
* function to process recording stream frames
* model runner
* lpr model runner
* refactor to mixin class and use model runner
* separate out realtime and post processors
* move model and mixin folders
* basic postprocessor
* clean up
* docs
* postprocessing logic
* clean up
* return none if recordings are disabled
* run postprocessor handle_requests too
* tweak expansion
* add put endpoint
* postprocessor tweaks with endpoint
* Improve ffmpeg versions handling
* Remove fallback from LIBAVFORMAT_VERSION_MAJOR, it should always be set
* Mention ffprobe in custom ffmpeg docs
* Fix ffmpeg extraction
* Fix go2rtc example formatting
* Add fallback back to LIBAVFORMAT_VERSION_MAJOR
* Fix linter
* Move onnx runner
* Build out base embedding
* Convert text embedding to separate class
* Move image embedding to separate
* Move LPR to separate class
* Remove mono embedding
* Simplify model downloading
* Reorganize jina v1 embeddings
* Cleanup
* Cleanup for review
* 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
* add notification cooldown
* cooldown docs
* show alert box when notifications are used in an insecure context
* add ability to suspend notifications from dashboard context menu
* use a small yolov9 model for detection
* use yolov9 for users without frigate+ and update retention algorithm
* new lpr config fields
* levenshtein distance package
* tweaks
* docs
* norfair tracker config per object type
* change default R back to 3.4
* separate trackers for static and autotracking cameras
* tweak params and fix debug draw
* ensure all trackers are correctly updated even when there are no detections
* basic reid with histograms
* check mp value
* check mp value again
* stationary objects won't have embeddings
* don't switch trackers when autotracking is toggled after startup
* improve motion detection during autotracking
* use helper function
* get histogram in tracker instead of detect
* backend
* frontend
* add notification config at camera level
* camera level notifications in dispatcher
* initial onconnect
* frontend
* backend for suspended notifications
* frontend
* use base communicator
* initialize all cameras in suspended array and use 0 for unsuspended
* remove switch and use select for suspending in frontend
* use timestamp instead of datetime
* frontend tweaks
* mqtt docs
* fix button width
* use grid for layout
* use thread and queue for processing notifications with 10s timeout
* clean up
* move async code to main class
* tweaks
* docs
* remove warning message
* WIP yolov9
* Implement post processing for yolov9
* Cleanup detection
* Update docs to make note of supported yolov9
* Move post processing to separate utility
* Add note about other models
* 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
* config file changes
* config migrator
* stream selection on single camera live view
* camera streaming settings dialog
* manage persistent group streaming settings
* apply streaming settings in camera groups
* add ability to clear all streaming settings from settings
* docs
* update reference config
* fixes
* clarify docs
* use first stream as default in dialog
* ensure still image is visible after switching stream type to none
* docs
* clarify docs
* add ability to continue playing stream in background
* fix props
* put stream selection inside dropdown on desktop
* add capabilities to live mode hook
* live context menu component
* resize observer: only return new dimensions if they've actually changed
* pass volume prop to players
* fix slider bug, https://github.com/shadcn-ui/ui/issues/1448
* update react-grid-layout
* prevent animated transitions on draggable grid layout
* add context menu to dashboards
* use provider
* streaming dialog from context menu
* docs
* add jsmpeg warning to context menu
* audio and two way talk indicators in single camera view
* add link to debug view
* don't use hook
* create manual events from live camera view
* maintain grow classes on grid items
* fix initial volume state on default dashboard
* fix pointer events causing context menu to end up underneath image on iOS
* mobile drawer tweaks
* stream stats
* show settings menu for non-restreamed cameras
* consistent settings icon
* tweaks
* optional stats to fix birdseye player
* add toaster to live camera view
* fix crash on initial save in streaming dialog
* don't require restreaming for context menu streaming settings
* add debug view to context menu
* stats fixes
* update docs
* always show stream info when restreamed
* update camera streaming dialog
* make note of no h265 support for webrtc
* docs clarity
* ensure docs show streams as a dict
* docs clarity
* fix css file
* tweaks
* Start working on bird processor
* Initial setup for bird processing
* Improvements to handling
* Get classification working
* Cleanup classification
* Add classification config
* Update sort
* Actually send result to face registration
* Define postprocessing api and move face processing to fit
* Standardize request handling
* Standardize handling of processors
* Rename processing metrics
* Cleanup
* Standardize object end
* Update to newer formatting
* One more
* One more
* Get stats for embeddings inferences
* cleanup embeddings inferences
* Enable UI for feature metrics
* Change threshold
* Fix check
* Update python for actions
* Set python version
* Ignore type for now
* Support downloading face models
* Handle download and loading correctly
* Add face dir creation
* Fix error
* Fix
* Formatting
* Move upload to button
* Show number of faces in library for each name
* Add text color for score
* Cleanup
* rockchip: update dependencies and add script for model conversion
* rockchip: update docs
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* use ruamel to parse and preserve line numbers for config validation
* maintain exception for non validation errors
* fix types
* include input in log messages
* Validate faces using cosine distance and SVC
* Formatting
* Use opencv instead of face embedding
* Update docs for training data
* Adjust to score system
* Set bounds
* remove face embeddings
* Update writing images
* Add face library page
* Add ability to select file
* Install opencv deps
* Cleanup
* Use different deps
* Move deps
* Cleanup
* Only show face library for desktop
* Implement deleting
* Add ability to upload image
* Add support for uploading images
* Add margin to detected faces for embeddings
* Standardize pixel values for face input
* Use SVC to classify faces
* Clear classifier when new face is added
* Formatting
* Add dependency
* Update version
* Face recognition backend (#14495)
* Add basic config and face recognition table
* Reconfigure updates processing to handle face
* Crop frame to face box
* Implement face embedding calculation
* Get matching face embeddings
* Add support face recognition based on existing faces
* Use arcface face embeddings instead of generic embeddings model
* Add apis for managing faces
* Implement face uploading API
* Build out more APIs
* Add min area config
* Handle larger images
* Add more debug logs
* fix calculation
* Reduce timeout
* Small tweaks
* Use webp images
* Use facenet model
* Improve face recognition (#14537)
* Increase requirements for face to be set
* Manage faces properly
* Add basic docs
* Simplify
* Separate out face recognition frome semantic search
* Update docs
* Formatting
* Fix access (#14540)
* Face detection (#14544)
* Add support for face detection
* Add support for detecting faces during registration
* Set body size to be larger
* Undo
* Update version
* Face recognition backend (#14495)
* Add basic config and face recognition table
* Reconfigure updates processing to handle face
* Crop frame to face box
* Implement face embedding calculation
* Get matching face embeddings
* Add support face recognition based on existing faces
* Use arcface face embeddings instead of generic embeddings model
* Add apis for managing faces
* Implement face uploading API
* Build out more APIs
* Add min area config
* Handle larger images
* Add more debug logs
* fix calculation
* Reduce timeout
* Small tweaks
* Use webp images
* Use facenet model
* Improve face recognition (#14537)
* Increase requirements for face to be set
* Manage faces properly
* Add basic docs
* Simplify
* Separate out face recognition frome semantic search
* Update docs
* Formatting
* Fix access (#14540)
* Face detection (#14544)
* Add support for face detection
* Add support for detecting faces during registration
* Set body size to be larger
* Undo
* initial foundation for alpr with paddleocr
* initial foundation for alpr with paddleocr
* initial foundation for alpr with paddleocr
* config
* config
* lpr maintainer
* clean up
* clean up
* fix processing
* don't process for stationary cars
* fix order
* fixes
* check for known plates
* improved length and character by character confidence
* model fixes and small tweaks
* docs
* placeholder for non frigate+ model lp detection
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>