Facial recognition & room presence using Double Take & Frigate

Well if you are comfortable with the way frigate works you could use that for recording. I prefer being able to use BI like a more traditional NVR and don’t use frigate to record any video…just do object recognition.
I connected my cameras to frigate (2nd stream) as well as BI (main stream)…not one through the other.
I tried out both versions of deepstack, but not for over a year now.
I not using double take at all yet, but I plan to play with it. I think it could be useful to tell who is where at certain times.
If you don’t think facial recognition is worth much to you then I would suggest you go check out frigate and see if that works for your needs a bit better. It is more object detection and it is quite good at it.
HTH

the ui starts i’m able to enter and than it always alert me this “Error during synchronization between servers: Connection refused (Connection refused) executing GET http://localhost:3000/status” when im trying to enter the app to get a key,

but the main problem really is that double take keeps crushing since i update to latest version

Hey @Ben_Asraf, have you verified your system has AVX2? I’ve updated the add-on to check for that before starting, but it’s a requirement for CompreFace.

I installed Double-Take latest beta 1.7.0 but I get gateway error. 1.6.0 works properly. I openene an issue on github . Maybe you can have a look @Jako ? :slight_smile:

[BUG] Gateway Error in version 1.7.0 · Issue #173 · jakowenko/double-take (github.com)

thats my problem too

I will take a look at it tonight and report back! For now it should work if you use port 3000 directly and don’t go through ingress.

i doesnt because the add on keeps stopping at least for me

I had to change the port to another as 3000 is already in use but Still same issue. But another strange issue after trying to run the container. The Zwavejs addon and integration stops working. I will investigate this. It happened after my last Backup .(

What do the logs of your add on say?

thats what i have in the log
info: Double Take v1.7.0-bf3e911
info: MQTT: connected
info: MQTT: subscribed to frigate/events, frigate/+/person/snapshot

Maybe you can tell me what I am doing wrong? :slightly_frowning_face:

I see the cams on frigate and I see events in frigate.
I see detection on docker

but in double take its show me “no files”

this is the conf in double take

I have logs from double take

21-12-05 08:20:53 info: processing front: 704605e4-b3fc-469c-a73e-f624bfe24764
21-12-05 08:20:53 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-05 08:20:53 info: done processing front: 704605e4-b3fc-469c-a73e-f624bfe24764 in 0.01 sec
21-12-05 08:20:53 info: {
  id: '704605e4-b3fc-469c-a73e-f624bfe24764',
  duration: 0.01,
  timestamp: '2021-12-05T06:20:53.531Z',
  attempts: 1,
  camera: 'front',
  zones: [],
  matches: [],
  misses: []
}
21-12-05 08:20:54 info: processing Door Camera: 1638685244.83641-xw0vbs
21-12-05 08:20:54 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 1)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-05 08:20:54 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-05 08:20:54 info: done processing Door Camera: 1638685244.83641-xw0vbs in 0.18 sec
21-12-05 08:20:54 info: {
  id: '1638685244.83641-xw0vbs',
  duration: 0.18,
  timestamp: '2021-12-05T06:20:54.269Z',
  attempts: 2,
  camera: 'Door Camera',
  zones: [],
  matches: [],
  misses: []
}
21-12-05 08:21:02 info: processing door camera: d343ebb2-3837-447c-91ba-19566bef2ad9
21-12-05 08:21:02 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-05 08:21:02 info: done processing door camera: d343ebb2-3837-447c-91ba-19566bef2ad9 in 0.01 sec
21-12-05 08:21:02 info: {
  id: 'd343ebb2-3837-447c-91ba-19566bef2ad9',
  duration: 0.01,
  timestamp: '2021-12-05T06:21:02.125Z',
  attempts: 1,
  camera: 'door camera',
  zones: [],
  matches: [],
  misses: []
}
21-12-05 10:51:37 info: Double Take v1.7.0-bf3e911
21-12-05 10:51:37 info: MQTT: connected
21-12-05 10:51:37 info: MQTT: subscribed to frigate/events, frigate/+/person/snapshot
21-12-05 11:08:55 info: Double Take v1.7.0-bf3e911
21-12-05 11:08:55 info: MQTT: connected
21-12-05 11:08:55 info: MQTT: subscribed to frigate/events, frigate/+/person/snapshot
21-12-05 11:15:58 info: Double Take v1.7.0-bf3e911
21-12-05 11:15:58 info: MQTT: connected
21-12-05 11:15:58 info: MQTT: subscribed to frigate/events, frigate/+/person/snapshot

and that what I see in HA about the image_processing
4

this is the conf of image processing

image_processing:
  - platform: deepstack_object
    ip_address: 192.168.1.199
    port: 80
    save_file_folder: /config/www
    save_file_format: jpg
    always_save_latest_file: True
    targets:
      - target: person
        confidence: 60
    source:
      - entity_id: camera.door_camera_2
      - entity_id: camera.front

and this is the conf of frigate

cameras:
  Door Camera:
    ffmpeg:
      inputs:
        - path: rtsp://user:[email protected]:554/Streaming/Channels/101
          roles: 
            - detect
            - clips
    objects:
      track:
        - person
    snapshots:
      enabled: true
      timestamp: true
      bounding_box: true
      retain:
        default: 2


            
  Front:
    ffmpeg:
      inputs:
        - path: rtsp://user:[email protected]:554/Streaming/Channels/101
          roles: 
            - detect
            - clips
    objects:
      track:
        - person
    snapshots:
      enabled: true
      timestamp: true
      bounding_box: true
      retain:
        default: 2


    
detectors: 
  cpu1:
    type: cpu
  cpu2:
    type: cpu

why its not working to me?

Hey @Noy1122, it looks like you have a key set for DeepStack but don’t have it configured in your Double Take config.yml file, which is resulting in DeepStack API to throw 401 errors.

I tried to set API KEY but I still got errors, I need to make the API-KEY here?
I just change “mysecretkey” to 112233

docker run -e VISION-DETECTION=True -e API-KEY="mysecretkey" -v localstorage:/datastore -p 80:5000 deepquestai/deepstack

and then in the conf.yaml

image_processing:
  - platform: deepstack_object
    ip_address: 192.168.1.199
    port: 80
    api_key: 112233
    save_file_folder: /config/www/deepstack/snapshots/
    save_file_format: jpg
    always_save_latest_file: True
    targets:
      - target: person
        confidence: 60
    source:
      - entity_id: camera.door_camera_2
      - entity_id: camera.front

and in the double take conf

# Double Take
mqtt:
  host: 192.168.1.199
  username: XXXX
  password: XXXX
  
frigate:
  url: http://192.168.1.199:5000
  
  
detectors:
  deepstack:
    url: http://192.168.1.199:3002
    key: 112233

and I still got error

21-12-07 10:50:59 info: processing Door Camera: 1638867044.277462-wn6fkr
21-12-07 10:50:59 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 1)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-07 10:50:59 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-07 10:50:59 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-07 10:51:00 info: done processing Door Camera: 1638867044.277462-wn6fkr in 0.33 sec
21-12-07 10:51:00 info: {
  id: '1638867044.277462-wn6fkr',
  duration: 0.33,
  timestamp: '2021-12-07T08:51:00.019Z',
  attempts: 5,
  camera: 'Door Camera',
  zones: [],
  matches: [],
  misses: []
}
21-12-07 10:51:06 info: processing door camera: 8d19bfb9-f9a3-45ed-a881-e949e35cb25e
21-12-07 10:51:06 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-07 10:51:06 info: done processing door camera: 8d19bfb9-f9a3-45ed-a881-e949e35cb25e in 0.03 sec
21-12-07 10:51:06 info: {
  id: '8d19bfb9-f9a3-45ed-a881-e949e35cb25e',
  duration: 0.03,
  timestamp: '2021-12-07T08:51:06.804Z',
  attempts: 1,
  camera: 'door camera',
  zones: [],
  matches: [],
  misses: []

but now I dont have error 401

and its look good now
1111

I will check it with the camera when I come home, maybe its works now but I still no see matches

stil not working :slightly_frowning_face: :slightly_frowning_face:

this is the log from double take

}
21-12-07 15:53:31 info: processing front: ab5f2aab-98d0-448a-be27-cc4d6f634756
21-12-07 15:53:31 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-07 15:53:31 info: done processing front: ab5f2aab-98d0-448a-be27-cc4d6f634756 in 0.01 sec
21-12-07 15:53:31 info: {
  id: 'ab5f2aab-98d0-448a-be27-cc4d6f634756',
  duration: 0.01,
  timestamp: '2021-12-07T13:53:31.359Z',
  attempts: 1,
  camera: 'front',
  zones: [],
  matches: [],
  misses: []
}
21-12-07 15:53:34 info: processing door camera: 31e84128-2cbd-4c1b-b07d-63ab728a6622
21-12-07 15:53:34 error: TypeError: deepstack process error: Cannot read properties of undefined (reading 'flatMap')
    at Object.module.exports.normalize (/double-take/api/src/util/detectors/deepstack.js:68:39)
    at module.exports.normalize (/double-take/api/src/util/detectors/actions/index.js:8:25)
    at Object.module.exports.process (/double-take/api/src/util/process.util.js:142:33)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Promise.all (index 0)
    at async Object.module.exports.start (/double-take/api/src/util/process.util.js:120:17)
    at async module.exports.polling (/double-take/api/src/util/process.util.js:53:25)
    at async Promise.all (index 0)
    at async module.exports.start (/double-take/api/src/controllers/recognize.controller.js:148:7)
21-12-07 15:53:34 info: done processing door camera: 31e84128-2cbd-4c1b-b07d-63ab728a6622 in 0.01 sec
21-12-07 15:53:34 info: {
  id: '31e84128-2cbd-4c1b-b07d-63ab728a6622',
  duration: 0.01,
  timestamp: '2021-12-07T13:53:34.511Z',
  attempts: 1,
  camera: 'door camera',
  zones: [],
  matches: [],
  misses: []
}

@Noy1122 Can you go to localhost:3000/api/recognize/test and paste the output of the call here? That should be the raw DeepStack response.

yes of course. this is the log

[{"detector":"deepstack","status":200,"response":"<!DOCTYPE html><html lang=\"\"><head><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta id=\"theme-color\" name=\"theme-color\" content=\"#20262e\"><link rel=\"icon\" type=\"image/svg+xml\" href=\"./favicon.svg\"><link rel=\"apple-touch-icon\" href=\"./apple-touch-icon.png\"><meta name=\"apple-mobile-web-app-capable\" content=\"yes\"><link href=\"./splash/iphone-12-pro-max.png\" media=\"(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-12.png\" media=\"(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-12-mini.png\" media=\"(device-width: 375px) and (device-height: 812x) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-11-pro-max.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-11-pro.png\" media=\"(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-11.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-xs-max.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-xs.png\" media=\"(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-xr.png\" media=\"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)\" rel=\"apple-touch-startup-image\"><link href=\"./splash/iphone-x.png\" media=\"(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)\" rel=\"apple-touch-startup-image\"><link rel=\"manifest\" href=\"./manifest.json\"><link id=\"theme-link\" rel=\"stylesheet\" href=\"./themes/bootstrap4-dark-blue/theme.css\"><title>Double Take</title><link href=\"css/config.fb9b6e53.css\" rel=\"prefetch\"><link href=\"css/login.53072c61.css\" rel=\"prefetch\"><link href=\"css/match.783c2617.css\" rel=\"prefetch\"><link href=\"css/match~train.9952cffa.css\" rel=\"prefetch\"><link href=\"css/token.6d25f6b8.css\" rel=\"prefetch\"><link href=\"css/train.60c3ad3e.css\" rel=\"prefetch\"><link href=\"js/config.3d71a644.js\" rel=\"prefetch\"><link href=\"js/config~match~train.e6413dd2.js\" rel=\"prefetch\"><link href=\"js/login.8d1d24fe.js\" rel=\"prefetch\"><link href=\"js/match.ad7c4e70.js\" rel=\"prefetch\"><link href=\"js/match~train.f842f601.js\" rel=\"prefetch\"><link href=\"js/token.b4dfa748.js\" rel=\"prefetch\"><link href=\"js/train.f33d112b.js\" rel=\"prefetch\"><link href=\"css/chunk-vendors.1620483c.css\" rel=\"preload\" as=\"style\"><link href=\"css/index.9ac8d443.css\" rel=\"preload\" as=\"style\"><link href=\"js/chunk-vendors.0212d0c8.js\" rel=\"preload\" as=\"script\"><link href=\"js/index.e08325f8.js\" rel=\"preload\" as=\"script\"><link href=\"css/chunk-vendors.1620483c.css\" rel=\"stylesheet\"><link href=\"css/index.9ac8d443.css\" rel=\"stylesheet\"><script>\n        window.ingressUrl = '';\n        window.publicPath = '';\n      </script>\n      </head><body><noscript><strong>We're sorry but Double Take doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=\"app\"></div><script src=\"js/chunk-vendors.0212d0c8.js\"></script><script src=\"js/index.e08325f8.js\"></script></body></html>"}]

It looks like your DeepStack URL is wrong or something else is happening. That test endpoint should’ve returned the recognition results, instead it’s an HTML page from DeepStack.

Have you tried doing the DeepStack Python example scripts to make sure it’s working?

Hello Jako, since I updated to version 1.7.0, double take has stopped working. I have done every suggestion here with no luck. Is there a way to rollback to 1.6.0?

:slightly_frowning_face: :slightly_frowning_face: :slightly_frowning_face:
I dont kno what to do…
how can I test it with DeepStack Python example scripts?
when I send image_processing.scan from Developer Tools I see it on ubuntu

Same here . Would like to roll back .any ideas how as my backup got deleted by the system already