Skip to main content

A package for analyzing faces in images to detect eye state, gaze direction, and facial expressions

Project description

Face Analysis Kit

A Python package for analyzing faces in images to detect eye state, gaze direction, and facial expressions.

demo

Features

  • Gaze Detection: Determine gaze direction using ResNet models
  • Eye State Classification: Detect whether eyes are open or closed
  • Emotion Recognition: Identify facial expressions and emotions

How to install:

1. Install from PyPI

pip install face_analysis_kit

2. Build and install from source

  1. Clone the repo
git clone https://github.com/ahmedsalim3/face-analysis.git
cd face-analysis
  1. Create a virtual environment and install dependencies:
make install

This will:

  • Install all dependencies using uv
  • Set up pre-commit hooks for code quality
  1. Activate the environment:
source .venv/bin/activate

Optional: Install the package in editable mode pip install -e .

Usage Examples

Command Line Interface

The package provides several command-line tools for analyzing faces in images:

  1. Analyze a single image:
bash scripts/run_analysis.sh single input/test_1.png
  1. Analyze all images in a folder:
bash scripts/run_analysis.sh folder input/
  1. Select the best image from a folder:
bash scripts/run_analysis.sh best input/

Output will be saved to output/<command>/ directory.

Python API

Gaze Detection

from face_analysis.gazes import Pipeline as GazesPipeline
from face_analysis.gazes import render as GazesRender

gaze_pipeline = GazesPipeline(
    arch='ResNet50',  # Options: "ResNet18", "ResNet34", "ResNet101", "ResNet152"
    detector="retinaface",  # Options: "mtcnn"
    device="cuda",  # or "cpu"
)

img_in = cv2.imread("input/test_1.png")
results = gaze_pipeline.step(img_in)
img_out = GazesRender(img_in, results)
input output

Eye State Detection

from face_analysis.eyes import Pipeline as EyesPipeline
from face_analysis.eyes import render as eyes_render

eye_pipeline = EyesPipeline(
    detector="retinaface", # or "dlib"
    device="cpu", # or "cuda"
)

img_in = cv2.imread(img_path)
results = eye_pipeline.step(img_in)
img_out = eyes_render(img_in, results)
input output

Emotion Detection

from face_analysis.emotions import Pipeline as EmotionsPipeline
from face_analysis.emotions import render as emotions_render

emotion_pipeline = EmotionsPipeline(
    detector= "retinaface", # or "mtcnn", or "cascade"
    device= "cpu",
)

img_in = cv2.imread(img_path)
results = emotion_pipeline.step(img_in)
img_out = emotions_render(img_in, results)
input output

Repo Structure

project_root/
├── data/       
├── input/
├── output/
├── scripts/
├── face_analysis/                 
│
├── LICENSE.txt
├── pyproject.toml
├── README.md
├── requirements.txt
├── uv.lock
└── Makefile

Contributing

Contributions are welcome! Please fork the repository, make your changes, and submit a pull request.

make install  # to setup environment and hooks
make test     # to run tests before submitting

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

face_analysis_kit-0.1.2.tar.gz (13.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

face_analysis_kit-0.1.2-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file face_analysis_kit-0.1.2.tar.gz.

File metadata

  • Download URL: face_analysis_kit-0.1.2.tar.gz
  • Upload date:
  • Size: 13.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.17

File hashes

Hashes for face_analysis_kit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d7aac1a0caaab890a640e5c74012a1c7a02ca85522fb0af1b106f6edd34f0f1c
MD5 0ca0135efaab2010671abf3a25730e58
BLAKE2b-256 182dfdc5ef64986d369a7ad2f7883efbc0266c1a8601eead37f09cebef0d9405

See more details on using hashes here.

File details

Details for the file face_analysis_kit-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for face_analysis_kit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8247aa7c7c011832cbd2f6dd5c22b6d90fd1c56f576a8c8ef917cda12c3b74b2
MD5 3a6ea703526412830b62726e39f2c778
BLAKE2b-256 4bd3d7599e90f0d51a21650177a7758999d62c54c844596685c2c6cf94b41a1e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page