Champions Spectator

Live Pokemon Showdown battle collection for VGC model training
Status
--
Connections
--
Total Replays
--
Last Hour
--
Coverage
--

Battle Coverage

Checking...

Collection Rate

Replays per Hour (last 48h)
Cumulative Collection

Full Dataset

VGC Ratings — Downloaded vs Spectated
BSS Ratings — Downloaded vs Spectated

Spectated Ratings (last 7 days)

VGC 2026
BSS

Sync to ColePC

Replay Sync
Checking...

Recent Saves

Loading...

Frame Labeler

Label screenshots for the C++ test suite
100%
 
Box Coordinates
Click and drag to select. Right-click to clear.
Retest (local Mac)
Requires python3 tools/mac_dev_runner.py running locally.
Detector Overlays
A toggle overlays · R reset zoom · prev/next image

Training Progress

Live training metrics from all machines
Multi-run comparison moved to the Compare tab — filter by category, search, pin favorites, overlay live runs.

Compare Runs

Overlay any past or live training run · sourced from /workspace/data/checkpoints/*.jsonl on unraid + live sessions
Metric vs. epoch

Recognition Results

Species, moves, and HP reading results from the last regression run

Team Preview Examples

Labeled team-preview frames with the cropped opp sprites + matched atlas references. Selecting screen also shows My-side text-OCR crops.
Loading...

Digit Templates

HP% digit templates (0-9) used for template-matching OCR

Label Validation

Per-screen label completeness and schema validation
Loading...

Mismatches

Label vs reader disagreements. Accept → trust the reader (fix label). Inspector → tune the box.
Keys: j/k next/prev · a accept · s swap 0↔1 · i inspector

Sprite Recognition

Opponent species in Team Preview are matched against the 272-sprite reference atlas via cropped RMSD.

BattleHUD own-species icons (action_menu)

Boxes own_specoes_icon_0/1 from tools/box_definitions.json. Each row shows the cropped icon, the ground-truth species, and the top-5 atlas matches with their alpha. Lower alpha = closer match.
Loading...

Pokeball Alive Detector

Per-frame run of PokeballAliveDetector across action_menu, move_select, battle_log. Each row shows the frame and 12 state indicators (own 0..5, opp 0..5). Green = alive, grey = fainted, dot = empty.
Loading...

Pokemon Switch Detector Probe

Per-image run of PokemonSwitchDetector across test_images/pokemon_switch/. Active = b<60 && g>150 (lime/yellow). Inactive = b>80 && r<80 && g<80 (dark blue). Accept iff exactly one tab pair is fully active and the other fully inactive.
Loading...

Live Trace

screen: -
mode- match- conndisconnected head- last evt- events0
Mirror of the inference engine ingest pipeline. Run the LiveDetectorTrace SerialPrograms program to feed this view.
Own
leads not yet read
Bench
Opp
opp leads — game-state hidden
Bench
Field
(no data yet)

PP Crops Gallery

4 PP crops + the BattleHUDReader's move_pp_current read for every move_select test image. Use this to spot crop-box drift. Red = -1 (no read); cyan = a read happened. Open any image in the Inspector via the link below the row to nudge the boxes.
Loading...

HP Crops Gallery

Opponent HP% (slot 0/1) + own HP "current/max" (slot 0/1) crops + BattleHUDReader reads, across action_menu and move_select frames. Red = -1 (no read); cyan = read happened. If a frame should clearly show HP but reads -1, the box is mis-tuned. Open in inspector to nudge.
Loading...

Target Select Crops Gallery

Per frame: 2 own move-name cells + 4 target cells (opp 0/1, own 0/1). Each target cell shows the is_targeted color strip + the effectiveness crop + raw OCR text + the classified enum. Mismatches between raw and classified usually mean the classifier needs another keyword or a fuzzy fallback.
Loading...

HUD Pill Atlas

Species → averaged HUD-pill render, bootstrapped from manifest-labeled BattleHUDReader frames. Used as the in-domain reference for sprite-matching on the small HUD pills (where the canonical Bulbapedia atlas hits ~22% top-1; this approach is ~95% with one ref/species). Re-run the build to grow the atlas after labeling new frames.
Loading...

Team Scan Verify

Runs TeamSummaryReader on the latest Moves & More screenshot and TeamStatsReader on the latest Stats screenshot, merges per-slot, and renders the assembled team as a Pokemon Showdown paste. Swap-pair via the file pickers if needed.
Moves & More
Stats

Assembled team (Showdown paste)


    

Saved Team Library

Each entry is one unique team composition (the same 6 species in any order maps to one file). Loaded automatically by LiveDetectorTrace when the team-preview-selecting screen reveals all 6 species.

Team Preview Locked-In: own slot investigation

6 own-side icon slots (top-to-bottom own_slot_0...own_slot_5). Each crop sprite-matched against the HUD pill atlas. Use this to validate the boxes and decide the lead-order mapping before promoting to a real reader.
Screenshot

Team Preview Selecting: cursor reader

6 highlight strips on the left edge of each own card. Per-slot (R+G)/2 - B "yellowness" score; floor 30. Highest-scoring slot wins. The selected slot pill shows what TeamPreviewCursorReader::read returns.
Screenshot

Team Preview Selecting: lead-mark digits

6 digit-badge crops (top-to-bottom digit_0...digit_5). Same OCR pipeline as TP Locked-In: raw → binarize → yellow_paint → yellow_filled → yellow_inner → Tesseract. The "→ lead" column is the final '1'..'4' (or empty for unmarked) used by the auto-press lead-pick state machine.
Screenshot