| .. | ||
| faces | ||
| app.py | ||
| README.md | ||
| requirements.txt | ||
AI Face Recognition Server
A Flask-based standalone server for face recognition, designed for integration with Odoo Point of Sale (POS).
Features
- Real-time Recognition: Processes images and returns matches with metadata (ID, Name, Probability).
- Face Training: API endpoint to register new faces from base64 images.
- Production Ready: Supports Gunicorn for stability and concurrency.
- Optimized for POS: Default 60% match threshold handles varied lighting conditions well.
Prerequisites
- Python 3.10+
- System libraries for
dlib(cmake, g++, etc.) - Virtual environment (recommended)
Installation
-
Activate the Virtual Environment:
source .venv/bin/activate -
Install Dependencies:
pip install -r requirements.txt
Running the Server
Production (Recommended)
Run using Gunicorn for better performance and stability:
.venv/bin/gunicorn -w 1 -b 0.0.0.0:5000 app:app --timeout 120
Development
python app.py
API Endpoints
1. Recognize Face
- Endpoint:
POST /recognize - Body:
{ "image": "base64_string_without_header" } - Response: List of matches with
id,name, andprobability.
2. Train Face
- Endpoint:
POST /train - Body:
{ "partner_id": 123, "name": "John Doe", "images": ["base64_1", "base64_2"] } - Description: Saves images to the
faces/directory and updates the in-memory model.
Matching Logic
- Tolerance:
0.4(Distance) - Probability:
1.0 - distance(Matches >= 60% are returned) - Diagnostics: Server logs the exact distance and probability to the terminal for every request.
Directory Structure
app.py: Main Flask application.faces/: Directory where trained face images are stored.requirements.txt: Python dependencies.