Qwen3.8-27B and Muse Glimmer 30B with an 8-frame sliding window and a self-written memory on Ego-MC-Bench (39 cooking videos), run with the Ego-MC-Bench paper's own protocol (per-recipe step and full recipe) and scored with its official QICD evaluator, so the numbers sit next to the paper's.
Models, sliding window, memory, serving and the latency study are shared by both benchmarks: see the overview page.
eval.py (commit a9f73f7), unmodified: 30 s detection window (±15 s), BERTScore rescaled with baseline. Ego-MC annotations are mapped to its input format (Feedback → mistake, Success → success; user turns dropped).You are an expert cooking assistant who is observing a person cook. ##INSTRUCTIONS: The person is currently at the following recipe step: [recipe_step]. Has the person already completed the recipe step? If the person has completed the recipe step answer ‘YES’ else answer ‘NO’. If you answer ‘YES’ describe why you think the person already completed the recipe step.
You are an expert cooking assistant who is observing a person cook. You should look out for mistakes made by the person. ##INSTRUCTIONS: The person is trying to complete the following recipe step: [recipe_step]. Your task is to check if the person is about to make or has already made a mistake. Mistakes occur when the person performs actions that deviates from the instruction and DIRECTLY INTERFERES WITH SUCCESSFUL INSTRUCTION COMPLETION. Do not penalize actions that do not directly interfere with instruction completion (e.g. washing broccoli before cutting, if the instruction just says ‘cut broccoli’). Here are some common types of mistakes that you should look out for: 1. Technique Error: A mistake in how a step is physically performed. Examples include chopping with the wrong motion, stirring when folding is required, or spilling during transfer, producing uneven cuts or texture issues even when tools and amounts are right. Ignore minor technique errors such as not holding or gripping objects properly, holding with a risk of dropping etc. that do not interfere directly with recipe completion. 2. Preparation Error: A setup mistake before executing the step . Using the wrong or dirty utensil, not washing/peeling/draining ingredients, insufficient draining of fluid, cutting/chopping without peeling which makes correct execution difficult or unsafe. 3. Measurement Error: An error in quantity — wrong counts, volumes, weights, or units. Mixing up teaspoons and tablespoons, misreading a scale, or miscounting items leads to off ratios and predictable taste or texture problems. 4. Temperature Error: A mistake in heat level or thermal state — the applied temperature, starting temperature, or thermal transition is wrong. Not preheating, using the wrong microwave power, overheating oil, or adding cold liquid when warm is required often causes burning, undercooking, or split emulsions. 5. Timing Error: A mistake in duration – over- or under-doing a step or skipping required rests, proofs, or cooling periods. Overcooking, underblending, or cutting resting time short typically yields incorrect doneness or unstable textures. Do not repeat previously detected mistakes. Here are the feedbacks corresponding to previously detected mistakes:[prev_detected_mistakes]. Assume the recipe step is still in progress. Your task is to identify any mistake that’s already visible in the partially completed step. Do no penalize partially competed recipe steps. If you observe a mistake answer ‘YES’, else ‘No’. Your response MUST BEGIN WITH ‘YES’ or ‘NO’. In case you answer ‘YES’, please follow with a concise feedback to the user describing the mistake (i.e. YES. <feedback>.). Directly address the person.
You are watching a live cooking stream but only ever see the most recent frames (each labeled with its time in seconds) plus a short written memory that you yourself wrote on the previous turn. Nothing else about earlier footage survives, so the memory must carry everything you will need later: what the person has done for the current recipe step, quantities and counts, the current state, and mistakes already pointed out.
Current recipe step: [recipe_step].
Feedback already given to the person in the last minute: [prev_detected_mistakes].
Hard limits: observed_facts at most 8 entries, completed_steps at most 6, pending_commitments at most 3, uncertainties at most 3; every entry at most 15 words and prefixed with its time (e.g. "12s: ..."); current_state at most 40 words. Merge or drop older entries instead of exceeding these limits. Describe only what the frames support.
Reply with ONE JSON object and nothing else, in exactly this shape:
{"observed_facts": [...], "completed_steps": [...], "current_state": "...", "pending_commitments": [...], "uncertainties": [...]}Most recent frames (8), oldest first:
[frame at 2.2s] <image> … [frame at 9.2s] <image>
Your memory of earlier footage (written by you on the previous turn):
{"observed_facts": [...], "completed_steps": [...], "current_state": "...", "pending_commitments": [...], "uncertainties": [...]}to=self<|message|>Your memory of earlier footage... We need check if person is about to make or has already made a mistake. Step: get a baguette and slice four half-inch thick pieces from it. Frames: 5s hands together, 6s same, 7s hands move to baguette, 8s hands on baguette, 9s hands holding bag, 9.2s same. Person has not yet sliced. They are handling baguette still in paper bag. Mistake? Might be not removing baguette from bag before slicing. The instruction: get a baguette and slice... Might be okay to slice in bag? No. They are manipulating bag. Could be a preparation error: slicing with bag still on? At 7-9s they grasp bag, not baguette. Might be about to slice while still in paper. That would be technique error? Probably a mistake: baguette is still in paper bag, can't slice properly. That directly interferes. So answer YES. Feedback: baguette still in paper bag, need to remove. <|eom|><|start|>assistant to=user<|message|>YES. You’re still holding the baguette inside its paper bag and haven’t taken the loaf out onto the cutting board. Slicing four half-inch pieces isn’t possible while it’s wrapped, so remove the baguette from the paper first and place it on the board before cutting.<|eot|>
No. The person is correctly preparing to slice the baguette, and no mistakes have been made yet.<|im_end|>
The only annotated mistake in this step is "The slices are too thick" at 25.6 s, 16.4 s after Muse's feedback, so the evaluator counts Muse's message as a false positive and Qwen's NO as correct here.
Highlighted: our method (8-frame sliding window + self-written memory). Other rows are reference results from the benchmark papers. ↑ higher is better · ↓ lower is better · (count) descriptive, neither.
| Setting | Model | IC-Acc↑ | Prec.↑ | Rec.↑ | F1↑ | BERT↑ | ROUGE-L↑ |
|---|---|---|---|---|---|---|---|
| Per-recipe step | Ours · Qwen3.8-27B | 44.4 | 0.20 | 0.06 | 0.09 | 0.312 | 0.184 |
| Ours · Muse Glimmer 30B | 18.4 | 0.28 | 0.30 | 0.29 | 0.216 | 0.130 | |
| Paper · Qwen3.5-27B | 45.5 | 0.12 | 0.17 | 0.14 | 0.206 | 0.137 | |
| Paper · Gemini-3-Flash | 32.7 | 0.18 | 0.18 | 0.18 | 0.126 | 0.102 | |
| Paper · Qwen3.5-2B fine-tuned (Ego-CoMist+) | 37.1 | 0.39 | 0.14 | 0.20 | 0.444 | 0.272 | |
| Full recipe | Ours · Qwen3.8-27B | 40.6 | 0.18 | 0.06 | 0.09 | 0.337 | 0.196 |
| Ours · Muse Glimmer 30B | 16.1 | 0.23 | 0.35 | 0.28 | 0.198 | 0.123 | |
| Paper · Qwen3.5-27B | 30.3 | 0.05 | 0.13 | 0.07 | 0.201 | 0.136 | |
| Paper · Gemini-3-Flash | 10.6 | 0.05 | 0.20 | 0.08 | 0.097 | 0.091 |
| Run detail | Qwen · per-recipe | Muse · per-recipe | Qwen · full | Muse · full |
|---|---|---|---|---|
| Mistakes TP↑ / FP↓ / FN↓ | 35 / 137 / 593 | 192 / 500 / 440 | 38 / 172 / 589 | 229 / 756 / 420 |
| "Success" / "Feedback" messages (count) | 386 / 219 | 158 / 815 | 371 / 260 | 160 / 1,163 |
| Model calls (count) | 13,160 | 18,308 | 14,410 | 18,329 |
| Unparsable YES/NO answers↓ | 48 | 0 | 40 | 0 |
| Malformed memory updates (ours)↓ | 0 | 140 | 0 | 35 |
Paper rows are the zero-shot regular-interval results (Table 2) and the best fine-tuned model (Table 3). Neither of our models appears in the paper, so the comparison mixes model and wrapper differences. IC-Acc credits a mistake-free step only if the single output in it is "Success" within the window, so Muse's frequent feedback also costs it IC-Acc. The official code counts the "Success" that closes a step with mistakes as a missed mistake, which lowers recall for every model alike. BERT and ROUGE-L are computed on true positives only and are not comparable across models with different recall (paper App. F). An earlier Ego-MC run with our own protocol and a ported evaluator is superseded by these numbers.
Three videos picked at random with a fixed seed, not chosen for outcome. Each clip shows both models: segments around gold events, decision points and model utterances, with the media time stamped top-left. Clips come from the per-recipe-step paper-protocol run. 480p, no audio.
Per-recipe-step run with the paper's protocol: a 5 s turn asks whether the step is complete, then whether there is a mistake; outputs are "Success: …" and "Feedback: …". Green = annotated feedback and successes.
Code: jxb1st/glimmer_qwen_streaming_baseline-code, config configs/full_klone.yaml. On a SLURM cluster with the vLLM Muse Glimmer image:
# Ego-MC with the paper's protocol (official QICD evaluator, reference_code/qualcomm_interactive_cooking_eval @ a9f73f7) scripts/serve_and_run.sh muse30b 1 10 configs/egomc_paper_per_recipe.yaml # same for qwen27b and egomc_paper_full_recipe.yaml python -m streaming_smoke score --config configs/egomc_paper_per_recipe.yaml