This page is for version 26.04 · v1.2.0.
For other versions, use one of these documentation indexes:
- Latest · v1.4.0 (26.09) (default): https://docs.nvidia.com/nemo/curator/latest/llms.txt
- Main · preview: https://docs.nvidia.com/nemo/curator/main/llms.txt
- 26.09 · v1.4.0: https://docs.nvidia.com/nemo/curator/v26.09/llms.txt
- 26.07 · v1.3.0: https://docs.nvidia.com/nemo/curator/v26.07/llms.txt
- 26.04 · v1.2.0: https://docs.nvidia.com/nemo/curator/v26.04/llms.txt
- 26.02 · v1.1.0: https://docs.nvidia.com/nemo/curator/v26.02/llms.txt
- 25.09 · v1.0.0: https://docs.nvidia.com/nemo/curator/v25.09/llms.txt
ImageBatch is the task type for image processing in NeMo Curator.
Import
from nemo_curator.tasks import ImageBatch
Class Definition
from dataclasses import dataclassfrom nemo_curator.tasks.image import ImageObject@dataclassclass ImageBatch(Task[list[ImageObject]]):"""Task containing a batch of images.Attributes:task_id: Unique identifier for this batch.dataset_name: Name of the source dataset.data: List of ImageObject instances."""task_id: strdataset_name: strdata: list[ImageObject]
ImageObject
Each image in the batch is represented by an ImageObject:
@dataclassclass ImageObject:"""Represents a single image with metadata.Attributes:path: Path to the image file.caption: Optional text caption for the image.metadata: Additional metadata dictionary.embeddings: Optional embedding vector."""path: strcaption: str | None = Nonemetadata: dict[str, Any] = field(default_factory=dict)embeddings: np.ndarray | None = None
Properties
num_items
Get the number of images in the batch.
@propertydef num_items(self) -> int:"""Returns the number of images in this batch."""
Creating ImageBatch
from nemo_curator.tasks import ImageBatchfrom nemo_curator.tasks.image import ImageObject# Create image objectsimages = [ImageObject(path="/data/images/image1.jpg",caption="A cat sitting on a couch",metadata={"source": "dataset_a"},),ImageObject(path="/data/images/image2.jpg",caption="A dog playing in the park",metadata={"source": "dataset_a"},),]# Create batchbatch = ImageBatch(task_id="img_batch_001",dataset_name="image_dataset",data=images,)
Usage in Stages
from dataclasses import dataclassfrom nemo_curator.stages.base import ProcessingStagefrom nemo_curator.tasks import ImageBatch@dataclassclass ImageFilterStage(ProcessingStage[ImageBatch, ImageBatch]):"""Filter images based on metadata."""name: str = "ImageFilter"min_resolution: int = 256def inputs(self) -> tuple[list[str], list[str]]:return ["data"], []def outputs(self) -> tuple[list[str], list[str]]:return ["data"], []def process(self, task: ImageBatch) -> ImageBatch | None:filtered = [img for img in task.dataif img.metadata.get("width", 0) >= self.min_resolutionand img.metadata.get("height", 0) >= self.min_resolution]if not filtered:return Nonereturn ImageBatch(task_id=f"{task.task_id}_filtered",dataset_name=task.dataset_name,data=filtered,_metadata=task._metadata,_stage_perf=task._stage_perf,)
Common Operations
Adding Embeddings
def process(self, task: ImageBatch) -> ImageBatch:for img in task.data:img.embeddings = self.model.encode(img.path)return ImageBatch(task_id=f"{task.task_id}_{self.name}",dataset_name=task.dataset_name,data=task.data,_metadata=task._metadata,_stage_perf=task._stage_perf,)
Filtering by Score
def process(self, task: ImageBatch) -> ImageBatch | None:filtered = [img for img in task.dataif img.metadata.get("aesthetic_score", 0) >= self.threshold]if not filtered:return Nonereturn ImageBatch(task_id=f"{task.task_id}_{self.name}",dataset_name=task.dataset_name,data=filtered,_metadata=task._metadata,_stage_perf=task._stage_perf,)