Spaces:
Running on Zero
Running on Zero
| title: Qwen Runner Vision — 12-Task Extraction + Fusion | |
| emoji: 🧩 | |
| colorFrom: indigo | |
| colorTo: blue | |
| sdk: gradio | |
| sdk_version: 6.20.0 | |
| app_file: app.py | |
| pinned: false | |
| license: apache-2.0 | |
| short_description: Image → 12-task JSON + fused prompt on ZeroGPU | |
| # Qwen Runner Vision — deterministic 12-task extraction + fusion | |
| **Stick an image in → get a full JSON readout.** This Space showcases the vision | |
| half of [`qwen-test-runner`](https://github.com/AbstractEyes/qwen-test-runner): a | |
| **deterministic-first** pipeline that replaces a hallucinating VLM with hand-picked | |
| Apache/MIT specialist models, one per task, then **fuses** everything into one | |
| relational scene and a byte-deterministic prompt. | |
| It runs the **batched extraction structure** on **ZeroGPU**. | |
| ## What comes out | |
| Per image, the full readout: | |
| - **12 task JSONs** — 11 from the specialist/derive engine | |
| (`image_classification`, `bbox_grounding`, `ocr_text`, `data_type_differentiation`, | |
| `data_type_utilization`, `structural_spatial_awareness`, `depth_analysis`, | |
| `subject_fixation`, `segmentation`, `outline_association`, `style_structural_awareness`) | |
| plus `semantic_association` from the fusion tier — with a per-task **schema-validity** map. | |
| - **`FusedScene`** — entities (dedup + left-to-right ids), relations, the attribute | |
| **ownership cascade** and the **shared basin** (uncertainty stored, never guessed), | |
| a voted scene block, and a quality/accounting block. | |
| - **`prompt_fused`** — the deterministic natural-language prompt, plus `fusion_confidence`. | |
| - **Overlays** — detection boxes, SAM mask fills, subject box, outline, and a depth heatmap. | |
| - **Download** — one row in the production column shape | |
| (`tasks_json`, `tasks_valid`, `fused_json`, `prompt_fused`, `fusion_confidence`, | |
| `proc_width/height`, plus `struct_*`/`age_audit` when those toggles are on). | |
| ## Everything is a toggle | |
| It's a *multiple-possibility system*: **structurer** (`off` / Qwen3.5-0.8B / Qwen3.5-9B for | |
| caption enrichment) · **tasks** (which to run/show) · **vocab** (COCO-80 / shapes / custom | |
| phrases) · **specialists** (OCR, SAM masks, depth on/off) · **detection** (box/text | |
| thresholds) · **fusion** (`t_own`, `t_margin`, `dedup_iou`, coord space) · **batch** | |
| (`extract_batch`, `gdino_batch`) · optional **age-gate** pre-filter. | |
| The core path needs no captions: the fusion attribute-ownership and shared-basin machinery | |
| light up when you supply captions and pick a structurer, but entities/relations/scene come | |
| from the image alone. | |
| ## Model ledger (Apache-2.0 — redistributable) | |
| | role | checkpoint | | |
| |---|---| | |
| | detection (hub) | `IDEA-Research/grounding-dino-base` | | |
| | segmentation | `facebook/sam-vit-base` | | |
| | depth | `depth-anything/Depth-Anything-V2-Small-hf` | | |
| | classification / style | `google/siglip2-so400m-patch14-384` | | |
| | OCR | EasyOCR | | |
| | structurer (optional) | `Qwen/Qwen3.5-0.8B` · `Qwen/Qwen3.5-9B` | | |
| | age gate (optional) | `nateraw/vit-age-classifier` | | |
| ## Hardware | |
| Select **ZeroGPU** in the Space's hardware settings. `large` (48 GB) is enough for the | |
| default config and the 0.8B structurer; the 9B structurer wants `xlarge` (96 GB). The | |
| fusion tier is CPU-only (torch-free) and runs off the GPU. | |
| Full-corpus production (streaming an HF dataset → published `{src}-fused` parquet shards) | |
| runs in Colab via `colab/produce_fused_dataset.py` — this Space is the interactive showcase. |