CoolFace
Datasetpublic

JackLiu0406/b1k-224x224-gop8-fixed

BEHAVIOR-1K 2026 — 224x224, GOP=8, upstream-matched encoding A 224x224 re-encode of the 2026 challenge demos (100 tasks, 3 RGB cameras) whose image statistics match the dataset the widely-used 50-task checkpoint was pretrained on (IliaLarchenko/behavior_224_rgb), while keeping GOP=8 for fast random-frame access during training. Why "fixed" Earlier 224 re-encodes of this data used bicubic + libx264 CRF 23, which lands 13% softer (high-frequency content) than the… See the full description on the dataset page: https://huggingface.co/datasets/JackLiu0406/b1k-224x224-gop8-fixed.

sourceHugging Facemitupdated 1mo agoView on Hugging Face
0likes1.8kdownloads
Dataset Card

BEHAVIOR-1K 2026 — 224x224, GOP=8, upstream-matched encoding

A 224x224 re-encode of the 2026 challenge demos (100 tasks, 3 RGB cameras) whose image statistics match the dataset the widely-used 50-task checkpoint was pretrained on (IliaLarchenko/behavior_224_rgb), while keeping GOP=8 for fast random-frame access during training.

Why "fixed"

Earlier 224 re-encodes of this data used bicubic + libx264 CRF 23, which lands 13% softer (high-frequency content) than the pretraining distribution. Since a short fine-tune barely moves the vision encoder, that mismatch is inherited rather than trained away.

The correct filter and codec were recovered by exact reconstruction, not inference: the x265 option string is embedded in the upstream bitstream (strings file.mp4 | grep options:). Transcribing it into -x265-params and re-encoding upstream's exact source episode reproduces their published file byte-for-byte:

scalerPSNR vs upstream filebytes vs upstream
lanczosinf (md5 identical)0.00%
bicubic36.13 dB-3.55%
area35.63 dB-0.45%
bilinear34.96 dB-13.54%

A high-frequency-content analysis using a generic -preset gets this wrong — the encoder mismatch is ~10 dB and swamps the ~1-2 dB filter signal. Only exact encoder replication resolves it.

Encoding

scale=224:224:flags=lanczos
libx265 -preset faster
  crf=28.0 ref=3 bframes=4 b-adapt=0 b-pyramid=1 rc-lookahead=15 me=1 subme=2 merange=57
  rd=2 rdoq-level=0 psy-rd=2.00 psy-rdoq=0.00 aq-mode=2 aq-strength=1.00 cutree=1
  qcomp=0.60 ipratio=1.40 pbratio=1.30 max-merge=2 qg-size=32 ctu=64 min-cu-size=8
  max-tu-size=32 b-intra=0 scenecut=0
  keyint=8 min-keyint=8 open-gop=1        <- the ONLY deviation from upstream
pix_fmt yuv420p, audio stripped

Upstream uses keyint=250. We use 8 for random-access decode: 9.3 ms/frame vs 68.0 ms/frame, which is the difference between compute-bound and dataloader-bound training. CRF is a quality target, so per-frame quality is unchanged by GOP — only file size grows.

Source is the 720x720 originals (themselves x265 crf30), so one generation of lossy re-encoding.

Fidelity to the pretraining distribution

Measured on the episode upstream published, content held constant:

buildHFLapVar
IliaLarchenko/behavior_224_rgb (reference)1.000x1.000x
this dataset1.018x1.026x
bicubic + x264 crf23 (the common re-encode)0.869x0.860x

Two deviations nearly cancel: keyint=8 sharpens (+5.5%), our crf30 source softens (-3.5%).

Contents

  • —videos/observation.rgb.{zed_link,left_realsense_link,right_realsense_link}_camera_0/chunk-XXX/file-YYY.mp4
  • —data/chunk-XXX/*.parquet — states, actions, episode indices (unmodified)
  • —meta/ — LeRobot v3 metadata (unmodified)

100 chunks (chunk-000 .. chunk-099), one per task. Frame counts and timestamps are identical to the source — nothing is dropped or resampled in time.

Eval-time note

Do not apply lanczos when downsampling live renders at eval. Training frames are lanczos then compressed; eval renders have no compression step, so matching the filter overshoots. Measured against these training frames, from 1080x1080 renders: bilinear ~0.92x, bicubic ~1.32x, lanczos3 ~1.61x. Bilinear is closest.

Derived from behavior-1k/2026-challenge-demos (MIT).

JackLiu0406/b1k-224x224-gop8-fixed · CoolFace