It seem like I have not read the docs, but I have managed all with the docs, also secure notifications, but here with object detecting I am a bit lost.
I have tried url picture, with alarm and snapshot.
I have enabled all debug and logging, I can read log in web ui or via docker exec with tail -F /var/log/zm/zmesdetect*.log:
Code: Select all
==> /var/log/zm/zmesdetect_m1.log <==
02/18/20 14:50:10 zmesdetect_m1[20681] DBG zm_detect.py:476 [ALPR not in use, no need for look aheads in processing]
02/18/20 14:50:10 zmesdetect_m1[20681] INF zm_detect.py:493 [labels found: ['car']]
02/18/20 14:50:10 zmesdetect_m1[20681] DBG zm_detect.py:494 [match found in /var/lib/zmeventnotification/images/812-alarm.jpg, breaking file loop...]
02/18/20 14:50:10 zmesdetect_m1[20681] DBG zm_detect.py:543 [Writing out debug bounding box image to /var/lib/zmeventnotification/images/812-alarm-bbox.jpg...]
02/18/20 14:50:10 zmesdetect_m1[20681] ERR zm_detect.py:561 [Could not write image to ZoneMinder as eventpath not present]
02/18/20 14:50:10 zmesdetect_m1[20681] INF zm_detect.py:566 [Removing matches to past detections]
02/18/20 14:50:10 zmesdetect_m1[20681] DBG image_manip.py:27 [trying to load /var/lib/zmeventnotification/images/monitor-1-data.pkl]
02/18/20 14:50:10 zmesdetect_m1[20681] DBG zm_detect.py:569 [Saving detections for monitor 1 for future match]
02/18/20 14:50:10 zmesdetect_m1[20681] INF zm_detect.py:607 [Prediction string:[a] detected:car:46% ]
02/18/20 14:50:10 zmesdetect_m1[20681] DBG zm_detect.py:609 [Prediction string JSON:[{"type": "object", "label": "car", "box": [330, 79, 668, 317], "confidence": "45.57%"}]]
==> /var/log/zm/zmesdetect_m2.log <==
02/18/20 14:05:32 zmesdetect_m2[19131] DBG zm_detect.py:202 [No polygon area specfied, so adding a full image polygon:[{'name': 'full_image', 'value': [(0, 0), (1280, 0), (1280, 720), (0, 720)]}]]
02/18/20 14:05:32 zmesdetect_m2[19131] DBG zm_detect.py:204 [resizing to 1200 before analysis...]
02/18/20 14:05:32 zmesdetect_m2[19131] DBG utils.py:37 [resized polygons x=0.9375/y=0.9375: [{'name': 'full_image', 'value': [(0, 0), (1200, 0), (1200, 675), (0, 675)]}]]
02/18/20 14:05:32 zmesdetect_m2[19131] DBG zm_detect.py:222 [User ALPR if vehicle found: False]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face_train.py:19 [Face Recognition library load time took: 48.957 milliseconds]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face.py:23 [Initializing face recognition with model:cnn upsample:1, jitters:1]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face.py:48 [trained file not found, reading from images and doing training...]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face.py:49 [If you are using a GPU and run out of memory, do the training using zm_train_faces.py. In this case, other models like yolo may already take up a lot of GPU memory]
02/18/20 14:05:34 zmesdetect_m2[19131] ERR face_train.py:96 [No known faces found to train, encoding file not created]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face_train.py:112 [Face Recognition training took: 7.174 milliseconds]
==> /var/log/zm/zmesdetect_m1.log <==
02/18/20 15:11:47 zmesdetect_m1[21739] DBG zm_detect.py:494 [match found in /var/lib/zmeventnotification/images/818-alarm.jpg, breaking file loop...]
02/18/20 15:11:47 zmesdetect_m1[21739] DBG zm_detect.py:543 [Writing out debug bounding box image to /var/lib/zmeventnotification/images/818-alarm-bbox.jpg...]
02/18/20 15:11:47 zmesdetect_m1[21739] ERR zm_detect.py:561 [Could not write image to ZoneMinder as eventpath not present]
02/18/20 15:11:47 zmesdetect_m1[21739] INF zm_detect.py:566 [Removing matches to past detections]
02/18/20 15:11:47 zmesdetect_m1[21739] DBG image_manip.py:27 [trying to load /var/lib/zmeventnotification/images/monitor-1-data.pkl]
02/18/20 15:11:47 zmesdetect_m1[21739] DBG image_manip.py:92 [past detection car@[(470, 6), (754, 6), (754, 80), (470, 6)] approximately matches car@[(478, 4), (756, 4), (756, 82), (478, 4)] removing]
02/18/20 15:11:47 zmesdetect_m1[21739] DBG image_manip.py:92 [past detection car@[(333, 69), (665, 69), (665, 315), (333, 69)] approximately matches car@[(331, 71), (671, 71), (671, 317), (331, 71)] removing]
02/18/20 15:11:47 zmesdetect_m1[21739] DBG zm_detect.py:569 [Saving detections for monitor 1 for future match]
02/18/20 15:11:47 zmesdetect_m1[21739] INF zm_detect.py:607 [Prediction string:[a] detected:car:77% ]
02/18/20 15:11:47 zmesdetect_m1[21739] DBG zm_detect.py:609 [Prediction string JSON:[{"type": "object", "label": "car", "box": [553, 16, 687, 76], "confidence": "77.28%"}, {"type": "object", "label": "car", "box": [478, 4, 756, 82], "confidence": "58.21%"}, {"type": "object", "label": "car", "box": [331, 71, 671, 317], "confidence": "52.11%"}]]
==> /var/log/zm/zmesdetect_m2.log <==
02/18/20 14:05:32 zmesdetect_m2[19131] DBG zm_detect.py:202 [No polygon area specfied, so adding a full image polygon:[{'name': 'full_image', 'value': [(0, 0), (1280, 0), (1280, 720), (0, 720)]}]]
02/18/20 14:05:32 zmesdetect_m2[19131] DBG zm_detect.py:204 [resizing to 1200 before analysis...]
02/18/20 14:05:32 zmesdetect_m2[19131] DBG utils.py:37 [resized polygons x=0.9375/y=0.9375: [{'name': 'full_image', 'value': [(0, 0), (1200, 0), (1200, 675), (0, 675)]}]]
02/18/20 14:05:32 zmesdetect_m2[19131] DBG zm_detect.py:222 [User ALPR if vehicle found: False]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face_train.py:19 [Face Recognition library load time took: 48.957 milliseconds]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face.py:23 [Initializing face recognition with model:cnn upsample:1, jitters:1]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face.py:48 [trained file not found, reading from images and doing training...]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face.py:49 [If you are using a GPU and run out of memory, do the training using zm_train_faces.py. In this case, other models like yolo may already take up a lot of GPU memory]
02/18/20 14:05:34 zmesdetect_m2[19131] ERR face_train.py:96 [No known faces found to train, encoding file not created]
02/18/20 14:05:34 zmesdetect_m2[19131] DBG face_train.py:112 [Face Recognition training took: 7.174 milliseconds]
web ui log with manual forced alarm with car, and manual forced script via docker exec:
Code: Select all
2020-02-18 15:25:54.901443 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21700 - Analysing at 20.00 fps]
2020-02-18 15:25:53.738516 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21700 - Capturing at 20.00 fps, capturing bandwidth 84794bytes/sec]
2020-02-18 15:25:53.598949 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21700 - Analysing at 20.00 fps]
2020-02-18 15:25:52.895750 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:52.891770 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:52.836130 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21700 - Capturing at 20.00 fps, capturing bandwidth 53553bytes/sec]
2020-02-18 15:25:49.899578 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21600 - Analysing at 20.00 fps]
2020-02-18 15:25:48.738569 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21600 - Capturing at 20.00 fps, capturing bandwidth 66994bytes/sec]
2020-02-18 15:25:48.572034 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21600 - Analysing at 20.00 fps]
2020-02-18 15:25:47.905280 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:47.895710 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:47.815013 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21600 - Capturing at 20.00 fps, capturing bandwidth 72333bytes/sec]
2020-02-18 15:25:44.897352 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21500 - Analysing at 20.00 fps]
2020-02-18 15:25:43.765276 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21500 - Capturing at 20.00 fps, capturing bandwidth 67839bytes/sec]
2020-02-18 15:25:43.574685 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21500 - Analysing at 20.00 fps]
2020-02-18 15:25:42.898140 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:42.891740 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:42.799618 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21500 - Capturing at 20.00 fps, capturing bandwidth 87916bytes/sec]
2020-02-18 15:25:39.923180 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21400 - Analysing at 20.00 fps]
2020-02-18 15:25:38.736868 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21400 - Capturing at 20.00 fps, capturing bandwidth 87064bytes/sec]
2020-02-18 15:25:38.552099 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21400 - Analysing at 20.00 fps]
2020-02-18 15:25:37.902320 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:37.895730 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:37.805146 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21400 - Capturing at 20.00 fps, capturing bandwidth 59154bytes/sec]
2020-02-18 15:25:34.881642 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21300 - Analysing at 20.00 fps]
2020-02-18 15:25:33.742775 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21300 - Capturing at 20.00 fps, capturing bandwidth 69359bytes/sec]
2020-02-18 15:25:33.570157 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21300 - Analysing at 20.00 fps]
2020-02-18 15:25:32.896880 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:32.891980 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:32.805200 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21300 - Capturing at 20.00 fps, capturing bandwidth 70074bytes/sec]
2020-02-18 15:25:30.861488 zmesdetect_m1[22238].INF-zm_detect.py/566 [Removing matches to past detections]
2020-02-18 15:25:30.857631 zmesdetect_m1[22238].ERR-zm_detect.py/561 [Could not write image to ZoneMinder as eventpath not present]
2020-02-18 15:25:30.842708 zmesdetect_m1[22238].INF-zm_detect.py/493 [labels found: ['car', 'car', 'car']]
2020-02-18 15:25:30.837381 zmesdetect_m1[22238].INF-yolo.py/140 [object:car at [331, 71, 671, 317] has a acceptable confidence:0.5211133360862732 compared to min confidence of: 0.3, adding]
2020-02-18 15:25:30.833839 zmesdetect_m1[22238].INF-yolo.py/140 [object:car at [478, 4, 756, 82] has a acceptable confidence:0.5820584893226624 compared to min confidence of: 0.3, adding]
2020-02-18 15:25:30.827465 zmesdetect_m1[22238].INF-yolo.py/140 [object:car at [553, 16, 687, 76] has a acceptable confidence:0.7728151082992554 compared to min confidence of: 0.3, adding]
2020-02-18 15:25:29.890995 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21200 - Analysing at 20.00 fps]
2020-02-18 15:25:28.732008 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21200 - Capturing at 20.00 fps, capturing bandwidth 67827bytes/sec]
2020-02-18 15:25:28.568713 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21200 - Analysing at 20.00 fps]
2020-02-18 15:25:27.899230 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:27.895700 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:27.811328 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21200 - Capturing at 20.00 fps, capturing bandwidth 72350bytes/sec]
2020-02-18 15:25:24.996110 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21100 - Analysing at 20.00 fps]
2020-02-18 15:25:23.719956 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21100 - Capturing at 20.00 fps, capturing bandwidth 85591bytes/sec]
2020-02-18 15:25:23.567208 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21100 - Analysing at 20.00 fps]
2020-02-18 15:25:22.895330 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:22.891710 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:22.807189 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21100 - Capturing at 20.00 fps, capturing bandwidth 53275bytes/sec]
2020-02-18 15:25:20.566431 zmesdetect_m1[22238].INF-utils.py/96 [Sleeping for 5 seconds before downloading]
2020-02-18 15:25:20.562309 zmesdetect_m1[22238].INF-zm_detect.py/160 [Importing local classes for Yolo/Face]
2020-02-18 15:25:20.550706 zmesdetect_m1[22238].INF-zm_detect.py/138 [---------| app version: 5.7.4 |------------]
2020-02-18 15:25:19.875888 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 21000 - Analysing at 20.00 fps]
2020-02-18 15:25:19.631550 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Ending process:22204 to handle alarms]
2020-02-18 15:25:18.734233 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:21000 - Capturing at 20.00 fps, capturing bandwidth 67190bytes/sec]
2020-02-18 15:25:18.571012 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 21000 - Analysing at 20.00 fps]
2020-02-18 15:25:17.900000 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:17.895840 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 1 active child forks...]
2020-02-18 15:25:17.821056 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:21000 - Capturing at 20.00 fps, capturing bandwidth 67815bytes/sec]
2020-02-18 15:25:15.619900 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Not sending event end alarm, as we did not send a start alarm for this, or start hook processing failed]
2020-02-18 15:25:14.885972 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20900 - Analysing at 20.00 fps]
2020-02-18 15:25:13.707431 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20900 - Capturing at 20.00 fps, capturing bandwidth 66874bytes/sec]
2020-02-18 15:25:13.615660 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 hook end returned with text: json:[] exit:127]
2020-02-18 15:25:13.609280 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Invoking hook on event end:/mnt/Zoneminder/hook/zm_event_end.sh 822 1 "vhod" "Forced Web: " "/var/cache/zoneminder/events/1/20/02/18/15/25/03"]
2020-02-18 15:25:13.574527 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20900 - Analysing at 20.00 fps]
2020-02-18 15:25:12.896870 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:12.893090 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 1 active child forks...]
2020-02-18 15:25:12.839021 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20900 - Capturing at 20.00 fps, capturing bandwidth 55867bytes/sec]
2020-02-18 15:25:11.604620 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Event 822 for Monitor 1 has finished]
2020-02-18 15:25:11.600600 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Sending event_start notification for EID:822 over MQTT]
2020-02-18 15:25:11.596620 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Monitor 1 event: should send out as 931.119179964066 is >= interval of ]
2020-02-18 15:25:11.592640 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Checking alarm rules for MQTT 192.168.1.27]
2020-02-18 15:25:11.585670 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 FCM push message returned a 200 with body {"multicast_id":3073562449016906026,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"1582035911165906"}]}]
2020-02-18 15:25:11.100589 zma_m1[21457].INF-zm_event.cpp/588 [Updating frames delta by -1.30 sec to match video file]
2020-02-18 15:25:11.090950 zma_m1[21457].INF-zm_monitor.cpp/1661 [vhod: 20850 - Closing event 822, alarm end]
2020-02-18 15:25:11.085369 zma_m1[21457].INF-zm_monitor.cpp/1656 [vhod: 20850 - Left alarm state (822) - 160(65) images]
2020-02-18 15:25:10.654170 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Sending event_start notification over FCM]
2020-02-18 15:25:10.650090 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Monitor 1 event: should send out as 930.996390104294 is >= interval of 0]
2020-02-18 15:25:10.646020 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Checking alarm rules for token ending in:...5sxQF8jrbQ]
2020-02-18 15:25:10.634590 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 FCM push message returned a 200 with body {"multicast_id":9068760980946703725,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"1582035910440338"}]}]
2020-02-18 15:25:09.952120 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Sending event_start notification over FCM]
2020-02-18 15:25:09.945100 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Monitor 1 event: should send out as 934.039570093155 is >= interval of 0]
2020-02-18 15:25:09.944702 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20800 - Analysing at 20.00 fps]
2020-02-18 15:25:09.940380 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Checking alarm rules for token ending in:...w4M8bOGNjL]
2020-02-18 15:25:09.932500 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Matching alarm to connection rules...]
2020-02-18 15:25:08.714558 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20800 - Capturing at 20.00 fps, capturing bandwidth 85829bytes/sec]
2020-02-18 15:25:08.597633 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20800 - Analysing at 20.00 fps]
2020-02-18 15:25:07.927970 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 hook start returned with text: json:[] exit:127]
2020-02-18 15:25:07.919120 zmeventnotification[22204].INF-zmeventnotification.pl [|----> FORK:vhod (1), eid:822 Invoking hook on event start:/mnt/Zoneminder/hook/zm_event_start.sh 822 1 "vhod" "Forced Web" "/var/cache/zoneminder/events/1/20/02/18/15/25/03"]
2020-02-18 15:25:07.911850 zmeventnotification[22204].INF-zmeventnotification.pl [PARENT: Forked process:22204 to handle alarm eid:822]
2020-02-18 15:25:07.905640 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 1 new Events to process]
2020-02-18 15:25:07.902130 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: New event 822 reported for Monitor:1 (Name:vhod) Forced Web]
2020-02-18 15:25:07.895670 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:07.814061 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20800 - Capturing at 20.00 fps, capturing bandwidth 69227bytes/sec]
2020-02-18 15:25:06.576405 zma_m1[21457].INF-zm_monitor.cpp/1648 [vhod: 20760 - Gone into alert state]
2020-02-18 15:25:04.865128 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20700 - Analysing at 20.00 fps]
2020-02-18 15:25:03.716901 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20700 - Capturing at 20.00 fps, capturing bandwidth 67532bytes/sec]
2020-02-18 15:25:03.590309 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20700 - Analysing at 20.00 fps]
2020-02-18 15:25:03.425621 zmc_m1[21449].INF-zm_ffmpeg_camera.cpp/889 [Event video offset is -1.296 sec (<0 means video starts early)]
2020-02-18 15:25:03.419092 zmc_m1[21449].INF-zm_videostore.cpp/62 [Opening video storage stream /var/cache/zoneminder/events/1/20/02/18/15/25/03/822-video.mp4 format: mp4]
2020-02-18 15:25:03.353176 zma_m1[21457].INF-zm_monitor.cpp/1615 [vhod: 20695 - Opening new event 822, alarm start]
2020-02-18 15:25:03.339785 zma_m1[21457].INF-zm_monitor.cpp/1564 [vhod: 20695 - Gone into alarm state PreAlarmCount: 0 > AlarmFrameCount:1 Cause:Forced Web]
2020-02-18 15:25:02.898210 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:25:02.891700 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:25:02.797626 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20700 - Capturing at 20.00 fps, capturing bandwidth 68342bytes/sec]
2020-02-18 15:24:59.884363 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20600 - Analysing at 20.00 fps]
2020-02-18 15:24:58.695342 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20600 - Capturing at 20.00 fps, capturing bandwidth 67634bytes/sec]
2020-02-18 15:24:58.677787 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20600 - Analysing at 20.00 fps]
2020-02-18 15:24:57.900970 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:24:57.896100 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:24:57.820506 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20600 - Capturing at 20.00 fps, capturing bandwidth 52288bytes/sec]
2020-02-18 15:24:54.934783 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20500 - Analysing at 20.00 fps]
2020-02-18 15:24:53.717216 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20500 - Capturing at 20.00 fps, capturing bandwidth 86388bytes/sec]
2020-02-18 15:24:53.575461 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20500 - Analysing at 20.00 fps]
2020-02-18 15:24:52.900410 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:24:52.892250 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:24:52.799796 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20500 - Capturing at 20.00 fps, capturing bandwidth 70532bytes/sec]
2020-02-18 15:24:49.889544 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20400 - Analysing at 20.00 fps]
2020-02-18 15:24:48.710181 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20400 - Capturing at 20.00 fps, capturing bandwidth 67444bytes/sec]
2020-02-18 15:24:48.465941 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20400 - Analysing at 20.00 fps]
2020-02-18 15:24:47.904770 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:24:47.896270 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:24:47.721800 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20400 - Capturing at 20.00 fps, capturing bandwidth 80356bytes/sec]
2020-02-18 15:24:44.892772 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20300 - Analysing at 20.00 fps]
2020-02-18 15:24:43.697479 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20300 - Capturing at 20.00 fps, capturing bandwidth 67292bytes/sec]
2020-02-18 15:24:43.464935 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20300 - Analysing at 20.00 fps]
2020-02-18 15:24:42.897730 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:24:42.891620 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:24:42.694578 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20300 - Capturing at 20.00 fps, capturing bandwidth 63099bytes/sec]
2020-02-18 15:24:39.927774 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20200 - Analysing at 20.00 fps]
2020-02-18 15:24:38.693594 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20200 - Capturing at 20.00 fps, capturing bandwidth 85781bytes/sec]
2020-02-18 15:24:38.487732 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20200 - Analysing at 20.00 fps]
2020-02-18 15:24:37.901790 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:24:37.895580 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
2020-02-18 15:24:37.702749 zmc_m1[21449].INF-zm_monitor.cpp/2546 [vhod: images:20200 - Capturing at 20.00 fps, capturing bandwidth 103901bytes/sec]
2020-02-18 15:24:34.916919 zma_m2[21463].INF-zm_monitor.cpp/1297 [Terasa: 20100 - Analysing at 20.00 fps]
2020-02-18 15:24:33.696660 zmc_m2[21455].INF-zm_monitor.cpp/2546 [Terasa: images:20100 - Capturing at 20.00 fps, capturing bandwidth 67479bytes/sec]
2020-02-18 15:24:33.486537 zma_m1[21457].INF-zm_monitor.cpp/1297 [vhod: 20100 - Analysing at 20.00 fps]
2020-02-18 15:24:32.897020 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 new Events to process]
2020-02-18 15:24:32.892010 zmeventnotification[21487].INF-zmeventnotification.pl [PARENT: There are 0 active child forks...]
objectconfig.ini:
Code: Select all
# Configuration file for object detection
# NOTE: ALL parameters here can be overriden
# on a per monitor basis if you want. Just
# duplicate it inside the correct [monitor-<num>] section
[general]
# This is an optional file
# If specified, you can specify tokens with secret values in that file
# and onlt refer to the tokens in your main config file
secrets = /etc/zm/secrets.ini
#wait=5
# portal/user/password are needed if you plan on using ZM's legacy
# auth mechanism to get images
portal=https://xxxxxx.xxx/zm
user=admin
password=xxxxxxxxxxxxx
# api portal is needed if you plan to use tokens to get images
# requires ZM 1.33 or above
api_portal=https://xxxxxxxxxx/zm/api
allow_self_signed=yes
# if yes, last detection will be stored for monitors
# and bounding boxes that match, along with labels
# will be discarded for new detections. This may be helpful
# in getting rid of static objects that get detected
# due to some motion.
match_past_detections=yes
# The max difference in area between the objects if match_past_detection is on
# can also be specified in px like 300px. Default is 5%. Basically, bounding boxes of the same
# object can slightly differ ever so slightly between detection. Contributor @neillbell put in this PR
# to calculate the difference in areas and based on his tests, 5% worked well. YMMV. Change it if needed.
past_det_max_diff_area=5%
# sequence of models to run for detection
models=yolo,face
# if all, then we will loop through all models
# if first then the first success will break out
detection_mode=all
# If you need basic auth to access ZM
#basic_user=user
#basic_password=password
# base data path for various files the ES+OD needs
# we support in config variable substitution as well
base_data_path=/var/lib/zmeventnotification
# this is the global detection pattern used for all monitors.
# choose any set of classes from here https://github.com/pjreddie/darknet/blob/master/data/coco.names
# for everything, make it .*
detect_pattern=(person|car|motorbike|bus|truck|boat)
#detect_pattern=.*
# global settings for
# bestmatch, alarm, snapshot OR a specific frame ID
frame_id=bestmatch
# this is the to resize the image before analysis is done
resize=1200
# set to yes, if you want to remove images after analysis
# setting to yes is recommended to avoid filling up space
# keep to no while debugging/inspecting masks
# Note this does NOT delete debug images later
delete_after_analyze=no
# If yes, will write an image called <filename>-bbox.jpg as well
# which contains the bounding boxes. This has NO relation to
# write_image_to_zm
# Typically, if you enable delete_after_analyze you may
# also want to set write_debug_image to no.
write_debug_image=yes
# if yes, will write an image with bounding boxes
# this needs to be yes to be able to write a bounding box
# image to ZoneMinder that is visible from its console
write_image_to_zm=yes
# Adds percentage to detections
# hog/face shows 100% always
show_percent=yes
# color to be used to draw the polygons you specified
poly_color=(255,255,255)
#import_zm_zones=no
## Monitor specific settings
#
# - Format: [monitor-<mid>]
#
# Parameters:
# polygon areas where object detection will be done.
# You can name them anything except the keywords defined in the optional
# params below. You can put as many polygons as you want per [monitor-<mid>]
# (see examples).
#
# detect_pattern: overrides the detection patterns used for this monitor.
#
# Examples:
[monitor-8]
# my driveway
match_past_detections=no
wait=5
detect_pattern=(person|car|motorbike|bus|truck|boat)
#alpr_pattern=^(.*x11)
#delete_after_analyze=no
#detect_pattern=.*
#import_zm_zones=yes
my_driveway_perimeter=306,356 1003,341 1074,683 154,715
# use license plate recognition for my driveway
# see alpr section later for more data needed
resize=no
models=yolo,alpr
# tiny switches to tiny yolo weights, instead of full Yolo. Much faster, but less accurate
yolo_type=tiny
[monitor-10]
# my front lawn
# here we want anything except potted plant
# exclusion in regular expressions is not
# as straightforward as you may think, so
# follow this pattern
# detect_pattern = ^(?!object1|object2|objectN)
# the characters in front implement what is
# called a negative look ahead
detect_pattern=^(?!potted plant|pottedplant|bench|broccoli)
#detect_pattern=.*
# local model overrides global
models=yolo
# setting import_zm_zones to yes will import ZM defined zones
#import_zm_zones=yes
[monitor-5]
# my basement
detect_pattern=(person)
#detect_pattern=.*
#poly_color=(255,0,0)
#detect_pattern=^(?!chair|bed)
param=219,304 1113,278 1066,863 177,852
models=yolo,face
[monitor-1]
# deck
#detect_pattern=^(?!chair|table|bench|bird|bicycle|frisbee)
#detect_pattern=^(?!chair|table|bench|bird)
models=yolo
yolo_type=tiny
#boundary=100,100 2988,10 2988,2220 10,2220
wait=5
[monitor-2]
#doorbell
detect_pattern=(person)
#detect_pattern=.*
# try face, if it works, don't do yolo
detection_mode=first
models=face,yolo
frame_id=bestmatch
# try diff. sizes. In my case, 600 was enough
#resize=600
# My doorbell camera needs more accurate face detection
# cnn did a much better job than HOG, but its _much_ slower
face_model=cnn
face_train_model=cnn
face_recog_dist_threshold=0.6
match_past_detections=no
wait=5
#if you hard code a frame, you need to make sure it is created
#before we acess it. wait (sec) helps
#frame_id=32
#wait=3
#[monitor-4]
# detect_pattern=(cat|dog)
# kitchen_door=313,221 392,210 418,592 367,659
# No 'detect_pattern', global value would be used.
# [monitor-7]
# entrance_door=313,221 392,210 418,592 367,659
# Machine learning options that are not specific to a model
[ml]
# You can now run the machine learning code on a different server
# This frees up your ZM server for other things
# To do this, you need to setup https://github.com/pliablepixels/mlapi
# on your desired server and confiure it with a user. See its instructions
# once set up, you can choose to do object/face recognition via that
# external serer
# URL that will be used
#ml_gateway=http://0.0.0.0:5000/api/v1
# If you enable ml_gateway, and it is down
# you can set ml_fallback_local to yes
# if you want to instantiate local object detection
# on gateway failure. Default is no
#ml_fallback_local=yes
# API/password for remote gateway
ml_user=admin
ml_password=admin
# config files for yolo
[yolo]
#yolo_type=full
yolo_type=tiny
#yolo_min_confidence=0.5
yolo_min_confidence=0.3
config={{base_data_path}}/models/yolov3/yolov3.cfg
weights={{base_data_path}}/models/yolov3/yolov3.weights
labels={{base_data_path}}/models/yolov3/yolov3_classes.txt
tiny_config={{base_data_path}}/models/tinyyolo/yolov3-tiny.cfg
tiny_weights={{base_data_path}}/models/tinyyolo/yolov3-tiny.weights
tiny_labels={{base_data_path}}/models/tinyyolo/yolov3-tiny.txt
# config params for HOG
[hog]
stride=(4,4)
padding=(8,8)
scale=1.05
mean_shift=-1
[face]
# this directly will be where you store known images on a per directory basis
known_images_path={{base_data_path}}/known_faces
# if yes, then unknown faces will be stored and you can analyze them later
# and move to known_faces and retrain
save_unknown_faces=yes
# How many pixels to extend beyond the face for a better perspective
save_unknown_faces_leeway_pixels=50
# this directly is where zm_detect will store faces it could not identify
# (if save_unknown_faces is yes). You can then inspect this folder later,
# and copy unknown faces to the right places in known_faces and retrain
unknown_images_path={{base_data_path}}/unknown_faces
# read https://github.com/ageitgey/face_recognition/wiki/Face-Recognition-Accuracy-Problems
# read https://github.com/ageitgey/face_recognition#automatically-find-all-the-faces-in-an-image
# and play around
# quick overview:
# num_jitters is how many times to distort images
# upsample_times is how many times to upsample input images (for small faces, for example)
# model can be hog or cnn. cnn may be more accurate, but I haven't found it to be
face_num_jitters=1
face_model=hog
face_upsample_times=1
# This is maximum distance of the face under test to the closest matched
# face cluster. The larger this distance, larger the chances of misclassification.
#
face_recog_dist_threshold=0.6
# When we are first training the face recognition model with known faces,
# by default we use hog because we assume you will supply well lit, front facing faces
# However, if you are planning to train with profile photos or hard to see faces, you
# may want to change this to cnn. Note that this increases training time, but training only
# happens once, unless you retrain again by removing the training model
face_train_model=hog
#if a face doesn't match known names, we will detect it as 'unknown face'
# you can change that to something that suits your personality better ;-)
#unknown_face_name=invader
[alpr]
alpr_use_after_detection_only=yes
# -----| If you are using plate recognizer | ------
alpr_service=plate_recognizer
# If you want to host a local SDK https://app.platerecognizer.com/sdk/
#alpr_url=https://localhost:8080
# Plate recog replace with your api key
alpr_key=!PLATEREC_ALPR_KEY
# if yes, then it will log usage statistics of the ALPR service
platerec_stats=no
# If you want to specify regions. See http://docs.platerecognizer.com/#regions-supported
#platerec_regions=['us','cn','kr']
# minimal confidence for actually detecting a plate
platerec_min_dscore=0.1
# minimal confidence for the translated text
platerec_min_score=0.2
# ----| If you are using openALPR |-----
#alpr_service=open_alpr
#alpr_key=!OPENALPR_ALPR_KEY
# For an explanation of params, see http://doc.openalpr.com/api/?api=cloudapi
#openalpr_recognize_vehicle=1
#openalpr_country=us
#openalpr_state=ca
# openalpr returns percents, but we convert to between 0 and 1
#openalpr_min_confidence=0.3
zmeventnotification.ini:
Code: Select all
# Configuration file for zmeventnotification.pl
[general]
secrets = /etc/zm/secrets.ini
#base_data_path=/var/lib/zmeventnotification
base_data_path=/mnt/Zoneminder
# The ES now supports a means for a special kind of
# websocket connection which can dynamically control ES
# behaviour
# Default is no
use_escontrol_interface=no
# this is where all escontrol admin overrides
# will be stored.
escontrol_interface_file=/var/lib/zmeventnotification/misc/escontrol_interface.dat
# the password for accepting control interfaces
escontrol_interface_password=xxxxxxxxx
# If you see the ES getting 'stuck' after several hours
# see https://rt.cpan.org/Public/Bug/Display.html?id=131058
# You can use restart_interval to have it automatically restart
# every X seconds. (Default is 7200 = 2 hours) Set to 0 to disable this.
# restart_interval = 432000
restart_interval = 0
[network]
# Port for Websockets connection (default: 9000).
port = 9001
[auth]
# Check username/password against ZoneMinder database (default: yes).
enable = yes
# Authentication timeout, in seconds (default: 20).
timeout = 20
[fcm]
# Use FCM for messaging (default: yes).
enable = yes
# Custom FCM API key. Uncomment if you are using
# your own API key (most people will not need to uncomment)
# api_key =
# Auth token store location (default: /var/lib/zmeventnotification/push/tokens.txt).
token_file = /var/lib/zmeventnotification/push/tokens.txt
# Date format to use when sending notification
# over push (FCM)
# See https://metacpan.org/pod/POSIX::strftime::GNU
# For example, a 24 hr format would be
#date_format = %H:%M, %d-%b
date_format = %I:%M %p, %d-%b
# Use MQTT for messaging (default: no)
[mqtt]
enable = 1
# MQTT server (default: 127.0.0.1)
server = 192.168.1.27
# Authenticate to MQTT server as user
username = xxxxxxxxxxx
# Password
password = xxxxxxxxxxxx
# Some MQTT brokers don't seem to honor
# keep alives resulting in missed notifications
# default:no
close_on_send = no
[ssl]
# Enable SSL (default: yes)
enable = yes
cert = !ES_CERT_FILE
key = !ES_KEY_FILE
[customize]
# Display messages to console (default: no).
console_logs = yes
# Interval, in seconds, after which we will check for new events (default: 5).
event_check_interval = 5
# Interval, in seconds, to reload known monitors (default: 300).
monitor_reload_interval = 300
# Read monitor alarm cause (Requires ZoneMinder >= 1.31.2, default: no)
# Enabling this to 1 for lower versions of ZM will result in a crash
read_alarm_cause = yes
# Tag event IDs with the alarm (default: no).
tag_alarm_event_id = yes
# Use custom notification sound (default: no).
use_custom_notification_sound = no
# include picture in alarm (Android only) (default: no).
include_picture = yes
# send event end notifications (default: no)
# Note that if you are using hooks for end notifications, they may change
# the final decision. This needs to be yes if you want end notifications with
# or without hooks
#send_event_end_notification = yes
# URL to access the event image
# This URL can be anything you want
# What I've put here is a way to extract an image with the highest score given an eventID (even one that is recording)
# This requires the latest version of index.php which was merged on Oct 9, 2018 and may only work in ZM 1.32+
# https://github.com/ZoneMinder/zoneminder/blob/master/web/index.php
# If you use this URL as I've specified below, keep the EVENTID phrase intact.
# The notification server will replace it with the correct eid of the alarm
# BESTMATCH should be used only if you are using bestmatch for FID in detect_wrapper.sh
# objdetect is ONLY available in ZM 1.33+
picture_url = !ZMES_PICTURE_URL
picture_portal_username=!ZM_USER
picture_portal_password=!ZM_PASSWORD
# This is a master on/off setting for hooks. If it is set to no
# hooks will not be used no matter what is set in the [hook] section
# This makes it easy for folks not using hooks to just turn this off
# default:no
use_hooks = yes
[hook]
# NOTE: This entire section is only valid if use_hooks is yes above
# Shell script name here to be called every time an alarm is detected
# the script will get passed $1=alarmEventID, $2=alarmMonitorId
# $3 monitor Name, $4 alarm cause
# script needs to return 0 to send alarm (default: none)
#
# This script is called when an event first starts. If the script returns "0"
# (success), then a notification is sent to channels specified in
# event_start_notify_on_hook_success. If the script returns "1" (fail)
# then a notification is sent to channels specified in
# event_start_notify_on_hook_fail
event_start_hook = /mnt/Zoneminder/hook/zm_event_start.sh
# This script is called when an event first starts. If the script returns "0"
# (success), then a notification is sent to channels specified in
# event_end_notify_on_hook_success. If the script returns "1" (fail)
# then a notification is sent to channels specified in
# event_end_notify_on_hook_fail
event_end_hook = /mnt/Zoneminder/hook/zm_event_end.sh
# Possible channels = web,fcm,mqtt
# all is short for web,fcm,mqtt
# use none for no notifications, or comment out the attribute
# When an event starts and hook returns 0, send notification to all. Default: none
event_start_notify_on_hook_success = all
# When an event starts and hook returns 1, send notification only to desktop. Default: none
event_start_notify_on_hook_fail = all
# When an event ends and hook returns 0, send notification to fcm and web. Default: none
event_end_notify_on_hook_success = none
# When an event ends and hook returns 1, don't send notifications. Default: none
event_end_notify_on_hook_fail = all
#event_end_notify_on_hook_fail = web
# Since event_end and event_start are two different hooks, it is entirely possible
# that you can get an end notification but not a start notification. This can happen
# if your start script returns 1 but the end script returns 0, for example. To avoid
# this, set this to yes (default:yes)
event_end_notify_if_start_success = yes
# If yes, the text returned by the script
# overwrites the alarm header
# useful if your script is detecting people, for example
# and you want that to be shown in your notification (default:yes)
use_hook_description = yes
# If yes will will append an [a] for alarmed frame match
# [s] for snapshot match or [x] if not using bestmatch
# really only a debugging feature but useful to know
# where object detection is working or failing
keep_frame_match_type = no
# list of monitors for which hooks will not run
# skip_monitors = 2
# if enabled, will pass the right folder for the hook script
# to store the detected image, so it shows up in ZM console view too
# Requires ZM >=1.33. Don't enable this if you are running an older version
# Note: you also need to set write_image_to_zm=yes in objectconfig.ini
# default: no
hook_pass_image_path = yes
So automatic the hook-object detecting wont start I think, because there is nothing in log, just starting zm_event_start.sh and zm_event_end.sh when alarm triggers.
But when I trigger manual, I got instant zmdetect in logs