NVR with realtime local object detection for IP cameras
Go to file
Josh Hawkins 9df5927ac5
Autotracking bugfixes and zooming updates (#8103)
* zoom in/out in search for lost objects

* predicted box should not be empty

* clean up and update zoom logic

* only zoom if enabled

* more cleanup

* check for valid velocity when zooming

* only try absolute zoom in if obj area has changed

* zoom logic

* don't enqueue lost object zoom if already at limit

* don't disable motion boxes during ptz moves

* velocity threshold based on move coefficients

* fix area zoom logic

* disable debug zoom

* don't process objects if ptz moving

* recalc with exponent

* change exponent

* remove lost object zooming

* increase distance threshold for stationary object

* increase distance threshold constant

* only zoom out if nonzero

* camera name in all debug logging

* add camera name to debug logging

* camera variable name consistency

* update calibration behavior and docs

* docs and better zooming

* more sensible target values

* docs wording

* fix velocity threshold variable

* zooming tweaks and remove iou for current objects

* debug and docs

* get valid velocity

* include zero

* additional debug statements

* add zoom hysteresis

* zoom on initial move if relative

* only update target box if we actually zoom

* merge dev

* use getattr instead of get

* increase distance threshold

* reverse logic

* get_camera_status after preset move to store zoom

* final tweaks and docs

* use constants and catch possible debug exception

* adjust zoom factor exponent

* don't run motion estimation when calling preset

* adjust dimension threshold

* use numpy for velocity estimate calcs

* more numpy conversion

* fix numpy shapes

* numpy zeros dimension

* more zoom out conditions

* fix velocity bug

* ensure init has been called in debug view

* ensure onvif init if enabling by mqtt

* change default hysteresis values

* recalc relative zoom value

* zoom out value

* try to zoom when object isn't moving

* try zoom when tracked object is not moving

* don't try to zoom every time

* negate zoom out condition when needed

* hysteresis constants for absolute zooming

* update zoom conditions

* don't recalc target box on zoom only

* zoom out if above area threshold

* don't print zooming debug for stationary obj

* revamp zooming to use area moving average

* zooming tweaks and expose property

* limit zoom with max target box

* use calibration to determine zoom levels

* zoom logic fix

* docs

* add tapo c200 camera

* fix initial absolute zoom

* small zoom logic fix

* better invalid velocity checks

* fix test

* really fix test this time
2023-10-22 12:59:13 -04:00
.devcontainer Check ffmpeg version instead of checking for presence of BTBN_PATH (#7023) 2023-07-06 07:35:26 -05:00
.github Update deps (#8261) 2023-10-21 10:53:21 -05:00
.vscode Set User Agent for FFmpeg calls (#4555) 2022-11-30 16:53:45 -06:00
config Improve the devcontainer experience (#3492) 2022-11-20 07:34:12 -06:00
docker Update deps (#8261) 2023-10-21 10:53:21 -05:00
docs Autotracking bugfixes and zooming updates (#8103) 2023-10-22 12:59:13 -04:00
frigate Autotracking bugfixes and zooming updates (#8103) 2023-10-22 12:59:13 -04:00
migrations Smarter Regions (#8194) 2023-10-18 18:21:52 -05:00
web Fix player height (#8270) 2023-10-22 09:40:32 -05:00
.dockerignore Improve the devcontainer experience (#3492) 2022-11-20 07:34:12 -06:00
.gitignore Migrate default database path from /media/frigate to /config (#5219) 2023-04-23 11:35:40 -05:00
.pylintrc use fstr log style 2021-02-25 07:01:59 -06:00
audio-labelmap.txt Audio events (#6848) 2023-07-01 08:18:33 -05:00
benchmark_motion.py use a different method for blur and contrast to reduce CPU (#6940) 2023-06-30 07:27:31 -05:00
benchmark.py Add isort and ruff linter (#6575) 2023-05-29 05:31:17 -05:00
CODEOWNERS Revert numpy upgrade (#7341) 2023-07-31 21:45:50 -05:00
docker-compose.yml Nvidia Jetson ffmpeg + TensorRT support (#6458) 2023-07-26 05:50:41 -05:00
labelmap.txt Cleanup Detector labelmap (#4932) 2023-01-06 07:03:16 -06:00
LICENSE switch to MIT license 2020-07-26 12:07:47 -05:00
Makefile Community Supported Boards Framework (#7114) 2023-07-23 16:45:29 -05:00
process_clip.py Improve tracking (#6516) 2023-05-31 08:12:43 -06:00
pyproject.toml Fix bug introduced in new linter (#6754) 2023-06-11 07:18:47 -05:00
README.md Clarify docs about rtmp (#5052) 2023-01-13 07:20:25 -06:00

logo

Frigate - NVR With Realtime Object Detection for IP Cameras

A complete and local NVR designed for Home Assistant with AI object detection. Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras.

Use of a Google Coral Accelerator is optional, but highly recommended. The Coral will outperform even the best CPUs and can process 100+ FPS with very little overhead.

  • Tight integration with Home Assistant via a custom component
  • Designed to minimize resource use and maximize performance by only looking for objects when and where it is necessary
  • Leverages multiprocessing heavily with an emphasis on realtime over processing every frame
  • Uses a very low overhead motion detection to determine where to run object detection
  • Object detection with TensorFlow runs in separate processes for maximum FPS
  • Communicates over MQTT for easy integration into other systems
  • Records video with retention settings based on detected objects
  • 24/7 recording
  • Re-streaming via RTSP to reduce the number of connections to your camera
  • WebRTC & MSE support for low-latency live view

Documentation

View the documentation at https://docs.frigate.video

Donations

If you would like to make a donation to support development, please use Github Sponsors.

Screenshots

Integration into Home Assistant

Also comes with a builtin UI:

Events