CoolFace
Datasetpublic

TESS-Computer/csgo-vla-stage1-5hz

CS:GO VLA Stage 1 Dataset (5Hz Chunked) Vision-Language-Action dataset for Counter-Strike: Global Offensive with action chunking, converted from the TeaPearce CS:GO dataset. Overview Frame rate: 5Hz (every 3rd frame) Action chunking: 3 actions per sample (~200ms coverage) Total samples: ~1.8M chunks Split: train / test following Diamond split Map: Dust2 deathmatch Action Format <|action_start|> m1_x m1_y [keys1] ; m2_x m2_y [keys2] ; m3_x m3_y… See the full description on the dataset page: https://huggingface.co/datasets/TESS-Computer/csgo-vla-stage1-5hz.

sourceHugging Facemitupdated 10mo agoView on Hugging Face
0likes205downloads
Dataset Card

CS:GO VLA Stage 1 Dataset (5Hz Chunked)

Vision-Language-Action dataset for Counter-Strike: Global Offensive with action chunking, converted from the TeaPearce CS:GO dataset.

Overview

  • Frame rate: 5Hz (every 3rd frame)
  • Action chunking: 3 actions per sample (~200ms coverage)
  • Total samples: ~1.8M chunks
  • Split: train / test following Diamond split
  • Map: Dust2 deathmatch

Action Format

<|action_start|> m1_x m1_y [keys1] ; m2_x m2_y [keys2] ; m3_x m3_y [keys3] <|action_end|>

Examples:

<|action_start|> 0 0 ; 0 0 ; 0 0 <|action_end|>                              # idle
<|action_start|> 5 0 W ; 3 0 W ; 4 0 W <|action_end|>                        # walking
<|action_start|> -200 50 W L ; -50 10 L ; 10 0 W <|action_end|>              # flick shot

Each chunk contains the exact mouse delta and keys for that frame - no aggregation.

Schema

ColumnTypeDescription
idstringUnique sample ID
episode_idstringSource HDF5 file
chunk_idxint32Chunk number within episode
frame_idxint32Starting frame number
actionstringText-formatted 3-action chunk
kill_flagint321 if any kill in chunk
death_flagint321 if any death in chunk
splitstring"train" or "test"
image_bytesbytesJPEG screenshot (first frame)

Usage

python
from datasets import load_dataset

# Load full dataset
ds = load_dataset("TESS-Computer/csgo-vla-stage1-5hz")

# Filter by split
train_ds = ds.filter(lambda x: x['split'] == 'train')
test_ds = ds.filter(lambda x: x['split'] == 'test')

Why 5Hz with Chunking?

  1. 1.VLA inference speed: 62ms (16Hz) is too fast for current VLMs. 200ms (5Hz) is achievable.
  2. 2.No information loss: Each chunk predicts exactly what the human did for 3 consecutive frames.
  3. 3.World model sync: Diamond executes step(a1), step(a2), step(a3) then returns frame to VLA.

Related