Datasets documentation

Processar dados de imagem

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Processar dados de imagem

Este guia mostra métodos específicos para processar conjuntos de dados de imagens. Aprenda como:

  • Use map() com um conjunto de dados de imagens.
  • Aplique aumentos de dados a um conjunto de dados com set_transform().

Para um guia sobre como processar qualquer tipo de conjunto de dados, confira o guia de processo geral.

Map

A função map() pode aplicar transformações em um conjunto de dados inteiro.

Por exemplo, crie uma função básica Resize:

>>> def transforms(examples):
...     examples["pixel_values"] = [image.convert("RGB").resize((100,100)) for image in examples["image"]]
...     return examples

Agora use a função map() para redimensionar todo o conjunto de dados e defina batched=True para acelerar o processo, aceitando lotes de exemplos. A transformação retorna pixel_values como um objeto PIL.Image que pode ser armazenado em cache:

>>> dataset = dataset.map(transforms, remove_columns=["image"], batched=True)
>>> dataset[0]
{'label': 6,
 'pixel_values': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=100x100 at 0x7F058237BB10>}

O arquivo de cache economiza tempo, pois você não precisa executar a mesma transformação duas vezes. A função map() é ideal para operações que você executa apenas uma vez por treinamento - como redimensionar uma imagem - em vez de usá-la para operações executadas a cada época, como aumentos de dados.

map() ocupa alguma memória, mas você pode reduzir seus requisitos de memória com os seguintes parâmetros:

  • batch_size determina o número de exemplos processados em uma única chamada à função de transformação.
  • writer_batch_size determina o número de exemplos processados que são mantidos na memória antes de serem armazenados.

Os valores padrão de ambos os parâmetros são 1000, o que pode ser custoso se você estiver armazenando imagens. Reduza esses valores para usar menos memória ao usar map().

Aplicar transformações

🤗 O Datasets aplica aumentos de dados de qualquer biblioteca ou pacote ao seu dataset. As transformações podem ser aplicadas em tempo real em lotes de dados com set_transform(), o que consome menos espaço em disco.

O exemplo a seguir usa torchvision, mas sinta-se à vontade para usar outras bibliotecas de aumento de dados, como Albumentations, Kornia e imgaug.

Por exemplo, se você quiser alterar as propriedades de cor de uma imagem aleatoriamente:

>>> from torchvision.transforms import Compose, ColorJitter, ToTensor

>>> jitter = Compose(
...     [
...          ColorJitter(brightness=0.25, contrast=0.25, saturation=0.25, hue=0.7),
...          ToTensor(),
...     ]
... )

Crie uma função para aplicar a transformação ColorJitter:

>>> def transforms(examples):
...     examples["pixel_values"] = [jitter(image.convert("RGB")) for image in examples["image"]]
...     return examples

Aplique a transformação com a função set_transform():

>>> dataset.set_transform(transforms)
Update on GitHub