mirror of
https://github.com/yakhyo/uniface.git
synced 2026-05-14 12:17:51 +00:00
Compare commits
3 Commits
feat/unifa
...
v3.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d37633b1a | ||
|
|
bc413df4a8 | ||
|
|
8db0577991 |
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.10"
|
||||
python-version: "3.11"
|
||||
- uses: pre-commit/action@v3.0.1
|
||||
|
||||
test:
|
||||
@@ -34,9 +34,11 @@ jobs:
|
||||
include:
|
||||
# Full Python range on Linux (fastest runner)
|
||||
- os: ubuntu-latest
|
||||
python-version: "3.10"
|
||||
python-version: "3.11"
|
||||
- os: ubuntu-latest
|
||||
python-version: "3.13"
|
||||
- os: ubuntu-latest
|
||||
python-version: "3.14"
|
||||
- os: macos-latest
|
||||
python-version: "3.13"
|
||||
- os: windows-latest
|
||||
|
||||
4
.github/workflows/publish.yml
vendored
4
.github/workflows/publish.yml
vendored
@@ -54,7 +54,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.10", "3.13"]
|
||||
python-version: ["3.11", "3.13"]
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.10"
|
||||
python-version: "3.11"
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install build tools
|
||||
|
||||
63
CHANGELOG.md
Normal file
63
CHANGELOG.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [3.1.1] - 2026-03-19
|
||||
|
||||
- Drop Python 3.10 support; minimum is now Python 3.11 ([#95](https://github.com/yakhyo/uniface/pull/95))
|
||||
- Bump `scikit-image` to `>=0.26.0` and use `SimilarityTransform.from_estimate()` ([#95](https://github.com/yakhyo/uniface/pull/95))
|
||||
- Add Python 3.14 support ([#95](https://github.com/yakhyo/uniface/pull/95))
|
||||
|
||||
## [3.1.0] - 2026-03-11
|
||||
|
||||
- Add FAISS vector database for fast face search ([#86](https://github.com/yakhyo/uniface/pull/86))
|
||||
- Add `ModelInfo` dataclass for centralized model registry ([#90](https://github.com/yakhyo/uniface/pull/90))
|
||||
- Add download retry with exponential backoff ([#90](https://github.com/yakhyo/uniface/pull/90))
|
||||
- Add dataset documentation ([#85](https://github.com/yakhyo/uniface/pull/85))
|
||||
|
||||
## [3.0.0] - 2026-02-14
|
||||
|
||||
- Add ByteTrack multi-object face tracking ([#81](https://github.com/yakhyo/uniface/pull/81))
|
||||
- Add 5 gaze estimation backbones ([#82](https://github.com/yakhyo/uniface/pull/82))
|
||||
- Add configurable cache directory ([#80](https://github.com/yakhyo/uniface/pull/80))
|
||||
- Redesign unified API with standardized return types ([#82](https://github.com/yakhyo/uniface/pull/82))
|
||||
|
||||
## [2.3.0] - 2026-02-05
|
||||
|
||||
- Add XSeg face segmentation ([#72](https://github.com/yakhyo/uniface/pull/72))
|
||||
- Update documentation and README ([#78](https://github.com/yakhyo/uniface/pull/78))
|
||||
|
||||
## [2.2.1] - 2026-01-18
|
||||
|
||||
- Add ONNX Runtime provider selection (CUDA, CoreML, CPU) ([#68](https://github.com/yakhyo/uniface/pull/68))
|
||||
- Fix cache directory check on startup ([#67](https://github.com/yakhyo/uniface/pull/67))
|
||||
|
||||
## [2.2.0] - 2026-01-07
|
||||
|
||||
- Add YOLOv8-Face detection ([#62](https://github.com/yakhyo/uniface/pull/62))
|
||||
- Add AdaFace recognition ([#61](https://github.com/yakhyo/uniface/pull/61))
|
||||
- Add MkDocs documentation site ([#51](https://github.com/yakhyo/uniface/pull/51))
|
||||
- Add Google Colab support ([#52](https://github.com/yakhyo/uniface/pull/52))
|
||||
|
||||
## [2.0.0] - 2025-12-30
|
||||
|
||||
- Initial v2 release
|
||||
- Detection: RetinaFace, SCRFD, YOLOv5-Face
|
||||
- Recognition: ArcFace, MobileFace, SphereFace
|
||||
- 106-point facial landmarks
|
||||
- Face parsing (BiSeNet, 19 classes)
|
||||
- Gaze estimation (MobileGaze)
|
||||
- Age/gender/race prediction (AgeGender, FairFace)
|
||||
- Emotion recognition (DDAMFN)
|
||||
- Anti-spoofing (MiniFASNet)
|
||||
- Face anonymization (5 blur methods)
|
||||
- SHA-256 weight verification
|
||||
- Pure ONNX Runtime inference
|
||||
|
||||
[3.1.1]: https://github.com/yakhyo/uniface/compare/v3.1.0...v3.1.1
|
||||
[3.1.0]: https://github.com/yakhyo/uniface/compare/v3.0.0...v3.1.0
|
||||
[3.0.0]: https://github.com/yakhyo/uniface/compare/v2.3.0...v3.0.0
|
||||
[2.3.0]: https://github.com/yakhyo/uniface/compare/v2.2.1...v2.3.0
|
||||
[2.2.1]: https://github.com/yakhyo/uniface/compare/v2.2.0...v2.2.1
|
||||
[2.2.0]: https://github.com/yakhyo/uniface/compare/v2.0.0...v2.2.0
|
||||
[2.0.0]: https://github.com/yakhyo/uniface/releases/tag/v2.0.0
|
||||
@@ -59,12 +59,12 @@ This project uses [Ruff](https://docs.astral.sh/ruff/) for linting and formattin
|
||||
#### General Rules
|
||||
|
||||
- **Line length:** 120 characters maximum
|
||||
- **Python version:** 3.10+ (use modern syntax)
|
||||
- **Python version:** 3.11+ (use modern syntax)
|
||||
- **Quote style:** Single quotes for strings, double quotes for docstrings
|
||||
|
||||
#### Type Hints
|
||||
|
||||
Use modern Python 3.10+ type hints (PEP 585 and PEP 604):
|
||||
Use modern Python 3.11+ type hints (PEP 585 and PEP 604):
|
||||
|
||||
```python
|
||||
# Preferred (modern)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div align="center">
|
||||
|
||||
[](https://pypi.org/project/uniface/)
|
||||
[](https://www.python.org/)
|
||||
[](https://www.python.org/)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://github.com/yakhyo/uniface/actions)
|
||||
[](https://pepy.tech/projects/uniface)
|
||||
|
||||
@@ -32,7 +32,7 @@ ruff check . --fix
|
||||
**Guidelines:**
|
||||
|
||||
- Line length: 120
|
||||
- Python 3.10+ type hints
|
||||
- Python 3.11+ type hints
|
||||
- Google-style docstrings
|
||||
|
||||
---
|
||||
|
||||
@@ -13,7 +13,7 @@ template: home.html
|
||||
<p class="hero-subtitle">All-in-One Open-Source Face Analysis Library</p>
|
||||
|
||||
[](https://pypi.org/project/uniface/)
|
||||
[](https://www.python.org/)
|
||||
[](https://www.python.org/)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://github.com/yakhyo/uniface/actions)
|
||||
[](https://pepy.tech/projects/uniface)
|
||||
|
||||
@@ -6,7 +6,7 @@ This guide covers all installation options for UniFace.
|
||||
|
||||
## Requirements
|
||||
|
||||
- **Python**: 3.10 or higher
|
||||
- **Python**: 3.11 or higher
|
||||
- **Operating Systems**: macOS, Linux, Windows
|
||||
|
||||
---
|
||||
@@ -159,11 +159,11 @@ print("Installation successful!")
|
||||
|
||||
### Import Errors
|
||||
|
||||
If you encounter import errors, ensure you're using Python 3.10+:
|
||||
If you encounter import errors, ensure you're using Python 3.11+:
|
||||
|
||||
```bash
|
||||
python --version
|
||||
# Should show: Python 3.10.x or higher
|
||||
# Should show: Python 3.11.x or higher
|
||||
```
|
||||
|
||||
### Model Download Issues
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "uniface"
|
||||
version = "3.1.0"
|
||||
version = "3.1.1"
|
||||
description = "UniFace: A Comprehensive Library for Face Detection, Recognition, Tracking, Landmark Analysis, Face Parsing, Gaze Estimation, Age, and Gender Detection"
|
||||
readme = "README.md"
|
||||
license = "MIT"
|
||||
@@ -9,7 +9,7 @@ maintainers = [
|
||||
{ name = "Yakhyokhuja Valikhujaev", email = "yakhyo9696@gmail.com" },
|
||||
]
|
||||
|
||||
requires-python = ">=3.10,<3.14"
|
||||
requires-python = ">=3.11,<3.15"
|
||||
keywords = [
|
||||
"face-detection",
|
||||
"face-recognition",
|
||||
@@ -34,17 +34,17 @@ classifiers = [
|
||||
"Intended Audience :: Science/Research",
|
||||
"Operating System :: OS Independent",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Programming Language :: Python :: 3.14",
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
"numpy>=1.21.0",
|
||||
"opencv-python>=4.5.0",
|
||||
"onnxruntime>=1.16.0",
|
||||
"scikit-image>=0.19.0",
|
||||
"scikit-image>=0.26.0",
|
||||
"scipy>=1.7.0",
|
||||
"requests>=2.28.0",
|
||||
"tqdm>=4.64.0",
|
||||
@@ -73,7 +73,7 @@ uniface = ["py.typed"]
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 120
|
||||
target-version = "py310"
|
||||
target-version = "py311"
|
||||
exclude = [
|
||||
".git",
|
||||
".ruff_cache",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
numpy>=1.21.0
|
||||
opencv-python>=4.5.0
|
||||
onnxruntime>=1.16.0
|
||||
scikit-image>=0.19.0
|
||||
scikit-image>=0.26.0
|
||||
scipy>=1.7.0
|
||||
requests>=2.28.0
|
||||
tqdm>=4.64.0
|
||||
|
||||
@@ -29,7 +29,7 @@ from __future__ import annotations
|
||||
|
||||
__license__ = 'MIT'
|
||||
__author__ = 'Yakhyokhuja Valikhujaev'
|
||||
__version__ = '3.1.0'
|
||||
__version__ = '3.1.1'
|
||||
|
||||
import contextlib
|
||||
|
||||
|
||||
@@ -71,8 +71,7 @@ def estimate_norm(
|
||||
alignment[:, 0] += diff_x
|
||||
|
||||
# Compute the transformation matrix
|
||||
transform = SimilarityTransform()
|
||||
transform.estimate(landmark, alignment)
|
||||
transform = SimilarityTransform.from_estimate(landmark, alignment)
|
||||
|
||||
matrix = transform.params[0:2, :]
|
||||
inverse_matrix = np.linalg.inv(transform.params)[0:2, :]
|
||||
|
||||
Reference in New Issue
Block a user