CoolFace
Modelpublic

kolligovinda/orena-focus-genmi-star

sourceHugging Faceupdated 16d agoView on Hugging Face
0likes
Model Card

GenMI-Star — ORena SAVE FOCUS 2026 (MICCAI)

Model weights and derived annotations for our FRAME, SEGMENT and PROCEDURE submissions, released to satisfy the challenge requirement that participants make their model and any additionally created annotations publicly available.

What is here

artefactbase modelrank/alphasize
adapters/frame-answer-loraQwen/Qwen3.6-27B64 / 1281.8 GB
adapters/segment-answer-loraQwen/Qwen3.6-27B32 / 64910 MB
adapters/procedure-answer-loraQwen/Qwen3.6-27B32 / 64933 MB
adapters/segment-temporal-localizer-loraQwen/Qwen3.5-4B16 / 32153 MB
adapters/procedure-temporal-retriever-loraQwen/Qwen3.5-4B16 / 32153 MB

These are LoRA adapters. The backbones are public and unmodified, so they are not re-uploaded here.

Each adapter is byte-identical to the one inside the corresponding submitted container:

trackadapter SHA-256container SHA-256
FRAME5a33e82608452d1fe151f1da43772cd9ed26c61ad88093c5cd58dbf4673344c696def021a5aa6f40a57753825bb6c6b09a1e77617e475165bd97a6269b6150fe
SEGMENTbc6e3c4106b56952150f98a7ba66331406e895495d9403bcd8dc5ae4d7fa6964968e9edd8bce78adc8ca7dac031c4bc1684c8ce035258ca6222db2c6e8e67a61
PROCEDURE27a06690f2d25844fd9f5c41185a74e790f4a4c873c79ff1408ed5a2fb8f085008e2871f95e2a73ba6d1ae010f3a762e1da9dc543172ff01611523fca482aabb

Loading the model for inference

python
import torch
from transformers import AutoProcessor, Qwen3VLForConditionalGeneration
from peft import PeftModel

BASE = "Qwen/Qwen3.6-27B"
ADAPTER = "govindakolli/orena-focus-genmi-star/adapters/segment-answer-lora"  # or frame-/procedure-

processor = AutoProcessor.from_pretrained(BASE)
model = Qwen3VLForConditionalGeneration.from_pretrained(
    BASE, dtype=torch.bfloat16, device_map="cuda:0"
)
model = PeftModel.from_pretrained(model, ADAPTER)
model.eval()

The submitted containers additionally quantise the backbone to 4-bit NF4 with double quantisation and BF16 compute (bitsandbytes). To reproduce the submitted numbers exactly, load the base with:

python
from transformers import BitsAndBytesConfig
quant = BitsAndBytesConfig(
    load_in_4bit=True, bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16,
)

Inference settings that matter

The serve-side settings are not the training settings, and the scores depend on them. Every track serves at a higher resolution than it was trained at; Qwen-VL accepts variable input resolution and the processor snaps each side to a multiple of 32.

tracktrained at**served at**framesnotes
FRAME448 px896 px1letterboxed, aspect preserved
SEGMENT280 px640 px32learned temporal localizer + 50% global coverage
PROCEDURE280 px448 px32 then 64two-stage hierarchical temporal zoom

Greedy decoding, at most 96 new tokens (64 for FRAME).

PROCEDURE two-stage temporal zoom

Stage 1 answers from the routed retrieval at 32 frames. If that answer parses as a timestamp, stage 2 re-samples 64 frames — 32 global + 32 detail within ±150 s of the guess — and re-asks. Any other answer format returns stage 1 unchanged, so non-temporal behaviour is bit-identical to a single-pass pipeline.

The motivation is a measured mismatch: the scoring tolerance is ±5 s while the routed retrieval samples roughly 112 s apart. Keeping half the budget global matters — replacing the global view entirely doubles coverage (29.0% → 59.6% of timestamp questions with a frame inside tolerance) but collapses conversion of that evidence into correct answers (40.6% → 24.9%).

Annotations

annotations/ holds the retrieval manifests our pipeline consumes — the frame indices the learned temporal localizer selected for each question.

These cover the HeiCo-FOCUS portion only. HeiCo is public under CC BY-NC-SA, so derived annotations may be published. The LapChole-FOCUS data usage agreement forbids publishing its data or derived annotations, so the LapChole-derived manifests have been supplied privately to the organisers and will be published if and when LapChole-FOCUS is itself released.

Schema, one JSON object per line:

json
{"key": "heico:test:segment:123", "dataset": "heico", "split": "test",
 "track": "segment", "id": 123, "fps": 25.0,
 "retrieval_source": "learned_temporal", "question_anchor_indices": [...],
 "retrieved_frame_indices": [...]}

retrieved_frame_indices are absolute 0-based frame numbers in the source video, strictly increasing, and exactly as many as the track's frame budget.

Licence

Adapters: released for non-commercial and commercial use, per the challenge terms. Annotations: CC BY-NC-SA 4.0, inherited from HeiCo.