Source code for opentau.datasets.vqa.dummy

# Copyright 2026 Tensor Auto Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Dummy vqa dataset for testing and development.

This module provides a simple synthetic vqa dataset for testing the
dataset infrastructure without requiring external data sources or network
access. The dataset contains three predefined items: black, white, and gray
images with corresponding question-answer pairs.

The dataset cycles through the predefined items, making it useful for
testing data loading pipelines, training loops, and debugging.

Classes:
    DummyVQADataset: Synthetic dataset class that provides simple test
        data with configurable length.

Constants:
    _data: List of three predefined dataset items (black, white, gray images)
        with corresponding tasks, postfixes, and prompts.

Example:
    Use dummy dataset for testing:
        >>> from opentau.configs.default import DatasetConfig
        >>> cfg = DatasetConfig(vqa="dummy")
        >>> dataset = make_dataset(cfg, train_cfg)
        >>> len(dataset)  # Returns 1000 by default
"""

import torch

from opentau import register_vqa_dataset
from opentau.configs.train import TrainPipelineConfig
from opentau.datasets.vqa.base import VQADataset

_data = [
    {
        "image": torch.zeros(3, 224, 224),
        "task": "What do you see in the image?",
        "postfix": "This is a black image",
        "task_type": "qa",
        "prompt": '{"task": "qa", "description": "What do you see in the image?"}',
    },
    {
        "image": torch.ones(3, 224, 224),
        "task": "What do you see in the image?",
        "postfix": "This is a white image",
        "task_type": "qa",
        "prompt": '{"task": "qa", "description": "What do you see in the image?"}',
    },
    {
        "image": torch.ones(3, 224, 224) * 0.5,
        "task": "What do you see in the image?",
        "postfix": "This is a gray image",
        "task_type": "qa",
        "prompt": '{"task": "qa", "description": "What do you see in the image?"}',
    },
]


[docs] @register_vqa_dataset("dummy") class DummyVQADataset(VQADataset): """Dummy vqa dataset for testing purposes. Provides simple synthetic data with black, white, and gray images for testing the dataset infrastructure. """
[docs] def __init__(self, cfg: TrainPipelineConfig, length: int = 1000): self.length = length super().__init__(cfg)
def __len__(self): return self.length def __getitem_helper__(self, item) -> dict: """Get a dummy dataset item. Cycles through a small set of predefined items (black, white, gray images). Args: item: Index of the item to retrieve. Returns: Dictionary with image, task, postfix, task_type, and prompt. """ return _data[item % len(_data)] def _get_feature_mapping_key(self) -> str: return "dummy"