Commit Graph

1059 Commits

Author SHA1 Message Date
Nicolas Mowen
1a9e00ee49
Add count of audio labels to active count (#8310)
* Add count of audio labels to active count

* Formatting
2023-10-24 19:26:46 -04:00
Josh Hawkins
b9649de327
Don't generate region boxes from motion when autotracking (#8306)
* no region boxes from motion boxes when ptz moving

* debug contours and calibration

* remove debugging

* clarifying comment
2023-10-24 19:25:22 -04:00
Nicolas Mowen
823550eed3
Reduce zones for timeline (#8300) 2023-10-24 19:24:59 -04:00
Nicolas Mowen
c141362614
Use norfair uninitialized score history for tracked object and update false positive docs (#8299)
* Update docs

* Use norfair score history to start object history

* Formatting
2023-10-24 19:24:30 -04:00
Russell Troxel
e0e8a6fcc9
Add --validate-config option for CI config validation (#8222)
* add `--validate-config` option for CI config validation

Signed-off-by: Russell Troxel <russell.troxel@segment.com>

* Fix Lint

Signed-off-by: Russell Troxel <russell.troxel@segment.com>

* Add docs & test live

Signed-off-by: Russell Troxel <russell.troxel@segment.com>

* Update docs/docs/configuration/advanced.md

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Fix Lint

Signed-off-by: Russell Troxel <russell@troxel.io>

---------

Signed-off-by: Russell Troxel <russell.troxel@segment.com>
Signed-off-by: Russell Troxel <russell@troxel.io>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2023-10-23 20:33:52 -06:00
Nicolas Mowen
0b858419d1
re-enable init delay (#8283) 2023-10-23 20:50:22 -04:00
Nicolas Mowen
2fb7200fb7
Revamp object consolidation logic (#8289)
* Separate object reduction to own function and reduce confidence of boxes on edge of region

* Add tests for different scenarios

* Formatting
2023-10-23 20:20:21 -04:00
Nicolas Mowen
e9376ca285
Fix bug on bad storage stats read (#8275) 2023-10-22 13:35:19 -05:00
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
Daniël van den Berg
d102ebf855
[CHANGE] More resilient and slightly faster PTZ (#8009)
* [CHANGE] More resilient and slightly faster PTZ

* Make "Check Black" happy.

* Make "check black" happier

* Remove unused named exception

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2023-10-22 09:08:05 -05:00
Nicolas Mowen
cb3990a0ac
Catch ws reset error (#8266)
* Catch ws reset error

* Formatting
2023-10-22 06:23:31 -04:00
Blake Blackshear
9fc93c72a0
more consistent use of iterators in select queries (#8258) 2023-10-21 10:53:33 -05:00
Blake Blackshear
c8b38bdd47
address codeql scan results (#8260) 2023-10-21 08:08:03 -05:00
Nicolas Mowen
e80b6d9e5b
Use different consolidation requirement depending on label (#8249) 2023-10-20 19:29:52 -04:00
Josh Hawkins
ee1e1b748c
fix logic error in preset fetch (#8245) 2023-10-20 19:27:47 -04:00
Nicolas Mowen
0c2f3a9702
Adjust motion calibration to be more dynamic (#8250)
* Adjust motion calibration to be more dynamic

* isort
2023-10-20 19:22:38 -04:00
Nicolas Mowen
a3c0e30502
Use existing bounding box for region when object is stationary (#8248) 2023-10-20 19:21:34 -04:00
tpjanssen
facd557f8c
Change camera stats to be more structured (#8151)
* Change camera stats to be more structured

* Update stats.py

* Update stats.py

* Update System.jsx

Front end also breaks due to moved camera stats
2023-10-19 17:15:47 -05:00
Nicolas Mowen
12487b3b60
Sync stationary object checks (#8238)
* Sync stationary object checks for all objects on a camera

* Formatting
2023-10-19 17:14:33 -05:00
Sergey Krashevich
8f349a6365
use sum() instead of len() to count only enabled cameras (#8232) 2023-10-19 17:14:06 -05:00
Nicolas Mowen
91f7d67c5e
Smarter Regions (#8194)
* Smarter Regions

* Formatting

* Cleanup

* Fix motion region checking logic

* Add database table and migration for regions

* Update region grid on startup

* Revert init delay change

* Fix mypy

* Move object related functions to util

* Remove unused

* Fix tests

* Remove log

* Update the region daily at 2

* Fix logic

* Formatting

* Initialize grid before starting processing frames

* Move back to creating grid in main process

* Formatting

* Fixes

* Formating

* Fix region check

* Accept all but true

* Use regions grid for startup scan

* Add clarifying comment

* Fix new grid requests

* Add tests

* Delete stale region grids from DB
2023-10-18 18:21:52 -05:00
Nicolas Mowen
98200b7dda
Fix recording segment management (#8220)
* Fix timing error

* Downgrade logs
2023-10-18 18:18:22 -05:00
winstona
cd35481e92
Fix recording events intermittently missing (#8162)
* fix queues not emptying fully by changing gets to a blocking call with short timeout

* add extra error/warning messages when there's a possibility of missing recording segments
2023-10-18 06:52:48 -05:00
Nicolas Mowen
1bdfc380c3
Delete timeline items along with event (#8192) 2023-10-17 06:37:07 -05:00
Blake Blackshear
4469507e5b
dont set has_clip to false unless the event is older (#8179) 2023-10-15 13:31:56 -05:00
Blake Blackshear
9ea10f8541
Don't zero out motion during calibration (#8163)
* don't zero out motion boxes

* define detect resolution to speed up tests
2023-10-14 08:05:44 -04:00
Nicolas Mowen
4c7ea01137
Don't print ffprobe stdout logs (#8153) 2023-10-13 17:04:38 -05:00
Nicolas Mowen
34b315cc8c
Fix bug forcing rtsp for audio detection ffmpeg process (#8156)
* Fix forcing rtsp for audio process

* Send as list
2023-10-13 17:03:04 -05:00
Nicolas Mowen
9b687d77ce
Add support for nvidia decoder and encoder utilization stats (#8150)
* Add encoder and decoder stats to nvidia hwaccel stats

* Fix

* Fix
2023-10-13 09:44:18 -05:00
tpjanssen
e32bd4ab15
Added audio sensors to camera metrics and API stats (#8109)
* Added audio sensor to camera metrics and API stats

* Update types.py

* Update app.py
2023-10-13 06:17:41 -05:00
Nicolas Mowen
e19c0668e7
Require init delay (#8126) 2023-10-13 06:16:36 -05:00
tpjanssen
a82334ca1c
API enhancements (#8107) 2023-10-09 08:52:26 -05:00
Josh Hawkins
dbd21eb6fa
use getattr instead of get (#8094) 2023-10-08 14:30:23 -05:00
Nicolas Mowen
7f5fba08b7
Fix export name (#8090) 2023-10-07 08:40:20 -06:00
Nicolas Mowen
49e7723405
Add debug logs for audio labels (#8080) 2023-10-07 09:23:11 -05:00
Nicolas Mowen
52cc707eb8
Consider new attribute a significant change (#8054)
* Consider new attribute a significant change

* Update object_processing.py
2023-10-07 09:22:45 -05:00
tpjanssen
c47b02d2fe
Added filter option for min/max score for event to API function /events (#8079)
* Update api.md

* Update api.md

* Added filter option for min/max score for event to API function /events

* Added filter for submitted events

* Update http.py
2023-10-07 09:22:14 -05:00
Josh Hawkins
67a5a7d21a
onvif: use preset token if name is unsupported (#8046)
* onvif: use preset token if name is unsupported

* move parenthesis
2023-10-07 09:20:42 -05:00
Nicolas Mowen
8bde914939
Fix a couple bugs (#8045) 2023-10-07 09:18:34 -05:00
Josh Hawkins
fe9fcf3eaa
remove erroneous check for move threads (#8031) 2023-10-07 09:18:07 -05:00
Josh Hawkins
20c2ab39bc
disable zooming if relative zoom not supported (#8028) 2023-10-07 09:17:54 -05:00
Nicolas Mowen
08ef69bac4
Add recordings timeline entry for frigate+ attributes (#8063)
* Add attribute item to timeline

* Add face icon

* Add support for other icons

* Cleanup

* Ensure attributes are only updated once

* don't show _ in attributes
2023-10-07 09:17:18 -05:00
Nicolas Mowen
79fabbb6b0
Fix recording snapshot time range (#8073)
* Fix recording snapshot time range

* Formatting

* Formatting
2023-10-07 09:16:12 -05:00
Nicolas Mowen
8941aa5311
Ensure deleted export file name is safe (#8089)
* Ensure deleted export file name is safe

* Fix import
2023-10-07 09:12:48 -05:00
Blake Blackshear
14d2b79c72
Security fixes (#8081)
* use safeloader

* use json responses wherever possible

* remove CORS and add CSRF token

* formatting fixes

* add envjs back

* fix baseurl test
2023-10-06 22:20:30 -05:00
Nicolas Mowen
9a4f970337
Set default min score for attributes labels to 0.7 (#8001)
* Set min score for attributes to 0.7

* Allow other fields to be set
2023-09-30 07:38:15 -05:00
Nicolas Mowen
232588636f
Force birdseye to standard aspect ratio (#7994)
* Force birdseye to standard aspect ratio

* Make rounding consistent

* Formatting
2023-09-29 17:53:45 -05:00
Josh Hawkins
ead03c381b
Autotracking improvements and bugfixes (#7984)
* add zoom factor and catch motion exception

* reword error message

* check euclidean distance of estimate points

* use numpy for euclidean distance

* config entry

* use zoom factor and zoom based on velocity

* move debug inside try

* change log type to info

* logger level warning

* docs

* exception handling
2023-09-28 18:21:37 -05:00
Josh Hawkins
50f13b7196
thread lock for move queues (#7973) 2023-09-28 18:01:05 -05:00
Josh Hawkins
27144eb0b9
Autotracker: Basic zooming and moves with velocity estimation (#7713)
* don't zoom if camera doesn't support it

* basic zooming

* make zooming configurable

* zooming docs

* optional zooming in camera status

* Use absolute instead of relative zooming

* increase edge threshold

* zoom considering object area

* bugfixes

* catch onvif zooming errors

* relative zooming option for dahua/amcrest cams

* docs

* docs

* don't make small movements

* remove old logger statement

* fix small movements

* use enum in config for zooming

* fix formatting

* empty move queue first

* clear tracked object before waiting for stop

* use velocity estimation for movements

* docs updates

* add tests

* typos

* recalc every 50 moves

* adjust zoom based on estimate box if calibrated

* tweaks for fast objects and large movements

* use real time for calibration and add info logging

* docs updates

* remove area scale

* Add example video to docs

* zooming font header size the same as the others

* log an error if a ptz doesn't report a MoveStatus

* debug logging for onvif service capabilities

* ensure camera supports ONVIF MoveStatus
2023-09-27 06:19:10 -05:00
Nicolas Mowen
1aba8c1ef5
Refactor time filter (#7962)
* Add ability to filter events by start time

* Add tests

* Add time param to events

* Add time picker

* Update docs

* Catch overnight case

Update comment

* Cleanup

* Fix tests
2023-09-27 06:09:38 -05:00
Nicolas Mowen
1c27ee2d2b
Increase initial hit count for norfair tracker (#7925)
* Increase initial hit count of tracked object

* Formatting
2023-09-24 06:32:43 -05:00
Nicolas Mowen
08586f8f65
Fix case where camera is disabled but autotrack is enabled (#7914) 2023-09-24 05:05:29 -05:00
Nicolas Mowen
7d0216b8fb
Improve default timelapse args and make timelapse customizable (#7840)
* Add args to ignore audio and only process keyframes

* Add timelapse args to config

* Update docs

* Formatting

* Fix spacing

* Fix formatting

* add example of math for pts
2023-09-21 06:20:05 -06:00
Nicolas Mowen
fd9196ae3e
add note about network bandwidth permissions and don't set interfaces by default (#7813)
* add note about network bandwidth permissions

* Update default net int

* Set default network interfaces to empty

* Don't read interfaces if none are set

* Formatting

* Add stderr output
2023-09-21 05:26:22 -05:00
Nicolas Mowen
111933d3b4
Refactor Exports To Better Handle Recording Configs (#7846)
* Refactor export logic

* Fix param

* Ensure float is used

* Fix variable assignment

* Fix range

* Formatting
2023-09-21 05:24:49 -05:00
Nicolas Mowen
5d30944d6e
Add fire alarm to default audio labels (#7854)
* Add fire alarm to default audio list

* Update docs for default audio label list

* Update audio detectors with default label list
2023-09-21 05:23:26 -05:00
Nicolas Mowen
3797340efa
Set export sub process to be lower priority (#7862) 2023-09-21 05:22:35 -05:00
Nicolas Mowen
8728139ae3
Fix birdseye exception handling (#7864) 2023-09-21 05:22:11 -05:00
Nicolas Mowen
730851cda9
Remove frame interval for qsv timelapse output args (#7873) 2023-09-21 05:21:53 -05:00
Nicolas Mowen
46412e99d9
revert 1/2 min region size (#7883) 2023-09-21 05:21:32 -05:00
Nicolas Mowen
e5664826b1
Add ability to play and delete exports from webUI (#7882)
* add ability to playback exports on exports screen

* Add ability to delete exports from exports screen

* Fix large dialog

* Formatting
2023-09-21 05:20:57 -05:00
Nicolas Mowen
9a1c8b2cc4
Remove maximum inertia constraint (#7890) 2023-09-21 05:20:26 -05:00
Nicolas Mowen
b9e6afa659
Fix webUI success / error messages (#7820)
* Fix export error handling

* Ensure that config editor success / error is updated each time

* Set response

* Formatting
2023-09-16 04:59:50 -05:00
Nicolas Mowen
a2206bb177
Reduce database queries to necessary fields (#7751)
* Reduce database queries to necessary labels

* Set columns for other queries

* skip creating model instances

---------

Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
2023-09-11 17:07:04 -05:00
Nicolas Mowen
db6ee41f3c
Improve error checking and handling for recordings export (#7647)
* Improve error checking and handling for recordings export

* Cleanup

* Remove order by
2023-09-02 05:42:33 -05:00
Nicolas Mowen
36434bb26d
Run flask as multi threaded (#7648) 2023-09-02 05:41:46 -05:00
Nicolas Mowen
2e4f5bc0e0
Don't fail ptz if camera does not support relative zoom (#7542)
* Remove relative zoom space as it is not used

* Catch case where camera does not support relative zoom

* Cleanup
2023-09-01 07:07:18 -05:00
Nicolas Mowen
bd0d16a75b
Set commands before subscribing to messages (#7550) 2023-09-01 07:06:59 -05:00
Nicolas Mowen
7069ef93bb
Catch broken pipe when sending to websocket (#7556) 2023-09-01 07:06:39 -05:00
Nicolas Mowen
45f7db5cf1
Show sub label in debug view when available (#7567)
* Show sub label in debug view if available

* Ensure sub label is printable to be used
2023-09-01 07:03:47 -05:00
Nicolas Mowen
bbdf5e1bee
Don't count in progress events as duplicates (#7568)
* Don't count in progress events as duplicates

* Fix sql
2023-09-01 07:02:35 -05:00
Sergey Krashevich
731743c7e5
Refactor AudioTfl class to accept the number of detection threads as a parameter in the constructor, and update the usage of the num_threads attribute accordingly (#7588) 2023-09-01 07:00:11 -05:00
Nicolas Mowen
767abed7f0
Catch websocket exception in output (#7525) 2023-08-19 13:38:47 -05:00
Nicolas Mowen
3921a7faa2
Catch case where detected object has a height of 0 (#7425) 2023-08-10 05:51:30 -05:00
Jirasak Nopparat
4c63ad767a
Remove unused code (#7430) 2023-08-10 05:50:01 -05:00
Nicolas Mowen
afe3b5dd3d
Fix linter error (#7428) 2023-08-10 05:49:11 -05:00
Nicolas Mowen
fbed3fbb8b
Fix audio filter config (#7401) 2023-08-06 12:19:28 -05:00
Nicolas Mowen
36ccaa4cff
Improve debug logs for audio & ptz (#7387)
* Update audio.py

* Add debug log for ptz info

* Formatting

* Fix check
2023-08-05 05:47:56 -05:00
Nicolas Mowen
98576418a8
Improve Storage Logs (#7338)
* Make storage maintenance messages more clear

* Log when storage maintenance is happening

* Formatting
2023-08-01 06:26:45 -05:00
Andrew Reiter
e941012d48
Disambiguate 12h export filename timestamp (#7340)
* Add AM/PM to exported video filename

* Switch to 24h time
2023-08-01 06:25:43 -05:00
Nicolas Mowen
b7ff6735f6
Add support for stationary and active timeline entires (#7344)
* Add support for stationary and active timeline entires

* Be sure to update stored event data copy with stationary
2023-07-31 21:43:48 -05:00
Martin Weinelt
d0b38f0a47
Reuse CACHE_DIR constant (#7306) 2023-07-29 13:19:21 -05:00
Nicolas Mowen
b79b1d9443
Fix frame not in cache error (#7313) 2023-07-29 07:11:45 -05:00
Nicolas Mowen
947ccbc654
Accept floats for export when used directly with event start / end time (#7314)
* Accept floats for export when used directly with event start / end time

* Formatting

* Formatting
2023-07-29 07:05:17 -05:00
Nicolas Mowen
f8c0f74ab8
Batch delete recordings for removed cameras as well (#7302) 2023-07-28 05:49:52 -05:00
Nicolas Mowen
961ce03835
Fix ffmpeg preset typo (#7293)
* Fix ffmpeg preset typo

* Fix qsv typo

Co-authored-by: Sergey Krashevich <svk@svk.su>

---------

Co-authored-by: Sergey Krashevich <svk@svk.su>
2023-07-26 18:48:05 -05:00
Nicolas Mowen
761daf46ea
Refactor Recordings (#7275)
* Run ffmpeg sub process & video_properties as async

* Run recording cleanup in the main process

* More cleanup

* Use inter process communication to write recordings into the DB

* Formatting
2023-07-26 05:55:08 -05:00
Nicolas Mowen
9016a48dc7
Refactor Audio Events To Use stdout Pipe (#7291)
* Cleanup audio detection

* Read audio frames from ffmpeg process directly

* Handle case where process has stopped
2023-07-26 05:51:45 -05:00
Andrew Reiter
a96a951e23
Nvidia Jetson ffmpeg + TensorRT support (#6458)
* Non-Jetson changes

Required for later commits:
- Allow base image to be overridden (and don't assume its WORKDIR)
- Ensure python3.9
- Map hwaccel decode presets as strings instead of lists
Not required:
- Fix existing documentation
- Simplify hwaccel scale logic

* Prepare for multi-arch tensorrt build

* Add tensorrt images for Jetson boards

* Add Jetson ffmpeg hwaccel

* Update docs

* Add CODEOWNERS

* CI

* Change default model from yolov7-tiny-416 to yolov7-320

In my experience the tiny models perform markedly worse without being
much faster

* fixup! Update docs
2023-07-26 05:50:41 -05:00
Nicolas Mowen
d30a738960
Show status when mask is saved (#7212) 2023-07-21 07:30:22 -05:00
Nicolas Mowen
bfa7a5cc60
db improvements (#7227)
* Store camera labels in dict and other optimizations

* Add max on timeout so it is at least 60

* Ensure db timeout is at least 60

* Update list once a day to ensure new labels are cleaned up

* Formatting

* Insert recordings as bulk instead of individually.

* Fix

* Refactor event and timeline cleanup

* Remove unused
2023-07-21 07:29:50 -05:00
Nicolas Mowen
b655eca152
Set supported ptz features in init to not fail when camera has an error (#7228) 2023-07-21 07:27:07 -05:00
Nicolas Mowen
f2ff55dba2
Set timeout based on number of cameras (#7219) 2023-07-19 07:42:32 -05:00
Nicolas Mowen
c5b8d13beb
Save audio scores and add audio filter config (#7185)
* Send and save score for external events

* Add audio filters config

* Fix access

* Add docs

* Cleanup
2023-07-17 06:07:15 -05:00
Nicolas Mowen
dacf45cd88
Add tests for recordings retention and fix bug (#7183)
* Add tests for segment info

* Fix logic
2023-07-16 13:07:15 -05:00
Nicolas Mowen
662025a961
Remove faster_fifo (#7181)
* Remove faster_fifo

* Remove const
2023-07-16 07:42:56 -05:00
Nicolas Mowen
8e584cf844
Add option for enabling sync recordings (#7169) 2023-07-15 08:38:21 -05:00
Nicolas Mowen
d0873631cc
Fix logic (#7165) 2023-07-14 20:46:01 -05:00
Nicolas Mowen
dfd3fcdff6
Publish audio detections (#7159)
* Send mqtt message when audio is detected

* Fix value

* Add audio topics to mqtt docs and add mqtt headers

* Use existing standard for values

* Update mqtt.md
2023-07-14 19:06:00 -05:00