Metadata-Version: 2.4
Name: pyfaceau
Version: 1.3.5
Summary: Pure Python OpenFace 2.2 AU extraction with CLNF landmark refinement
Home-page: https://github.com/johnwilsoniv/face-analysis
Author: John Wilson
Author-email: 
License: CC BY-NC 4.0
Project-URL: Homepage, https://github.com/johnwilsoniv/pyfaceau
Project-URL: Documentation, https://github.com/johnwilsoniv/pyfaceau
Project-URL: Repository, https://github.com/johnwilsoniv/pyfaceau
Project-URL: Bug Tracker, https://github.com/johnwilsoniv/pyfaceau/issues
Keywords: facial-action-units,openface,computer-vision,facial-analysis,emotion-recognition
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.20.0
Requires-Dist: opencv-python>=4.5.0
Requires-Dist: pandas>=1.3.0
Requires-Dist: onnxruntime>=1.10.0
Requires-Dist: scipy>=1.7.0
Requires-Dist: scikit-learn>=1.0.0
Requires-Dist: tqdm>=4.62.0
Requires-Dist: pyfhog>=0.1.0
Requires-Dist: pyclnf>=0.2.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: black>=22.0.0; extra == "dev"
Requires-Dist: flake8>=4.0.0; extra == "dev"
Provides-Extra: accel
Requires-Dist: onnxruntime-coreml>=1.10.0; extra == "accel"
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# pyfaceau

Python implementation of OpenFace 2.2's Facial Action Unit extraction pipeline.

## Installation

```bash
pip install pyfaceau
```

## Usage

```python
from pyfaceau import FaceAnalyzer

analyzer = FaceAnalyzer()
result = analyzer.analyze(image)

print(result.au_intensities)  # 17 action unit intensities
print(result.landmarks)       # 68 facial landmarks
print(result.pose)            # head pose
```

## What it does

- Extracts 17 facial action units (AU01, AU02, AU04, AU05, AU06, AU07, AU09, AU10, AU12, AU14, AU15, AU17, AU20, AU23, AU25, AU26, AU45)
- Detects 68 facial landmarks via [pyclnf](https://github.com/johnwilsoniv/pyclnf)
- Estimates 3D head pose
- No C++ compilation required

## Citation

If you use this in research, please cite:

> Wilson IV, J., Rosenberg, J., Gray, M. L., & Razavi, C. R. (2025). A split-face computer vision/machine learning assessment of facial paralysis using facial action units. *Facial Plastic Surgery & Aesthetic Medicine*. https://doi.org/10.1177/26893614251394382

## License

CC BY-NC 4.0 — free for non-commercial use with attribution.
