timm documentation

Datos

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Datos

Esta página contiene la documentación de referencia de la API del subpaquete timm.data y una descripción general del pipeline de entrada que proporciona: resolución de la configuración de preprocesamiento de un modelo, construcción de transformaciones, creación de conjuntos de datos y cargadores, Mixup / CutMix y el cargador de resolución variable NaFlex.

Uso

Un pipeline se construye en cuatro pasos: resolve_model_data_config lee la configuración de preprocesamiento del modelo, create_transform crea la transformación de entrenamiento o evaluación, create_dataset crea un conjunto de datos por nombre y raíz, y create_loader construye la transformación y un cargador de datos para un conjunto de datos.

import os
import tempfile

import torch
from PIL import Image

import timm
from timm.data import create_dataset, create_loader, create_transform, resolve_model_data_config

model = timm.create_model('resnet50', pretrained=False).eval()

# Preprocessing config from the model's pretrained_cfg, the default pretrained tag's config is attached to the model
# with or without pretrained weights.
data_config = resolve_model_data_config(model)
print(data_config)
# {'input_size': (3, 224, 224), 'interpolation': 'bicubic', 'mean': (0.485, 0.456, 0.406),
#  'std': (0.229, 0.224, 0.225), 'crop_pct': 0.95, 'crop_mode': 'center'}

# Eval transform for a PIL image, resize to 224 / crop_pct, center crop 224, to tensor and normalize.
transform = create_transform(**data_config, is_training=False)
img = Image.new('RGB', (320, 240), color=(200, 120, 40))
with torch.no_grad():
    output = model(transform(img).unsqueeze(0))  # (1, 1000)

# A folder dataset, <root>/<split>/<class>/<image>, two classes w/ four generated images each.
root = tempfile.mkdtemp()
for i, cls in enumerate(('cat', 'dog')):
    os.makedirs(os.path.join(root, 'validation', cls))
    for j in range(4):
        path = os.path.join(root, 'validation', cls, f'{j}.jpg')
        Image.new('RGB', (300, 200), color=(60 * i, 40 * j, 128)).save(path)

dataset = create_dataset('', root=root, split='validation')  # finds the 'validation' sub-folder
print(len(dataset), dataset.reader.class_to_idx)  # 8 {'cat': 0, 'dog': 1}

# The loader creates the transform from the same config and assigns it to the dataset.
loader = create_loader(dataset, **data_config, batch_size=4, use_prefetcher=False, num_workers=0)
with torch.no_grad():
    for images, targets in loader:
        output = model(images)  # images (4, 3, 224, 224), targets (4,)

El quickstart explica la configuración y los pasos de transformación para la inferencia.

El script de entrenamiento (train.py) expone estas opciones para cada parte del pipeline.

Sobrescrituras de la configuración de entrada (resolve_input_data_config):

  • --input-size establece la forma de entrada (C, H, W).
  • --img-size es el atajo cuadrado para --input-size, manteniendo el número de canales del modelo.
  • --in-chans establece los canales de entrada.
  • --interpolation establece la interpolación de redimensionado.
  • --mean establece la media de normalización.
  • --std establece la desviación estándar de la normalización.
  • --crop-pct establece la fracción de recorte para la evaluación.

Creación del dataset (create_dataset) y configuración del objetivo:

  • --dataset selecciona el conjunto de datos y el lector.
  • --data-dir establece la raíz del conjunto de datos.
  • --train-split selecciona la división de entrenamiento.
  • --val-split selecciona la división de validación.
  • --class-map proporciona el mapeo de clases.
  • --input-img-mode establece el modo de conversión de color de la imagen.
  • --input-key selecciona el campo de imagen.
  • --target-key selecciona el campo o los campos de etiqueta.
  • --target-format selecciona índices de clase o objetivos multi-hot densos.

Las opciones de cargador y aumento (create_loader) incluyen:

  • --aa selecciona la política de auto-aumentación.
  • --reprob establece la probabilidad de borrado aleatorio.
  • --remode selecciona el modo de relleno del borrado aleatorio.
  • --scale establece el rango de escala para el recorte redimensionado aleatorio.
  • --ratio establece el rango de la relación de aspecto para el recorte aleatorio redimensionado.
  • --hflip establece la probabilidad de volteo horizontal.
  • --color-jitter establece la intensidad del ajuste de color.
  • --train-interpolation establece la interpolación de redimensionamiento para el entrenamiento.
  • --workers establece el número de workers del loader.
  • --no-prefetcher desactiva el prefetcher.

Mixup y CutMix (Mixup):

  • --mixup establece el alpha de Mixup.
  • --cutmix establece el alfa de CutMix.
  • --cutmix-minmax establece el rango de tamaño de la caja de CutMix.
  • --mixup-prob establece la probabilidad de mezcla.
  • --mixup-switch-prob establece la probabilidad de elegir CutMix cuando ambos métodos están habilitados.
  • --mixup-mode selecciona la mezcla por lote, por par o por elemento.
  • --smoothing establece el suavizado de etiquetas.

Vea Scripts para ver ejemplos.

Configuración de datos

resolve_data_config devuelve un diccionario con las claves siguientes, que coinciden con los argumentos de create_transform y create_loader. Los valores establecidos en args (un diccionario, p. ej. vars(args) de los argumentos de línea de comandos analizados) tienen prioridad sobre el argumento pretrained_cfg, cuyo valor predeterminado es model.pretrained_cfg. resolve_model_data_config es lo mismo, pero con el modelo como primer argumento.

Ambos leen el tamaño de entrada y los canales de la configuración preentrenada, que describe el punto de control de origen, no un modelo creado o modificado para usar un img_size o in_chans diferente. resolve_input_data_config, utilizado por los scripts de entrenamiento, validación e inferencia, resuelve en contra de la entrada actual del modelo: un modelo con tamaño de entrada fijo siempre obtiene su tamaño actual, los args explícitos que entran en conflicto con los canales o el tamaño fijo del modelo generan un error, y una media / desviación estándar que no coincide con el número de canales se reemplaza por su promedio (con una advertencia).

Claveclaves de argsDescripciónPredeterminado
input_sizeinput_size, img_size, in_chansTamaño de entrada (C, H, W). Con use_test_size=True, se utiliza test_input_size de la configuración si está definido(3, 224, 224)
interpolationinterpolationInterpolación de redimensionado, bilinear, bicubic, …bicubic
mean, stdmean, stdNormalización, un único valor se repite para cada canalMedia / desviación estándar de ImageNet
crop_pctcrop_pctEn el recorte de evaluación, la imagen se redimensiona a size / crop_pct antes de recortarla a size (test_crop_pct con use_test_size=True)0.875
crop_modecrop_modeModo de recorte de evaluación, center, squash o bordercenter

Los modos de recorte de evaluación, para un size de salida y scale_size = floor(size / crop_pct):

crop_modeComportamiento
centerRedimensionar el borde más corto a scale_size (conservando la relación de aspecto) y recortar al centro a size
squashRedimensiona ambos bordes a scale_size (sin preservar la relación de aspecto) y recorta al centro hasta size
borderRedimensiona el borde más largo a scale_size, realiza un recorte centrado y rellena con el color medio; la imagen completa se mantiene en crop_pct=1.0

Transformaciones

create_transform devuelve un Compose de torchvision. La transformación de evaluación redimensiona y recorta como se indicó anteriormente, y luego convierte a tensor y normaliza. La transformación de entrenamiento es un recorte redimensionado aleatorio (scale=(0.08, 1.0), ratio=(3/4, 4/3) por defecto), volteo horizontal (hflip=0.5), variación de color (color_jitter=0.4), la política opcional auto_augment, la conversión a tensor y la normalización, y el borrado aleatorio.

  • train_crop_mode='rkrc' o 'rkrr' reemplaza el recorte aleatorio redimensionado con un redimensionamiento aleatorio que mantiene la relación de aspecto, seguido de un recorte o relleno central (rkrc) o aleatorio (rkrr).
  • interpolation='random' (el valor predeterminado de train.py para el entrenamiento) elige interpolación bilineal o bicúbica para cada imagen.
  • no_aug=True reduce el entrenamiento a un redimensionado y un recorte centrado.
auto_augmentAumento
rand-m9-mstd0.5-inc1RandAugment a través de rand_augment_transform
augmix-m5-w4-d2AugMix mediante augment_and_mix_transform
original, originalr, v0, v0r, 3aPolítica de AutoAugment mediante auto_augment_transform

Tokens de opciones de RandAugment:

  • m establece la magnitud (valor predeterminado 10).
  • n establece el número de operaciones por imagen (valor predeterminado 2).
  • p establece la probabilidad por operación (valor predeterminado 0.5).
  • mstd establece la desviación estándar del ruido de magnitud.
  • inc1 selecciona operaciones cuya severidad aumenta con la magnitud.
  • t<name> selecciona el conjunto de operaciones (weights, 3a, 3aw).

Tokens de la opción AugMix:

  • m establece la severidad (valor predeterminado 3).
  • w establece el ancho (predeterminado 3).
  • d establece la profundidad (valor predeterminado -1, aleatorio 1-3).
  • b1 habilita la aumentación combinada.
  • mstd establece la desviación estándar del ruido de magnitud.

AutoAugment acepta mstd, por ejemplo, original-mstd0.5.

Comportamiento de Transform:

  • El ajuste de color (color jitter) se desactiva cuando se establece auto_augment, a menos que la cadena contenga 3a.
  • RandomErasing (re_prob, re_count) se ejecuta en el tensor normalizado. re_mode rellena con ceros (const, el valor predeterminado), un color normal aleatorio por región (rand) o píxeles normales aleatorios (pixel, el valor predeterminado de train.py).
  • use_prefetcher=True finaliza la transformación en un tensor uint8; la normalización y el borrado aleatorio se realizan después en el dispositivo por el loader.
  • create_transform y create_loader usan por defecto interpolación bilinear y la media / desviación estándar de ImageNet, no los valores del modelo. Pasa la configuración de datos resuelta para que coincida con el preentrenamiento del modelo.

Conjuntos de datos

create_dataset selecciona la implementación del conjunto de datos y el lector a partir de un prefijo de name:

nameDatasetrootRequisitos
'' o sin prefijoImageDataset, imágenes en subcarpetas de clases (se busca de forma recursiva, el nombre de la carpeta hoja es la clase) o un único archivo .tar con el mismoCarpeta de datos o archivo .tar
torch/<name>torchvision cifar10, cifar100, mnist, kmnist, fashion_mnist, qmnist, inaturalist (inat), places365, imagenet o image_folder (folder)raíz del dataset de torchvision
hfds/<name>ImageDataset en un conjunto de datos de Hugging Face Hub (o ruta local) mediante datasets.load_datasetDirectorio de caché (opcional)datasets
hfids/<name>IterableImageDataset, el conjunto de datos de Hugging Face transmitido, o descargado y preparado primero con download=TrueDirectorio de caché (opcional)datasets
tfds/<name>IterableImageDataset en TensorFlow Datasets, download=True descarga y construyeDirectorio de datos de TFDStensorflow, tensorflow-datasets
wds/<name>IterableImageDataset en fragmentos tar de WebDatasetCarpeta de fragmentos con un _info.json (o info.json) que describe las divisioneswebdataset

Opciones de conjunto de datos:

  • split selecciona la división del conjunto de datos (por defecto, validation). Para WebDataset, también puede ser un patrón de fragmento con un recuento de muestras, 'imagenet-train-{0000..1023}.tar|1281167'.
  • search_split=True (por defecto) hace que los conjuntos de datos de carpetas busquen la subcarpeta de root llamada split o, si no la encuentra, un sinónimo de un split de entrenamiento (train, training) o de evaluación (val, valid, validation, eval, evaluation).
  • add_img_extensions añade a las extensiones de imagen predeterminadas (.png, .jpg y .jpeg).
  • class_map remapea los nombres de clases a índices mediante un diccionario, un archivo .txt (una clase por línea) o un archivo .pkl.

Los conjuntos de datos iterables (hfids, tfds, wds) también aceptan:

  • is_training habilita el barajado.
  • batch_size redondea hacia arriba la parte de muestras de cada worker a lotes completos durante el entrenamiento.
  • num_samples establece la cantidad de muestras, que es obligatoria cuando el lector no puede determinarla (hfids sin información de división).
  • seed establece la semilla aleatoria.
  • repeats multiplica las muestras por época; los lectores recorren los datos esa cantidad de veces.

Llama a dataset.set_epoch() en cada época para barajar de nuevo.

Otros argumentos de palabras clave se pasan al lector. Para los lectores de Hugging Face, TFDS y WebDataset:

  • input_key selecciona el campo de imagen (por defecto, image; para wds, una imagen jpg, png o webp).
  • target_key selecciona el campo de etiqueta (por defecto, label; para wds, el archivo .cls o un campo lateral .json denominado por target_key). Un valor separado por comas lee un campo binario por clase.
  • target_format='multihot' lee vectores multi-hot densos en lugar de listas de índices de clase para datos de múltiples etiquetas.
  • target_transform=MultiLabelTarget(num_classes) codifica los objetivos como tensores multi-hot de tipo float. Pasa dense=True a MultiLabelTarget para campos multi-hot.

Los lectores de carpetas y archivos tar generan índices de una sola clase. Consulte clasificación multietiqueta para obtener más detalles.

Cargadores

create_loader crea la transformación con create_transform a partir de sus propios argumentos, la asigna a dataset.transform (reemplazando cualquier transformación existente) y devuelve un DataLoader. Los loaders de entrenamiento (is_training=True) barajan y descartan el último lote incompleto.

  • Prefetcher. Con use_prefetcher=True (predeterminado), el conjunto de datos genera tensores uint8, los lotes se mueven a device (predeterminado cuda, en un flujo lateral para CUDA), se convierten a img_dtype, se normalizan y se borran aleatoriamente allí. Establezca device en el dispositivo de entrenamiento, o use_prefetcher=False para un DataLoader simple de tensores normalizados.
  • Distribuido. distributed=True utiliza un DistributedSampler para conjuntos de datos de entrenamiento de estilo mapa (o un muestreador de aumentación repetida con num_aug_repeats) y un muestreador ordenado para la evaluación que rellena cada proceso hasta el mismo número de muestras, lo que puede alterar ligeramente los resultados de validación. Los conjuntos de datos iterables se dividen por sí mismos entre procesos y trabajadores.
  • Collate. collate_fn reemplaza la función predeterminada (fast_collate con el prefetcher, default_collate sin él), por ejemplo, con una FastCollateMixup.
  • Divisiones de aumento. Para AugMix con la pérdida JSD (--aug-splits), envuelva el conjunto de datos en AugMixDataset(dataset, num_splits=n) y pase num_aug_splits=n. Cada lote contiene una división limpia y n - 1 divisiones aumentadas, concatenadas a lo largo de la dimensión del lote por el prefetcher.
  • Resolución programada. input_size_choices (--train-img-sizes) selecciona el tamaño de entrada por lote, opcionalmente con un tamaño de lote por opción (batch_size_choices) y un programa progressive desde la primera hasta la última opción.

Mixup y CutMix

Mixup mezcla un lote de imágenes normalizadas en el dispositivo, después del loader. FastCollateMixup toma los mismos argumentos y mezcla imágenes uint8 mientras se realiza el collate en los workers del loader; requiere el prefetcher. Ambos devuelven objetivos densos (batch_size, num_classes) con label_smoothing (por defecto 0.1) aplicado, para ser usados con una pérdida de objetivo suave como timm.loss.SoftTargetCrossEntropy, y requieren un tamaño de lote par.

from timm.data import Mixup, FastCollateMixup

# Continuing the example above.
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
mixup_args = dict(mixup_alpha=0.8, cutmix_alpha=1.0, label_smoothing=0.1, num_classes=1000)

# Prefetcher enabled (default), mixed in the loader's collate.
loader = create_loader(
    dataset,
    **data_config,
    batch_size=4,
    is_training=True,
    collate_fn=FastCollateMixup(**mixup_args),
    device=device,
)
for images, targets in loader:
    ...  # images normalized on device, targets (4, 1000)

# Prefetcher disabled, mixed in the training loop.
loader = create_loader(dataset, **data_config, batch_size=4, is_training=True, use_prefetcher=False)
mixup_fn = Mixup(**mixup_args)
for images, targets in loader:
    images, targets = mixup_fn(images.to(device), targets.to(device))

Controles de Mixup y CutMix:

  • mixup_alpha > 0 habilita Mixup.
  • cutmix_alpha > 0 habilita CutMix.
  • cutmix_minmax habilita CutMix con un rango de tamaño de caja.
  • switch_prob establece la probabilidad de elegir CutMix cuando ambos métodos están habilitados.
  • prob establece la probabilidad de mezclar en absoluto.
  • mode extrae los parámetros una vez por batch, por pair de elementos o por elem (elemento).
  • multi_label=True mezcla objetivos multietiqueta densos, suavizando cada etiqueta hacia 0.5.
  • mixup_enabled = False desactiva la mezcla, por ejemplo, para las épocas finales (--mixup-off-epoch). En el caso de FastCollateMixup, se lee en los procesos de trabajo; los trabajadores persistentes mantienen el valor con el que comenzaron.

NaFlex con resolución variable

create_naflex_loader carga imágenes como secuencias de longitud variable de parches, sin redimensionarlas a un tamaño cuadrado fijo, para modelos que aceptan entradas de parches NaFlex (p. ej., los modelos naflexvit_*). Cada lote es un diccionario de patches, patch_coord, patch_valid y seq_len, rellenado hasta la longitud de secuencia del lote.

  • Entrenamiento. El conjunto de datos se envuelve en un NaFlexMapDatasetWrapper (solo para conjuntos de datos de estilo mapa), que elige una de las longitudes de train_seq_lens por lote y realiza recortes de redimensionamiento aleatorios en cada imagen para que quepan esa cantidad de parches. batch_size es el tamaño del lote en la longitud de secuencia más larga; las longitudes más cortas obtienen lotes proporcionalmente más grandes (redondeados hacia abajo a un múltiplo de 8) para que los tokens por lote se mantengan aproximadamente constantes. patch_size_choices (con patch_size_choice_probs) también varía el tamaño del parche por lote, para los modelos que lo admiten.
  • Eval. Las imágenes se redimensionan para que quepan en max_seq_len parches con el patch_size indicado (necesario para la evaluación) y se rellenan hasta max_seq_len.
  • Mixup. Pasa un NaFlexMixup como mixup_fn; mezcla dentro de cada lote y no admite mode ni cutmix_minmax.

Las opciones de train.py son:

  • --naflex-loader habilita el cargador NaFlex.
  • --naflex-train-seq-lens establece las longitudes de secuencia de entrenamiento.
  • --naflex-max-seq-len establece la longitud máxima de la secuencia de evaluación.
  • --naflex-patch-sizes establece los tamaños de parche para el entrenamiento con tamaño de parche variable.
  • --naflex-patch-size-probs establece las probabilidades para esos tamaños de parche.
  • --naflex-loss-scale selecciona la escala de pérdida según el tamaño del lote (none, sqrt o linear).

API

Configuración de datos

timm.data.resolve_data_config

< >

( args = Nonepretrained_cfg = Nonemodel = Noneuse_test_size = Falseverbose = False )

timm.data.resolve_model_data_config

< >

( modelargs = Nonepretrained_cfg = Noneuse_test_size = Falseverbose = False )

Parámetros

  • model (nn.Module) — la instancia del modelo
  • args (dict) — argumentos de línea de comandos / configuración en forma de diccionario (anula pretrained_cfg)
  • pretrained_cfg (dict) — configuración del modelo preentrenado (anula la pretrained_cfg asociada al modelo)
  • use_test_size (bool) — usar la resolución de entrada en tiempo de prueba (si existe) en lugar de la resolución de entrenamiento predeterminada
  • verbose (bool) — habilita el registro adicional de los valores resueltos

Configuración de datos del modelo Esto es equivalente a resolve_data_config() pero con los argumentos reordenados para colocar el modelo primero.

timm.data.resolve_input_data_config

< >

( modelargs: typing.Optional[typing.Dict[str, typing.Any]] = Nonepretrained_cfg: typing.Optional[typing.Dict[str, typing.Any]] = Noneuse_test_size: bool = Falseverbose: bool = False )

Resuelve el preprocesamiento en función de las restricciones de entrada del modelo actual.

Las dimensiones y canales fijos deben coincidir con las solicitudes explícitas. Los modelos flexibles conservan las recomendaciones de preprocesamiento de entrenamiento/prueba, a menos que se anulen. La normalización utiliza la política de adaptación de canales existente de los cargadores de preobtención.

Transformaciones

timm.data.create_transform

< >

( input_size: typing.Union[int, typing.Tuple[int, int], typing.Tuple[int, int, int]] = 224is_training: bool = Falseno_aug: bool = Falsetrain_crop_mode: typing.Optional[str] = Nonescale: typing.Optional[typing.Tuple[float, float]] = Noneratio: typing.Optional[typing.Tuple[float, float]] = Nonehflip: float = 0.5vflip: float = 0.0color_jitter: typing.Union[float, typing.Tuple[float, ...]] = 0.4color_jitter_prob: typing.Optional[float] = Nonegrayscale_prob: float = 0.0gaussian_blur_prob: float = 0.0auto_augment: typing.Optional[str] = Noneinterpolation: str = 'bilinear'mean: typing.Tuple[float, ...] = (0.485, 0.456, 0.406)std: typing.Tuple[float, ...] = (0.229, 0.224, 0.225)re_prob: float = 0.0re_mode: str = 'const're_count: int = 1re_num_splits: int = 0crop_pct: typing.Optional[float] = Nonecrop_mode: typing.Optional[str] = Nonecrop_border_pixels: typing.Optional[int] = Nonetf_preprocessing: bool = Falseuse_prefetcher: bool = Falsenormalize: bool = Trueseparate: bool = Falsenaflex: bool = Falsepatch_size: typing.Union[int, typing.Tuple[int, int]] = 16max_seq_len: int = 576patchify: bool = Falsepatchify_channels_last: bool = Truepatchify_flatten: bool = True )

Parámetros

  • input_size — Tamaño de entrada objetivo (canales, altura, ancho) en forma de tupla o escalar.
  • is_training — Devuelve las transformaciones de entrenamiento (aleatorias).
  • no_aug — Desactiva la aumentación para el entrenamiento (útil para depuración).
  • train_crop_mode — Modo de recorte aleatorio para el entrenamiento (‘rrc’, ‘rkrc’, ‘rkrr’).
  • scale — Rango de escala para el redimensionamiento aleatorio (área de recorte, < 1.0 => zoom in).
  • ratio — Rango de relación de aspecto aleatoria (relación de recorte para RRC, factor de ajuste de relación para RKR).
  • hflip — Probabilidad de volteo horizontal.
  • vflip — Probabilidad de volteo vertical.
  • color_jitter — Factores de componentes de ajuste aleatorio de color (brillo, contraste, saturación, tono). Un escalar se aplica como (escalar,) * 3 (sin tono).
  • color_jitter_prob — Aplica color jitter con esta probabilidad si no es None (para aumentos tipo SimCLR).
  • grayscale_prob — Probabilidad de convertir la imagen a escala de grises (para aumentos tipo SimCLR).
  • gaussian_blur_prob — Probabilidad de aplicar desenfoque gaussiano (para aumentos tipo SimCLR).
  • auto_augment — Cadena de configuración de auto augment (ver auto_augment.py).
  • interpolation — Modo de interpolación de imagen.
  • mean — Media de normalización de imagen.
  • std — Desviación estándar de normalización de imagen.
  • re_prob — Probabilidad de borrado aleatorio.
  • re_mode — Modo de relleno para el borrado aleatorio.
  • re_count — Número de regiones de borrado aleatorio.
  • re_num_splits — Controla la división del borrado aleatorio en función del tamaño del lote.
  • crop_pct — Porcentaje de recorte para la inferencia (tamaño de salida / tamaño de redimensionado).
  • crop_mode — Modo de recorte para la inferencia. Uno de [‘squash’, ‘border’, ‘center’]. El valor predeterminado es ‘center’ cuando es None.
  • crop_border_pixels — Recorte de borde para la inferencia de # píxeles alrededor del borde de la imagen original.
  • tf_preprocessing — Use el preprocesamiento de inferencia de TF 1.0 para probar las portadas de modelos
  • use_prefetcher — Pre-fetcher habilitado. No convierta la imagen en tensor ni la normalice.
  • normalize — Tensor de normalización de salida con la media/desviación estándar proporcionada (si no se usa el prefetcher).
  • separate — Salida en una tupla de 3 etapas.
  • patchify — Aplica la transformación a la salida en lugar de depender del prefetcher.
  • patchify_channels_last — Utiliza el orden channels-last dentro de cada parche.
  • patchify_flatten — Aplana los parches de evaluación en vectores. Desactívalo cuando el modelo necesite sus dimensiones espaciales para la interpolación del tamaño de parche.

timm.data.rand_augment_transform

< >

( config_str: strhparams: typing.Optional[typing.Dict] = Nonetransforms: typing.Union[str, typing.Dict, typing.List, NoneType] = None )

Parámetros

  • config_str (str) — Cadena que define la configuración del aumento aleatorio. Está compuesta por varias secciones separadas por guiones ('-'). La primera sección define la variante específica de rand augment (actualmente solo 'rand'). Las secciones restantes, sin un orden específico, determinan
    • ‘m’ - magnitud entera de rand augment
    • 'n' - número de capas (número de operaciones de transformación seleccionadas por imagen)
    • ‘p’ - probabilidad de aplicar cada capa (predeterminado 0.5)
    • ‘mstd’ - desviación estándar flotante del ruido de magnitud aplicado, o muestreo uniforme si es infinito (o > 100)
    • ‘mmax’ - establecer un límite superior para la magnitud distinto del valor predeterminado de _LEVEL_DENOM (10)
    • ‘inc’ - entero (bool), usa aumentaciones que aumentan en severidad con la magnitud (predeterminado: 0)
    • ‘t’ - str nombre del conjunto de transformaciones a utilizar
  • hparams (dict) — Otros hparams (kwargs) para el esquema de RandAugmentation

Crear una transformación RandAugment

Ejemplos:

  • 'rand-m9-n3-mstd0.5' es RandAugment con magnitud 9, 3 capas y una desviación estándar de magnitud de 0.5.
  • 'rand-mstd1-tweights' es RandAugment con una desviación estándar de magnitud de 1.0 y selección ponderada de transformaciones, con la magnitud predeterminada de 10 y 2 capas.

timm.data.auto_augment_transform

< >

( config_str: strhparams: typing.Optional[typing.Dict] = None )

Parámetros

  • config_str — Cadena que define la configuración de la auto-aumentación. Está compuesta por varias secciones separadas por guiones (’-’). La primera sección define la política de AutoAugment (una de ‘v0’, ‘v0r’, ‘original’, ‘originalr’). Mientras que las secciones restantes definen otros argumentos
    • ‘mstd’ - desviación estándar de ruido de magnitud aplicada
  • hparams — Otros hparams (kwargs) para el esquema de AutoAugmentation

Crea una transformación AutoAugment

Ejemplos:

  • 'original-mstd0.5' es AutoAugment con la política original y una desviación estándar de magnitud de 0.5.

timm.data.auto_augment.augment_and_mix_transform

< >

( config_str: strhparams: typing.Optional[typing.Dict] = None )

Parámetros

  • config_str (str) — Cadena que define la configuración del aumento aleatorio. Está compuesta por varias secciones separadas por guiones (’-’). La primera sección define la variante específica de rand augment (actualmente solo ‘rand’). Las secciones restantes, sin un orden específico, determinan ‘m’ - magnitud (severidad) entera de la mezcla de aumentos (predeterminado: 3) ‘w’ - ancho entero de la cadena de aumentos (predeterminado: 3) ‘d’ - profundidad entera de la cadena de aumentos (-1 es aleatorio [1, 3], predeterminado: -1) ‘b’ - entero (bool), mezcla cada rama de la cadena en el resultado final sin una mezcla final, menos CPU (predeterminado: 0) ‘mstd’ - desviación estándar flotante del ruido de magnitud aplicado (predeterminado: 0) Ej: ‘augmix-m5-w4-d2’ resulta en AugMix con severidad 5, ancho de cadena 4, profundidad de cadena 2
  • hparams — Otros hparams (kwargs) para las transformaciones de Augmentation

Crear la transformación AugMix de PyTorch

clase timm.data.random_erasing.RandomErasing

< >

( probability = 0.5min_area = 0.02max_area = 0.3333333333333333min_aspect = 0.3max_aspect = Nonemode = 'const'min_count = 1max_count = Nonenum_splits = 0device = 'cuda' )

Parámetros

  • probability — Probabilidad de que se realice la operación de borrado aleatorio.
  • min_area — Porcentaje mínimo del área borrada en relación con el área de la imagen de entrada.
  • max_area — Porcentaje máximo del área borrada en relación con el área de la imagen de entrada.
  • min_aspect — Relación de aspecto mínima del área borrada.
  • mode — modo de color de píxel, uno de ‘const’, ‘rand’ o ‘pixel’ ‘const’ - el bloque de borrado es de color constante 0 para todos los canales ‘rand’ - el bloque de borrado es de color aleatorio (normal) por canal ‘pixel’ - el bloque de borrado es de color aleatorio (normal) por píxel

Selecciona aleatoriamente una región rectangular en una imagen y borra sus píxeles. ‘Random Erasing Data Augmentation’ de Zhong et al. Ver https://arxiv.org/pdf/1708.04896.pdf

Esta variante de RandomErasing está diseñada para aplicarse a un tensor de un lote o de una sola imagen después de que este haya sido normalizado con la media y la desviación estándar del conjunto de datos.

max_count: número máximo de bloques de borrado por imagen, el área por caja se escala según el recuento. El recuento por imagen se elige aleatoriamente entre 1 y este valor.

Conjuntos de datos

timm.data.create_dataset

< >

( name: strroot: typing.Optional[str] = Nonesplit: str = 'validation'search_split: bool = Trueclass_map: dict = Noneload_bytes: bool = Falseis_training: bool = Falsedownload: bool = Falsebatch_size: int = 1num_samples: typing.Optional[int] = Noneseed: int = 42repeats: int = 0input_img_mode: str = 'RGB'trust_remote_code: bool = False**kwargs )

Parámetros

  • name — Nombre del dataset. Puede estar vacío en el caso de datasets basados en carpetas. El prefijo (p. ej. hfds/) no distingue entre mayúsculas y minúsculas, mientras que el resto se pasa tal cual (distinguiendo entre mayúsculas y minúsculas), excepto para los nombres de torch/.
  • root — Carpeta raíz del conjunto de datos (Todos)
  • split — División del conjunto de datos (Todos)
  • search_split — Busca el pliegue hijo específico de la división desde la raíz para que se pueda especificar imagenet/ en lugar de /imagenet/val, etc. en la línea de comandos / configuración. (Carpeta, Torch)
  • class_map — Especifica el mapeo de clase -> índice mediante un archivo de texto o un diccionario (Folder)
  • load_bytes — Carga datos y devuelve las imágenes como bytes sin decodificar (Folder)
  • download — Descarga el conjunto de datos si no está presente y es compatible (HFIDS, TFDS, Torch)
  • is_training — Crea el conjunto de datos en modo de entrenamiento, lo cual es diferente de la división. Para Iterable / TDFS, habilita el barajado; se ignora en otros conjuntos de datos. (TFDS, WDS, HFIDS)
  • batch_size — Pista de tamaño de lote para conjuntos de datos iterables (TFDS, WDS, HFIDS)
  • seed — Semilla para conjuntos de datos iterables (TFDS, WDS, HFIDS)
  • repeats — Repeticiones del conjunto de datos por iteración, es decir, por época (TFDS, WDS, HFIDS)
  • input_img_mode — Modo de conversión de color de la imagen de entrada, p. ej. ‘RGB’, ‘L’ (carpeta, TFDS, WDS, HFDS, HFIDS)
  • trust_remote_code — Confía en el código remoto en Hugging Face Datasets si es True (HFDS, HFIDS)
  • **kwargs — Otros argumentos para pasar a las clases subyacentes Dataset y/o Reader

Método de fábrica de Dataset

Entre paréntesis, después de cada argumento, se indica el tipo de conjunto de datos admitido para cada argumento, uno de los siguientes:

  • Carpeta - carpeta predeterminada, carpeta (o tar) basada en ImageDataset de timm
  • Torch - conjuntos de datos basados en torchvision
  • HFDS - Hugging Face Datasets
  • HFIDS - Hugging Face Datasets Iterable (modo de streaming, con IterableDataset)
  • TFDS - Envoltorio de Tensorflow-datasets en la interfaz IterableDataset a través de IterableImageDataset
  • WDS - Webdataset
  • Todos - cualquiera de los anteriores

clase timm.data.ImageDataset

< >

( rootreader = Nonesplit = 'train'class_map = Noneload_bytes = Falseinput_img_mode = 'RGB'transform = Nonetarget_transform = Noneadditional_features = None**kwargs )

clase timm.data.IterableImageDataset

< >

( rootreader = Nonesplit = 'train'class_map = Noneis_training = Falsebatch_size = 1num_samples = Noneseed = 42repeats = 0download = Falseinput_img_mode = 'RGB'input_key = Nonetarget_key = Nonetransform = Nonetarget_transform = Nonemax_steps = None**kwargs )

clase timm.data.AugMixDataset

< >

( datasetnum_splits = 2 )

Envoltorio de conjunto de datos para realizar mezclas de AugMix u otras mezclas de datos limpios/aumentados

clase timm.data.MultiLabelTarget

< >

( num_classes: intdense: bool = False )

Codifica un objetivo de múltiples etiquetas como un tensor multi-hot float32 de longitud num_classes.

Por defecto, el objetivo es una secuencia de índices de la clase positiva: una secuencia vacía significa que no hay etiquetas positivas, se permiten repeticiones y se rechazan valores negativos, fuera de rango o no enteros. Con dense=True, el objetivo ya es un vector de longitud num_classes que contiene valores bool, int o float en [0, 1]; se valida y se convierte a float32, conservando los valores suaves.

Cargadores

timm.data.create_loader

< >

( dataset: typing.Union[timm.data.dataset.ImageDataset, timm.data.dataset.IterableImageDataset]input_size: typing.Union[int, typing.Tuple[int, int], typing.Tuple[int, int, int]]batch_size: intis_training: bool = Falseno_aug: bool = Falsere_prob: float = 0.0re_mode: str = 'const're_count: int = 1re_split: bool = Falsetrain_crop_mode: typing.Optional[str] = Nonescale: typing.Optional[typing.Tuple[float, float]] = Noneratio: typing.Optional[typing.Tuple[float, float]] = Nonehflip: float = 0.5vflip: float = 0.0color_jitter: float = 0.4color_jitter_prob: typing.Optional[float] = Nonegrayscale_prob: float = 0.0gaussian_blur_prob: float = 0.0auto_augment: typing.Optional[str] = Nonenum_aug_repeats: int = 0num_aug_splits: int = 0interpolation: str = 'bilinear'mean: typing.Tuple[float, ...] = (0.485, 0.456, 0.406)std: typing.Tuple[float, ...] = (0.229, 0.224, 0.225)num_workers: int = 1distributed: bool = Falsecrop_pct: typing.Optional[float] = Nonecrop_mode: typing.Optional[str] = Nonecrop_border_pixels: typing.Optional[int] = Nonecollate_fn: typing.Optional[typing.Callable] = Nonepin_memory: bool = Falsefp16: bool = Falseimg_dtype: dtype = torch.float32device: device = torch.device()use_prefetcher: bool = Trueuse_multi_epochs_loader: bool = Falsepersistent_workers: bool = Trueworker_seeding: str = 'all'tf_preprocessing: bool = Falseinput_size_choices: typing.Optional[typing.Sequence[typing.Union[int, typing.Tuple[int, int], typing.Tuple[int, int, int]]]] = Nonebatch_size_choices: typing.Optional[typing.Sequence[int]] = Nonebatch_choice_weights: typing.Optional[typing.Sequence[float]] = Nonebatch_choice_seed: int = 0batch_choice_schedule: str = 'constant'batch_schedule_epochs: typing.Optional[int] = Nonebatch_schedule_spread: float = 0.65batch_schedule_random_mix: float = 0.1num_batches: typing.Optional[int] = None )

Parámetros

  • dataset — El conjunto de datos de imágenes que se cargará.
  • input_size — Tamaño de entrada objetivo (canales, altura, ancho) en forma de tupla o escalar.
  • batch_size — Número de muestras en un lote.
  • is_training — Devuelve las transformaciones de entrenamiento (aleatorias).
  • no_aug — Desactiva la aumentación para el entrenamiento (útil para depuración).
  • re_prob — Probabilidad de borrado aleatorio.
  • re_mode — Modo de relleno para el borrado aleatorio.
  • re_count — Número de regiones de borrado aleatorio.
  • re_split — Controla la división del borrado aleatorio en el tamaño del lote.
  • scale — Rango de escala para el redimensionamiento aleatorio (área de recorte, < 1.0 => zoom in).
  • ratio — Rango de relación de aspecto aleatoria (relación de recorte para RRC, factor de ajuste de relación para RKR).
  • hflip — Probabilidad de volteo horizontal.
  • vflip — Probabilidad de volteo vertical.
  • color_jitter — Factores de componentes de ajuste aleatorio de color (brillo, contraste, saturación, tono). Un escalar se aplica como (escalar,) * 3 (sin tono).
  • color_jitter_prob — Aplica jitter de color con esta probabilidad si no es None (para aumentos tipo SimCLR
  • grayscale_prob — Probabilidad de convertir la imagen a escala de grises (para aumentos tipo SimCLR).
  • gaussian_blur_prob — Probabilidad de aplicar desenfoque gaussiano (para aumentos tipo SimCLR).
  • auto_augment — Cadena de configuración de auto augment (ver auto_augment.py).
  • num_aug_repeats — Habilita un sampler especial para repetir la misma aumentación en las GPUs distribuidas.
  • num_aug_splits — Habilita el modo en el que las aumentaciones pueden dividirse entre el lote.
  • interpolation — Modo de interpolación de imagen.
  • mean — Media de normalización de imagen.
  • std — Desviación estándar de normalización de imagen.
  • num_workers — Número de procesos de worker por DataLoader.
  • distributed — Habilita la carga de datos para el entrenamiento distribuido.
  • crop_pct — Porcentaje de recorte para la inferencia (tamaño de salida / tamaño de redimensionado).
  • crop_mode — Modo de recorte para la inferencia. Uno de [‘squash’, ‘border’, ‘center’]. El valor predeterminado es ‘center’ cuando es None.
  • crop_border_pixels — Recorte de borde para la inferencia de # píxeles alrededor del borde de la imagen original.
  • collate_fn — Sobrescribe el collate_fn predeterminado.
  • pin_memory — Fija la memoria para la transferencia al dispositivo.
  • fp16 — Argumento obsoleto para el tipo de datos de entrada de media precisión. Use img_dtype.
  • img_dtype — Tipo de datos para la imagen de entrada.
  • device — Dispositivo al que se transfieren las entradas y los objetivos.
  • use_prefetcher — Utiliza un pre-fetcher eficiente para cargar muestras en el dispositivo.
  • use_multi_epochs_loader —
  • persistent_workers — Habilita procesos de worker persistentes cuando num_workers es mayor que cero.
  • worker_seeding — Controla la semilla aleatoria de los workers durante la inicialización.
  • tf_preprocessing — Use the preprocessing for TF 1.0 inference to test model ports.
  • input_size_choices — Opciones de tamaño de entrada por lote para el entrenamiento de resolución programada.
  • batch_size_choices — Tamaño de lote correspondiente a cada opción de tamaño de entrada. Utiliza batch_size para todas las opciones cuando no se especifica.
  • batch_choice_weights — Pesos de muestreo para las opciones de tamaño de entrada. Uniformes si no se especifican.
  • batch_choice_seed — Semilla aleatoria utilizada para crear y barajar el calendario de lotes.
  • batch_choice_schedule — Modo de programación de elección, ya sea constant o progressive.
  • batch_schedule_epochs — Número de épocas durante las que un programa progresivo recorre sus opciones.
  • batch_schedule_spread — Desviación estándar de la ventana de elección progresiva, en unidades de índice de elección.
  • batch_schedule_random_mix — Fracción de exploración aleatoria uniforme sobre las opciones con peso no nulo en un programa progresivo.
  • num_batches — Número fijo de lotes del cargador por época. Se infiere a partir del tamaño medio de lote del programa cuando no se especifica en programas progresivos.

Mixup y CutMix

clase timm.data.Mixup

< >

( mixup_alpha = 1.0cutmix_alpha = 0.0cutmix_minmax = Noneprob = 1.0switch_prob = 0.5mode = 'batch'correct_lam = Truelabel_smoothing = 0.1num_classes = 1000multi_label = False )

Parámetros

  • mixup_alpha (float) — valor de alpha para mixup, mixup está activo si > 0.
  • cutmix_alpha (float) — valor de alpha para cutmix, cutmix está activo si > 0.
  • cutmix_minmax (List[float]) — proporción mínima/máxima de imagen para cutmix; cutmix está activo y usa esto en lugar de alpha si no es None.
  • prob (float) — probabilidad de aplicar mixup o cutmix por lote o elemento
  • switch_prob (float) — probabilidad de cambiar a cutmix en lugar de mixup cuando ambos están activos
  • mode (str) — cómo aplicar los parámetros de mixup/cutmix (por ‘batch’, ‘pair’ (par de elementos), ‘elem’ (elemento)
  • correct_lam (bool) — aplicar la corrección lambda cuando el bbox de cutmix se recorta por los bordes de la imagen
  • label_smoothing (float) — aplica el suavizado de etiquetas al tensor de destino mixto
  • num_classes (int) — número de clases para el objetivo
  • multi_label (bool) — Mezcla objetivos multi-etiqueta densos, suavizando cada etiqueta hacia 0.5.

Mixup/Cutmix que aplica parámetros diferentes a cada elemento o al lote completo

clase timm.data.FastCollateMixup

< >

( mixup_alpha = 1.0cutmix_alpha = 0.0cutmix_minmax = Noneprob = 1.0switch_prob = 0.5mode = 'batch'correct_lam = Truelabel_smoothing = 0.1num_classes = 1000multi_label = False )

Collate rápido con Mixup/Cutmix que aplica parámetros diferentes a cada elemento o al lote completo

Una implementación de Mixup que se realiza al agrupar los lotes.

NaFlex

timm.data.create_naflex_loader

< >

( datasetpatch_size: typing.Union[int, typing.Tuple[int, int], NoneType] = Nonepatch_size_choices: typing.Optional[typing.List[int]] = Nonepatch_size_choice_probs: typing.Optional[typing.List[float]] = Nonetrain_seq_lens: typing.Tuple[int, ...] = (128, 256, 576, 784, 1024)max_seq_len: int = 576batch_size: int = 32is_training: bool = Falsemixup_fn: typing.Optional[typing.Callable] = Noneno_aug: bool = Falsere_prob: float = 0.0re_mode: str = 'const're_count: int = 1re_split: bool = Falsetrain_crop_mode: typing.Optional[str] = Nonescale: typing.Optional[typing.Tuple[float, float]] = Noneratio: typing.Optional[typing.Tuple[float, float]] = Nonehflip: float = 0.5vflip: float = 0.0color_jitter: float = 0.4color_jitter_prob: typing.Optional[float] = Nonegrayscale_prob: float = 0.0gaussian_blur_prob: float = 0.0auto_augment: typing.Optional[str] = Nonenum_aug_repeats: int = 0num_aug_splits: int = 0interpolation: str = 'bilinear'mean: typing.Tuple[float, ...] = (0.485, 0.456, 0.406)std: typing.Tuple[float, ...] = (0.229, 0.224, 0.225)channels: int = 3crop_pct: typing.Optional[float] = Nonecrop_mode: typing.Optional[str] = Nonecrop_border_pixels: typing.Optional[int] = Nonenum_workers: int = 4distributed: bool = Falserank: int = 0world_size: int = 1seed: int = 42epoch: int = 0use_prefetcher: bool = Truepin_memory: bool = Trueimg_dtype: dtype = torch.float32device: typing.Union[str, torch.device] = torch.device()persistent_workers: bool = Trueworker_seeding: str = 'all'patchify_channels_last: bool = True )

Parámetros

  • dataset — Dataset desde el que cargar.
  • patch_size — Tamaño de parche único a utilizar.
  • patch_size_choices — Lista de tamaños de parche para el entrenamiento con tamaño de parche variable.
  • patch_size_choice_probs — Probabilidades para cada elección de tamaño de parche.
  • train_seq_lens — Longitudes de secuencia de entrenamiento para el loteo dinámico.
  • max_seq_len — Longitud de secuencia fija para la validación.
  • batch_size — Tamaño del lote para la validación y longitud máxima de la secuencia de entrenamiento.
  • is_training — Indica si se utiliza para entrenamiento (habilita el loteo dinámico).
  • mixup_fn — Función de mixup opcional.
  • no_aug — Desactiva la aumentación.
  • re_prob — Probabilidad de borrado aleatorio.
  • re_mode — Modo de borrado aleatorio.
  • re_count — Número máximo de rectángulos de borrado.
  • re_split — Bandera de división para el borrado aleatorio.
  • train_crop_mode — Modo de recorte para el entrenamiento.
  • scale — Rango de escala para el recorte de redimensionamiento aleatorio.
  • ratio — Rango de relación de aspecto para el recorte de redimensionamiento aleatorio.
  • hflip — Probabilidad de volteo horizontal.
  • vflip — Probabilidad de volteo vertical.
  • color_jitter — Factor de ajuste de color.
  • color_jitter_prob — Probabilidad de ajuste de color.
  • grayscale_prob — Probabilidad de conversión a escala de grises.
  • gaussian_blur_prob — Probabilidad de desenfoque gaussiano.
  • auto_augment — Política de AutoAugment.
  • num_aug_repeats — Número de repeticiones de aumento.
  • num_aug_splits — Número de divisiones de aumento.
  • interpolation — Método de interpolación.
  • mean — Valores medios de normalización.
  • std — Valores de desviación estándar de la normalización.
  • channels — Número de canales de la imagen, utilizado para la normalización por canal en el prefetcher.
  • crop_pct — Porcentaje de recorte para la validación.
  • crop_mode — Modo de recorte.
  • crop_border_pixels — Recortar los píxeles del borde.
  • num_workers — Número de trabajadores de carga de datos.
  • distributed — Si se está usando entrenamiento distribuido.
  • rank — Rango del proceso para el entrenamiento distribuido.
  • world_size — Número total de procesos.
  • seed — Semilla aleatoria.
  • epoch — Época inicial.
  • use_prefetcher — Si se usa la preobtención.
  • pin_memory — Si se debe fijar la memoria.
  • img_dtype — Tipo de datos de la imagen.
  • device — Dispositivo al que se moverán los tensores.
  • persistent_workers — Si se deben usar workers persistentes cuando num_workers es mayor que cero.
  • worker_seeding — Modo de inicialización de los workers.
  • patchify_channels_last — Disposición plana por parche. True (predeterminado): el índice de canal varía más rápido (predeterminado de NaFlex). False: C-P-P (canales primero — disposición nativa de Gemma4 / HF). Se reenvía al Patchify de origen y a la disposición de normalización del prefetcher.

Cree un cargador de datos con muestreo de longitud de secuencia dinámica para el entrenamiento.

clase timm.data.NaFlexMapDatasetWrapper

< >

( base_dataset: Datasetpatch_size: typing.Union[int, typing.Tuple[int, int], NoneType] = Nonepatch_size_choices: typing.Optional[typing.List[int]] = Nonepatch_size_choice_probs: typing.Optional[typing.List[float]] = Noneseq_lens: typing.Tuple[int, ...] = (128, 256, 576, 784, 1024)max_tokens_per_batch: int = 16384transform_factory: typing.Optional[typing.Callable] = Nonemixup_fn: typing.Optional[typing.Callable] = Noneseed: int = 42shuffle: bool = Truedistributed: bool = Falserank: int = 0world_size: int = 1epoch: int = 0batch_divisor: int = 8patchify_channels_last: bool = True )

Envoltorio de IterableDataset para un conjunto de datos base de estilo mapa.

Genera lotes con longitudes de secuencia variables. Calcula una vez un horario de lotes canónico (pares de longitud de secuencia y tamaño de lote) en función del tamaño total del conjunto de datos (rellenado para la distribución). En cada época, baraja el orden de este horario canónico y los índices del conjunto de datos. Esto garantiza un número consistente de lotes y muestras por época en todos los rangos. Maneja el entrenamiento distribuido y múltiples trabajadores.

set_epoch

< >

( epoch: int )

Parámetros

  • epoch — Nuevo número de época.

Establezca la lectura de epoch segura para la multiprocesación por los workers de DataLoader.

clase timm.data.NaFlexMixup

< >

( num_classes: intmixup_alpha: float = 0.8cutmix_alpha: float = 1.0switch_prob: float = 0.5prob: float = 1.0local_shuffle: int = 4label_smoothing: float = 0.0mixup_off_epoch: int = 0multi_label: bool = False )

Envoltorio invocable que combina la mezcla y la generación de objetivos.

set_epoch

< >

( epoch: int )

Actualice el estado de mixup para la época indicada.

Update on GitHub