Comments (17)
It looks like the API output changed in OpenCV 4.5.4
See opencv/opencv#20923
In previous versions, the dimensions were returned as an array of array but now its just an array. I'm not sure if this compatibility issue will be fixed, or if this is the new format, but for now, see temporary fix at https://forums.zoneminder.com/viewtopic.php?f=43&t=31129&p=123755&hilit=scalar#p123755
from mlapi.
thank you very much for your prompt reply. That workaround indeed removes the error.
should i close this? or would you like to keep it open?
from mlapi.
Let's keep it open till I fix it correctly
from mlapi.
Could you replace your yolo.py with this one and test? https://github.com/pliablepixels/pyzm/blob/5dfd2b7bfe57024dabc125c53c10b2c9f8e1a82b/pyzm/ml/yolo.py
I am not running 4.5.4 at the moment
from mlapi.
@pliablepixels tested your new yolo.py. Works fine, no errors, object recognition as expected.
i turned TPU off to ensure yolo processing and it works fine.
from mlapi.
Good job on finding which exact version!
from mlapi.
Same error "IndexError: invalid index to scalar variable"
with latest opencv/opencv-contrib 4.6.0-dev, compiled from source
08/11/22 20:42:06 zmesdetect_m1[4359] INF ZMLog.py:292 [Setting up signal handler for logs]
08/11/22 20:42:06 zmesdetect_m1[4359] INF ZMLog.py:301 [Switching global logger to ZMLog]
08/11/22 20:42:06 zmesdetect_m1[4359] INF zm_detect.py:284 [---------| app:6.1.28, pyzm:0.3.56, ES:6.1.28
, OpenCV:4.6.0-dev|------------]
08/11/22 20:42:06 zmesdetect_m1[4359] INF utils.py:405 [Reading config from: /etc/zm/objectconfig.ini]
08/11/22 20:42:06 zmesdetect_m1[4359] INF utils.py:410 [Reading secrets from: /etc/zm/secrets.ini]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !ZM_PORTAL]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !ZM_USER]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !ZM_PASSWORD]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !ZM_API_PORTAL]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !ML_USER]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !ML_PASSWORD]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:382 [Secret token found in config: !PLATEREC_ALPR_KEY]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG1 utils.py:445 [allowing self-signed certs to work...]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:455 [Now checking for monitor overrides]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG3 utils.py:473 [[monitor-1] overrides key:wait with value:5]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:174 [import_zm_zones: match_reason=True and reason=Motion]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG2 utils.py:177 [Getting ZM zones using https://zm.webtocloud.net:44313/zm/api/zones/forMonitor/1.json?username=xxx&password=yyy&user=xxx&pass=yyy]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG1 utils.py:225 [dropping public_entrance as zones in alarm cause is Motion]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG1 utils.py:225 [dropping private_entrance as zones in alarm cause is Motion]
08/11/22 20:42:06 zmesdetect_m1[4359] DBG3 utils.py:522 [Finally, doing parameter substitution]
08/11/22 20:42:06 zmesdetect_m1[4359] INF zm_detect.py:309 [Importing local classes for Object/Face]
08/11/22 20:42:07 zmesdetect_m1[4359] INF zm_detect.py:334 [Connecting with ZM APIs]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG2 api.py:72 [API SSL certificate check has been disbled]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG1 api.py:181 [using username/password for login]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG2 api.py:210 [Using new token API]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG1 api.py:217 [Access token expires on:2022-08-11 22:42:07.248078 [7200s]]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG1 api.py:221 [Refresh token expires on:2022-08-12 20:42:07.248280 [86400s]]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG2 zm_detect.py:342 [using ml_sequence]
08/11/22 20:42:07 zmesdetect_m1[4359] DBG2 zm_detect.py:354 [using stream_sequence]
08/11/22 20:42:07 zmesdetect_m1[4359] INF zm_detect.py:418 [Sleeping for 5 seconds before inferencing]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:160 [Resetting models, will be loaded on next run]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 detect_sequence.py:637 [Using manual locking as we are only using one model]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 Media.py:51 [Media get SSL certificate check has been disbled]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 Media.py:99 [Using URL 50156 for stream]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 Media.py:114 [We will only process frames: ['snapshot', 'alarm']]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 Media.py:137 [No need to start streams, we are picking images from https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50156]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 Media.py:271 [Reading https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50156&fid=snapshot]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 api.py:144 [No need to relogin as access token still has 119.91638281666665 minutes remaining]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 api.py:272 [make_request called with url=https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50156&fid=snapshot payload={} type=get query={'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
eyJpc3MiOiJab25lTWluZGVyIiwiaWF0IjoxNjYwMjM5NzI3LCJleHAiOjE2NjAyNDY5MjcsInVzZXIiOiJhZG1pbiIsInR5cGUiOiJhY2Nlc3MifQ.GIt_mrSQB-pa1GVThyV5rG_KESJ3ROjM5Tm6PhlYIWQ'}]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:654 [perf: Starting for frame:snapshot]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:664 [Sequence of detection types to execute: ['object']]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:669 [============ Frame: snapshot Running object detection type in sequence ==================]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:174 [Skipping TPU object detection as it is disabled]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:178 [Loading sequence: YoloV4 GPU/CPU]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:179 [Initializing model type:object with options:{'name': 'YoloV4 GPU/CPU', 'enabled': 'yes', 'object_config': '/var/lib/zmeventnotification/models/yolov4/yolov4.cfg', 'object_weights': '/var/lib/zmeventnotification/models/yolov4/yolov4.weights', 'object_labels': '/var/lib/zmeventnotification/models/yolov4/coco.names', 'object_min_confidence': 0.3, 'object_framework': 'opencv', 'object_processor': 'gpu', 'gpu_max_processes': 1, 'gpu_max_lock_wait': 100, 'cpu_max_processes': 3, 'cpu_max_lock_wait': 100, 'max_detection_size': '90%', 'disable_locks': 'no'}]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:38 [portalock: max:1, name:pyzm_uid33_gpu_lock, timeout:100]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:50 [Waiting for pyzm_uid33_gpu_lock portalock...]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:52 [Got pyzm_uid33_gpu_lock portalock]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 detect_sequence.py:689 [object has a same_model_sequence strategy of first]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:701 [--------- Frame:snapshot Running variation: #1 -------------]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:136 [detect extracted image dimensions as: 800wx1422h]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:47 [pyzm_uid33_gpu_lock portalock already acquired]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 yolo.py:85 [|--------- Loading "YoloV4 GPU/CPU" model from disk -------------|]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 yolo.py:100 [perf: processor:gpu Yolo initialization (loading /var/lib/zmeventnotification/models/yolov4/yolov4.weights model from disk) took: 69.05 ms]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:115 [Setting CUDA backend for OpenCV]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 yolo.py:116 [If you did not set your CUDA_ARCH_BIN correctly during OpenCV compilation, you will get errors during detection related to invalid device/make_policy]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 yolo.py:160 [|---------- YOLO (input image: 800w1422h, model resize dimensions: 416w416h) ----------|]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:68 [Released pyzm_uid33_gpu_lock portalock]
08/11/22 20:42:12 zmesdetect_m1[4359] ERR detect_sequence.py:713 [Error running model: invalid index to scalar variable.]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:714 [Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/detect_sequence.py", line 710, in detect_stream
_b,_l,_c,_m = m.detect(image=frame)
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/object.py", line 65, in detect
b,l,c,_model_names = self.model.detect(image)
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/yolo.py", line 168, in detect
ln = self.get_output_layers()
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/yolo.py", line 129, in get_output_layers
output_layers = [
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/yolo.py", line 130, in
layer_names[i[0] - 1] for i in self.net.getUnconnectedOutLayers()
IndexError: invalid index to scalar variable.
]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:770 [We did not find any object matches in frame: snapshot]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 Media.py:271 [Reading https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50156&fid=alarm]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 api.py:144 [No need to relogin as access token still has 119.91260125000001 minutes remaining]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 api.py:272 [make_request called with url=https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50156&fid=alarm payload={} type=get query={'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJab25lTWluZGVyIiwiaWF0IjoxNjYwMjM5NzI3LCJleHAiOjE2NjAyNDY5MjcsInVzZXIiOiJhZG1pbiIsInR5cGUiOiJhY2Nlc3MifQ.GIt_mrSQB-pa1GVThyV5rG_KESJ3ROjM5Tm6PhlYIWQ'}]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:654 [perf: Starting for frame:alarm]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:664 [Sequence of detection types to execute: ['object']]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:669 [============ Frame: alarm Running object detection type in sequence ==================]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG3 detect_sequence.py:689 [object has a same_model_sequence strategy of first]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:701 [--------- Frame:alarm Running variation: #1 -------------]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:136 [detect extracted image dimensions as: 800wx1422h]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:50 [Waiting for pyzm_uid33_gpu_lock portalock...]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:52 [Got pyzm_uid33_gpu_lock portalock]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 yolo.py:160 [|---------- YOLO (input image: 800w1422h, model resize dimensions: 416w416h) ----------|]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:68 [Released pyzm_uid33_gpu_lock portalock]
08/11/22 20:42:12 zmesdetect_m1[4359] ERR detect_sequence.py:713 [Error running model: invalid index to scalar variable.]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:714 [Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/detect_sequence.py", line 710, in detect_stream
_b,_l,_c,_m = m.detect(image=frame)
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/object.py", line 65, in detect
b,l,c,_model_names = self.model.detect(image)
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/yolo.py", line 168, in detect
ln = self.get_output_layers()
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/yolo.py", line 129, in get_output_layers
output_layers = [
File "/usr/local/lib/python3.9/dist-packages/pyzm/ml/yolo.py", line 130, in
layer_names[i[0] - 1] for i in self.net.getUnconnectedOutLayers()
IndexError: invalid index to scalar variable.
]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 detect_sequence.py:770 [We did not find any object matches in frame: alarm]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG2 yolo.py:64 [pyzm_uid33_gpu_lock portalock already released]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 detect_sequence.py:827 [perf: TOTAL detection sequence (with image loads) took: 306.11 ms to process 50156]
08/11/22 20:42:12 zmesdetect_m1[4359] DBG1 zm_detect.py:557 [Closing logs]
from mlapi.
The error shows up with opencv/contrib 4.6.0-dev only
There is no problem with opencv/contrib 4.5.5
from mlapi.
I'll post a link to the fix and how to apply it here shortly
from mlapi.
See this issue thread and apply the same fix
ZoneMinder/zmeventnotification#416
from mlapi.
After applying fix in ZoneMinder/zmeventnotification#416 now error "IndexError: invalid index to scalar variable" disapeared with opencv-contrib 4.6.0
But I experience now object_detect does not match anything. Not sure what it came from, but I tried delete /var/lib/zmeventnotification and install ES again by install.sh . It used to match/detect person pretty well before updated opencv 4.6.0
Is there anything alse to be reset ?
08/12/22 20:04:46 zmesdetect_m1[33801] INF ZMLog.py:292 [Setting up signal handler for logs]
08/12/22 20:04:46 zmesdetect_m1[33801] INF ZMLog.py:301 [Switching global logger to ZMLog]
08/12/22 20:04:46 zmesdetect_m1[33801] INF zm_detect.py:284 [---------| app:6.1.28, pyzm:0.3.56, ES:6.1.28
, OpenCV:4.6.0-dev|------------]
08/12/22 20:04:46 zmesdetect_m1[33801] INF utils.py:405 [Reading config from: /etc/zm/objectconfig.ini]
08/12/22 20:04:46 zmesdetect_m1[33801] INF utils.py:410 [Reading secrets from: /etc/zm/secrets.ini]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !ZM_PORTAL]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !ZM_USER]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !ZM_PASSWORD]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !ZM_API_PORTAL]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !ML_USER]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !ML_PASSWORD]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:382 [Secret token found in config: !PLATEREC_ALPR_KEY]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG1 utils.py:445 [allowing self-signed certs to work...]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG2 utils.py:455 [Now checking for monitor overrides]
08/12/22 20:04:46 zmesdetect_m1[33801] DBG3 utils.py:522 [Finally, doing parameter substitution]
08/12/22 20:04:46 zmesdetect_m1[33801] INF zm_detect.py:309 [Importing local classes for Object/Face]
08/12/22 20:04:47 zmesdetect_m1[33801] INF zm_detect.py:334 [Connecting with ZM APIs]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 api.py:72 [API SSL certificate check has been disbled]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 api.py:181 [using username/password for login]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 api.py:210 [Using new token API]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 api.py:217 [Access token expires on:2022-08-12 22:04:47.369973 [7200s]]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 api.py:221 [Refresh token expires on:2022-08-13 20:04:47.370239 [86400s]]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 zm_detect.py:342 [using ml_sequence]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 zm_detect.py:354 [using stream_sequence]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 detect_sequence.py:160 [Resetting models, will be loaded on next run]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG3 detect_sequence.py:634 [Using automatic locking as we are switching between models]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 Media.py:51 [Media get SSL certificate check has been disbled]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 Media.py:99 [Using URL 50365 for stream]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 Media.py:114 [We will only process frames: ['snapshot', 'alarm']]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 Media.py:137 [No need to start streams, we are picking images from https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50365]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG3 Media.py:271 [Reading https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50365&fid=snapshot]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG3 api.py:144 [No need to relogin as access token still has 119.99991481666666 minutes remaining]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG3 api.py:272 [make_request called with url=https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50365&fid=snapshot payload={} type=get query={'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJab25lTWluZGVyIiwiaWF0IjoxNjYwMzIzODg3LCJleHAiOjE2NjAzMzEwODcsInVzZXIiOiJhZG1pbiIsInR5cGUiOiJhY2Nlc3MifQ.gKNSwpiE3Ei6-kSiz1L8mxUvx_GjRt24k8VB3JXw8O4'}]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 detect_sequence.py:654 [perf: Starting for frame:snapshot]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 detect_sequence.py:664 [Sequence of detection types to execute: ['object', 'face']]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 detect_sequence.py:669 [============ Frame: snapshot Running object detection type in sequence ==================]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 detect_sequence.py:174 [Skipping TPU object detection as it is disabled]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 detect_sequence.py:178 [Loading sequence: YoloV4 GPU/CPU]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 detect_sequence.py:179 [Initializing model type:object with options:{'name': 'YoloV4 GPU/CPU', 'enabled': 'yes', 'object_config': '/var/lib/zmeventnotification/models/yolov4/yolov4.cfg', 'object_weights': '/var/lib/zmeventnotification/models/yolov4/yolov4.weights', 'object_labels': '/var/lib/zmeventnotification/models/yolov4/coco.names', 'object_min_confidence': 0.3, 'object_framework': 'opencv', 'object_processor': 'gpu', 'gpu_max_processes': 1, 'gpu_max_lock_wait': 100, 'cpu_max_processes': 3, 'cpu_max_lock_wait': 100, 'max_detection_size': '90%', 'disable_locks': 'no'}]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 yolo.py:54 [portalock: max:1, name:pyzm_uid33_gpu_lock, timeout:100]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG3 detect_sequence.py:689 [object has a same_model_sequence strategy of first]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 detect_sequence.py:701 [--------- Frame:snapshot Running variation: #1 -------------]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 yolo.py:152 [detect extracted image dimensions as: 800wx1422h]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 yolo.py:68 [Waiting for pyzm_uid33_gpu_lock portalock...]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 yolo.py:70 [Got pyzm_uid33_gpu_lock portalock]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 yolo.py:102 [|--------- Loading "YoloV4 GPU/CPU" model from disk -------------|]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 yolo.py:113 [You are using OpenCV >= 4.5.4, making sure we fix getUnconnectedOutLayers() API]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 yolo.py:115 [perf: processor:gpu Yolo initialization (loading /var/lib/zmeventnotification/models/yolov4/yolov4.weights model from disk) took: 251.88 ms]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG2 yolo.py:130 [Setting CUDA backend for OpenCV]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG3 yolo.py:131 [If you did not set your CUDA_ARCH_BIN correctly during OpenCV compilation, you will get errors during detection related to invalid device/make_policy]
08/12/22 20:04:47 zmesdetect_m1[33801] DBG1 yolo.py:175 [|---------- YOLO (input image: 800w1422h, model resize dimensions: 416w416h) ----------|]
08/12/22 20:04:48 zmesdetect_m1[33801] DBG2 yolo.py:86 [Released pyzm_uid33_gpu_lock portalock]
08/12/22 20:04:48 zmesdetect_m1[33801] DBG1 yolo.py:199 [perf: processor:gpu Yolo detection took: 1274.97 ms]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 yolo.py:233 [perf: processor:gpu Yolo NMS filtering took: 0.78 ms]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 object.py:66 [core model detection over, got 0 objects. Now filtering]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 object.py:70 [Max object size found to be: 90%]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 object.py:78 [Converted 90% to 1023840.0]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 object.py:103 [Returning filtered list of 0 objects.]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 detect_sequence.py:711 [This model iteration inside object found: labels: [],conf:[]]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 detect_sequence.py:424 [Max object size found to be: 90%]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 detect_sequence.py:432 [Converted 90% to 1023840.0]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 detect_sequence.py:448 [No polygons, adding full image polygon: {'name': 'full_image', 'value': [(0, 0), (1080, 0), (1080, 1920), (0, 1920)], 'pattern': None}]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG3 detect_sequence.py:228 [resized polygons x=0.7407407407407407/y=0.740625: [{'name': 'full_image', 'value': [(0, 0), (800, 0), (800, 1422), (0, 1422)], 'pattern': None}]]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 detect_sequence.py:770 [We did not find any object matches in frame: snapshot]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG1 detect_sequence.py:669 [============ Frame: snapshot Running face detection type in sequence ==================]
08/12/22 20:04:49 zmesdetect_m1[33801] DBG2 detect_sequence.py:190 [Skipping TPU face detection as it is disabled]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 face_dlib.py:42 [perf: processor:cpu Face Recognition library load time took: 0.00 ms ]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 face_dlib.py:50 [Initializing face recognition with model:cnn upsample:1, jitters:0]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG2 face_dlib.py:73 [portalock: max:3, name:pyzm_uid33_cpu_lock, timeout:100]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 face_dlib.py:97 [trained file not found, reading from images and doing training...]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 face_dlib.py:100 [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]
08/12/22 20:04:50 zmesdetect_m1[33801] ERR face_train_dlib.py:135 [No known faces found to train, encoding file not created]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 face_train_dlib.py:152 [perf: Face Recognition training took: 9.64 ms]
08/12/22 20:04:50 zmesdetect_m1[33801] ERR face_dlib.py:110 [Error loading KNN model: [Errno 2] No such file or directory: '/var/lib/zmeventnotification/known_faces/faces.dat']
08/12/22 20:04:50 zmesdetect_m1[33801] DBG3 detect_sequence.py:689 [face has a same_model_sequence strategy of union]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 detect_sequence.py:701 [--------- Frame:snapshot Running variation: #1 -------------]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG1 face_dlib.py:164 [|---------- Dlib Face recognition (input image: 800w1422h) ----------|]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG3 face_dlib.py:174 [Face options={'name': 'DLIB based face recognition', 'enabled': 'yes', 'save_unknown_faces': 'yes', 'save_unknown_faces_leeway_pixels': 100, 'face_detection_framework': 'dlib', 'known_images_path': '/var/lib/zmeventnotification/known_faces', 'unknown_images_path': '/var/lib/zmeventnotification/unknown_faces', 'face_model': 'cnn', 'face_train_model': 'cnn', 'face_recog_dist_threshold': '0.6', 'face_num_jitters': '1', 'face_upsample_times': '1', 'gpu_max_processes': 1, 'gpu_max_lock_wait': 100, 'cpu_max_processes': 3, 'cpu_max_lock_wait': 100, 'max_size': 800, 'disable_locks': 'no'}]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG2 face_dlib.py:123 [Waiting for pyzm_uid33_cpu_lock portalock...]
08/12/22 20:04:50 zmesdetect_m1[33801] DBG2 face_dlib.py:125 [Got pyzm_uid33_cpu_lock lock...]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 face_dlib.py:206 [perf: processor:cpu Finding faces took 19282.68 ms]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 face_dlib.py:141 [Released pyzm_uid33_cpu_lock portalock]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 face_dlib.py:218 [perf: processor:cpu Computing face recognition distances took 0.97 ms]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 detect_sequence.py:711 [This model iteration inside face found: labels: [],conf:[]]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 detect_sequence.py:424 [Max object size found to be: 90%]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 detect_sequence.py:432 [Converted 90% to 1023840.0]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 detect_sequence.py:770 [We did not find any face matches in frame: snapshot]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG3 Media.py:271 [Reading https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50365&fid=alarm]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG3 api.py:144 [No need to relogin as access token still has 119.62694315 minutes remaining]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG3 api.py:272 [make_request called with url=https://zm.webtocloud.net:44313/zm/index.php?view=image&eid=50365&fid=alarm payload={} type=get query={'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJab25lTWluZGVyIiwiaWF0IjoxNjYwMzIzODg3LCJleHAiOjE2NjAzMzEwODcsInVzZXIiOiJhZG1pbiIsInR5cGUiOiJhY2Nlc3MifQ.gKNSwpiE3Ei6-kSiz1L8mxUvx_GjRt24k8VB3JXw8O4'}]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 detect_sequence.py:654 [perf: Starting for frame:alarm]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 detect_sequence.py:664 [Sequence of detection types to execute: ['object', 'face']]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 detect_sequence.py:669 [============ Frame: alarm Running object detection type in sequence ==================]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG3 detect_sequence.py:689 [object has a same_model_sequence strategy of first]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 detect_sequence.py:701 [--------- Frame:alarm Running variation: #1 -------------]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 yolo.py:152 [detect extracted image dimensions as: 800wx1422h]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 yolo.py:68 [Waiting for pyzm_uid33_gpu_lock portalock...]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG2 yolo.py:70 [Got pyzm_uid33_gpu_lock portalock]
08/12/22 20:05:09 zmesdetect_m1[33801] DBG1 yolo.py:175 [|---------- YOLO (input image: 800w1422h, model resize dimensions: 416w416h) ----------|]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 yolo.py:86 [Released pyzm_uid33_gpu_lock portalock]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG1 yolo.py:199 [perf: processor:gpu Yolo detection took: 2145.69 ms]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 yolo.py:233 [perf: processor:gpu Yolo NMS filtering took: 1.05 ms]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 object.py:66 [core model detection over, got 0 objects. Now filtering]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 object.py:70 [Max object size found to be: 90%]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 object.py:78 [Converted 90% to 1023840.0]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 object.py:103 [Returning filtered list of 0 objects.]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 detect_sequence.py:711 [This model iteration inside object found: labels: [],conf:[]]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 detect_sequence.py:424 [Max object size found to be: 90%]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 detect_sequence.py:432 [Converted 90% to 1023840.0]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 detect_sequence.py:770 [We did not find any object matches in frame: alarm]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG1 detect_sequence.py:669 [============ Frame: alarm Running face detection type in sequence ==================]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG3 detect_sequence.py:689 [face has a same_model_sequence strategy of union]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG1 detect_sequence.py:701 [--------- Frame:alarm Running variation: #1 -------------]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG1 face_dlib.py:164 [|---------- Dlib Face recognition (input image: 800w1422h) ----------|]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG3 face_dlib.py:174 [Face options={'name': 'DLIB based face recognition', 'enabled': 'yes', 'save_unknown_faces': 'yes', 'save_unknown_faces_leeway_pixels': 100, 'face_detection_framework': 'dlib', 'known_images_path': '/var/lib/zmeventnotification/known_faces', 'unknown_images_path': '/var/lib/zmeventnotification/unknown_faces', 'face_model': 'cnn', 'face_train_model': 'cnn', 'face_recog_dist_threshold': '0.6', 'face_num_jitters': '1', 'face_upsample_times': '1', 'gpu_max_processes': 1, 'gpu_max_lock_wait': 100, 'cpu_max_processes': 3, 'cpu_max_lock_wait': 100, 'max_size': 800, 'disable_locks': 'no'}]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 face_dlib.py:123 [Waiting for pyzm_uid33_cpu_lock portalock...]
08/12/22 20:05:12 zmesdetect_m1[33801] DBG2 face_dlib.py:125 [Got pyzm_uid33_cpu_lock lock...]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG1 face_dlib.py:206 [perf: processor:cpu Finding faces took 8613.39 ms]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG1 face_dlib.py:141 [Released pyzm_uid33_cpu_lock portalock]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG1 face_dlib.py:218 [perf: processor:cpu Computing face recognition distances took 0.28 ms]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG2 detect_sequence.py:711 [This model iteration inside face found: labels: [],conf:[]]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG2 detect_sequence.py:424 [Max object size found to be: 90%]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG2 detect_sequence.py:432 [Converted 90% to 1023840.0]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG2 detect_sequence.py:770 [We did not find any face matches in frame: alarm]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG1 detect_sequence.py:827 [perf: TOTAL detection sequence (with image loads) took: 33440.35 ms to process 50365]
08/12/22 20:05:20 zmesdetect_m1[33801] DBG1 zm_detect.py:557 [Closing logs]
from mlapi.
The only thing changed in the fix is how the opencv version is processed so there really shouldn't be any issues.
Are you testing with an event that had previously detected objects?
from mlapi.
I will test more thorougly
Just wanted to know do I need to reset/cleanup anything else in addition to /var/lib/zmeventnotification and python3 bindings zmes_hook_helpers and pyzm , in my case located in /usr/local/lib/python3.9/dist-packages ?
from mlapi.
No, replacing yolo.py will not affect anything else and you will not need to change anything else. It's a rolling hot fix that shouldn't do anything but take care of the index error you were seeing before.
from mlapi.
Seems issue with detected objects is somehow connected with ZM only.
Fixed yolo.py is working just fine with opencv-contrib 4.6.0
from mlapi.
So the fixed yolo.py is no longer working with ZoneMinder 1.36.32. OpenCV 4.6.0-dev Python 3.10.6.
I had to remove a few lines from the code to get things working. I posted more details here:
https://forums.zoneminder.com/viewtopic.php?t=32223
from mlapi.
By the fixed yolo.py do you mean the one I uploaded or do you mean the the one using/not using the indices based on opencv version?
from mlapi.
Related Issues (20)
- Error executing remote API: Extra data: line 1 column 329 (char 328) HOT 8
- No timeout or no answer from coral Google TPU HOT 3
- Yolo v5 support HOT 1
- Support ML and stream sequences
- missing yolov3_classes.txt HOT 2
- remote ML requirements question HOT 6
- ValueError: malformed node or string: <_ast.Name object at 0x7f0e4cec2390> HOT 4
- show_percent=no not taken into account by mlapi HOT 6
- fix crappy ml_overrides approach from zm_detect to mlapi HOT 1
- platerecognizer chosen image quality HOT 2
- mlapi does not behave as ES does HOT 6
- mlapi crash on HOT 13
- RuntimeError: Internal: Unsupported data type in custom op handler HOT 2
- Unable to run mlapi as a service. Something to do with @jwt_required() HOT 4
- TypeError: 'float' object is not subscriptable HOT 2
- Issue with "Get an Access Token" HOT 6
- ImportError: cannot import name 'soft_unicode' from 'markupsafe' HOT 1
- Dockerised version
- Secrets file is required, not optional HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlapi.