{"id":19055901,"url":"https://github.com/ohand/facerecogdaemon","last_synced_at":"2026-03-01T05:12:17.175Z","repository":{"id":45040205,"uuid":"237685962","full_name":"ohAnd/faceRecogDaemon","owner":"ohAnd","description":"client/server application for easy managing face recognition outputs for a specific image source","archived":false,"fork":false,"pushed_at":"2024-06-17T23:32:48.000Z","size":650,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-02T11:27:49.430Z","etag":null,"topics":["daemon","deep-learning","face-recognition","managed","webapp"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ohAnd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-01T22:20:35.000Z","updated_at":"2023-03-03T20:12:38.000Z","dependencies_parsed_at":"2025-01-02T11:25:38.316Z","dependency_job_id":"d40fc38c-8fd4-4385-9c15-e7cb10fafcea","html_url":"https://github.com/ohAnd/faceRecogDaemon","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohAnd%2FfaceRecogDaemon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohAnd%2FfaceRecogDaemon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohAnd%2FfaceRecogDaemon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohAnd%2FfaceRecogDaemon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ohAnd","download_url":"https://codeload.github.com/ohAnd/faceRecogDaemon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240112044,"owners_count":19749581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["daemon","deep-learning","face-recognition","managed","webapp"],"created_at":"2024-11-08T23:47:22.112Z","updated_at":"2026-03-01T05:12:12.120Z","avatar_url":"https://github.com/ohAnd.png","language":"HTML","readme":"# faceRecogDaemon\n\n[![Python application](https://github.com/ohAnd/faceRecogDaemon/workflows/Python%20application/badge.svg)](https://github.com/ohAnd/faceRecogDaemon/actions?query=workflow%3A%22Python+application%22)\n[![GitHub All Releases](https://img.shields.io/github/downloads/ohand/faceRecogDaemon/total)](https://github.com/ohAnd/faceRecogDaemon/releases)\n[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/ohand/faceRecogDaemon?include_prereleases)](https://github.com/ohAnd/faceRecogDaemon/releases)\n[![GitHub issues](https://img.shields.io/github/issues-raw/ohand/faceRecogDaemon)](https://github.com/ohAnd/faceRecogDaemon/issues)\n[![GitHub watchers](https://img.shields.io/github/watchers/ohand/faceRecogDaemon)](https://github.com/ohAnd/faceRecogDaemon/watchers)\n[![GitHub contributors](https://img.shields.io/github/contributors-anon/ohand/faceRecogDaemon)](https://github.com/ohAnd/faceRecogDaemon/graphs/contributors)\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/m/ohand/faceRecogDaemon)](https://github.com/ohAnd/faceRecogDaemon/commits/master)\n\n- [faceRecogDaemon](#facerecogdaemon)\n  - [description](#description)\n    - [Problem](#problem)\n    - [Possible solution](#possible-solution)\n    - [Features](#features)\n      - [user side](#user-side)\n      - [technical side](#technical-side)\n  - [installation](#installation)\n    - [download \u0026 start](#download--start)\n    - [configuration](#configuration)\n  - [API](#api)\n    - [face recognition](#face-recognition)\n      - [/api/check](#apicheck)\n      - [/api/check?stream=1](#apicheckstream1)\n    - [training](#training)\n      - [/api/training?getdata=true](#apitraininggetdatatrue)\n      - [/api/training?retrain=true](#apitrainingretraintrue)\n      - [/api/training?rename=true\u0026image=mmmmm.jpg\u0026name=Joe](#apitrainingrenametrueimagemmmmmjpgnamejoe)\n      - [/api/get_train_image?person=name\u0026filename=name01.png](#apigettrainimagepersonnamefilenamename01png)\n      - [/api/get_train_image?person=name\u0026number=0](#apigettrainimagepersonnamenumber0)\n    - [recent recognitions](#recent-recognitions)\n      - [/api/get_recent_image](#apigetrecentimage)\n      - [/api/get_recent_image?json](#apigetrecentimagejson)\n      - [/api/get_recent_image?json\u0026limit=30](#apigetrecentimagejsonlimit30)\n      - [/api/get_recent_image?number=0](#apigetrecentimagenumber0)\n      - [/api/get_recent_image?filename=name](#apigetrecentimagefilenamename)\n      - [/api/get_recent_image?number=0\u0026original=true](#apigetrecentimagenumber0originaltrue)\n    - [images](#images)\n      - [/api/get_image?file=name](#apigetimagefilename)\n  - [Links](#links)\n\n## description\nJust started as a little application for easy managing face recognition outputs.\n\n### Problem\n\nYou have a video/ image stream of a camera or something else. And you want to analyse the images for known faces. And get needed infos for further triggering for e.g. a smart home system to open a door or similar things.\n\n### Possible solution\n\nface recognition daamon ;-)\n\n### Features\n\n#### user side\n- bind with image streams or NEW with rtsp stream, see config\n- overview of recent historic recognized faces\n  - change seen faces to other persons for next training\n  - change seen faces to new persons for next training (coming soon)\n- manage training data\n  - remove images from person folder\n  - move images to other persons\n- manage settings (editing - coming soon)\n- show api information\n\nscreenshots of client:\n\n![home](./docs/home.png \"home\")\n![home menu](./docs/home_menu.png \"home menu\")\n![live](./docs/live.png \"live\")\n![history](./docs/history.png \"history\")\n![history training](./docs/history_train.png \"history training\")\n![training](./docs/training.png \"training\")\n![training images](./docs/training_images.png \"training images\")\n![settings](./docs/settings.png \"settings\")\n![api](./docs/api.png \"api\")\n\n#### technical side\n- for the recognition itself the library of https://github.com/ageitgey/face_recognition is used \n- api for all stuff provided\n- client in hmtl/ javascript full responsive and prepared for web app\n- 3-tier architecture - file-db, backend/ middleware, client ( not fully at this time ;-) )\n  - \"file-db\" - primitve folder driven training data for images + archive for recognized faces\n  - backend/ middleware - serves the functions over an api\n  - client - html/ javascript web client prepared for a web app\n\n\n## installation\nThe application is written in Python. So you need an already installed environment as described here: https://www.python.org/about/gettingstarted/ - needed version \u003e= 3.6\n\nIf you running an ubuntu maybe you need for compiling dlib (only one time)\n\n        sudo apt install python3.7-dev\n\n\n### download \u0026 start\n\nDonwload 'face recognition daemon' application the last release at https://github.com/ohAnd/faceRecogDaemon/releases\n\nUpdate pip to the latest\n\n        python -m pip3 install --upgrade pip\n\nduring the installation [dlib](dlib.net) will be installed (need's some time for compiling ;-) )\n\nintall needed modules\n\n        pip3 install -r requirements.txt\n\nfor quick start:\n- create a path for known faces outside the app directory e.g. /path/to/knownFaces and put the path to config see below\n  - inside this path create a dirextory for each person you want to recognize\n  - in this subfolders you have to put some images for training\n  - images must have only **one** face showing, otherwise it it will be ignored by training\n    ```\n      Structure:\n            \u003c/path/to/knownFaces\u003e/\n            |-- \u003cperson1\u003e/\n            |   |-- \u003csomename1\u003e.jpeg\n            |   |-- \u003csomename2\u003e.png\n            |   |-- ...\n            |-- \u003cperson2\u003e/\n            |   |-- \u003csomename1\u003e.jpeg\n            |   |-- \u003csomename2\u003e.jpeg\n            |-- ...\n    ```\n- create a archive path outside the app directory e.g. /path/to/imageArchive and put the path to config see below\n\nstart the server (service installation coming soon)\n\n        bash://\u003cpaht/to/your/download\u003e\u003e ./faecRecogDaemon.py\n\n### configuration\ncreate a config file in application root directory\n\n        touch config.ini\n\nwith following content\n\n        # config file for face recog daemon\n        [webserver]\n        Port: 5001\n\n        [imageSource]\n        urlToImageSrc = \u003cyour_path_to_image_src\u003e # e.g. http://\u003curlTocam\u003e:port/image.cgi\n        // urlToImageSrc = \u003cyour_path_to_image_src\u003e # e.g. rtsp://user:pass@\u003cip-address\u003e:\u003cport\u003e/media.amp\n\n        [faceRecognition]\n        knnDistance = 0.50\n\n        [directories]\n        pathToKnownFaces = \u003cyour_path\u003e\n        pathToImageArchive = \u003cyour_path\u003e\n\n___\n___\n## API\n___\n### face recognition \n\n#### /api/check\ntrigger new face recognization with a fresh image from source\u003cbr\u003e return: JSON\n\n\u003cdetails\u003e\n\u003csummary\u003eresponse\u003c/summary\u003e\nwith response code 200, following json will be returned\n\n```json\n{\n  \"checkDetails\": {\n    \"NumberOfFaces\": 0, \n    \"imageToCheck\": \"http://\u003csource image\u003e\", \n    \"linkToArchivedImage\": \"\"\n  }, \n  \"checkResults\": {\n    \"linkToResultImage\": \"http://\u003chost of face recog daemon\u003e/api/get_image?file=/noFaces/\u003carchived image name\u003e.jpg\", \n    \"personsFound\": {}\n  }, \n  \"status\": \"no faces found\"\n}\n```\n\n\u003c/details\u003e\n\n#### /api/check?stream=1\nget online face recognization, return the result image directly\u003cbr\u003e return: image\n___\n### training\n\n#### /api/training?getdata=true\nget all training src data as summary in JSON\n\n\u003cdetails\u003e\n\u003csummary\u003eresponse\u003c/summary\u003e\nwith response code 200, following json will be returned\n\n```json\n{\n  \"persons\": {\n    \"\u003cnameOfPerson1\u003e\": {\n      \"count\": 26, \n      \"imagelinks\": [\n        \"\u003cbaseImage\u003e.png\", \n        ...\n        \"\u003cbaseImage_n_\u003e.jpg\", \n        \"\u003cbaseImage_m_\u003e.jpg\"\n      ]\n    }, \n    \"\u003cnameOfPerson2\u003e\": {\n      \"count\": 10, \n      \"imagelinks\": [\n        \"\u003cbaseImage\u003e.png\", \n        ...\n        \"\u003cbaseImage_n_\u003e.jpg\", \n        \"\u003cbaseImage_m_\u003e.jpg\"\n      ]\n    }\n  }\n}\n\n```\n\n\u003c/details\u003e\n\n#### /api/training?retrain=true\nretrigger the training of given images\n\n#### /api/training?rename=true\u0026image=mmmmm.jpg\u0026name=Joe\nmove image from history to training data with given person name\n\n#### /api/get_train_image?person=name\u0026filename=name01.png\nget trained image by person and filename\n\n#### /api/get_train_image?person=name\u0026number=0\nget trained image by number\n___\n### recent recognitions\n#### /api/get_recent_image\nget most recent image\n\n#### /api/get_recent_image?json\nget an overview of recent images in JSON\u003cbr\u003e(default limited to 10, if less images available it is shortend)\n\n#### /api/get_recent_image?json\u0026limit=30\nget an overview of recent images in JSON with given limit of resopnse\u003cbr\u003ee.g. 30 entries (hard limited to 1000)\n\n#### /api/get_recent_image?number=0\nget most recent image - higher number means older image\n\n#### /api/get_recent_image?filename=name\nget most recent image with new face recognition fpr filename\n\n#### /api/get_recent_image?number=0\u0026original=true\nget most recent image without image manipulation (timestamp face frame/ naming)\n___\n### images\n#### /api/get_image?file=name\nget image file with name\n\n___                \n\n\n## Links\nsource for used libs:\n- https://github.com/ageitgey/face_recognition\n- https://github.com/ageitgey/face_recognition/blob/master/examples/face_recognition_svm.py\n- https://face-recognition.readthedocs.io/en/latest/face_recognition.html\n\nused images:\n- https://www.freepik.com/premium-vector/biometric-person-identification-facial-recognition-concept-futuristic-low-polygonal-human-face_4847694.htm\n- ...\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohand%2Ffacerecogdaemon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fohand%2Ffacerecogdaemon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohand%2Ffacerecogdaemon/lists"}