GemmaCaption — Multi-Style Video Captioning (100% Gemma) A single self-contained container for Track 2. It reads /input/tasks.json, downloads each clip, and writes /output/results.json with four captions per video: formal, sarcastic, humorous_tech, humorous_non_tech. Every stage runs on Google Gemma-4-31B via Hugging Face — perception, writing, scene description, and selection are all Gemma. Personas. We sample frames evenly across each clip and give them to Gemma as one continuous scene. Each style follows a hand-tuned contract: formal is a neutral news-wire register; sarcastic is dry, deadpan irony aimed at one thing on screen; humorous_tech lands a single software metaphor on the real action; humorous_non_tech is warm everyday comedy with a hard ban on technology words. Formal is written at low temperature for precision. Best-of-N with description-grounded selection (the core idea). For the three humor styles Gemma drafts N candidates at higher temperature, then produces an independent, strictly factual scene description of the same frames — a source of truth. A two-criterion selector picks the winner per style: an accuracy gate drops any candidate that claims something the description doesn't support (catching joke-driven hallucinations, e.g. a "blue bus" when the clip shows a red one), then a wit pick keeps the boldest, most on-style survivor. Generation itself is untouched, so accuracy rises without diluting the personas. Reliability. Grounding rules forbid invented names, brands, places, or counts; a guard keeps humorous_non_tech tech-free. The container writes a valid results.json at startup and overwrites it as captions land, with a fallback chain (Gemma → serverless backup → templates) guaranteeing a complete caption for every style under a time watchdog. I/O: [{"task_id","video_url","styles":[...]}] → [{"task_id","captions":{style:text}}].
Category tags: