timm documentation
Datos
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-sizeestablece la forma de entrada(C, H, W).--img-sizees el atajo cuadrado para--input-size, manteniendo el número de canales del modelo.--in-chansestablece los canales de entrada.--interpolationestablece la interpolación de redimensionado.--meanestablece la media de normalización.--stdestablece la desviación estándar de la normalización.--crop-pctestablece la fracción de recorte para la evaluación.
Creación del dataset (create_dataset) y configuración del objetivo:
--datasetselecciona el conjunto de datos y el lector.--data-direstablece la raíz del conjunto de datos.--train-splitselecciona la división de entrenamiento.--val-splitselecciona la división de validación.--class-mapproporciona el mapeo de clases.--input-img-modeestablece el modo de conversión de color de la imagen.--input-keyselecciona el campo de imagen.--target-keyselecciona el campo o los campos de etiqueta.--target-formatselecciona índices de clase o objetivos multi-hot densos.
Las opciones de cargador y aumento (create_loader) incluyen:
--aaselecciona la política de auto-aumentación.--reprobestablece la probabilidad de borrado aleatorio.--remodeselecciona el modo de relleno del borrado aleatorio.--scaleestablece el rango de escala para el recorte redimensionado aleatorio.--ratioestablece el rango de la relación de aspecto para el recorte aleatorio redimensionado.--hflipestablece la probabilidad de volteo horizontal.--color-jitterestablece la intensidad del ajuste de color.--train-interpolationestablece la interpolación de redimensionamiento para el entrenamiento.--workersestablece el número de workers del loader.--no-prefetcherdesactiva el prefetcher.
Mixup y CutMix (Mixup):
--mixupestablece el alpha de Mixup.--cutmixestablece el alfa de CutMix.--cutmix-minmaxestablece el rango de tamaño de la caja de CutMix.--mixup-probestablece la probabilidad de mezcla.--mixup-switch-probestablece la probabilidad de elegir CutMix cuando ambos métodos están habilitados.--mixup-modeselecciona la mezcla por lote, por par o por elemento.--smoothingestablece 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).
| Clave | claves de args | Descripción | Predeterminado |
|---|---|---|---|
input_size | input_size, img_size, in_chans | Tamañ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) |
interpolation | interpolation | Interpolación de redimensionado, bilinear, bicubic, … | bicubic |
mean, std | mean, std | Normalización, un único valor se repite para cada canal | Media / desviación estándar de ImageNet |
crop_pct | crop_pct | En 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_mode | crop_mode | Modo de recorte de evaluación, center, squash o border | center |
Los modos de recorte de evaluación, para un size de salida y scale_size = floor(size / crop_pct):
crop_mode | Comportamiento |
|---|---|
center | Redimensionar el borde más corto a scale_size (conservando la relación de aspecto) y recortar al centro a size |
squash | Redimensiona ambos bordes a scale_size (sin preservar la relación de aspecto) y recorta al centro hasta size |
border | Redimensiona 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 detrain.pypara el entrenamiento) elige interpolación bilineal o bicúbica para cada imagen.no_aug=Truereduce el entrenamiento a un redimensionado y un recorte centrado.
auto_augment | Aumento |
|---|---|
rand-m9-mstd0.5-inc1 | RandAugment a través de rand_augment_transform |
augmix-m5-w4-d2 | AugMix mediante augment_and_mix_transform |
original, originalr, v0, v0r, 3a | Política de AutoAugment mediante auto_augment_transform |
Tokens de opciones de RandAugment:
mestablece la magnitud (valor predeterminado 10).nestablece el número de operaciones por imagen (valor predeterminado 2).pestablece la probabilidad por operación (valor predeterminado 0.5).mstdestablece la desviación estándar del ruido de magnitud.inc1selecciona operaciones cuya severidad aumenta con la magnitud.t<name>selecciona el conjunto de operaciones (weights,3a,3aw).
Tokens de la opción AugMix:
mestablece la severidad (valor predeterminado 3).westablece el ancho (predeterminado 3).destablece la profundidad (valor predeterminado -1, aleatorio 1-3).b1habilita la aumentación combinada.mstdestablece 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 contenga3a. RandomErasing(re_prob,re_count) se ejecuta en el tensor normalizado.re_moderellena con ceros (const, el valor predeterminado), un color normal aleatorio por región (rand) o píxeles normales aleatorios (pixel, el valor predeterminado detrain.py).use_prefetcher=Truefinaliza la transformación en un tensoruint8; la normalización y el borrado aleatorio se realizan después en el dispositivo por el loader.create_transformycreate_loaderusan por defecto interpolaciónbilineary 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:
name | Dataset | root | Requisitos |
|---|---|---|---|
'' o sin prefijo | ImageDataset, 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 mismo | Carpeta 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_dataset | Directorio de caché (opcional) | datasets |
hfids/<name> | IterableImageDataset, el conjunto de datos de Hugging Face transmitido, o descargado y preparado primero con download=True | Directorio de caché (opcional) | datasets |
tfds/<name> | IterableImageDataset en TensorFlow Datasets, download=True descarga y construye | Directorio de datos de TFDS | tensorflow, tensorflow-datasets |
wds/<name> | IterableImageDataset en fragmentos tar de WebDataset | Carpeta de fragmentos con un _info.json (o info.json) que describe las divisiones | webdataset |
Opciones de conjunto de datos:
splitselecciona 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 derootllamadasplito, 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_extensionsañade a las extensiones de imagen predeterminadas (.png,.jpgy.jpeg).class_mapremapea 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_traininghabilita el barajado.batch_sizeredondea hacia arriba la parte de muestras de cada worker a lotes completos durante el entrenamiento.num_samplesestablece la cantidad de muestras, que es obligatoria cuando el lector no puede determinarla (hfidssin información de división).seedestablece la semilla aleatoria.repeatsmultiplica 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_keyselecciona el campo de imagen (por defecto,image; parawds, una imagenjpg,pngowebp).target_keyselecciona el campo de etiqueta (por defecto,label; parawds, el archivo.clso un campo lateral.jsondenominado portarget_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. Pasadense=TrueaMultiLabelTargetpara 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 tensoresuint8, los lotes se mueven adevice(predeterminadocuda, en un flujo lateral para CUDA), se convierten aimg_dtype, se normalizan y se borran aleatoriamente allí. Establezcadeviceen el dispositivo de entrenamiento, ouse_prefetcher=Falsepara unDataLoadersimple de tensores normalizados. - Distribuido.
distributed=Trueutiliza unDistributedSamplerpara conjuntos de datos de entrenamiento de estilo mapa (o un muestreador de aumentación repetida connum_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_fnreemplaza la función predeterminada (fast_collatecon el prefetcher,default_collatesin él), por ejemplo, con unaFastCollateMixup. - Divisiones de aumento. Para AugMix con la pérdida JSD (
--aug-splits), envuelva el conjunto de datos enAugMixDataset(dataset, num_splits=n)y pasenum_aug_splits=n. Cada lote contiene una división limpia yn - 1divisiones 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 programaprogressivedesde 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 > 0habilita Mixup.cutmix_alpha > 0habilita CutMix.cutmix_minmaxhabilita CutMix con un rango de tamaño de caja.switch_probestablece la probabilidad de elegir CutMix cuando ambos métodos están habilitados.probestablece la probabilidad de mezclar en absoluto.modeextrae los parámetros una vez porbatch, porpairde elementos o porelem(elemento).multi_label=Truemezcla objetivos multietiqueta densos, suavizando cada etiqueta hacia 0.5.mixup_enabled = Falsedesactiva la mezcla, por ejemplo, para las épocas finales (--mixup-off-epoch). En el caso deFastCollateMixup, 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 detrain_seq_lenspor lote y realiza recortes de redimensionamiento aleatorios en cada imagen para que quepan esa cantidad de parches.batch_sizees 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(conpatch_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_lenparches con elpatch_sizeindicado (necesario para la evaluación) y se rellenan hastamax_seq_len. - Mixup. Pasa un
NaFlexMixupcomomixup_fn; mezcla dentro de cada lote y no admitemodenicutmix_minmax.
Las opciones de train.py son:
--naflex-loaderhabilita el cargador NaFlex.--naflex-train-seq-lensestablece las longitudes de secuencia de entrenamiento.--naflex-max-seq-lenestablece la longitud máxima de la secuencia de evaluación.--naflex-patch-sizesestablece los tamaños de parche para el entrenamiento con tamaño de parche variable.--naflex-patch-size-probsestablece las probabilidades para esos tamaños de parche.--naflex-loss-scaleselecciona la escala de pérdida según el tamaño del lote (none,sqrtolinear).
API
Configuración de datos
timm.data.resolve_data_config
< source >( args = Nonepretrained_cfg = Nonemodel = Noneuse_test_size = Falseverbose = False )
timm.data.resolve_model_data_config
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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 detorch/. - 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
< source >( rootreader = Nonesplit = 'train'class_map = Noneload_bytes = Falseinput_img_mode = 'RGB'transform = Nonetarget_transform = Noneadditional_features = None**kwargs )
clase timm.data.IterableImageDataset
< source >( 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 )
Envoltorio de conjunto de datos para realizar mezclas de AugMix u otras mezclas de datos limpios/aumentados
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
< source >( 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_workerses 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_sizepara 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
constantoprogressive. - 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
< source >( 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
< source >( 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
< source >( 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_workerses 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 alPatchifyde 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
< source >( 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.
Establezca la lectura de epoch segura para la multiprocesación por los workers de DataLoader.
clase timm.data.NaFlexMixup
< source >( 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.
Actualice el estado de mixup para la época indicada.