Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Recommendations — Best-in-Class Feature Set

This section translates the feature catalogs and redundancy analysis into actionable per-class recommendations. For each feature class (and its subclasses), it names the best-in-class tool(s), the key features to extract, whether the tool runs locally, and a priority tier: core (the minimal tractable set — one extractor per signal, maximal cross-subclass reuse, single consumer GPU + CPU) or extended (added only when resources or a specific accuracy/distinct-signal need justifies it).

Recommendation table

ClassSubclassRecommended toolOutput featuresLocal?Priority
VisualLow-level static visualscikit-image + OpenCV + NumPyMean luminance, RMS contrast, RGB/HSV/CIELAB color means+stds, Shannon entropy, edge density, FFT power-spectrum slope, GLCM/LBP textureYes (CPU)core
VisualLow-level static visualHasler-Susstrunk colorfulness (direct impl)Colorfulness index M, mean a*/b* (warmth), HSV saturation, dominant hueYes (CPU)core
VisualLow-level static visualpyrtools / plenoptic steerable pyramidPer-subband (scale x orientation) energy; orientation-energy and spatial-frequency-band vectorsYes (CPU)core
VisualLow-level static visualSHINE (+ SHINE_color)Canonical luminance, RMS contrast, 1-D rotationally averaged Fourier amplitude spectrum + slopeYes (CPU)extended
VisualLow-level static visualRosenholtz Feature-Congestion + Subband-EntropyGlobal clutter scalars (+ per-pixel map), color/contrast/orientation clutter sub-componentsYes (CPU)extended
VisualLow-level static visualGIST / spatial envelopeFixed-length holistic orientation-energy descriptor (e.g. 512-d)Yes (CPU)extended
VisualHigh-level static visual (objects/scenes/places/attributes)SigLIP 2Image embedding (768-1152-d) + per-prompt sigmoid scores for object/scene/place/attribute label setsYes (GPU)core
VisualHigh-level static visualDINOv2 / DINOv3Label-free CLS embedding (384-1536-d) + dense patch maps for RSA / linear probesYes (GPU)core
VisualHigh-level static visualGrounding DINO 1.5/1.6Per-object boxes + free-text labels + confidence (presence/counts/positions)Yes (GPU)extended
VisualHigh-level static visualMask2Former / OneFormer (panoptic)Per-pixel class map + instance masks; per-category area fractions, object counts, composition vectorYes (GPU)extended
VisualHigh-level static visualSAM 2Video-tracked instance masks (sizes, counts, track IDs); label via Grounded-SAMYes (GPU)extended
VisualHigh-level static visualPlaces365 ResNet-50Frozen 365-d scene posterior + indoor/outdoor + scene attributes (reproducible fixed taxonomy)Yes (CPU)extended
VisualFaces / bodies / gaze / expressionOpenFace 3.0Landmarks + FACS AUs + eye-gaze + head pose + discrete emotion (one multitask model)Yes (CPU)core
VisualFaces / bodies / gaze / expressionInsightFace buffalo_l (RetinaFace + ArcFace)Face bbox + score, 5/106/68 landmarks, head pose, age/sex, 512-d identity embeddingYes (GPU)core
VisualFaces / bodies / gaze / expressionMMPose RTMPose / RTMW17 body or 133 whole-body keypoints (x,y,conf) per person -> posture, gesture, orientationYes (GPU)core
VisualFaces / bodies / gaze / expressionPy-FeatValidated AU probabilities/intensities + 7 emotions + head pose (Fex time series)Yes (GPU)extended
VisualFaces / bodies / gaze / expressionL2CS-NetHigh-accuracy gaze yaw/pitch -> 3D gaze vectorYes (GPU)extended
VisualFaces / bodies / gaze / expressionMediaPipe Tasks478 face-mesh landmarks, 52 blendshapes, 33 body + 21 hand landmarks (CPU redundancy layer)Yes (CPU)extended
VisualDynamic visual (motion/flow)SEA-RAFTDense (u,v) flow -> mean flow magnitude, orientation histogram, camera-vs-object motion decompositionYes (GPU)core
VisualDynamic visualpymotenHigh-dim motion-energy filter-bank vector (brain-aligned encoding regressor)Yes (CPU)core
VisualDynamic visualTransNetV2 + PySceneDetectPer-frame cut probability, shot boundaries/segments, per-frame visual-change scoreYes (GPU/CPU)core
VisualDynamic visualMemFlowTemporally coherent (u,v) flow (lower frame-to-frame jitter)Yes (GPU)extended
VisualAction / activity recognitionVideoMAE V2Per-window Kinetics-400/710 posteriors + pooled embedding (sliding 16-frame window)Yes (GPU)core
VisualAction / activity recognitionX-CLIPPer-window zero-shot similarity scores over arbitrary action-phrase vocabularyYes (GPU)core
VisualAction / activity recognitionInternVideo2-1BStronger zero-shot action similarity + features for TALYes (heavy GPU)extended
VisualAction / activity recognitionV-JEPA 2Motion/temporal-biased self-supervised window embeddings + action posteriorsYes (GPU)extended
VisualAction / activity recognitionActionFormer / OpenTAD(start, end, action_class, confidence) timestamped action segmentsYes (GPU)extended
VisualSaliency / attention / aesthetics / depthViNet (ViNet-A audio-visual)Per-frame saliency map -> concentration/entropy, peak, salient-area fraction, temporal shiftYes (GPU)core
VisualSaliency / attention / aesthetics / depthDepth-Anything-V2Per-frame depth map -> mean/range depth, foreground fraction, depth entropy/gradientYes (GPU)core
VisualSaliency / attention / aesthetics / depthQ-Align / OneAlignPer-frame aesthetic + technical-quality scalarsYes (heavy GPU)extended
VisualSaliency / attention / aesthetics / depthResMemPer-frame memorability scalar (0-1)Yes (CPU)extended
VisualSaliency / attention / aesthetics / depthApple Depth ProPer-frame metric (meters) depth map + true-scale foreground distanceYes (GPU)extended
AudioLow-level acousticlibrosaRMS, spectral centroid/bandwidth/rolloff/flatness/contrast, ZCR, MFCC+deltas, chroma, tonnetz, onset envelope, tempo/beats, pYIN F0, HPSSYes (CPU)core
AudioLow-level acousticopenSMILE eGeMAPS (opensmile-python)~10 ms LLDs (F0, loudness, jitter, shimmer, HNR, spectral, MFCC1-4, formants) + 88-d eGeMAPS functionalsYes (CPU)core
AudioLow-level acousticParselmouth (Praat)F0/intensity/formant contours; jitter/shimmer/HNR voice quality; spectral moments, CPPYes (CPU)core
AudioLow-level acousticEssentiaDissonance/roughness, inharmonicity, HPCP, spectral complexity, robust beat trackingYes (CPU)extended
AudioLow-level acousticCREPE / torchcrepeHigh-accuracy per-frame F0 + voicing confidence + salience matrixYes (GPU)extended
AudioLow-level acousticmosqitoStandards-based loudness (sones), sharpness (acum), roughness (asper), fluctuation strengthYes (CPU)extended
AudioHigh-level audio (events/scenes/music/speech)BEATs527-d AudioSet event/scene probabilities per window + 768-d embeddingsYes (GPU)core
AudioHigh-level audioCLAP (general + music_and_speech)512-d joint audio/text embeddings; per-prompt cosine-similarity time series; zero-shot labelsYes (GPU)core
AudioHigh-level audioinaSpeechSegmenterTimestamped speech/music/noise segments (+ optional speaker sex)Yes (CPU)core
AudioHigh-level audioEssentia + TF modelsBPM/tempo, key+scale, genre/mood tags, valence-arousal regressors, instrument tagsYes (CPU)extended
AudioHigh-level audiomadmom / Beat This!Beat + downbeat timestamps, per-beat tempo curve, meter, chord labelsYes (CPU)extended
AudioHigh-level audioPANNs CNN14Framewise (tens-of-ms) SED for onset/offset localizationYes (GPU)extended
AudioSpeech (ASR/diarization/prosody/affect)faster-whisper (large-v3) + WhisperXSegment + word-level text and timestamps, confidences, language, speaking rateYes (GPU)core
AudioSpeechpyannote diarization (community-1 / 3.1)Speaker-turn segments, per-frame speech-activity, overlap flags, speaker embeddingsYes (GPU)core
AudioSpeechParselmouth (Praat)Per-frame F0, intensity, formants F1-F4, HNR, jitter, shimmer; pause structureYes (CPU)core
AudioSpeechaudEERING wav2vec2-large-robust-12-ft-emotion-msp-dimPer-window arousal/valence/dominance scalars + 1024-d voice-affect embeddingYes (GPU)core
AudioSpeechSilero VAD v5~30 ms speech probability; speech/non-speech boundaries; total speech timeYes (CPU)core
AudioSpeechemotion2vec+9-class categorical emotion posteriors + emotion embeddingsYes (GPU)extended
AudioSpeechNeMo Parakeet-TDT / Canary + SortformerWord/segment ASR + timestamps; per-frame speaker activity (multilingual cross-check)Yes (GPU)extended
AudioSpeechCREPE / torchcrepeRobust per-frame F0 + voicing on noisy/creaky speechYes (GPU)extended
LanguageLow-level lexical / word-levelspaCy (en_core_web_trf)Per-token lemma, UPOS + fine POS, dependency, NER, is_stop/punct flagsYes (CPU)core
LanguageLow-level lexicalwordfreq + SUBTLEX-USZipf/log frequency, contextual diversity, %knownYes (CPU)core
LanguageLow-level lexicalBrysbaert concreteness + Kuperman AoA + Warriner/NRC-VADPer-word concreteness, AoA, valence/arousal/dominanceYes (CPU)core
LanguageLow-level lexicalNRC EmoLex8 binary emotion associations + pos/neg sentiment per wordYes (CPU)core
LanguageLow-level lexicalminicons (GPT-2-medium / Pythia)Per-token surprisal (bits), next-word entropy, log-prob (whole-word aggregated)Yes (GPU)core
LanguageLow-level lexicalLIWC-22Validated pronoun/person-reference + function-word categories; segment summary scoresYes (CPU)extended
LanguageLow-level lexicalGLiNERUser-defined entity-type spans + confidenceYes (GPU)extended
LanguageSyntactic / grammatical structurespaCy (en_core_web_trf)Dependency labels+heads, POS, morphology (tense/aspect/mood), noun chunksYes (CPU)core
LanguageSyntactic structurebeneparPTB constituency trees -> tree depth, clause counts, phrase-type countsYes (GPU)core
LanguageSyntactic structureL2SCA (+ Yngve/Frazier from trees)14 complexity indices (clause/T-unit ratios, dependent clauses, complex nominals)Yes (CPU)core
LanguageSyntactic structureMaverickCoreference clusters (who/what each mention refers to)Yes (GPU)core
LanguageSyntactic structureStanzaTrue UD-scheme dependencies + UFeats + constituency (cross-tool complexity metrics)Yes (GPU)extended
LanguageSyntactic structuretextstatFlesch-Kincaid/Gunning Fog/SMOG readability over sliding windowsYes (CPU)extended
LanguageSyntactic structureDialogue-act classifier (DialogTag/SwDA)Per-utterance DA label (statement/question/backchannel/…) + probabilitiesYes (CPU)extended
LanguageHigh-level semantics / discourse / narrativeQwen3-Embedding (0.6B; scale to 4B/8B)Per-window L2-normalized embedding (1024-4096-d, Matryoshka-truncatable)Yes (GPU)core
LanguageSemantics / discourse / narrativeSliding-window cosine pipelinePer-timepoint local coherence, semantic drift, novelty, segmentation-boundary scoreYes (CPU)core
LanguageSemantics / discourse / narrativeBERTopic (topics-over-time)Per-window topic id + soft topic distribution; per-bin topic prevalence seriesYes (CPU)core
LanguageSemantics / discourse / narrativeAutoregressive LLM hidden-state extractor (GPT-2 / Llama-3.1-8B)Per-token hidden-state vector + surprisal/entropy, resampled per TR (neuroimaging standard)Yes (GPU)core
LanguageSemantics / discourse / narrativeInstruction-tuned LLM (Llama-3.1-8B / Qwen2.5-7B-Instruct)Structured JSON: narrative stage, turning points, discourse relations, tension, summaryYes (GPU)core
LanguageSemantics / discourse / narrativeDMRST (neural RST parser)EDU boundaries + discourse-tree relations/nuclearity (reproducible labels)Yes (GPU)extended
LanguageSemantics / discourse / narrativeSupervised turning-point model (TRIPOD-style)5 TP-type probabilities, normalized story position, sentiment-arc valueYes (GPU)extended
LanguageSemantics / discourse / narrativeAPI embeddings (OpenAI/Voyage/Gemini)Leaderboard-topping per-window embedding (only if off-site transfer acceptable)API-onlyextended
SocialSocial & interpersonalpyannote diarization (3.1 / community-1)Speaker turns, active-speaker id, speaker count, overlap, turn-taking transitionsYes (GPU)core
SocialSocial & interpersonalLight-ASD / LR-ASDPer-face per-frame speaking probability -> active speaker, speaker-vs-listener rolesYes (GPU)core
SocialSocial & interpersonalInsightFace (SCRFD + ArcFace)Face count, identity track, characters-present set, co-presence matrix (social-network seed)Yes (GPU)core
SocialSocial & interpersonalGaze-LLEPer-person gaze target + heatmap -> mutual-gaze and joint-attention signalsYes (GPU)core
SocialSocial & interpersonalMMPose RTMPose + ByteTrackTracked skeletons -> inter-personal distance, body orientation, contact/touch proxy, approach/retreatYes (GPU)core
SocialSocial & interpersonalQwen2.5-VL (7B)Per-shot interaction-type, dominance/affiliation, ToM/intention, addressee, social-network edgesYes (heavy GPU)core
SocialSocial & interpersonalSocial-IQ 2.0 / Social Genome (schema)Label schemas, few-shot exemplars, held-out evaluation items for the social extractorYes (CPU)core
SocialSocial & interpersonalInternVL3 or frontier API judgeSecond VLM for inter-rater agreement / gold-label validationGPU / APIextended
SituationSituations / schemas / event segmentationGSBS / statesegmentationPer-timepoint state label, ranked boundaries, optimal K, hierarchical boundariesYes (CPU)core
SituationSituations / event segmentationTransNetV2 + PySceneDetectShot-boundary timestamps + per-frame change score (event-boundary prior)Yes (GPU/CPU)core
SituationSituations / event segmentationSigLIP 2 / OpenCLIP zero-shotPer-frame location/time-of-day/setting/script attribute scores (custom taxonomy)Yes (GPU)core
SituationSituations / event segmentationQwen2.5-VL (7B)Timestamped event boundaries + Event-Indexing fields (space/time/causation/intention/protagonist), script labelsYes (GPU)core
SituationSituations / event segmentationInstruction-tuned / API LLM (transcript)Transcript event boundaries + per-event situational fields (esp. audio stories)Yes (heavy GPU) / APIcore
SituationSituations / event segmentationPlaces365 ResNet-50Calibrated fixed-taxonomy location/setting + scene attributesYes (GPU)extended
SituationSituations / event segmentationBrainIAK EventSegment HMMSoft event posteriors / reactivation modelingYes (CPU)extended
AffectEmotion & affect (multimodal)audEERING wav2vec2-dimPer-window voice arousal/valence/dominance + 1024-d embeddingYes (GPU)core
AffectEmotion & affectHSEmotion / EmotiEffLibPer-face categorical emotion + continuous valence/arousal + 1280-d embeddingYes (CPU)core
AffectEmotion & affectRoBERTa-GoEmotions (+ NRC-VAD mapping)Per-utterance 28 emotion scores -> valence/arousal proxyYes (CPU)core
AffectEmotion & affectQwen2.5-VL (7B)Per-window JSON: categorical emotion, V/A/D, intensity, confidence, justification (depicted vs viewer)Yes (GPU)core
AffectEmotion & affectLIRIS-ACCEDE / MuSe-trained continuous regressorPer-second viewer-ELICITED valence/arousal (kept as a SEPARATE stream)Yes (GPU)core
AffectEmotion & affectMERT-based V/A regressorPer-window soundtrack/music valence/arousal + mood tagsYes (GPU)extended
AffectEmotion & affectEmotion-LLaMA or AffectGPTPer-clip benchmarked / open-vocabulary depicted-emotion label + multimodal-cue explanationYes (heavy GPU)extended
AffectEmotion & affectEmoNetPer-face valence/arousal + expression (citable cross-check)Yes (GPU)extended

Tradeoffs

Cross-subclass reuse dominates within-subclass pruning. Several signals appear in multiple classes and must be extracted once and routed everywhere, not re-run per catalog. The clearest cases: face detection/identity (InsightFace) feeds Faces, Social, and High-level visual; face emotion (HSEmotion/OpenFace 3.0) feeds Faces, Social, and Affect; body pose (MMPose RTMPose) feeds Faces, Social, and Dynamic visual; diarization (pyannote) feeds Speech and Social; prosody (Parselmouth + openSMILE) feeds Speech, Low-level acoustic, and Affect; shot boundaries (TransNetV2/PySceneDetect) feed Dynamic visual, Situation, and Action; vocal affect (audEERING wav2vec2-dim) feeds Speech and Affect; LLM surprisal and hidden states (minicons) feed Lexical and Semantics; and lexical-VAD/GoEmotions feed Lexical and Affect. Wiring the pipeline around shared passes, rather than per-class extractors, is what makes the whole set tractable on a single consumer GPU.

The single largest compute saving is consolidating high-level reasoning into one video-LLM pass. Action description, situational dimensions (space/time/causation/intention/protagonist), social interaction-type/dominance/ToM, and depicted emotion are all realized by Qwen2.5/3-VL-class models. Running one Qwen-VL pass per shot with a unified multi-field JSON schema replaces four separate VLM deployments. InternVL3, VideoLLaMA3, LLaVA-OneVision, Emotion-LLaMA, and AffectGPT are interchangeable for this role; keep at most one primary plus, optionally, one frontier-API judge reserved for gold-label validation rather than routine annotation.

Foundation models supersede most fixed-taxonomy CNNs, but not always. SigLIP 2 zero-shot probing covers the object/scene/place/attribute role that Places365 and ImageNet backbones (and YAMNet/AST in audio) used to fill. Keep the fixed-taxonomy models only when a frozen, calibrated, reproducible probability vector is explicitly required for interpretability. Likewise, classic flow (RAFT/Farneback), depth (MiDaS/ZoeDepth), saliency (TASED-Net/UNISAL), and shot detection (AutoShot) are superseded by SEA-RAFT, Depth-Anything-V2, ViNet, and TransNetV2 respectively; the older tools survive only as no-GPU fallbacks.

Some surface-similar pairs are genuinely distinct and must both be kept. DINOv2 (label-free dense embedding for RSA) versus SigLIP 2 (text-probed interpretable scores) are different representations. pymoten (brain-aligned motion-energy regressor) versus SEA-RAFT (interpretable camera-vs-object flow), and semantic action recognition (VideoMAE) versus pre-semantic motion (SEA-RAFT/pymoten), are deliberately separate layers. BEATs (calibrated 527-class) versus CLAP (arbitrary open-vocabulary prompts), inaSpeechSegmenter (speech/music/noise partition) versus pyannote (who-spoke-when), Mask2Former (area-fraction composition) versus Grounding DINO (object counts/positions), and CREPE (robust pitch contour) versus Parselmouth (canonical voice-quality) all carry complementary information.

The one non-negotiable “keep two” is depicted versus elicited emotion. Face/voice/text emotion models predict character-expressed (depicted) affect, whereas LIRIS-ACCEDE/MuSe-trained regressors predict viewer-induced (elicited) affect. These are correlated but not interchangeable; logging them as a single stream would be a scientific error, not a parsimony gain. Similarly, interpretable per-modality affect signals (wav2vec2 + HSEmotion + GoEmotions) should remain the primary features, with any fusion MLLM as an added reasoned layer rather than a replacement.

Local-first is feasible throughout. Every core recommendation runs locally; most low-level audio and lexical tools are CPU-only, and the heaviest core components (Qwen-VL, VideoMAE, SigLIP 2, DINOv2, pyannote, Whisper) fit on a single 24-48 GB GPU. API embeddings and frontier-API VLM judges are the only API-only entries and are confined to the extended tier, used only when leaderboard-topping accuracy is required and off-site transfer of transcripts/frames is acceptable.