Skip to main content

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

Release files for face-analysis-kit 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for face-analysis-kit 1.0.0
File Size Uploaded
face_analysis_kit-1.0.0.tar.gz 15.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for face-analysis-kit 1.0.0
File Interpreter ABI Platform
face_analysis_kit-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size:18.8 MB

Release files / face_analysis_kit-1.0.0.tar.gz

Download URL face_analysis_kit-1.0.0.tar.gz
Size 15.5 MB
Tags Source
SHA-256 checksum
How to use checksums
614d838bdce6dd4f8da62d766d04676df750425010e7e5145398cfaca84564a2
BLAKE2b-256 checksum
How to use checksums
aa43e0ce3e5d46c6d427237e8dbdd7899e556426e29114ff984b4b6bbdd08e68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.17

Release files / face_analysis_kit-1.0.0-py3-none-any.whl

Download URL face_analysis_kit-1.0.0-py3-none-any.whl
Size 3.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c4eb5918057a503a07954839073da1752afac280f19c1ce8556e8e940fd5f84b
BLAKE2b-256 checksum
How to use checksums
37ec057c16c165886400ebc740960325c85cd866164adfcf27fa3eb9195f2bef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.17

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page