A comprehensive face analysis library that provides unified APIs for various face-related tasks
Project description
Mukh
Mukh (मुख, meaning "face" in Sanskrit) is a comprehensive face analysis library that provides unified APIs for various face-related tasks. It simplifies the process of working with multiple face analysis models through a consistent interface.
Features
- 🎯 Unified API: Single, consistent interface for multiple face analysis tasks
- 🔄 Model Flexibility: Support for multiple models per task
- 🛠️ Custom Pipelines: Optimized preprocessing and model combinations
- 🚀 Easy to Use: Simple, intuitive APIs for quick integration
Documentation
The library is documented in detail, click here to view the documentation.
Currently Supported Tasks
- Face Detection
- Face Reenactment
- Deepfake Detection using a Single Model
- Deepfake Detection Pipeline - Ensemble of multiple models
Installation
conda create -n mukh-dev python=3.10 -y
pip install mukh==0.1.14
Usage
Face Detection
from mukh.face_detection import FaceDetector
# Initialize detector
detection_model = "mediapipe" # Other models: "blazeface", "ultralight"
detector = FaceDetector.create(detection_model)
# Detect faces
detections = detector.detect(
image_path="assets/images/img1.jpg", # Path to the image to detect faces in
save_csv=True, # Save the detections to a CSV file
csv_path=f"output/{detection_model}/detections.csv", # Path to save the CSV file
save_annotated=True, # Save the annotated image
output_folder=f"output/detection_model", # Path to save the annotated image
)
Example
python examples/face_detection/basic_detection.py --detection_model mediapipe
Face Reenactment
from mukh.face_reenactment import FaceReenactor
# Initialize reenactor
reenactor_model = "tps" # Available models: "tps"
reenactor = FaceReenactor.create(reenactor_model)
# Reenact face
result_path = reenactor.reenact_from_video(
source_path="assets/images/img1.jpg", # Path to the source image
driving_video_path="assets/videos/video.mp4", # Path to the driving video
output_path=f"output/{reenactor_model}", # Path to save the reenacted video
save_comparison=True, # Save the comparison video
resize_to_image_resolution=False, # Resize the reenacted video to the image resolution
)
Example
python examples/reenactment/basic_reenactment.py \
--reenactor_model tps \
--source_path assets/images/img1.jpg \
--driving_video_path assets/videos/video_1sec.mp4 \
--output_folder output
Deepfake Detection
Images
import torch
from mukh.deepfake_detection import DeepfakeDetector
# Initialize detector
detection_model = "efficientnet" # Other models "resnet_inception"
detector = DeepfakeDetector(
model_name=detection_model,
confidence_threshold=0.5,
device=torch.device("cuda" if torch.cuda.is_available() else "cpu"),
)
# Detect deepfakes in Images
media_path = "assets/images/img1.jpg"
detections, final_result = detector.detect(
media_path=media_path, # Path to the media file (image/video)
save_csv=True, # Save the detections to a CSV file
csv_path=f"output/{detection_model}/deepfake_detections.csv", # Path to save the CSV file
save_annotated=True, # Save the annotated media
output_folder=f"output/{args.detection_model}", # Path to save the annotated media
)
Example
python examples/deepfake_detection/detection.py \
--detection_model resnet_inception \
--media_path assets/images/img1.jpg \
--confidence_threshold 0.5 \
Videos
import torch
from mukh.deepfake_detection import DeepfakeDetector
# Initialize detector
detection_model = "efficientnet" # Other models "resnet_inception"
detector = DeepfakeDetector(
model_name=detection_model,
confidence_threshold=0.5,
device=torch.device("cuda" if torch.cuda.is_available() else "cpu"),
)
# Detect deepfakes in Videos
media_path = "assets/videos/deepfake_elon_musk.mp4"
detections, final_result = detector.detect(
media_path=media_path, # Path to the media file (image/video)
save_csv=True, # Save the detections to a CSV file
csv_path=f"output/{detection_model}/deepfake_detections.csv", # Path to save the CSV file
save_annotated=True, # Save the annotated media
output_folder=f"output/{args.detection_model}", # Path to save the annotated media
num_frames=11, # Number of equally spaced frames for video analysis
)
Example
python examples/deepfake_detection/detection.py \
--detection_model resnet_inception \
--media_path assets/videos/deepfake_elon_musk.mp4 \
--confidence_threshold 0.5 \
--num_frames 11
Deepfake Detection Pipeline
from mukh.pipelines.deepfake_detection import PipelineDeepfakeDetection
# Define model configurations with weights
model_configs = {
"resnet_inception": 0.5,
"efficientnet": 0.5
}
# Create ensemble detector
detector = PipelineDeepfakeDetection(model_configs)
media_path = "assets/videos/deepfake_elon_musk.mp4" # Or pass an image path
# Detect deepfakes
result = pipeline.detect(
media_path=media_path,
output_folder="output/deepfake_detection_pipeline,
save_csv=True,
num_frames=11, # Number of equally spaced video frames for analysis
)
Example
python examples/pipelines/deepfake_detection.py \
--media_path assets/videos/deepfake_elon_musk.mp4 \
--output_folder output/deepfake_detection_pipeline
Contact
For questions and feedback, please open an issue on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mukh-0.1.14.tar.gz.
File metadata
- Download URL: mukh-0.1.14.tar.gz
- Upload date:
- Size: 86.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d61c845aa627e52cddb4d163792b0849e94297053dcd6baa9daddb8c39a5c4ae
|
|
| MD5 |
43205882ff116937b19cc82947500f8d
|
|
| BLAKE2b-256 |
f067f0d74b44a655113f69421ad7b0403fb6345d819b0d36b19c49008604425b
|
File details
Details for the file mukh-0.1.14-py3-none-any.whl.
File metadata
- Download URL: mukh-0.1.14-py3-none-any.whl
- Upload date:
- Size: 110.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2855e90442a787b716cb8a0c396fe5e23e84d028691a20c180386ec1541c270
|
|
| MD5 |
254ff4f1c9beb0b80e187a2506576cc7
|
|
| BLAKE2b-256 |
65ee5b65e0e82d0cbc904ad9db4845bb14d62d9525d5c06b35b110e9fc0d0481
|