ybashir/gamed-game-classification-dataset
Gamed — Game Classification Dataset Train and held-out eval frames for a 3-class game classifier (cs2, dota2, valorant). Used to train and evaluate ybashir/gamed-game-classification, the §1.1 hot-path detector in coach-api. The source .mp4 files are not included — see urls.txt for the original YouTube links. All frames here are derived at 0.4 fps via ffmpeg and resized to 224×224 (squashed 1:1). Structure train/ manifest.csv 6450 rows — path,class… See the full description on the dataset page: https://huggingface.co/datasets/ybashir/gamed-game-classification-dataset.
Gamed — Game Classification Dataset
Train and held-out eval frames for a 3-class game classifier (cs2, dota2, valorant). Used to train and evaluate `ybashir/gamed-game-classification`, the §1.1 hot-path detector in coach-api.
The source .mp4 files are not included — see urls.txt for the original YouTube links. All frames here are derived at 0.4 fps via ffmpeg and resized to 224×224 (squashed 1:1).
Structure
train/
manifest.csv 6450 rows — path,class,video_id,frame_idx,t_sec
frames_224.zip 6450 JPGs (224×224), grouped by class inside the zip
eval/
manifest.csv 450 rows — 150/class evenly-spaced subsample
manifest_full.csv 1118 rows — full extraction (cs2 390 / dota2 295 / valorant 433)
frames/
cs2/ 390 JPGs
dota2/ 295 JPGs
valorant/ 433 JPGs
predictions.csv Held-out predictions from the published checkpoint (450)
predictions_full.csv Held-out predictions from the published checkpoint (1118)
report.md Acc + P/R/F1 + confusion matrix (450)
report_full.md Acc + P/R/F1 + confusion matrix (1118)
urls.txt YouTube source URLs (train + eval) + per-video start offsetsManifest schema
Both train/manifest.csv and eval/manifest.csv have the same columns:
path,class,video_id,frame_idx,t_sec[,split]path— relative to the original repo cwd (gamed/)class—cs2/dota2/valorantvideo_id— YouTube ID (11 chars), parsed from the source filename prefixframe_idx— 1-indexed JPG index within the videot_sec— timestamp in the source video the frame was sampled fromsplit— only on eval manifests, alwayseval
Train vs eval — important caveat
Training was done with a frame-level random_split(0.70/0.15/0.15) on train/manifest.csv. The same video_ids appear in train and val/test, so the 99% accuracy quoted in the original notebook is over-optimistic (video-level leakage).
The eval/ split fixes this:
- 3 fresh YouTube videos (different
video_id, different uploaders) - Zero
video_idoverlap with the training set - Reported eval accuracy: 99.91 % on 1118 frames, 100 % on the 150/class subsample
This is the number to cite. Tool to reproduce: `cli/gamed_classification_eval.py`.
How frames were extracted
scripts/extract_frames.py in the repo runs ffmpeg at 0.4 fps with optional per-video --trim-start offsets to skip menus / intros. Frames are JPEG q=5 (~85% quality) at 224×224 (squashed).
Per-video offsets used for the eval set:
Eval results from the published checkpoint
See eval/report.md and eval/report_full.md for the full numbers. Headline:
Single error: valorant/Alrz2LCm8pg_000133.jpg (t≈330 s) — a round-end "WON" overlay misread as CS2 because Valorant's orange/red Combat Report panel mimics CS2's post-round MVP card.
License
Frames are 224×224 derivatives of publicly-uploaded "no commentary" YouTube gameplay videos. CC-BY-4.0 on the derived dataset itself; the underlying game footage remains the property of the original uploaders and the respective game publishers (Valve, Riot Games).
Citation
Repo: <https://github.com/bashiryounis/gamed>
