Skip to main content
Built-in extractor names are a deprecated alias — collections are now created by picking features. This pipeline is selected with features: ["faces"]. Existing feature_extractor configs keep working; see the migration guide.

View on GitHub

Runnable reference for this extractor — inputs, parameters, output fields, embedding models, and copy-paste examples. Auto-generated from the live registry.
Face identity extractor pipeline showing detection, alignment, and embedding generation
The face identity extractor provides production-grade face recognition using state-of-the-art models (SCRFD for detection + ArcFace for embeddings). Detects faces, aligns to canonical template, and generates 512-dimensional embeddings with 99.8%+ verification accuracy (LFW benchmark).
Tracking a specific person (person-of-interest / POI). This is the extractor to reach for when the goal is “find every clip a person / individual / face appears in” or “trace a person-of-interest across a video library.” Pass a reference face image as a content query against the face embedding to run 1:N identification — see the Face Search recipe. (For what a person said, pair this with cross-lingual transcript search via the text extractor.)
View extractor details at api.mixpeek.com/v1/collections/features/extractors/face_identity_extractor_v1 or fetch programmatically with GET /v1/collections/features/extractors/{feature_extractor_id}.

Pipeline Steps

  1. Filter Dataset (if collection_id provided)
    • Filter to specified collection
  2. Content Type Routing
    • Images: Direct to Step 3
    • Videos: Frame extraction (sampling at video_sampling_fps) → Step 3
    • PDFs: Page rendering → Step 3
    • Mixed: Branch by type, process separately, union results
  3. Face Detection (SCRFD)
    • Detect all faces per image/frame/page
    • Extract 5-point facial landmarks (eyes, nose, mouth)
    • Filter by min_face_size and detection_threshold
  4. 5-Point Affine Face Alignment
    • Warp face to canonical 112×112 template
    • Ensures consistent embeddings
  5. ArcFace Embedding Generation
    • arcface_r100 model
    • 512D L2-normalized embeddings
    • Cosine similarity for matching
  6. Quality Scoring (conditional: if enable_quality_scoring=true)
    • Assess blur, size, landmark confidence
    • Filter by quality_threshold if specified
  7. Video Deduplication (conditional: if video_deduplication=true AND video content)
    • Remove duplicate faces across frames
    • Threshold-based similarity matching
    • Track face timelines in video
  8. Output Validation
  9. Output
    • Per-face documents with embeddings, bbox, landmarks, quality scores

When to Use

When NOT to Use

Supported Input Types

Supported formats:
  • Image: JPEG, PNG, WebP, BMP
  • Video: MP4, MOV, AVI, MKV, WebM
Recommended resolution: 640px+ for optimal face detection

Input Schema

Provide one of the following inputs:

Output Schema

Each detected face produces one document with the following fields:

Parameters

Detection Parameters

Detection Models

Embedding Parameters

Embedding Models

Quality Parameters

Quality threshold guide:
  • null - Index all detected faces
  • 0.5 - Moderate filtering (removes low quality)
  • 0.7 - High quality only

Video Parameters

Output Parameters

Configuration Examples

Face Matching

Use cosine similarity to match faces: Recommended threshold: 0.25-0.30 for same person verification

Performance & Costs

Video Processing

  • Deduplication: Reduces 90-95% redundancy in video
  • Sampling: 1 FPS recommended for most use cases
  • Max length: 300 seconds (extraction only)

Vector Index

Pipeline Overview

  1. SCRFD Detection - Bounding boxes + 5 landmarks
  2. 5-Point Affine Alignment - 112x112 canonical face
  3. ArcFace Embedding - 512-d L2-normalized vector
  4. Quality Scoring (optional) - Filter low-quality faces

Limitations

  • Face only: Does not identify age, gender, or expressions
  • Pose sensitivity: Extreme angles may reduce accuracy
  • Occlusion: Masks, glasses, hair may affect detection
  • Resolution: Minimum 20px face size, 40px+ recommended
  • Lighting: Poor lighting reduces quality scores
  • Video length: Maximum 300 seconds per video

Search by face

Once faces are indexed, search them with a reference image (1:N identification) using a feature_search stage — pass the reference face as a content query. The feature URI is mixpeek://face_identity_extractor@v1/insightface__arcface — the output name is the model (insightface__arcface), not the internal vector-index name (face_identity_extractor_v1_embedding). If unsure, GET /v1/collections/features/extractors/face_identity_extractor_v1 returns the exact feature_uri:
Define reference_face_url in the retriever’s input_schema, then execute with {"inputs": {"reference_face_url": "https://.../person.jpg"}} to find every document featuring that person.

Build & maintain a named identity list

The 1:N search above matches one reference face at a time. To track a roster of known people — a watchlist that puts a name on faces found in your videos, that you add to and refine over time — build a reference collection of labeled faces and let new footage auto-identify against it. That whole lifecycle — enroll reference faces, label them with names, auto-label people in incoming video, review the “unknown” faces, and promote a newly-confirmed face back into the reference set so the list self-improves — is the Bootstrap a Labeled Dataset tutorial (see its People Identification / Face Recognition System path). Adding, correcting, or removing a person is just editing a document in the reference collection; the next video ingest identifies against the updated list.
Rule of thumb: use 1:N search (above) when you already have the one photo you’re chasing; use the reference-collection roster when you’re maintaining an ongoing list of named identities to match every new video against.