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.24k stars 98 forks source link

[FEAT] Compreface Detection Models = Custom Builds #151

Open ozett opened 3 years ago

ozett commented 3 years ago

i tried to change another compre-face docker with a different detection-model than the default. i tried the hardest-one without GPU, and the system stood nearly still. than i changed to mobilenet and retrained one folder. i did the same with the default facenet-model.

the default had better recognition.

now i search for powerfull hardware and GPU.Support to try the hardest modell and compare again. i will report back .. ( one has to change the .env file to switch easy the models with the docker-compose call.)

image

ozett commented 3 years ago

somebody is using double-take with the heaviest model. great. but it is eating memory... or is it double-take? -> https://github.com/exadel-inc/CompreFace/issues/569

jakowenko commented 3 years ago

somebody is using double-take with the heaviest model. great. but it is eating memory... or is it double-take? -> exadel-inc/CompreFace#569

Double Take shouldn't be. It's a pretty light weight API and frontend. Guessing the memory leaks would be from CompreFace.

ozett commented 3 years ago

they found the resnet taking ~ 1500 MB memory vs. (default) mobilefacenet ~ 720mb https://github.com/exadel-inc/CompreFace/issues/569#issuecomment-884852387

doubletake stays the shining winner! 👍

ozett commented 3 years ago

i got another instance of compreface running with nvidia-gpu model. would be great to configure a second instance, but seems not possible to have 2 instances of compreface? could this be a feature request?

image

image

ozett commented 3 years ago

my new compreface instance is ver 0.61 (jumped from 0.6.0). not sure if its from the new code, but if it try to train my images with this new gpu-model on this new version i got api-errors on the compreface log:

compreface-api            | }
compreface-ui             | 192.168.14.159 - - [07/Nov/2021:18:11:09 +0000] "POST /api/v1/recognition/faces?subject=test1 HTTP/1.1" 201 99 "-" "axios/0.22.0"
compreface-postgres-db    | 2021-11-07 18:11:46.011 UTC [208] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-ui             | 192.168.14.159 - - [07/Nov/2021:18:11:50 +0000] "DELETE /api/v1/recognition/faces?subject=test4 HTTP/1.1" 200 30 "-" "axios/0.22.0"
compreface-postgres-db    | 2021-11-07 18:11:59.351 UTC [211] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:00.048 UTC [213] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:03.359 UTC [215] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:06.479 UTC [217] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:26.134 UTC [219] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0

any hints what to do about this? its inside compreface? migration needed? or its api-call?

ozett commented 3 years ago

weird. on my first seperate CPU maschine i got now cuda-errors. but on this maschine is no nvidia-gpu. how did this switched over?

compreface-core           | 2021-11-07 18:22:22.181578: E tensorflow/stream_executor/cuda/cuda_driver.cc:351] failed call to cuInit: UNKNOWN ERROR (303)
compreface-core           | {"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=173, y_min=158, x_max=386, y_max=417, probability=0.9265303015708923, _np_landmarks=array([[266, 2                                                                  64],\n       [333, 266],\n       [313, 320],\n       [268, 350],\n       [318, 351]]))", "request": {"method": "POST", "path": "/find_faces", "filename": "lenna.jpg", "api_key": "", "remot                                                                  e_addr": "172.19.0.6"}, "logger": "src.services.facescan.plugins.facenet.facenet", "module": "facenet", "traceback": null, "build_version": "dev"}
compreface-core           | 2021-11-07 18:22:30.345086: E tensorflow/stream_executor/cuda/cuda_driver.cc:351] failed call to cuInit: UNKNOWN ERROR (303)
compreface-core           | {"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=173, y_min=158, x_max=386, y_max=417, probability=0.9265303015708923, _np_landmarks=array([[266, 2                                                                  64],\n       [333, 266],\n       [313, 320],\n       [268, 350],\n       [318, 351]]))", "request": {"method": "POST", "path": "/find_faces", "filename": "lenna.jpg", "api_key": "", "remot                                                                  e_addr": "172.19.0.6"}, "logger": "src.services.facescan.plugins.facenet.facenet", "module": "facenet", "traceback": null, "build_version": "dev"}
compreface-ui             | 172.19.0.1 - - [07/Nov/2021:18:22:44 +0000] "POST /api/v1/recognition/recognize?face_plugins=age,gender&det_prob_threshold=0.6 HTTP/1.1" 499 0 "-" "axios/0.22.0"
ozett commented 3 years ago

still interesting modell-zoo for exploration of more accuracy and maybe faster detection: https://github.com/deepinsight/insightface/tree/master/python-package#model-zoo

bigbangus commented 2 years ago

my new compreface instance is ver 0.61 (jumped from 0.6.0). not sure if its from the new code, but if it try to train my images with this new gpu-model on this new version i got api-errors on the compreface log:

compreface-api            | }
compreface-ui             | 192.168.14.159 - - [07/Nov/2021:18:11:09 +0000] "POST /api/v1/recognition/faces?subject=test1 HTTP/1.1" 201 99 "-" "axios/0.22.0"
compreface-postgres-db    | 2021-11-07 18:11:46.011 UTC [208] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-ui             | 192.168.14.159 - - [07/Nov/2021:18:11:50 +0000] "DELETE /api/v1/recognition/faces?subject=test4 HTTP/1.1" 200 30 "-" "axios/0.22.0"
compreface-postgres-db    | 2021-11-07 18:11:59.351 UTC [211] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:00.048 UTC [213] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:03.359 UTC [215] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:06.479 UTC [217] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0
compreface-postgres-db    | 2021-11-07 18:12:26.134 UTC [219] FATAL:  unsupported frontend protocol 1234.5680: server supports 2.0 to 3.0

any hints what to do about this? its inside compreface? migration needed? or its api-call?

I have the same issue on compreface 0.6.1 mobilenet gpu with external postgres13 db trying to use a Nvidia 1050Ti.

When double-take tries to connect I get: {"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=295, y_min=374, x_max=357, y_max=439, probability=0.00024579002638347447, _np_landmarks=array([[316.83188, 405.41898],\n [331.1991 , 400.42044],\n [328.3878 , 414.35837],\n [331.13724, 424.109 ],\n [341.3721 , 419.83313]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "lenna.jpg", "api_key": "", "remote_addr": "127.0.0.1"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}

this is the single docker version, so I'm not sure if gpu errors are being omitted.