jakowenko / double-take

Unified UI and API for processing and training images for facial recognition.
https://hub.docker.com/r/jakowenko/double-take
MIT License
1.14k stars 88 forks source link

Double Take 2.0: Seeking Feedback and Ideas #343

Open jakowenko opened 6 months ago

jakowenko commented 6 months ago

Hello Double Take Community,

I'm excited to reconnect with you and introduce my plans for Double Take 2.0. I apologize for my absence and deeply appreciate your continued support and contributions during this time.

This journey began as a simple personal project, and it's awe-inspiring to see how it has grown. My first serious open-source project, now with over 1K+ GitHub stars, has been an incredibly humbling and gratifying experience, thanks to the positive community feedback over the years.

I'm eager to implement several enhancements, including upgrading the frontend to Vue 3 and transitioning the entire codebase to TypeScript for better code quality. Additionally, I plan to introduce an ORM for more efficient database management and plan to incorporate a queueing systems for better request handling.

I'll be thoroughly reviewing current issues and feature requests, aiming to incorporate as many as possible. Your feedback is essential – any specific features or improvements you're hoping to see? Your input is crucial in shaping the future of Double Take.

I'll be regularly updating this post to keep you all in the loop with the progress of Double Take 2.0.

Thank you for your support and patience.

townsmcp commented 6 months ago

@jakowenko welcome back! Thank you for creating such a wonderful project.

A enhancement suggestion from myself would be to integrate/allow other NVRs to be used as well as an alternative to Frigate. For example, I have Unifi Protect. Protect has all the functionality of Frigate (smart detections, motion zones etc) all done natively in real time and therefore no need for GPUs, Coral devices etc in your machine draining resources. I would then still want to use face recognition integrations with Double Take then sits at the core of the setup which is currently setup to go to Compreface as I have in my current setup. Unifi can expose a snapshot URL per camera that allows anonymous access to hit the URL which then displays an updated image from the camera (by default the URL is authentication secured but can be set to allow anonymous access eg http://192.168.1.173/snap.jpeg

My current setup uses Scrypted for restreaming the Unifi cameras (that way I can push cameras into HomeKit) but that also adds a strain to the server to have multiple layers of software. Scrypted restreams in to Frigate (because I find Frigate not up to the job for restreaming). But again, I would love to axe all of this because Unifi Protect can do it all. But there are also going to be others that want Scrypted to be their NVR (I don’t have the NVR functionality, I just use restream and HomeKit Secure Video)

DAVIZINH0 commented 6 months ago

Hello! great idea!,

im using doubletake in house and not a extensive use, only testing.

But it will be interesting:

thanks for your work!!!

nhadler commented 6 months ago

Supporting azure would be beneficial. Also the ability to automate a roll over service for facial recog would be nice. For example, doubletake could be set to use rekognition if the internet is up, otherwise use compreface. Or if credits went over a certain cost. Basically a switch accessible through home assistant would facilitate all this.

CoMPaTech commented 6 months ago

@jakowenko might be an idea to join forces with @skrashevich who has made a lot of progress on supporting in the absence? It might also be beneficial to create an organization repo which at least both of you have maintainer/owner rights on, just in case someone is absent for any non-determined reason?

skrashevich commented 6 months ago

I'm not against joint development. Global refactoring I can't do alone any case

Some things from @jakowenko 's post already implemented in my fork: frontend has already been moved to vue3 and vite5. also, a big database structure refactoring (including ORM too) in progress, first steps already in my latest beta-release.Also, work has been done to provide support for work on Bun instead of nodejs. The frontend is already building exclusively with bun, the backend is also almost completely ready to work on Bun (now it can work with some workarounds, but not ready yet for production)

While there are plans and partially implemented some ideas, for example, a desktop application telegram-cloud-photo-size-2-5242577634758611162-y

CoMPaTech commented 6 months ago

Yeah, just trying/hoping to make sure 1+1=3 with you both on it instead of two people heading the same way with different outcomes :) Not to mention for Frigate (and others) it might be good to point in the right direction, they always kept the link to @jakowenko but referred to yours @skrashevich as it was ongoing, so it might be good to have some clarity (and ... if things happen at least one of you can continue instead of either ones repo becoming stale).

jakowenko commented 5 months ago

Yeah, just trying/hoping to make sure 1+1=3 with you both on it instead of two people heading the same way with different outcomes :) Not to mention for Frigate (and others) it might be good to point in the right direction, they always kept the link to @jakowenko but referred to yours @skrashevich as it was ongoing, so it might be good to have some clarity (and ... if things happen at least one of you can continue instead of either ones repo becoming stale).

Totally makes sense, and I'm open to adding collaborators/maintainers to ensure the project stays up to date. As I'm rewriting the entire codebase for 2.0, I'm switching to TypeScript. This will not only enhance code quality and maintainability but also make the codebase more robust and flexible for future enhancements and multiple collaborators.

lktinh2018 commented 5 months ago

I just saw this repo few days ago and realize last commit two years ago. Now, you make me happy like some one throw the money to my face.

jakowenko commented 5 months ago

Progress is moving along nicely. Here's a WIP of the new events page. I'm opting for more of a masonry layout and slight UI adjustments. This page will also incorporate a request feature where if there are no matches, the event will still be displayed with the image passed to detection.

2024-02-02 at 12 05 09

townsmcp commented 5 months ago

@jakowenko looks great. Will there also be a feature to correct a mismatched identified person? ie the person is Bob but CompareFace/face detection program thinks it is Dave

lktinh2018 commented 5 months ago

Hello, I used go2notify but I realize double take only send matched faces. In the scenarios, we want to detect unknown people appear in our house. Could you please consider it ?

jakowenko commented 5 months ago

@jakowenko looks great. Will there also be a feature to correct a mismatched identified person? ie the person is Bob but CompareFace/face detection program thinks it is Dave

While I would love to incorporate something like this @townsmcp, I do not think this is possible based on how the underlying detectors work, but if you can think of a way, please let me know.

When you train CompreFace for example, you give it a number of images with an associated name. When the detection occurs, the image is passed to CompreFace and it returns a name and probability score. This score is used to determine if it's a match. I'm not aware of any detectors that support a way to label incorrect images. The best way to improve your results to my knowledge is giving the detectors the best and clearest images possible for each of the subjects.

S3cBar0n commented 5 months ago

I am looking for continued support for MQTT over TLS for secure MQTT communications, and preferably, I would like to see the ability for me to secure DoubleTake's web interface with HTTPS without having to put it behind a reverse proxy or having to make my own changes to docker/nginx.

matusk commented 4 months ago

The best way to improve your results to my knowledge is giving the detectors the best and clearest images possible for each of the subjects.

@jakowenko , so is it better to train CompreFace only on good quality uploaded images and not to use images from camera at all (for training purposes)?

jakowenko commented 4 months ago

The best way to improve your results to my knowledge is giving the detectors the best and clearest images possible for each of the subjects.

@jakowenko , so is it better to train CompreFace only on good quality uploaded images and not to use images from camera at all (for training purposes)?

Yes, that's what I've found produces the best results. I try to use selfies from my phone for training data.

linost-xx commented 4 months ago

The best way to improve your results to my knowledge is giving the detectors the best and clearest images possible for each of the subjects.

@jakowenko , so is it better to train CompreFace only on good quality uploaded images and not to use images from camera at all (for training purposes)?

I use compreface:0.6.1-arcface-r100-gpu and it is ridiculously accurate. For many faces I only use the snapshots from my doorbell camera and I have never had a false positive so far. Deepstack is much worse and even other variants of Compreface can struggle a quite bit. So if you are not already running that one i would highly recommend it.

dbustosrc commented 4 months ago

@jakowenko Could you please add zones to mqtt captures (No snapshots) If its possible? In the current version I only can retrieve the zones from snapshots

robchandhok commented 4 months ago

@linost-xx are you running HassOS or your own docker? I have not found a CompreFace latest packaged for HA as an add on. Maybe I missed it.

linost-xx commented 3 months ago

@linost-xx are you running HassOS or your own docker? I have not found a CompreFace latest packaged for HA as an add on. Maybe I missed it.

I'm running HassOS in a VM and Compreface as a docker, all in my unraid server.

prat67 commented 1 month ago

Hello! great idea!,

im using doubletake in house and not a extensive use, only testing.

But it will be interesting:

  • compatibility to coral, coral have very fast procesing and will be increase the performance of the system.
  • a posibility to tell double take "not, this person is not the person you detect, its a strange". Usually my setup detect a postman as me or as my wife :-P

thanks for your work!!!

Yes to this please!!!!

I can't tell you how many mismatches I have... for some I will retrain to the right person...but if it flags an unknown delivery driver as me, or my girlfriend..what can I do to correct Doubletake other than just delete that?

rhamblen commented 1 week ago

In compreface you have face pligins, and one is the pose. Using the pose you can tell which direction the face is looking. This would be useful as you could then add some information when a face is not identified to say something like looking down or looking left. Add the mask informaiton to indicate the face is covered. Which might help decide the next action to take.
Also if you use gender and age, you could then say face not recognised, girl under 20 looking down and wearing mask. You start to understand actions on negative faces recongised.