roflcoopter / viseron

Self-hosted, local only NVR and AI Computer Vision software. With features such as object detection, motion detection, face recognition and more, it gives you the power to keep an eye on your home, office or any other place you want to monitor.
MIT License
1.66k stars 171 forks source link

Compreface face recognition not passing to HomeAssistant #482

Open Maxxell opened 1 year ago

Maxxell commented 1 year ago

I created Compreface it in its own container and it went well. I did the photo training in the compreface web portal and was able to successfully use that web portal to hand the AI a test image and it did see the right face. So far, so good.

I set viseron config with train:false and rebooted (and removed all but 1 camera for testing purposes)

I do now see "person1 detected" as an mqtt option in HomeAssistant under this camera!

However, when I walk over to the camera, it does not identify the face from the actual camera video stream. There is nothing in the HomeAssistant logs that shows that Face Detected Person1 ever turned to On from Off. There is a time-stamped entry in HA for the motion detection and person detection, but it doesn't mention the face was detected.

Am I missing a step in the setup? How do I get the face detection applied to the video stream?

Originally posted by @Maxxell in https://github.com/roflcoopter/viseron/issues/473#issuecomment-1422712335

Maxxell commented 1 year ago

I searched the viseron logs for anything that says "face" and found nothing erroneous. It appears to be running...?

[2023-02-08 15:45:21] [DEBUG ] [viseron.components.data_stream] - Subscribing to data topic event/frontdoorcam/face/expired/person1, <bound method FaceDetectionBinarySensor.face_expired of <viseron.domains.face_recognition.binary_sensor.FaceDetectionBinarySensor object at 0x7f07d3c36d90>> [2023-02-08 15:45:21] [DEBUG ] [viseron.components.data_stream] - Subscribing to data topic event/frontdoorcam/face/detected/person1, <bound method FaceDetectionBinarySensor.face_detected of <viseron.domains.face_recognition.binary_sensor.FaceDetectionBinarySensor object at 0x7f07d3c36d90>> [2023-02-08 15:45:21] [INFO ] [viseron.components] - Setup of domain face_recognition for component compreface with identifier frontdoorcam took 0.0 seconds [2023-02-08 15:45:16] [INFO ] [viseron.components] - Setting up component compreface [2023-02-08 15:45:16] [DEBUG ] [viseron.components.data_stream] - Subscribing to data topic event/mqtt/entity_added, <bound method HassMQTTInterface.entity_added of <viseron.components.mqtt.homeassistant.HassMQTTInterface object at 0x7f07d4a94520>> [2023-02-08 15:45:17] [INFO ] [viseron.components] - Setup of component compreface took 0.0 seconds [2023-02-08 15:45:20] [INFO ] [viseron.components] - Setting up domain face_recognition for component compreface with identifier frontdoorcam [2023-02-08 15:45:20] [DEBUG ] [viseron.components] - Domain face_recognition for component compreface with identifier frontdoorcam will wait for dependencies ['domain: camera, identifier: frontdoorcam'] [2023-02-08 15:45:21] [DEBUG ] [viseron.components.compreface.face_recognition.frontdoorcam] - Post processor will run for labels: ['person'] [2023-02-08 15:45:21] [DEBUG ] [viseron.states] - Adding entity FrontDoorCam Face Detected Person1 from component compreface [2023-02-08 15:45:21] [DEBUG ] [viseron.states] - Setting state of binary_sensor.frontdoorcam_face_detected_person1 to state: off, attributes {'name': 'FrontDoorCam Face Detected Person1', 'domain': 'binary_sensor'}

roflcoopter commented 1 year ago

Could you show me your full config?

Maxxell commented 1 year ago

I tried copy/pasting here but it looked terrible. So I tried making my own github repository to share my yaml. With any luck, you'll find it here, called "config2.yaml"

https://github.com/Maxxell/ViserOmen

gofaster commented 1 year ago

Instead of host: compreface, try the IP address of your compreface instance. Name lookup may be failing.

You can fence your config/code block with with three backticks ` to preserve the yaml formatting. https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

roflcoopter commented 1 year ago

Your config looks OK from what i can see. Try enabling debug logging and observer whats going on when you step infront of the camera.

Maxxell commented 1 year ago

I pulled a log from the Compreface container and found a few setup lines at the top that seem inconsequential. Then a lot of rows of one type and an inexplicable change to another type of rows overnight on Feb 9.

More specifically...

~200 rows of this (date stamped Feb 8 though Feb 9): 192.168.6.47 - CommonClientId [09/Feb/2023:15:03:15 +0000] "POST /admin/oauth/token?grant_type=refresh_token&scope=all HTTP/1.1" 200 0 "http://192.168.4.73:8010/dashboard?app=994a3654-d74e-45f3-b3b9-900e91cf0492&model=2242cbc0-cf6d-4016-ab88-107e774a5b14&type=RECOGNITION" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0"

Then ~600 rows of this (data from Feb 10 through Feb 13): 172.25.0.1 - - [10/Feb/2023:21:04:53 +0000] "POST /api/v1/recognition/recognize?&limit=0&det_prob_threshold=0.8&prediction_count=1&status=False HTTP/1.1" 400 81 "-" "python-requests/2.28.1"

It never says "status=True" even though I walked in front of that camera several times. Note that 192.168.6.47 is my workstation, so I guess its logging me changing settings and whatnot. 192.168.4.73:8010 gets me to CompreFace, so that URL seems right.

Any ideas?

Maxxell commented 1 year ago

Instead of host: compreface, try the IP address of your compreface instance. Name lookup may be failing.

Updated in my config. It didn't help.

Maxxell commented 1 year ago

enabling debug logging

Do you mean in Compreface or Viseron? Or HomeAssistant?

Sub-question: How do I enable debug logging?

roflcoopter commented 1 year ago

In Viseron, you use the logger component for that

https://viseron.netlify.app/components-explorer/components/logger

Maxxell commented 1 year ago

I already had logger in there set at debug level. Is that the most-verbose level? Should I switch it to "info"?

roflcoopter commented 1 year ago

Debug is the most verbose!

Now I need you to restart viseron, step infront of your camera so it detects you and then attach the full logs here

Maxxell commented 1 year ago

I walked in front of both cameras, then came inside and immediately grabbed a log. I think this is the interesting part:

[2023-02-14 10:49:01] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Motion detected [2023-02-14 10:49:01] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_motion_detected to state: on, attributes {'name': 'GarageCam Motion Detected', 'domain': 'binary_sensor'} [2023-02-14 10:49:01] [DEBUG ] [viseron.components.nvr.nvr.garagecam] - Starting object detector [2023-02-14 10:49:01] [DEBUG ] [viseron.states] - Setting state of sensor.garagecam_operation_state to state: scanning_for_objects, attributes {'name': 'GarageCam Operation State', 'domain': 'sensor'} [2023-02-14 10:49:02] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0 [2023-02-14 10:49:02] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.523 [2023-02-14 10:49:02] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [{'label': 'person', 'confidence': 0.97, 'rel_width': 0.231, 'rel_height': 0.586, 'rel_x1': 0.319, 'rel_y1': 0.408, 'rel_x2': 0.55, 'rel_y2': 0.994}] [2023-02-14 10:49:02] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected_person to state: on, attributes {'name': 'GarageCam Object Detected Person', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffbcc75bbb0>]} [2023-02-14 10:49:02] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: on, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffbcc75bbb0>]} [2023-02-14 10:49:02] [INFO ] [viseron.components.ffmpeg.recorder.garagecam] - Starting recorder [2023-02-14 10:49:02] [DEBUG ] [viseron.components.ffmpeg.recorder.garagecam] - Saving thumbnail in /recordings/thumbnails/GarageCam [2023-02-14 10:49:02] [DEBUG ] [viseron.components.ffmpeg.recorder.garagecam] - Pausing segment cleanup [2023-02-14 10:49:02] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_recorder to state: on, attributes {'name': 'GarageCam Recorder', 'domain': 'binary_sensor', 'start_time': datetime.datetime(2023, 2, 14, 10, 49, 2, 380753), 'start_timestamp': 1676389742.380753, 'end_time': None, 'end_timestamp': None, 'date': '2023-02-14', 'path': '/recordings/garagecam/2023-02-14/10:49:02.mkv', 'filename': '10:49:02.mkv', 'thumbnail_path': '/recordings/garagecam/2023-02-14/10:49:02.jpg', 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffbcc75bbb0>]} [2023-02-14 10:49:02] [DEBUG ] [viseron.states] - Setting state of image.garagecam_latest_thumbnail to state: unknown, attributes {'name': 'GarageCam Latest Thumbnail', 'domain': 'image', 'start_time': '2023-02-14T10:49:02.380753', 'path': '/recordings/garagecam/2023-02-14/10:49:02.mkv', 'thumbnail_path': '/recordings/garagecam/2023-02-14/10:49:02.jpg'} [2023-02-14 10:49:02] [DEBUG ] [viseron.states] - Setting state of sensor.garagecam_operation_state to state: recording, attributes {'name': 'GarageCam Operation State', 'domain': 'sensor'} [2023-02-14 10:49:02] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - CompreFace response: {'result': [{'box': {'probability': 0.88674, 'x_max': 374, 'y_max': 209, 'x_min': 189, 'y_min': 17}, 'subjects': [{'subject': 'Josh', 'similarity': 0.81838}]}]} [2023-02-14 10:49:02] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - Face found: {'subject': 'Josh', 'similarity': 0.81838} [2023-02-14 10:49:03] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0.00071 [2023-02-14 10:49:03] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.50934 [2023-02-14 10:49:03] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [{'label': 'person', 'confidence': 0.97, 'rel_width': 0.228, 'rel_height': 0.584, 'rel_x1': 0.314, 'rel_y1': 0.408, 'rel_x2': 0.542, 'rel_y2': 0.992}] [2023-02-14 10:49:03] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: on, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffbeb7ccd90>]} [2023-02-14 10:49:03] [DEBUG ] [viseron.states] - Setting state of sensor.garagecam_object_detector_fps to state: 36.7, attributes {'name': 'GarageCam Object Detector FPS', 'domain': 'sensor', 'preprocessor_fps': 263.6, 'inference_fps': 36.9, 'theoretical_max_fps': 36.7} [2023-02-14 10:49:03] [DEBUG ] [viseron.states] - Setting state of sensor.frontdoorcam_object_detector_fps to state: 35.2, attributes {'name': 'FrontDoorCam Object Detector FPS', 'domain': 'sensor', 'preprocessor_fps': 71.0, 'inference_fps': 35.4, 'theoretical_max_fps': 35.2} [2023-02-14 10:49:03] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - CompreFace response: {'result': [{'box': {'probability': 0.99838, 'x_max': 370, 'y_max': 205, 'x_min': 204, 'y_min': 24}, 'subjects': [{'subject': 'Josh', 'similarity': 0.68681}]}]} [2023-02-14 10:49:03] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - Face found: {'subject': 'Josh', 'similarity': 0.68681} [2023-02-14 10:49:04] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0 [2023-02-14 10:49:04] [DEBUG ] [viseron.components.webserver.websocket_api] - Received {"type":"ping","command_id":19} [2023-02-14 10:49:04] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.67897 [2023-02-14 10:49:04] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [{'label': 'person', 'confidence': 0.97, 'rel_width': 0.192, 'rel_height': 0.586, 'rel_x1': 0.266, 'rel_y1': 0.406, 'rel_x2': 0.458, 'rel_y2': 0.992}] [2023-02-14 10:49:04] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: on, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffbebae5a30>]} [2023-02-14 10:49:05] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0 [2023-02-14 10:49:05] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28} [2023-02-14 10:49:05] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.73066 [2023-02-14 10:49:05] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [{'label': 'person', 'confidence': 0.98, 'rel_width': 0.156, 'rel_height': 0.519, 'rel_x1': 0.278, 'rel_y1': 0.475, 'rel_x2': 0.434, 'rel_y2': 0.994}] [2023-02-14 10:49:05] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: on, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffbebaeb5e0>]} [2023-02-14 10:49:05] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28} [2023-02-14 10:49:06] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0 [2023-02-14 10:49:06] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.53292 [2023-02-14 10:49:06] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [{'label': 'person', 'confidence': 0.97, 'rel_width': 0.111, 'rel_height': 0.483, 'rel_x1': 0.255, 'rel_y1': 0.486, 'rel_x2': 0.366, 'rel_y2': 0.969}] [2023-02-14 10:49:06] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: on, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffb0dbbd3d0>]} [2023-02-14 10:49:06] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28} [2023-02-14 10:49:07] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0.00071 [2023-02-14 10:49:07] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.66458 [2023-02-14 10:49:07] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [{'label': 'person', 'confidence': 0.95, 'rel_width': 0.072, 'rel_height': 0.359, 'rel_x1': 0.331, 'rel_y1': 0.519, 'rel_x2': 0.403, 'rel_y2': 0.878}] [2023-02-14 10:49:07] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: on, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 1, 'objects': [<viseron.domains.object_detector.detected_object.DetectedObject object at 0x7ffb0dbc8190>]} [2023-02-14 10:49:07] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28} [2023-02-14 10:49:08] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0.00071 [2023-02-14 10:49:08] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.61872 [2023-02-14 10:49:08] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [] [2023-02-14 10:49:08] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected_person to state: off, attributes {'name': 'GarageCam Object Detected Person', 'domain': 'binary_sensor', 'count': 0, 'objects': []} [2023-02-14 10:49:08] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_object_detected to state: off, attributes {'name': 'GarageCam Object Detected', 'domain': 'binary_sensor', 'count': 0, 'objects': []} [2023-02-14 10:49:08] [DEBUG ] [viseron.components.compreface.face_recognition.garagecam] - Expiring face Josh [2023-02-14 10:49:09] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0 [2023-02-14 10:49:09] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.15307 [2023-02-14 10:49:09] [DEBUG ] [viseron.components.darknet.object_detector.garagecam] - Objects: [] [2023-02-14 10:49:10] [DEBUG ] [viseron.components.mog2.motion_detector.frontdoorcam] - Max motion area: 0.00161 [2023-02-14 10:49:10] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Max motion area: 0.02408 [2023-02-14 10:49:10] [DEBUG ] [viseron.components.mog2.motion_detector.garagecam] - Motion stopped [2023-02-14 10:49:10] [DEBUG ] [viseron.states] - Setting state of binary_sensor.garagecam_motion_detected to state: off, attributes {'name': 'GarageCam Motion Detected', 'domain': 'binary_sensor'}

Maxxell commented 1 year ago

It looks like there are 2 problems:

  1. GarageCam does identify my face, but HomeAssistant never hears about it.
  2. Frontdoorcam never identifies my face.

Thoughts on these?

roflcoopter commented 1 year ago

Judging from your log, frontdoorcam never searches for any objects because motion wasnt triggered. As you can see from the garagecam, the face recognition is invoked after every detected person. If you could post the full log then we could figure out if its not detecting anything at all, but my guess is that this log snippet simply doesnt contain the frontoodrcam detection portion.

Are you 100% sure it doesnt show up in Home Assistant? Viseron relays all internal state changes over MQTT. Could you show me a screenshot of the devices page for the GarageCam in Home Assistant?

Maxxell commented 1 year ago

Face Detection in HA image

Person Detection showing positive hit that correllates with the logs image

_viseron_logs.txt

Maxxell commented 1 year ago

Update: I set up new HA automations to see more whats going on and a subsequent experiment confirms the same result. GarageCam doesn't notify HA about the face, and FrontDoorCam never even sees a person. For reference, I have frigate watching the same FrontDoorCam feed, and it reliably sees the person in the feed.

roflcoopter commented 1 year ago

Just tried it myself and i get stat updates in Home Assistant: image

Logs of the event:

[2023-02-19 16:35:24] [INFO    ] [viseron.components.gstreamer.recorder.viseron_cuda_camerag] - Starting recorder
[2023-02-19 16:35:24] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Starting motion detector
[2023-02-19 16:35:29] [INFO    ] [viseron.components.ffmpeg.recorder.viseron_cuda_camera] - Starting recorder
[2023-02-19 16:35:29] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camera] - Starting motion detector
[2023-02-19 16:35:35] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'result': [{'age': {'probability': 0.697334885597229, 'high': 32, 'low': 25}, 'gender': {'probability': 1.0, 'value': 'female'}, 'box': {'probability': 0.94446, 'x_max': 351, 'y_max': 284, 'x_min': 92, 'y_min': 12}, 'subjects': [{'subject': 'jesper', 'similarity': 0.50732}], 'execution_time': {'age': 4572.0, 'gender': 4554.0, 'detector': 484.0, 'calculator': 39.0}}], 'plugins_versions': {'age': 'agegender.AgeDetector', 'gender': 'agegender.GenderDetector', 'detector': 'facenet.FaceDetector', 'calculator': 'facenet.Calculator'}}
[2023-02-19 16:35:35] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - Face found: {'subject': 'jesper', 'similarity': 0.50732}
[2023-02-19 16:35:40] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - Expiring face jesper
[2023-02-19 16:35:41] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 19
[2023-02-19 16:35:42] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 18
[2023-02-19 16:35:42] [DEBUG   ] [viseron.components.webserver.websocket_api] - Received {"type":"ping","command_id":6}
[2023-02-19 16:35:43] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 17
[2023-02-19 16:35:44] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'result': [{'age': {'probability': 0.9789593815803528, 'high': 32, 'low': 25}, 'gender': {'probability': 0.9792945981025696, 'value': 'male'}, 'box': {'probability': 0.99997, 'x_max': 353, 'y_max': 288, 'x_min': 111, 'y_min': 8}, 'subjects': [{'subject': 'jesper', 'similarity': 0.99279}], 'execution_time': {'age': 4293.0, 'gender': 4286.0, 'detector': 593.0, 'calculator': 39.0}}], 'plugins_versions': {'age': 'agegender.AgeDetector', 'gender': 'agegender.GenderDetector', 'detector': 'facenet.FaceDetector', 'calculator': 'facenet.Calculator'}}
[2023-02-19 16:35:44] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - Face found: {'subject': 'jesper', 'similarity': 0.99279}
[2023-02-19 16:35:44] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 16
[2023-02-19 16:35:44] [DEBUG   ] [viseron.components.webserver.websocket_api] - Received {"type":"ping","command_id":7}
[2023-02-19 16:35:45] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28}
[2023-02-19 16:35:45] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 15
[2023-02-19 16:35:45] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 15
[2023-02-19 16:35:46] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28}
[2023-02-19 16:35:46] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 14
[2023-02-19 16:35:46] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camera] - Stopping recording in: 4
[2023-02-19 16:35:47] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28}
[2023-02-19 16:35:47] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 13
[2023-02-19 16:35:47] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camera] - Stopping recording in: 3
[2023-02-19 16:35:48] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28}
[2023-02-19 16:35:48] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camerag] - Stopping recording in: 12
[2023-02-19 16:35:48] [INFO    ] [viseron.components.nvr.nvr.viseron_cuda_camera] - Stopping recording in: 2
[2023-02-19 16:35:49] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - CompreFace response: {'message': 'No face is found in the given image', 'code': 28}
[2023-02-19 16:35:49] [DEBUG   ] [viseron.components.compreface.face_recognition.viseron_cuda_camera2] - Expiring face jesper

Could you maybe try to stop Viseron, delete all the Viseron MQTT topics in the broker and restart Viseron?