Kioku is a hotel managers assistance app with face recognition, that helps to know guests at reception faster.
Consider it as a proof of concept, first iteration MVP.
- recognize guests in a video stream;
- show guest cards in UI: current photo with editable name, room & note fields;
- autosave all the data: create new record for new guest or update existing one;
- App doesn't store photos. Nuff said 😄
My core idea was to store only encodings, thus it required some additional work to make recognition more accurate: buffering encodings, finding the average, etc..
This way, even if the database is stolen, it's impossible to restore the original photos and match the data to real people. - Runs completely offline: on a local network or laptop.
Inference is done on a local machine just as is frontend rendering. All the data is stored on the device. - Runs on any device that supports Python: Jetson Nano, laptop and others.
- Consumes streams from multiple sources simultaneously: webcams, RTSP streams.
However, simultaneous streams feature is less tested, requires some code-related enhancements and better be run on a powerful device (like Jetson). - UI can be opened on tablet/laptop/phone, any device with browser.
- Backend: Python, Starlette, Uvicorn, face_recognition, OpenCV, Dlib, Numpy, SQLite.
- Frontend: Nuxt PWA app, Axios, long-polling.
- Clone the repo.
- Install Python dependencies
- Create
config.json
file (seeconfig.json.example
) - Run
app:app --reload --debug --host=0.0.0.0 --port=8000 --log-level=debug
- Open
http://localhost:8000
in browser. - Voila!
For frontend development you also need to install frontend dependencies: cd client & npm i
see INSTALLATION.md
All the code is provided as is, without any warranty.
Both backend and frontend parts are designed and implemented by me.
Buffer
part was initially implemented by my friend megaaction, so big thanks to him!
Kioku logo and related design elements are created and beloved a lot by me as well and I own the rights to them.