Commit Graph

2012 Commits

Author SHA1 Message Date
Nicolas Mowen
0d5a49ab82 Don't fail on unicode debug for config updates 2025-08-16 10:20:33 -05:00
Nicolas Mowen
2f4d7353f4 Don't use staticmethod 2025-08-16 10:20:33 -05:00
Nicolas Mowen
ef060b97ca Reduce tf initialization 2025-08-16 10:20:33 -05:00
Nicolas Mowen
e832bb4bad Fix go2rtc init (#18708)
* Cleanup process handling

* Adjust process name
2025-08-16 10:20:33 -05:00
Josh Hawkins
4deccf08a1 Ensure logging config is propagated to forked processes (#18704)
* Move log level initialization to log

* Use logger config

* Formatting

* Fix config order

* Set process names

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-08-16 10:20:33 -05:00
Josh Hawkins
a6b80c0f9c Add basic camera settings to UI for testing (#18690)
* add basic camera add/edit pane to the UI for testing

* only init model runner if transcription is enabled globally

* fix role checkboxes
2025-08-16 10:20:33 -05:00
Nicolas Mowen
1caf8b97c4 Use Fork-Server As Spawn Method (#18682)
* Set runtime

* Use count correctly

* Don't assume camera sizes

* Use separate zmq proxy for object detection

* Correct order

* Use forkserver

* Only store PID instead of entire process reference

* Cleanup

* Catch correct errors

* Fix typing

* Remove before_run from process util

The before_run never actually ran because:

You're right to suspect an issue with before_run not being called and a potential deadlock. The way you've implemented the run_wrapper using __getattribute__ for the run method of BaseProcess is a common pitfall in Python's multiprocessing, especially when combined with how multiprocessing.Process works internally.

Here's a breakdown of why before_run isn't being called and why you might be experiencing a deadlock:

The Problem: __getattribute__ and Process Serialization
When you create a multiprocessing.Process object and call start(), the multiprocessing module needs to serialize the process object (or at least enough of it to re-create the process in the new interpreter). It then pickles this serialized object and sends it to the newly spawned process.

The issue with your __getattribute__ implementation for run is that:

run is retrieved during serialization: When multiprocessing tries to pickle your Process object to send to the new process, it will likely access the run attribute. This triggers your __getattribute__ wrapper, which then tries to bind run_wrapper to self.
run_wrapper is bound to the parent process's self: The run_wrapper closure, when created in the parent process, captures the self (the Process instance) from the parent's memory space.
Deserialization creates a new object: In the child process, a new Process object is created by deserializing the pickled data. However, the run_wrapper method that was pickled still holds a reference to the self from the parent process. This is a subtle but critical distinction.
The child's run is not your wrapped run: When the child process starts, it internally calls its own run method. Because of the serialization and deserialization process, the run method that's ultimately executed in the child process is the original multiprocessing.Process.run or the Process.run if you had directly overridden it. Your __getattribute__ magic, which wraps run, isn't correctly applied to the Process object within the child's context.

* Cleanup

* Logging bugfix (#18465)

* use mp Manager to handle logging queues

A Python bug (https://github.com/python/cpython/issues/91555) was preventing logs from the embeddings maintainer process from printing. The bug is fixed in Python 3.14, but a viable workaround is to use the multiprocessing Manager, which better manages mp queues and causes the logging to work correctly.

* consolidate

* fix typing

* Fix typing

* Use global log queue

* Move to using process for logging

* Convert camera tracking to process

* Add more processes

* Finalize process

* Cleanup

* Cleanup typing

* Formatting

* Remove daemon

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-08-16 10:20:33 -05:00
Nicolas Mowen
faadea8e1f Dynamic Management of Cameras (#18671)
* Add base class for global config updates

* Add or remove camera states

* Move camera process management to separate thread

* Move camera management fully to separate class

* Cleanup

* Stop camera processes when stop command is sent

* Start processes dynamically when needed

* Adjust

* Leave extra room in tracked object queue for two cameras

* Dynamically set extra config pieces

* Add some TODOs

* Fix type check

* Simplify config updates

* Improve typing

* Correctly handle indexed entries

* Cleanup

* Create out SHM

* Use ZMQ for signaling object detectoin is completed

* Get camera correctly created

* Cleanup for updating the cameras config

* Cleanup

* Don't enable audio if no cameras have audio transcription

* Use exact string so similar camera names don't interfere

* Add ability to update config via json body to config/set endpoint

Additionally, update the config in a single rather than multiple calls for each updated key

* fix autotracking calibration to support new config updater function

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-08-16 10:20:33 -05:00
Nicolas Mowen
4b57e5e265 Refactor TensorRT (#18643)
* Combine base and arm trt detectors

* Remove unused deps for amd64 build

* Add missing packages and cleanup ldconfig

* Expand packages for tensorflow model training

* Cleanup

* Refactor training to not reserve memory
2025-08-16 10:20:33 -05:00
Josh Hawkins
40ab7d6c38 Make Birdseye clickable (#18628)
* keep track of layout changes and publish on change

* websocket hook

* clickable overlay div to navigate to full camera view
2025-08-16 10:20:33 -05:00
FL42
937459be47 fix: Initialize GenAI client if GenAI is enabled globally (#18623) 2025-08-16 10:20:33 -05:00
FL42
13b760346a feat: enable using GenAI for cameras with GenAI disabled from the API (#18616) 2025-08-16 10:20:33 -05:00
Jimmy
7ce26087f7 Add Mesa Teflon as a TFLite detector (#18310)
* Refactor common functions for tflite detector implementations

* Add detector using mesa teflon delegate

Non-EdgeTPU TFLite can use the standard .tflite format

* Add mesa-teflon-delegate from bookworm-backports to arm64 images
2025-08-16 10:20:33 -05:00
Nicolas Mowen
b1a65c88e8 Classification Model Metrics (#18595)
* Add speed and rate metrics for custom classification models

* Use metrics for classification models

* Use keys

* Cast to list
2025-08-16 10:20:33 -05:00
Nicolas Mowen
765a28d812 Live classification model training (#18583)
* Implement model training via ZMQ and add model states to represent training

* Get model updates working

* Improve toasts and model state

* Clean up logging

* Add back in
2025-08-16 10:20:33 -05:00
Nicolas Mowen
1c75ff59f1 Classification Model UI (#18571)
* Setup basic training structure

* Build out route

* Handle model configs

* Add image fetch APIs

* Implement model training screen with dataset selection

* Implement viewing of training images

* Adjust directories

* Implement viewing of images

* Add support for deleting images

* Implement full deletion

* Implement classification model training

* Improve naming

* More renaming

* Improve layout

* Reduce logging

* Cleanup
2025-08-16 10:20:33 -05:00
Josh Hawkins
ac7fb29b32 Audio transcription tweaks (#18540)
* use model runner

* unload whisper model when live transcription is complete
2025-08-16 10:20:33 -05:00
Josh Hawkins
b77e6f5ebc Upgrade PaddleOCR models to v4 (rec) and v5 (det) (#18505)
The PP_OCRv5 text detection models have greatly improved over v3. The v5 recognition model makes improvements to challenging handwriting and uncommon characters, which are not necessary for LPR, so using v4 seemed like a better choice to continue to keep inference time as low as possible. Also included is the full dictionary for Chinese character support.
2025-08-16 10:20:33 -05:00
Nicolas Mowen
3f8ec72336 Tiered recordings (#18492)
* Implement tiered recording

* Add migration for record config

* Update docs

* Update reference docs

* Fix preview query

* Fix incorrect accesses

* Fix

* Fix

* Fix

* Fix
2025-08-16 10:20:33 -05:00
Nicolas Mowen
2c7b71b16e Implement API to train classification models (#18475) 2025-08-16 10:20:33 -05:00
Josh Hawkins
6dc36fcbb4 Audio transcription support (#18398)
* install new packages for transcription support

* add config options

* audio maintainer modifications to support transcription

* pass main config to audio process

* embeddings support

* api and transcription post processor

* embeddings maintainer support for post processor

* live audio transcription with sherpa and faster-whisper

* update dispatcher with live transcription topic

* frontend websocket

* frontend live transcription

* frontend changes for speech events

* i18n changes

* docs

* mqtt docs

* fix linter

* use float16 and small model on gpu for real-time

* fix return value and use requestor to embed description instead of passing embeddings

* run real-time transcription in its own thread

* tweaks

* publish live transcriptions on their own topic instead of tracked_object_update

* config validator and docs

* clarify docs
2025-08-16 10:20:33 -05:00
Nicolas Mowen
2385c403ee Fix incorrectly running lpr (#18390) 2025-08-16 10:20:33 -05:00
Nicolas Mowen
cf1d50be30 Add basic config editor when Frigate can't startup (#18383)
* Start Frigate in safe mode when config does not validate

* Add safe mode page that is just the config editor

* Adjust Frigate config editor when in safe mode

* Cleanup

* Improve log message
2025-08-16 10:20:33 -05:00
Nicolas Mowen
723553edb7 Add ability to configure when custom classification models run (#18380)
* Add config to control when classification models are run

* Cleanup
2025-08-16 10:20:33 -05:00
Nicolas Mowen
53ff33135b Update ROCm to 6.4.1 (#18364)
* Update rocm to 6.4.1

* Quick fix
2025-08-16 10:20:33 -05:00
Josh Hawkins
4ebc4f6d21 Implement support for no recordings indicator on timeline (#18363)
* Indicate no recordings on the history timeline with gray hash marks

This commit includes a new backend API endpoint and the frontend changes needed to support this functionality

* don't show slashes for now
2025-08-16 10:20:33 -05:00
Nicolas Mowen
e1340443f5 Initial custom classification model config support (#18362)
* Add basic config for defining a teachable machine model

* Add model type

* Add basic config for teachable machine models

* Adjust config for state and object

* Use config to process

* Correctly check for objects

* Remove debug

* Rename to not be teachable machine specific

* Cleanup
2025-08-16 10:20:33 -05:00
Nicolas Mowen
4dc526761c Dynamically update masks and zones for cameras (#18359)
* Include config publisher in api

* Call update topic for passed topics

* Update zones dynamically

* Update zones internally

* Support zone and mask reset

* Handle updating objects config

* Don't put status for needing to restart Frigate

* Cleanup http tests

* Fix tests
2025-08-16 10:20:33 -05:00
Nicolas Mowen
dc187eee1c Dynamic Config Updates (#18353)
* Create classes to handle publishing and subscribing config updates

* Cleanup

* Use config updater

* Update handling for enabled config

* Cleanup

* Recording config updates

* Birdseye config updates

* Handle notifications

* handle review

* Update motion
2025-08-16 10:20:33 -05:00
Josh Hawkins
addb4e6891
Fix percentage in recording cleanup log (#19525)
* Fix percentage in recording cleanup log

* fix

* update reference config
2025-08-16 07:10:08 -06:00
Josh Hawkins
89db960c05
Remove score sorting constraint (#19501)
Do not require a score filter to be applied in order to sort by object score.
2025-08-16 07:08:11 -06:00
Josh Hawkins
2cde58037d
Improve recognized license plate filter (#19491)
* Fetch all license plates outside of filter component

If the swr call took a long time, the entire select component may not display. This change moves the fetch to the parent component (like sub labels).

* add loading indicator

* improve query
2025-08-16 07:05:50 -06:00
Nicolas Mowen
4869f46ab6
Fixes (#19420)
* Remove torch install

* notification fixes

the pubkey was not being returned if notifications was not enabled at the global level

* Put back

* single condition check for fetching and disabling button

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-08-07 15:34:25 -06:00
Nicolas Mowen
8254602449
Fix not deleting thumbnails (#19371)
* Fix not deleting thumbnails

* Consoldiate langauge tags
2025-08-04 00:56:23 -05:00
Josh Hawkins
92a0dad2c2
Catch json decode exception (#19323)
* Catch json decode exception when semantic search stats file is corrupted

* clear stats file if corrupted
2025-07-29 13:38:13 -05:00
Josh Hawkins
0c92c3ccfa
Add more notification debug logs (#19252) 2025-07-22 08:20:42 -06:00
Marc Altmann
455423e7f2
Rockchip: add FFmpeg 7.1 to image (#19227)
* Rockchip: add FFmpeg 7.1 to image

* RKMPP: Update presets
2025-07-21 06:07:51 -06:00
Marc Altmann
60923ac1e3
RKNN: Fix broken models for Toolkit v2.3.2 (#19189)
* update models

* don't set input_dtype: float for yolov9 (rknn)
2025-07-18 06:26:41 -06:00
Josh Hawkins
ca1c98eab8
Fixes (#19125)
* fix embeddings reindex

- always increment processed objects to prevent division by zero
- ensure description still gets processed even if there is no thumbnail

* clean up

* Add newer labels to default attribute map

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-07-17 07:29:50 -06:00
Nicolas Mowen
3eb3797bc5
Update API schema to latest (#19156)
* Add description to snapshot api

* Update API schema
2025-07-15 21:53:21 -05:00
Manu Wallner
4c8f4ef9fa
Replaces sriov flag with explicit path to the Intel GPU device (#19136)
* Replaces `sriov` flag with an explicit path to the GPU device for intel GPUs

* Sort imports
2025-07-14 07:11:25 -05:00
Nicholas Cook
4b72c86e77
Fix IPv6 addresses with IPv4 trusted proxies (#19134)
When an IPv6 address that doesn't map to an IPv4 address was checked
against an IPv4 trusted proxy, we'd hit an exception because
ip.ipv4_mapped was None. Fix this by verifying ipv4_mapped is not None

Co-authored-by: me <me@me>
2025-07-13 20:43:25 -06:00
Blake Blackshear
a1048654ee Merge remote-tracking branch 'origin/master' into dev 2025-07-11 20:20:31 -05:00
Nicolas Mowen
f75e55ee74
Improve ffmpeg frame handling (#19110)
* Improve handling of ffmpeg process depending on error

* Simplify code and make it more clear
2025-07-11 14:19:43 -05:00
Josh Hawkins
3bda638678
Set ulimit with Python (#19105)
* Set ulimit with python instead of in s6 startup

* move to services and add env var

* add comment
2025-07-11 08:11:35 -05:00
Nicolas Mowen
5cf98824f5
Misc fixes (#19089)
* Correctly handle min_faces

* Change to use recognized faces
2025-07-11 06:30:26 -06:00
Josh Hawkins
cd54a81150
Fixes (#19038)
* Fix Norwegian language code for date-fns module import

* Fix incorrect apple compatibility change

* Add other and unused as separate storage items

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-07-08 20:06:06 -06:00
Nicolas Mowen
178117183e
Move trt error (#19031)
* Move trt error

* Formatting
2025-07-07 17:57:37 -06:00
Nicolas Mowen
d69916694b
Remove TensorRT Detector from AMD64 Build (#19030)
* Don't support tensorrt detector for amd64 builds

* Add logs for directing users not to use tensorrt detector

* Rework docs

* Fix dockerfile index

* Don't undo jetson fix
2025-07-07 18:12:52 -05:00
Josh Hawkins
9ffa7f140c
Fixes (#18935)
* Sort names alphabetically in face library dropdown

* fix potential divide by zero in misconfigured speed zones
2025-07-07 06:35:55 -06:00
Nicolas Mowen
6563f78ab0
Improve bird classification (#19009)
* Crop more tightly on bird

* Add slight padding
2025-07-06 18:08:47 -06:00
Nicolas Mowen
ea576e7468
Fixes (#18897)
* Fix showing review items that span over multiple days

* Simplify

* Fix tests

* Fix unchanged value

* Allow admin as default role and viewer as passed header for proxy auth

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-26 13:01:09 -06:00
Josh Hawkins
5593495abd
Fixes (#18893)
* i18n translated label fixes

* Fix frame cache race bug

Objects that were marked as false positives (that would later become true positives) would sometimes have their saved frame prematurely removed from the frame cache.
2025-06-26 09:25:47 -05:00
Josh Hawkins
fd96cd5dae
Verify images before adding to batch for embedding (#18885) 2025-06-26 07:22:31 -06:00
Josh Hawkins
f97629433d
Fixes (#18877)
* Object labels with spaces should use correct i18n keys

* Add Hungarian

* Ensure onvif move request has a valid speed before removing

When autotracking zooming is set to `disabled` (or is left out of the config), move_request["Speed"] may not exist, depending on the camera

* Add another frame cache debug log
2025-06-25 16:45:24 -05:00
Josh Hawkins
cc368dd20f
Fixes (#18833)
* Don't allow editing of sub label until object lifecycle has ended

* Update sub labels in ended review segments

When manually editing a sub label for a tracked object from the UI, any review segments containing that tracked object did not have their sub_labels and objects values altered

* simplify

* Additional onvif debug logs in get_camera_status

* Ensure that best object is only set when the snapshot is actually updated.

* Don't hide downlaod button when there is no review item

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-23 17:40:21 -06:00
Nicolas Mowen
8a9ebe9292
Fixes (#18795)
* Catch error when regex is invalid

* Fix i18n label

* Mobile camera drawer i18n fixes

* additional frame cache debug logs

* Add Romanian

* Fix exports thumbnail path

* Improve clip buffer and remove outdated comments

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-20 17:39:47 -05:00
Simonas Kazlauskas
4ff81d5877
yolo nas: do not invalidate model when input shape is different (#18799)
Model can be adjusted ahead of time to NHWC to avoid transpose on CPU,
for example. All the model information is already presented in the
configuration, and the stringent checks implemented in openvino are not
present on other backends anyway. OpenVINO will properly report issues
with mismatched layouts anyhow.
2025-06-20 09:11:48 -06:00
Nicolas Mowen
fe571dc217
Fixes (#18777)
* Remove tracked object update resets

* Adjust face blur reduction

* Add space for config editor buttons

* Slight adjustment

* Fix double thats

* update icons

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-19 10:20:33 -05:00
Nicolas Mowen
02f75d3b1f
Fixes (#18751)
* Catch intel GPU stats decode error

* Add Vietnamese

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-06-17 14:11:19 -05:00
Nicolas Mowen
c935a76a45
Use default ffmpeg to export webp image (#18740) 2025-06-16 11:41:01 -06:00
Josh Hawkins
d727adddde
Improve frame cache debugging (#18741) 2025-06-16 08:29:54 -06:00
Josh Hawkins
25cc2f31d4
Debug frame cache (#18697) 2025-06-12 13:39:06 -06:00
Nicolas Mowen
99e7533de2
add docs for troubleshooting GPUs (#18644)
* add docs for troubleshooting GPUs

* Fix error when blur is not enabled

* Cleanup
2025-06-09 12:19:56 -06:00
Josh Hawkins
ed43df9c13
Fixes (#18552)
* Ensure config editor recalculates layout on error

* ensure empty lists are returned when lpr recognition model fails

* Add docs section for session_length

* clarify

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

* clarify

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>

* Catch missing file

* Improve graph axis colors

* Ensure playback rate controls are portaled to the video container in history view

On larger tablets in landscape view, the playback rate dropdown disappeared underneath the bottom bar. This small change ensures we use the correct container on the DropdownMenuContent so that the div is portaled correctly. The VideoControls are also used in motion review which does not pass in a container ref, so we can just fall back to the existing controlsContainer ref when it's undefined.

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-04 20:48:26 -05:00
Josh Hawkins
dba9206898
Fixes (#18500)
* fix i18n keys

* hide disable from context menu for viewers

* Fix auto live check for default dashboard and camera groups

Disabling the Automatic Live View switch in Settings should prevent streaming from occurring. Overriding any settings in a camera group will override the global setting. The check here incorrectly always returned false instead of undefined.

* clarify hardware accelerated enrichments

* clarify

* add note about detect stream to face rec docs

* add note about low end Dahuas for autotracking

* Catch invalid face box / image

* Video tab tweaks

With the changes in https://github.com/blakeblackshear/frigate/pull/18220, the video tab in the Tracked Object Details pane now correctly trims the in-browser HLS video. Because of keyframes and record/detect stream differences, we can manually subtract a couple of seconds from the event start_time to ensure the first few frames aren't cut off from the video

* Clarify

* Don't use Migraphx by default

* Provide better support for running embeddings on GPU

* correctly join cameras

* Adjust blur confidence reduction

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-06-03 06:33:32 -06:00
Felipe Santos
81f5f362a9
Fix healthcheck on stopping (#18476) 2025-05-29 20:58:31 -06:00
Nicolas Mowen
27914fc3b8
Don't run bird classification if model is not downloaded yet (#18474) 2025-05-29 16:15:25 -05:00
Josh Hawkins
c11ca42fb5
Logging bugfix (#18465)
* use mp Manager to handle logging queues

A Python bug (https://github.com/python/cpython/issues/91555) was preventing logs from the embeddings maintainer process from printing. The bug is fixed in Python 3.14, but a viable workaround is to use the multiprocessing Manager, which better manages mp queues and causes the logging to work correctly.

* consolidate

* fix typing
2025-05-29 09:02:17 -06:00
Nicolas Mowen
cbdac9ece5
Fixes (#18379)
* Don't return weighted name if it has the same number of results

* Remove link to incorrect format yolov9 models

* Fix command list from appearing when other inputs are focused

the description box in the tracked object details pane was causing the command input list to show when focused.

* clarify face docs

* Add note about python yolov9 export

* Check if hailort thread is still alive when timeout error is run into

* Reduce inference timeout

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-05-27 10:25:34 -05:00
Josh Hawkins
858c1241db
Fixes (#18354)
* Rename classification to enrichments

* Clean up config updating checks

* Add Portugese

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-22 18:16:35 -06:00
Josh Hawkins
c16e536b46
Fixes (#18338)
* 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>
2025-05-22 09:38:14 -06:00
Josh Hawkins
49c6073de6
Add ability to specify separator used in proxy headers (#18336) 2025-05-21 06:02:13 -06:00
Josh Hawkins
37d40558b7
Fixes (#18319)
* 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>
2025-05-20 16:47:05 -06:00
Nicolas Mowen
b18572a3b6
Min face configuration option (#18284)
* Add option to specify minimum face attempts for an object

* Set upper bound
2025-05-18 07:20:59 -05:00
Josh Hawkins
5d13925d2b
Fixes (#18275) 2025-05-17 16:11:19 -06:00
Josh Hawkins
ebae6cb1ed
Fixes (#18262)
* Don't use timezone in export dialog timestamps

Revert an unnecessary change made in https://github.com/blakeblackshear/frigate/pull/18257

* Ensure notifications register button is only disabled when both all cameras and every individual camera is disabled

* Send test notification if any cameras are enabled

* clarify docs about disabling cameras

* fix crash in autotracking zoom

* clean up

* masks and zones i18n fixes

* Check if camera is enabled in config

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-16 16:37:25 -06:00
Nicolas Mowen
f48356cbee
Fixes (#18245)
* 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>
2025-05-15 17:13:18 -05:00
jrhelbert
7612c3ece0
Remove hardcoded usage of /dev/dri/card0 in call to intel_gpu_top (#18236)
Not everyone is using /dev/dri/card0. I recommend switching to these more generic parameters for intel_gpu_top_command (line 307 in the 0.16.0-beta2 version of services.py):
intel_gpu_top_command += ["-d", "sriov"]
2025-05-14 20:54:06 -06:00
Nicolas Mowen
d3d05fa397
Fixes (#18220)
* Add option to not trim clip

* Improve API

* Update snapshot for new best objects

* Fix missing strings

* Convert to separate key

* Always include bounding box on snapshots

* improve autotracking relative zooming time calculation

* update proxy docs to note the need for comma separated header roles

* Add count translation

* tracked object lifecycle i18n fix

* update speed estimation docs

* clarity

* Re-initialize onvif information when toggling camera on live view

* Move time ago to card info and add face area

* Clarify face recognition docs

* Increase minimum face recognition area

* use clipFrom to in vod module endpoint to start at the correct time

* Cleanup media api

* Don't change duration

* Use search detail dialog for face library

* Move to segment based

* Cleanup

* Add back duration modification

* clean up docs

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
2025-05-14 16:44:06 -06:00
Martin Weinelt
4d4d54d030
Fix various typing issues (#18187)
* 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.
2025-05-13 08:27:20 -06:00
Josh Hawkins
2c9bfaa49c
Fixes (#18176)
* Add camera name tooltip to previews in recording view

* Apply face area check to cv2 face detection

* Delete review thumbnails

* Don't import hailo until it is used

* Add comment

* Clean up camera name

* Filter out empty keys when updating yaml config

HA ingress seems to randomly add an equal sign to the PUT urls for updating the config from the UI. This fix prevents empty keys from being processed, but still allows empty values.

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-13 08:27:07 -06:00
Josh Hawkins
f39ddbc00d
Fixes (#18139)
* Catch error and show toast when failing to delete review items

* i18n keys

* add link to speed estimation docs in zone edit pane

* Implement reset of tracked object update for each camera

* Cleanup

* register mqtt callbacks for toggling alerts and detections

* clarify snapshots docs

* clarify semantic search reindexing

* add ukrainian

* adjust date granularity for last recording time

The api endpoint only returns granularity down to the day

* Add amd hardware

* fix crash in face library on initial start after enabling

* Fix recordings view for mobile landscape

The events view incorrectly was displaying two columns on landscape view and it only took up 20% of the screen width. Additionally, in landscape view the timeline was too wide (especially on iPads of various screen sizes) and would overlap the main video

* face rec overfitting instructions

* Clarify

* face docs

* clarify

* clarify

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-11 12:03:53 -06:00
Josh Hawkins
8094dd4075
Fixes (#18117)
* 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>
2025-05-09 07:36:44 -06:00
Josh Hawkins
ac8e647b92
Fixes (#18077)
* fix onvif reinitialization

* api docs: clarify usage of clip.mp4 endpoint

* Always show train tab

* Add description to API

* catch lpr model inference exceptions

* always apply motion mask when using yolov9 plate detection

* lpr faq

* fix incorrect focus when reopening search detail dialog on video tab

* only use keyboard listener in face library when train tab is active

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-07 16:31:24 -06:00
Josh Hawkins
da1fb935b4
Refactor async ONVIF (#18093)
* use async/await instead of asyncio.run()

* fix autotracking

* create cameras in same event loop that will use them

* more debug

* try using existing event loop instead of creating a new one

* merge dev

* fixes

* run get_camera_info onvifcontroller calls in dedicated loop

* move coroutine call with loop to api

* use asyncio for autotracking move queues

* clean up

* fix calibration

* improve exception logging
2025-05-07 07:53:29 -06:00
Josh Hawkins
511542eaf8
Fixes (#18055)
* frigate+ pane i18n fix

* catch more exceptions

* explore search result tooltip i18n fix

* i18n fix

* remove comments about deprecated strftime_fmt

* Catch producers exists but is None

* Formatting

* fix live camera view i18n

* Add default role config for proxy users

This allows users to specify a default role for users when using a proxy for auth. This can be useful for users who can't/don't want to define a header mapping for the remote-role header.

* update reference config and auth docs

* clarify face rec camera level config

* clarify auth docs

* Fix onnx not working with openvino

* Update openvino to fix failed npu plugin check

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-05-05 20:42:24 -06:00
idxlics
976863518b
Use HF_ENDPOINT env instead of hardcoding https://huggingface.co (#18036)
* Update jina_v1_embedding.py

* Update jina_v2_embedding.py
2025-05-04 19:38:17 -05:00
Nicolas Mowen
895afcdb0e
Various Fixes (#18035)
* Support multi and single core rknn npus

* Update docs config to be more clear
2025-05-04 09:33:27 -06:00
Josh Hawkins
377b78af11
Change default zmq timeout (#17971)
* update default zmq timeout

* use lower default timeout

* keep longer timeout for event maintainer

* remove default

* remove
2025-04-30 08:29:16 -06:00
Josh Hawkins
96d89eb50c
Lower timeout in object processing (#17970)
On startup, the object processing pipeline would be delayed for 10ms every iteration through the loop while the end event subscriber blocked. For users with large numbers of cameras and a fair amount of detected objects, this would cause the detected objects queue length to rise and frames to be eventually dropped, leading to processing delays, incorrect frame times applied to thumbnail_data, and other seemingly unexplainable things.
2025-04-30 07:42:53 -06:00
Josh Hawkins
c91c6970de
Autotracking improvements (#17955)
* add zoom time to movement predictions

* config migrator

* add space to face rename regex

* more debug

* only calculate zoom time of relative move

* fix test

* make migrated movement weight a zero

* check for str and bool for movestatus support
2025-04-29 10:17:56 -06:00
Nicolas Mowen
e57dde7bb0
Support automatic language selection based on system language (#17953)
* Support automatic language selection

* Handle non-matching keys

* Cleanup

* Handle region specific language codes from browser

* Fix passing in requestor
2025-04-29 10:02:50 -05:00
Josh Hawkins
1e079027ec
Assign requestor correctly (#17944) 2025-04-28 21:52:37 -05:00
Nicolas Mowen
4b4053d174
Add face and lpr to tracked object update topic (#17940)
* Send tracked object updates for face and license_plate objects

* Update docs

* Add to type enum

* Add camera to object description update

* Formatting

* Consolidate yue-Hant

* Add missing
2025-04-28 16:43:03 -06:00
Josh Hawkins
2610cfcfde
Classification config changes (#17892)
* Only auto-populate some config fields down to the camera level

- Don't populate LPR and face global-only settings down to the camera level
- Ensure LPR mixin uses camera level min_area
- Explicitly forbid extra config values for LPR and face

* lpr docs tweak

* remove extra text already in i18n key

* consistency
2025-04-24 07:30:10 -06:00
Nicolas Mowen
eb4433162c
Fix video MP typing (#17880)
* Fix video typing

* Fix typo
2025-04-23 17:59:02 -06:00
Josh Hawkins
d11f46bbce
Add ability to rename faces in the Face Library (#17879)
* api endpoint

* embeddings rename function

* frontend and i18n keys

* lazy load train tab images

* only log exception to make codeql happy
2025-04-23 17:27:46 -06:00
Nicolas Mowen
aa7899e9dc
Docs / typing updates (#17878)
* Mention support for multiple rknn detectors

* Improve typing

* Fix mypy change

* Fix typing
2025-04-23 17:06:06 -06:00
Nicolas Mowen
212784b68e
implement RKNN downloads for yolov9 and yolox models (#17875)
* Add other rockchip download models

* Specify newer release version

* Specify newer release version

* Update docs for rknn downloads

* Update hardware docs
2025-04-23 12:22:23 -05:00
Josh Hawkins
b061d083ba
Misc fixes (#17871)
* fix check for snapshot score

for manual events, snapScore is 0, so "0" gets displayed instead of a condition being evaluated.

* fix ongoing events from being returned for all review queries

The existing condition will include any record with a null end_time regardless of when it started, as long as the start_time is greater than the after param. With this fix, both the start time needs to be within the specified range, and for events that have already ended, their end time must be before the before param

* Base alert toggles on width not device class

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2025-04-23 07:06:31 -06:00
Josh Hawkins
6936d33172
Frame time fix (#17816)
* 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
2025-04-21 16:36:10 -06:00
Nicolas Mowen
d5f9153c94
Remove unused pattern (#17842) 2025-04-21 14:11:34 -06:00
Josh Hawkins
a91a2ce4ca
Don't limit review summary query (#17835)
* Don't limit review summary query

The /review/summary endpoint was being restricted to the last 30 days, so unreviewed alerts and detections weren't showing in the calendar before that point. This change removes the WHERE clause so that the endpoint returns all results.

* fix

* remove unneeded test

we are now returning all results so we don't need to test for > month_ago

* fix
2025-04-21 11:09:01 -06:00
Josh Hawkins
592141daaa
Increase ffmpeg timeout to 10 seconds (#17831)
FFmpeg adds an extra delay for the first start of the stream. For some cameras the stream start can be 1 second, for some cameras it can be more than 5 seconds. Frigate by default used a timeout of 5 seconds and drops the connection without waiting for a response from go2rtc. Originally suggested by @AlexxIT in https://github.com/AlexxIT/go2rtc/issues/1633
2025-04-21 07:38:51 -05:00
Nicolas Mowen
43a9641ae8
Fix hailo detection (#17819) 2025-04-19 20:32:14 -05:00
Nicolas Mowen
38ffe21b69
Add support for rockchip GPU stats (#17812)
* Set rockchip GPU name

* Add support for calculating rockchip GPU load

* Format consistently

* Fix access error
2025-04-19 16:34:05 -05:00
Nicolas Mowen
80a13e43e9
Add support for NPU statistics in metrics page (#17806)
* Add npu usages as a statistic

* Support showing NPU stats in dashboard

* Add sys volume mount for npu usages

* Fix type

* Simplify check

* Cleanup

* Cleanup
2025-04-19 08:20:22 -06:00
Nicolas Mowen
89b54f19c8
Add YOLOv9 support to RKNN (#17791)
* Add yolov9

* Undo

* Update docs for rknn yolov9

* Update docs notes

* Add infernece times table
2025-04-18 16:51:04 -06:00
Nicolas Mowen
1cdc9b6097
Implement YOLOx for RKNN (#17788)
* Implement yolox rknn inference and post processing

* rework docs
2025-04-18 14:44:02 -06:00
Nicolas Mowen
68382d89b4
Cleanup detection (#17785)
* Fix yolov9 NMS

* Improve batched yolo NMS

* Consolidate grids and strides calculation

* Use existing variable

* Remove

* Ensure init is called
2025-04-18 10:26:34 -06:00
Josh Hawkins
14a32a6472
LPR tweaks (#17783)
* clarify docs

* improve debugging messages

* don't run any lpr postprocessing

* wording
2025-04-18 07:45:37 -06:00
Nicolas Mowen
19aaa64fe9
Add support for yolox models to onnx detector (#17773) 2025-04-18 06:40:06 -05:00
Nicolas Mowen
8270967cdc
UI Fixes (#17762)
* Fix handling of non existing cameras in groups

* Update docs

* Improve typing
2025-04-17 13:48:09 -06:00
Josh Hawkins
760ed25f0c
LPR improvements (#17716)
* 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
2025-04-15 09:40:12 -06:00
Nicolas Mowen
15fe79178b
Improve async object detector support (#17712)
* Move object detection to folder

* Add input store type

* Add hwnc

* Add hwcn

* Fix test
2025-04-15 08:55:38 -05:00
Nicolas Mowen
bd0ee86db9
Refactor yolov9 detector to support v3, v4, v7 as well (#17697)
* Implement blobbed yolov7 post processing and consolidate yolo implementation

* Update documentation

* Add repo

* fix name
2025-04-14 16:05:41 -05:00
Josh Hawkins
da62c41e87
Improve object tracking (#17671)
* 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:`
2025-04-13 12:10:35 -06:00
Josh Hawkins
664889d487
Small tweaks (#17651)
* clarify lpr

* add license plate icon and correctly format string
2025-04-11 06:48:16 -06:00
Josh Hawkins
64db518837
Edit license plate in Tracked Object Details (#17631)
* api endpoint

* frontend

* only allow admins to edit sub labels and plates
2025-04-10 08:27:01 -06:00
Josh Hawkins
049c5cfa9d
Fix search sort when using score or estimated speed (#17629) 2025-04-10 07:07:50 -06:00
Nicolas Mowen
3d2bfa34c8
Face fixes (#17618)
* 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
2025-04-09 20:56:11 -05:00
Josh Hawkins
f618f25d7e
catch not implemented exception (#17594) 2025-04-07 20:41:53 -06:00
Josh Hawkins
921908fe33
LPR device selection (#17592)
* config changes

* use device

* docs

* docs

* reset state

* remove auto

* use device

* docs
2025-04-07 19:30:08 -06:00
Josh Hawkins
cb27bdb2f7
LPR fixes (#17588)
* docs

* docs

* docs

* docs

* fix box merging logic

* always run paddleocr models on cpu

* docs clarity

* fix docs

* docs
2025-04-07 15:25:46 -05:00
Josh Hawkins
a29d4382e1
Catch crash when openai compatible endpoints don't return results correctly (#17572) 2025-04-07 06:59:39 -06:00
Josh Hawkins
348e728220
LPR improvements (#17549)
* auto select LPR model backend for inference

* docs update
2025-04-05 11:03:17 -05:00
Nicolas Mowen
7bfcf2040d
Clean up enabled config updates (#17547)
* Immediately end review item for disabled cameras

* Clean up checks

* Remove duplicate enabled checkers

* Cleanup
2025-04-05 08:47:58 -05:00
Josh Hawkins
7917ec611a
LPR tweaks (#17536)
* 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
2025-04-04 12:42:49 -05:00
Nicolas Mowen
e94b24ec39
Face fixes (#17530)
* Catch - in name

* Add note about docs
2025-04-04 07:03:08 -06:00
Josh Hawkins
6475e042b5
Catch birdseye websocket error (#17502) 2025-04-02 07:38:48 -06:00
Nicolas Mowen
207d1d2806
Face UI cleanup (#17472)
* Add note

* Sort by event id

* Fix reprocess causing shift

* Move event group to separate comp

* Handle selecting events

* implement event selection

* Implement selected handler

* handle right click

* Toggle ctrl + a

* Stop propogation

* Fix
2025-03-31 16:49:56 -05:00
Josh Hawkins
2920127ada
Dedicated LPR improvements (#17453)
* 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
2025-03-30 07:43:24 -06:00
Josh Hawkins
bda7fcc784
use ceil instead of round for recording snapshot (#17444) 2025-03-29 06:19:12 -06:00
Josh Hawkins
37c3ac5413
Misc fixes (#17443)
* ensure semantic search is enabled before updating embeddings stats

* add camera and label to snapshot download filename
2025-03-29 05:58:50 -06:00
Nicolas Mowen
4aa493b96c
Catch case where frame time is between end and rounded start (#17438) 2025-03-28 21:37:11 -05:00
Nicolas Mowen
c1b06d63b6
Fix embedding eps (#17437)
* Fix embedding eps

* Fix thumbnail cleanup
2025-03-28 18:35:50 -06:00
Nicolas Mowen
9e8b85a957
Implement enchrichments events per second graph (#17436)
* Cleanup existing naming

* Add face recognitions per second

* Add lpr fps

* Add all eps

* Clean up line graph

* Translations

* Change wording

* Fix incorrect access

* Don't require plates

* Add comment

* Fix
2025-03-28 18:13:35 -05:00
Nicolas Mowen
b14abffea3
Refactor face library page (#17424)
* 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
2025-03-28 13:52:12 -05:00
Josh Hawkins
37e0b9b904
LPR tweaks (#17428)
* fix snapshot when using dedicated lpr

* enhancement and debugging config

* docs
2025-03-28 06:29:11 -06:00
Nicolas Mowen
3f1b4438e4
Ensure landmark detector has a defualt value (#17420) 2025-03-27 13:41:22 -06:00
Josh Hawkins
23c3323871
Dynamic embeddings reindexing (#17418)
* reindex with api endpoint and zmq

* threading

* frontend

* require admin role
2025-03-27 11:29:34 -06:00
Josh Hawkins
6ec7d96ec9
remove LPR denoising (#17412) 2025-03-27 08:49:10 -06:00
Nicolas Mowen
a35146ab61
Various fixes (#17411)
* Remove initial requirement for history

* Clenaup conf

* Handle symlinks
2025-03-27 08:28:09 -06:00
Josh Hawkins
1233bc3a42
Miscellaneous fixes (#17406)
* 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
2025-03-27 05:49:14 -06:00
Nicolas Mowen
36446ceded
Implement facenet tflite for small face recognition model (#17402) 2025-03-27 06:31:29 -05:00
Nicolas Mowen
ff34739f40
Face recognition bug fixes (#17401)
* Simplify normalization

* Fix confidence check
2025-03-26 19:43:10 -05:00
Nicolas Mowen
e6936c177b
Face model loading improvements (#17390)
* 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
2025-03-26 10:00:23 -06:00
Nicolas Mowen
e3d4b84803
Face recognition improvements (#17387)
* 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
2025-03-26 07:23:01 -06:00
Josh Hawkins
4edf0d8cd3
LPR bugfix (#17384)
* ensure image is numpy array

* clean up debugging

* clean up postprocessor

* process raw input as img
2025-03-26 07:41:00 -05:00