SOICT Memory-Task FPV — VR Supermarket Dataset
First-person-view (FPV) recordings of a memory-oriented shopping task in a virtual-reality supermarket, together with two independent sets of temporal annotations (what the participant is doing, and whether the way they do it is unusual) and the video frames extracted from every recording.
The dataset accompanies the paper Gameplay-to-Behavior of Memory-Task First-Person Video with Resource-Controlled Latent Cognitive Interpretation (URA Research Group, HCMUT).
Access: this repository is currently private. File names contain participant identifiers (see Privacy & ethics).
At a glance
| Sessions (videos) | 12 |
| Participants | 6 recorded names (several have more than one session) |
| Total duration | 3,856 s (≈ 64.3 min) |
| Resolution / frame rate | 1920 × 1080, ≈ 30 fps (HEVC / .mp4) |
| Total frames | 115,685 |
| Device | Standalone Meta Quest headset (screen recordings, com.oculus.vrshell-*) |
| Annotation streams | Activity (8 classes) and Event (5 classes) |
| Annotators | 2 independent passes per video |
| Annotation language | English (free-text note / evidence) |
The task
Participants wear a VR headset and complete a goal-directed shopping mission in a virtual supermarket. They must remember and act on a shopping list:
- read the item list on a virtual board (task-list consultation);
- walk the aisles and point a controller ray at items, which shows a tooltip with name and price (product inspection);
- grab the target item (product selection) and review the cart (cart interaction);
- react to yellow banners that substitute or add items mid-trial (task-change notice);
- pay at the cashier (checkout).
Because the list has to be held in memory and can change, the recordings contain rich behaviour beyond simple task completion: searching, revisiting the list, hesitating, making mistakes and recovering from them.
Repository structure
.
├── README.md
├── videos/
│ ├── <video_id>.mp4 # 12 full-length FPV recordings
│ └── metadata.csv # video_id, session date, duration, frame count, size
├── labels/
│ ├── activity_segments.csv # all activity segments, both annotators (flat table)
│ ├── event_segments.csv # all event segments, both annotators (flat table)
│ ├── annotator_1/<video_id>_{activity,events}.json
│ └── annotator_2/<video_id>_{activity,events}.json
├── all_frames/
│ └── <video_id>/<video_id>_partNNN.tar # every frame, packed in tar shards
└── selected_clear_frames/
├── by_video/<video_id>/ # sharp, representative frames (plain .jpg)
└── by_activity/<activity>/ # the same kind of frames, grouped by activity
Video IDs
<participant>-<ddmm>[-<n>]: participant slug, session date (day + month, 2026), and a run index when a participant has
several sessions on the same day.
khoi-1708-1, khoi-1708-2, khoi-1708-3, le-hien-2108-1, le-hien-2108-2, nguyen-an-2108-1,
nguyen-an-2108-2, nguyen-kiet-2108-1, nguyen-kiet-2108-2, nguyen-lich-2108-1, nguyen-lich-2108-2,
tran-quyen-1808.
The same ID is used for the video, its labels, and its frame folder.
Frames
all_frames/<video_id>/<video_id>_partNNN.tar— every frame of the video (frame_000001.jpg,frame_000002.jpg, …, numbered from 1, extracted at the native frame rate). Frames are packed into shards of ≤ 5,000 images because the Hub limits a folder to 10,000 files. Total ≈ 115.7k images.selected_clear_frames/— a small curated subset (≈ 163 MB) of sharp, unblurred frames, kept as individual images, organised both by video and by activity. Handy for quick inspection or for building small training/validation sets.
Frame index ↔ time: time_sec ≈ (frame_index − 1) / fps, with fps ≈ 30 (see videos/metadata.csv for exact
per-video frame counts and durations).
Annotations
Every video was labelled in two separate passes (activity, then event) by two independent annotators, following the
protocol ura-fpv-behavior-events-v3-two-branch. Annotators do not see each other's work. Both versions are released as-is
(annotator_1, annotator_2); they are not merged into a consensus. Timestamps are in seconds from the start of the
video, to 0.1 s.
Only intervals where something is observed are annotated — gaps mean "no measured action" / "normal behaviour"; they are not labelled.
Activity stream — "what is the participant doing?"
File suffix _activity.json; flat table labels/activity_segments.csv.
| Field | Description |
|---|---|
start_sec, end_sec |
Segment boundaries in seconds |
activity |
One of the 8 classes below |
confidence |
Annotator confidence in [0, 1] |
note |
Free-text justification |
| Class | Meaning |
|---|---|
task_list_consultation |
The shopping-list board is visible and readable |
cart_interaction |
The cart panel is open and covers most of the view |
product_inspection |
A tooltip (name, price) is shown while pointing at an item — looking, not yet taking |
product_selection |
An item is actually taken off the shelf / put in the cart |
product_search |
Scanning several shelves or areas for a target item |
navigation |
Walking or turning with no panel open |
checkout |
The payment screen is shown, or the participant is at the cashier |
task_change_notice |
A banner announces a task change (app-generated, not a participant action) |
Derived categories (re-consultation of the list, location revisits, "other task action", "no measured action") are not annotated by hand; they are inferred from the above.
Event stream — "is the way they do it unusual?"
File suffix _events.json; flat table labels/event_segments.csv. Only abnormal intervals are listed.
| Field | Description |
|---|---|
start_sec, end_sec |
Segment boundaries in seconds |
behavior_state |
One of the 5 classes below |
certain |
y / n — annotator certainty |
evidence |
Free-text description of what was observed |
| Class | Meaning |
|---|---|
hesitation |
Gaze or pointer wavers between options, or approaches then backs away from an item before deciding |
freezing |
View stays almost motionless for several seconds while work remains to be done |
distraction |
Attention lingers on something unrelated to shopping |
task_error |
A visible mistake against the task (wrong item, wrong quantity, premature checkout, …) |
recovery |
Correcting a previously recorded task_error |
Overlapping events are recorded as separate rows.
Flat-table columns
activity_segments.csv: video_id, annotator, start_sec, end_sec, activity, confidence, note
event_segments.csv: video_id, annotator, start_sec, end_sec, behavior_state, certain, evidence
Label statistics (per annotator)
| Activity | Count (A1 + A2) | Event | Count (A1 + A2) | |
|---|---|---|---|---|
product_inspection |
168 | hesitation |
82 | |
navigation |
162 | task_error |
58 | |
product_selection |
86 | recovery |
22 | |
cart_interaction |
68 | distraction |
16 | |
task_list_consultation |
54 | freezing |
6 | |
checkout |
34 | |||
product_search |
26 | |||
task_change_notice |
22 | Total | 184 | |
| Total | 620 |
Each annotator contributes 310 activity segments and 92 event segments.
Usage
from huggingface_hub import hf_hub_download
import pandas as pd
repo = "studyforptd/soict-memory-task-fpv-frames"
# Segment tables
acts = pd.read_csv(hf_hub_download(repo, "labels/activity_segments.csv", repo_type="dataset"))
evts = pd.read_csv(hf_hub_download(repo, "labels/event_segments.csv", repo_type="dataset"))
# One video
video = hf_hub_download(repo, "videos/khoi-1708-1.mp4", repo_type="dataset")
Download only what you need (the full repo is ≈ 20 GB):
# labels + video metadata only
hf download studyforptd/soict-memory-task-fpv-frames --repo-type dataset \
--include "labels/*" "videos/metadata.csv" --local-dir soict_fpv
# curated frames (~163 MB)
hf download studyforptd/soict-memory-task-fpv-frames --repo-type dataset \
--include "selected_clear_frames/*" --local-dir soict_fpv
# everything, then unpack the frame shards
hf download studyforptd/soict-memory-task-fpv-frames --repo-type dataset --local-dir soict_fpv
cd soict_fpv && for t in all_frames/*/*.tar; do tar -xf "$t" -C all_frames; done
Intended uses
- Temporal action localisation / segmentation on egocentric VR gameplay video.
- Detecting hesitation, freezing, distraction, task errors and recovery in goal-directed behaviour.
- Benchmarking video-language models on long first-person videos with sparse, interpretable events.
- Research on prospective memory and cognitive-load proxies derived from gameplay behaviour.
Limitations and out-of-scope use
- Small scale: 12 sessions from a small group of participants; results will not generalise to other populations, environments or headsets without further validation.
- Single scenario: one VR supermarket and one family of shopping tasks. Overlay UI (list board, tooltip, cart panel, banners) is part of the signal, and many activity labels depend on it.
- Sparse, subjective event labels: event categories such as hesitation or distraction rely on human judgement;
certain = nmarks low-confidence rows. The two annotators sometimes disagree — that is retained deliberately. - Not a clinical tool: the behaviour labels are research annotations, not a diagnosis or cognitive assessment of any person. Do not use this data to infer medical or psychological conditions.
- Do not use it to identify or profile the individual participants.
Privacy & ethics
The recordings are headset screen captures of a virtual environment; they show the virtual scene and interface, not the participants' real-world faces. Video, label and frame names nevertheless contain participant names and session dates. Treat the data as research-only and non-public until the authors have confirmed participant consent and the final release terms, and consider replacing names with anonymous IDs before any public release.
License
To be confirmed by the authors (license: other in the metadata). Until a licence is added, treat the data as available
for non-commercial research use by the authors' team only.
Citation
@misc{soict_memory_task_fpv,
title = {Gameplay-to-Behavior of Memory-Task First-Person Video with Resource-Controlled Latent Cognitive Interpretation},
author = {Bourgoin, Enzo and Dao, Phuc T. and Phan, Dung T. and Vo, Quynh T.N. and Ngo, Man T.T. and Tran, Hieu D.
and Nguyen, Giao T.H. and Phan, Minh H. and Ha, Huong T.T. and Quan, Tho T.},
note = {URA Research Group, HCMUT. Dataset: studyforptd/soict-memory-task-fpv-frames}
}
Contact
Hugging Face: studyforptd
- Downloads last month
- 38