HOW IT WORKS FEATURES PIPELINE PERFORMANCE ETHICS & LEGAL GET STARTED
OPEN SOURCE • AGPL-3.0 • GPU-ACCELERATED

FACELESS

Real-time face swapping, engineered for speed and consent.

An open-source GPU face-swap engine that runs a live camera feed through a CUDA pipeline at roughly 30fps and outputs to a virtual camera for OBS, Zoom, or Discord. Built for VFX, streaming, VTubing, privacy, and research — with the people on screen on board.

~30fps
Real-time on RTX
128px
Swap model core
1080p
Capture & output
AGPL
3.0 • open source

From Source Face to Virtual Camera

FACELESS runs a four-stage, multi-threaded pipeline on the GPU. You provide a consented source image; the engine detects, swaps, enhances, and streams the result in real time.

01
SELECT
Choose a source face from a still image you have permission to use. InsightFace extracts the face embedding.
02
CAPTURE
The camera feed is captured at 1080p / 30fps. RetinaFace detects faces asynchronously on the full-res frames.
03
SWAP & ENHANCE
Frames downscale to 480p, inswapper_128 performs the swap, optional GPEN-BFR-256 restores detail, then upscale to 1080p.
04
OUTPUT
JPEG-encoded frames stream to the Electron preview and to a virtual camera for OBS, Zoom, or Discord.

What's Under the Hood

Every component is built around the real-time pipeline — GPU inference, decoupled architecture, and fine-grained control over the output.

CUDA GPU ACCELERATION
ONNX Runtime with the CUDA Execution Provider drives inference, with OpenCV CUDA used where available. ~25–30fps on NVIDIA RTX cards.
RESOLUTION-DECOUPLED PIPELINE
Capture at 1080p, process the swap at 480p, composite back to 1080p — the swap model is 128×128 internally, so this removes the warp bottleneck without losing output quality.
GPEN FACE ENHANCEMENT
Optional GPEN-BFR-256 neural face restoration sharpens the swapped face for roughly +5ms per frame. Toggle it per your quality/latency budget.
VIRTUAL CAMERA OUTPUT
Stream the result to OBS, Zoom, Discord, or any app via pyvirtualcam. (When you do, disclose that an AI face-swap is in use.)
MULTI-FACE SUPPORT
Swap every detected face in a frame, or just the primary one. Choose per scene with the Many Faces toggle.
QUALITY PRESETS
NORMAL for a balanced ~30fps, HIGH for maximum fidelity. Tune the processing resolution to match your hardware.
POST-PROCESSING SUITE
Color correction, mouth masking for better lip-sync, sharpening, and opacity blending — fine-tune every aspect of the swap.
WEBSOCKET ARCHITECTURE
A Python inference backend and an Electron + React 19 frontend, decoupled over WebSockets: JSON control messages, binary JPEG frames.

The Resolution-Decoupled Pipeline

The core trick: the swap model only ever sees a 128×128 face, no matter the input size. So FACELESS deliberately decouples capture, processing, and output resolutions instead of forcing every stage to run at 1080p.

1080p
CAPTURE
1920×1080 @ 30fps
480p
PROCESS
854×480 • detect + swap
128px
SWAP MODEL
inswapper_128 internal
1080p
OUTPUT
upscaled • composited

Running detection and warping at 480p instead of 1080p eliminates the single biggest cost — CPU-side affine warping — while the 128px swap model produces identical results either way. The result composites back to a full 1080p frame. That's how FACELESS holds real-time framerates on consumer GPUs where a naive full-res pipeline would crawl at ~10fps.

FOUR-THREAD BACKEND
Electron UI (React 19 + TypeScript)
WebSocket · ws://127.0.0.1:7865
Python WebSocket Server
Capture (30fps)
Detect (async)
Process (swap+enh)
Display (encode)
ONNX Runtime CUDA EP
pyvirtualcam → OBS / Zoom / Discord

Every Millisecond Accounted For

Benchmarked on an RTX GPU with 1080p webcam input. Numbers below are real measurements from the project README — not marketing maxima.

Python 3.12
ONNX Runtime CUDA
InsightFace
OpenCV
React 19
Electron
TypeScript
Tailwind CSS 4
WebSockets
Zustand
Camera Capture (1920×1080)~2ms
Face Detection (RetinaFace ONNX)~3–5ms
Downscale to 480p<1ms
Face Swap (inswapper_128 CUDA)~5ms
Face Enhance (GPEN-BFR-256, optional)~5ms
Upscale to 1080p<1ms
JPEG Encode + WebSocket Send~3ms
TOTAL PIPELINE LATENCY
~20–30ms
~30–50fps effective on RTX-class hardware
PROCESSING RESOLUTION VS. EFFECTIVE FPS
1080p • ~10fps
720p • ~23fps
540p • ~27fps
480p (default) • ~31fps
360p • ~52fps
Read this before you use FACELESS

Ethics, Consent & Legal

Face-swapping is powerful and easy to misuse. FACELESS is built and shared for legitimate, consensual use only. Using it does not make any output lawful or ethical — that responsibility is yours. The rules below are not optional fine print.

Legitimate Uses YES

  • VFX, film, and animation pre-visualization
  • Live streaming and VTubing with your own or a consenting performer's likeness
  • Personal privacy — masking your own face on calls or recordings
  • Research, education, and detection / forensics work
  • Consensual fun among people who have all agreed to take part

Never Permitted NO

  • Swapping anyone's face without their explicit, informed consent
  • Impersonation, fraud, or romance / identity scams
  • Defaming, harassing, intimidating, or deceiving any person
  • Creating sexual or intimate content of real people without consent
  • Bypassing identity, liveness, KYC, or biometric verification

Your Obligations MUST

  • Get consent from everyone whose likeness you use, including source faces
  • Disclose that an AI face-swap is in use during live calls and recordings
  • Comply with local deepfake, impersonation, and biometric laws — they vary by region
  • Honor the platform terms of any service you stream into
  • Stop and delete material if a depicted person withdraws consent

Build It From Source

FACELESS is open source. Clone the repo, install the dependencies, drop in the models, and launch the Electron app — which starts the Python backend for you.

# clone the repository $ git clone https://github.com/EmperorBadussy/faceless.git $ cd faceless # python deps + CUDA-enabled ONNX Runtime $ pip install -r requirements.txt $ pip install onnxruntime-gpu # launch the Electron UI (auto-starts the backend) $ cd ui && npm install && npm run dev
Models: inswapper_128_fp16.onnx (277MB) · GPEN-BFR-256.onnx (76MB, optional) — see the README
Requirements
NVIDIA GPU with CUDA (RTX recommended) • Python 3.12+ • Node.js 20+ • 8GB+ RAM • OBS Studio optional (for the virtual-camera driver)
EmperorBadussy/faceless