mirror of
https://github.com/hacksider/Deep-Live-Cam.git
synced 2026-05-14 02:42:09 +02:00
f65aeae5db
Bundles CoreML graph rewrites, GPU-accelerated pipeline work, Windows CUDA fixes, and Mac/Windows runtime routing into a single drop. CoreML (Apple Silicon): - Decompose Pad(reflect) → Slice+Concat in inswapper_128 so the model runs in one CoreML partition instead of 14 (TEMPORARY: fixed upstream in microsoft/onnxruntime#28073, drop when ORT >= 1.26.0). - Fold Shape/Gather chains to constants in det_10g (21ms → 4ms). - Decompose Split(axis=1) → Slice pairs in GFPGAN (155ms → 89ms). - Route detection model to GPU so the ANE is free for the swap model. - Centralize provider/config selection in create_onnx_session. Pipeline (all platforms): - Parallelize face landmark + recognition post-detection; skip landmark_2d_106 when only face_swapper is active. - Pipeline face detection with swap for ANE overlap. - GPU-accelerated paste_back, MJPEG capture, zero-copy display path. - Standalone pipeline benchmark script. Windows / CUDA: - CUDA graphs + FP16 model + all-GPU pipeline for 1080p 60 FPS. - Auto-detect GPU provider and fix DLL discovery for Windows CUDA execution. Cross-platform: - platform_info helper for Mac/Windows runtime routing. - GFPGAN 30 fps + MSMF camera 60 fps with adaptive pipeline tuning. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
|
|
# Add the project root to PATH so bundled ffmpeg/ffprobe are found
|
|
project_root = os.path.dirname(os.path.abspath(__file__))
|
|
os.environ["PATH"] = project_root + os.pathsep + os.environ.get("PATH", "")
|
|
|
|
# On Windows, add NVIDIA CUDA DLL directories to PATH so onnxruntime-gpu can
|
|
# find cuDNN/cublas. PyTorch bundles cuDNN in its lib/ dir; pip nvidia-* pkgs
|
|
# use bin/. Skipped on macOS/Linux where loader paths handle this.
|
|
if sys.platform == "win32":
|
|
_site_packages = os.path.join(sys.prefix, "Lib", "site-packages")
|
|
_venv_site_packages = os.path.join(project_root, "venv", "Lib", "site-packages")
|
|
for _sp in (_site_packages, _venv_site_packages):
|
|
_torch_lib = os.path.join(_sp, "torch", "lib")
|
|
if os.path.isdir(_torch_lib):
|
|
os.environ["PATH"] = _torch_lib + os.pathsep + os.environ["PATH"]
|
|
_nvidia_dir = os.path.join(_sp, "nvidia")
|
|
if os.path.isdir(_nvidia_dir):
|
|
for _pkg in os.listdir(_nvidia_dir):
|
|
_bin_dir = os.path.join(_nvidia_dir, _pkg, "bin")
|
|
if os.path.isdir(_bin_dir):
|
|
os.environ["PATH"] = _bin_dir + os.pathsep + os.environ["PATH"]
|
|
|
|
# Import the tkinter fix to patch the ScreenChanged error
|
|
import tkinter_fix
|
|
|
|
from modules import platform_info
|
|
platform_info.print_banner()
|
|
|
|
from modules import core
|
|
|
|
if __name__ == '__main__':
|
|
core.run()
|