timm documentation

Данные

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Данные

На этой странице представлена справочная документация по API подпакета timm.data, а также обзор входного конвейера, который он предоставляет: разрешение конфигурации предобработки модели, построение трансформаций, создание наборов данных и загрузчиков, Mixup / CutMix и загрузчик с переменным разрешением NaFlex.

Использование

Пайплайн собирается в четыре шага: resolve_model_data_config читает конфигурацию предобработки модели, create_transform создаёт трансформ для обучения или оценки, create_dataset создаёт датасет по имени и корневому каталогу, а create_loader создаёт трансформ и загрузчик данных для датасета.

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,)

В быстром старте описаны шаги настройки и преобразования для вывода.

Скрипт обучения (train.py) предоставляет следующие параметры для каждой части конвейера.

Переопределения конфигурации входных данных (resolve_input_data_config):

  • --input-size задаёт форму входных данных (C, H, W).
  • --img-size — это квадратная альтернатива для --input-size, сохраняющая количество каналов модели.
  • --in-chans задаёт количество входных каналов.
  • --interpolation задаёт метод интерполяции при изменении размера.
  • --mean задает среднее значение нормализации.
  • --std задает стандартное отклонение нормализации.
  • --crop-pct задает долю обрезки для оценки.

Создание набора данных (create_dataset) и настройка целевой переменной:

  • --dataset выбирает набор данных и считыватель.
  • --data-dir задаёт корневой каталог набора данных.
  • --train-split выбирает обучающую выборку.
  • --val-split выбирает валидационную часть данных.
  • --class-map задаёт сопоставление классов.
  • --input-img-mode задаёт режим преобразования цвета изображения.
  • --input-key выбирает поле изображения.
  • --target-key выбирает поле или поля меток.
  • --target-format выбирает индексы классов или плотные многогорячие целевые значения.

Варианты загрузчика и аугментации (create_loader) включают:

  • --aa выбирает политику автоматической аугментации.
  • --reprob задает вероятность случайного стирания.
  • --remode выбирает режим заполнения для случайного стирания.
  • --scale задаёт диапазон масштаба для случайного обрезания с изменением размера.
  • --ratio задаёт диапазон соотношения сторон для случайного обрезания с изменением размера.
  • --hflip задает вероятность горизонтального отражения.
  • --color-jitter задает силу изменения цвета.
  • --train-interpolation задаёт интерполяцию для изменения размера при обучении.
  • --workers задает количество рабочих процессов загрузчика.
  • --no-prefetcher отключает предзагрузчик.

Mixup и CutMix (Mixup):

  • --mixup задает альфа Mixup.
  • --cutmix задает альфа-параметр CutMix.
  • --cutmix-minmax задаёт диапазон размеров CutMix-коробок.
  • --mixup-prob задает вероятность смешивания.
  • --mixup-switch-prob задает вероятность выбора CutMix, когда оба метода включены.
  • --mixup-mode выбирает смешивание на уровне батча, пары или элемента.
  • --smoothing задаёт сглаживание меток.

См. примеры в разделе Scripts.

Конфигурация данных

resolve_data_config возвращает словарь со следующими ключами, которые соответствуют аргументам create_transform и create_loader. Значения, установленные в args (словарь, например, vars(args) разобранных аргументов командной строки), имеют приоритет над аргументом pretrained_cfg, который по умолчанию равен model.pretrained_cfg. resolve_model_data_config делает то же самое, но принимает модель первым аргументом.

Обе функции читают размер входа и количество каналов из предобученного cfg, который описывает исходный чекпоинт, а не модель, созданную или изменённую для использования другого img_size или in_chans. resolve_input_data_config, используемая в скриптах обучения, валидации и инференса, разрешает параметры относительно текущего входа модели: модель с фиксированным размером входа всегда получает свой текущий размер, явные args, конфликтующие с каналами или фиксированным размером модели, вызывают ошибку, а mean / std, не соответствующие количеству каналов, заменяются их средним значением (с предупреждением).

КлючКлючи argsОписаниеПо умолчанию
input_sizeinput_size, img_size, in_chansРазмер входных данных (C, H, W). Если use_test_size=True, используется test_input_size из конфигурации, если он там задан(3, 224, 224)
interpolationinterpolationИнтерполяция при изменении размера, bilinear, bicubic, …bicubic
mean, stdmean, stdНормализация, одно значение повторяется для каждого каналаСреднее / стандартное отклонение ImageNet
crop_pctcrop_pctEval crop: изображение масштабируется до size / crop_pct перед обрезкой до size (test_crop_pct при use_test_size=True)0.875
crop_modecrop_modeРежим обрезки для оценки, center, squash или bordercenter

Режимы обрезки для оценки, для выходного size и scale_size = floor(size / crop_pct):

crop_modeПоведение
centerМасштабировать самую короткую сторону до scale_size (с сохранением соотношения сторон), затем выполнить центрированный кроп до size
squashИзмените размер обоих краёв до scale_size (соотношение сторон не сохраняется), затем выполните центрированный кроп до size
borderМасштабируйте самую длинную сторону до scale_size, выполните центрированный кроп и заполните края средним цветом; при этом всё изображение сохраняется при crop_pct=1.0

Преобразования

create_transform возвращает torchvision Compose. Преобразование для оценки выполняет изменение размера и обрезку, как описано выше, затем преобразует изображение в тензор и нормализует. Преобразование для обучения включает случайную обрезку с изменением размера (scale=(0.08, 1.0), ratio=(3/4, 4/3) по умолчанию), горизонтальное отражение (hflip=0.5), изменение цвета (color_jitter=0.4), необязательную политику auto_augment, преобразование в тензор и нормализацию, а также случайное стирание.

  • train_crop_mode='rkrc' или 'rkrr' заменяет случайный обрезанный кадр со случайным изменением размера на случайное изменение размера с сохранением соотношения сторон, за которым следует центральный (rkrc) или случайный (rkrr) обрезанный кадр или заполнение.
  • interpolation='random' (значение по умолчанию в train.py для обучения) выбирает для каждого изображения либо билинейную, либо бикубическую интерполяцию.
  • no_aug=True сводит обучение к операции изменения размера и центральному кадрированию.
auto_augmentАугментация
rand-m9-mstd0.5-inc1RandAugment с помощью rand_augment_transform
augmix-m5-w4-d2AugMix с помощью augment_and_mix_transform
original, originalr, v0, v0r, 3aПолитика AutoAugment через auto_augment_transform

Токены опций RandAugment:

  • m задает величину (по умолчанию 10).
  • n задает количество операций на изображение (по умолчанию 2).
  • p задаёт вероятность для каждой операции (по умолчанию 0.5).
  • mstd задает стандартное отклонение шума амплитуды.
  • inc1 выбирает операции, серьёзность которых растёт вместе с величиной.
  • t<name> выбирает набор операций (weights, 3a, 3aw).

Токены опции AugMix:

  • m задаёт уровень серьёзности (по умолчанию 3).
  • w задаёт ширину (по умолчанию 3).
  • d задаёт глубину (по умолчанию -1, случайное значение от 1 до 3).
  • b1 позволяет использовать смешанное аугментирование.
  • mstd задает стандартное отклонение шума амплитуды.

AutoAugment принимает mstd, например original-mstd0.5.

Поведение трансформации:

  • Color jitter отключается, если задан параметр auto_augment, если только строка не содержит 3a.
  • RandomErasing (re_prob, re_count) выполняется на нормализованном тензоре. re_mode заполняет области нулями (const, значение по умолчанию), случайным нормальным цветом для каждой области (rand) или случайными нормальными пикселями (pixel, значение по умолчанию в train.py).
  • use_prefetcher=True завершает трансформацию тензором uint8, после чего нормализация и случайное стирание выполняются загрузчиком на устройстве.
  • create_transform и create_loader по умолчанию используют интерполяцию bilinear и среднее/стандартное отклонение ImageNet, а не значения модели. Передайте настроенную конфигурацию данных, чтобы соответствовать предобучению модели.

Наборы данных

create_dataset выбирает реализацию набора данных и считыватель по префиксу name:

nameНабор данныхrootТребуется
'' или без префиксаImageDataset, изображения в подпапках классов (поиск выполняется рекурсивно, имя конечной папки является классом) или один файл .tar с тем жеПапка с набором данных или файл .tar
torch/<name>torchvision cifar10, cifar100, mnist, kmnist, fashion_mnist, qmnist, inaturalist (inat), places365, imagenet или image_folder (folder)Корень датасета torchvision
hfds/<name>ImageDataset на датасете Hugging Face Hub (или локальном пути) через datasets.load_datasetКаталог кэша (необязательно)datasets
hfids/<name>IterableImageDataset, набор данных Hugging Face, передаваемый потоком, либо предварительно загруженный и подготовленный с download=TrueКаталог кэша (необязательно)datasets
tfds/<name>IterableImageDataset в TensorFlow Datasets, download=True загружает и строитКаталог данных TFDStensorflow, tensorflow-datasets
wds/<name>IterableImageDataset на tar-шардах WebDatasetПапка с шардами, содержащая _info.json (или info.json) с описанием разбиенийwebdataset

Варианты набора данных:

  • split выбирает разделение набора данных (по умолчанию validation). Для WebDataset это также может быть шаблон шарда с количеством образцов, 'imagenet-train-{0000..1023}.tar|1281167'.
  • search_split=True (по умолчанию) заставляет датасеты в формате папок искать подпапку root с именем split или, если её нет, синоним обучающего (train, training) или оценочного (val, valid, validation, eval, evaluation) сплита.
  • add_img_extensions добавляет расширения к стандартным расширениям изображений (.png, .jpg и .jpeg).
  • class_map переназначает имена классов на индексы с помощью словаря, файла .txt (один класс на строку) или файла .pkl.

Итерируемые наборы данных (hfids, tfds, wds) также принимают:

  • is_training включает перемешивание.
  • batch_size округляет долю каждого воркера вверх до целых батчей при обучении.
  • num_samples задаёт количество выборок, что обязательно, если считыватель не может определить его самостоятельно (hfids без информации о сплите).
  • seed задает случайный посев.
  • repeats умножает количество образцов на эпоху, и читатели проходят по данным столько же раз.

Вызывайте dataset.set_epoch() в каждой эпохе для перемешивания.

Другие именованные аргументы передаются в читатель. Для читателей Hugging Face, TFDS и WebDataset:

  • input_key выбирает поле изображения (по умолчанию image, для wds — изображение в формате jpg, png или webp).
  • target_key выбирает поле метки (по умолчанию label, для wds — файл .cls или поле в сопутствующем файле .json с именем, заданным в target_key). Значение, разделённое запятыми, читает одно бинарное поле на каждый класс.
  • target_format='multihot' читает плотные многогорячие векторы вместо списков индексов классов для данных с несколькими метками.
  • target_transform=MultiLabelTarget(num_classes) кодирует целевые значения как float-тензоры с мульти-горячим кодированием. Передайте dense=True в MultiLabelTarget для полей с мульти-горячим кодированием.

Читатели папок и tar-архивов возвращают индексы одного класса. Подробности см. в разделе многоклассовая классификация.

Загрузчики

create_loader создаёт трансформ с помощью create_transform на основе собственных аргументов, присваивает его dataset.transform (заменяя существующий трансформ) и возвращает DataLoader. Загрузчики для обучения (is_training=True) перемешивают данные и отбрасывают последний неполный батч.

  • Предварительный загрузчик (Prefetcher). При use_prefetcher=True (по умолчанию) набор данных возвращает тензоры типа uint8, батчи перемещаются на device (по умолчанию cuda, на отдельном потоке для CUDA), преобразуются в img_dtype, нормализуются и случайно стираются там. Укажите device как устройство обучения или задайте use_prefetcher=False для обычного DataLoader с нормализованными тензорами.
  • Распределённый режим. distributed=True использует DistributedSampler для обучающих наборов данных map-style (или повторный сэмплер аугментации с num_aug_repeats) и упорядоченный сэмплер для оценки, который дополняет каждый процесс до одинакового количества образцов, что может незначительно изменить результаты валидации. Итерируемые наборы данных сами распределяются по процессам и воркерам.
  • Collate. collate_fn заменяет стандартную (fast_collate с prefetcher, default_collate без него), например, на FastCollateMixup.
  • Разделения аугментации. Для AugMix с потерей JSD (--aug-splits) оберните датасет в AugMixDataset(dataset, num_splits=n) и передайте num_aug_splits=n. Каждая партия содержит чистое разделение и n - 1 аугментированных разделений, которые конкатенируются вдоль измерения партии префетчером.
  • Планируемое разрешение. input_size_choices (--train-img-sizes) выбирает размер входных данных для каждой партии, при необходимости с указанием размера партии для каждого варианта (batch_size_choices) и progressive расписанием от первого до последнего варианта.

Mixup и CutMix

Mixup смешивает батч нормализованных изображений на устройстве, после загрузчика. FastCollateMixup принимает те же аргументы и смешивает изображения uint8 во время коллации в воркерах загрузчика, для этого требуется префетчер. Оба возвращают плотные целевые значения (batch_size, num_classes) с применённым label_smoothing (по умолчанию 0.1), которые предназначены для использования с потерей для мягких целевых значений, например timm.loss.SoftTargetCrossEntropy, и требуют чётный размер батча.

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))

Параметры Mixup и CutMix:

  • mixup_alpha > 0 включает Mixup.
  • cutmix_alpha > 0 включает CutMix.
  • cutmix_minmax включает CutMix с диапазоном размеров рамки.
  • switch_prob задает вероятность выбора CutMix, когда оба метода включены.
  • prob задает вероятность смешивания.
  • mode выполняет выборку параметров один раз на batch, на pair элементов или на elem (элемент).
  • multi_label=True смешивает плотные многометочные целевые значения, сглаживая каждую метку в сторону 0.5.
  • mixup_enabled = False отключает смешивание, например, для последних эпох (--mixup-off-epoch). Для FastCollateMixup значение читается в рабочих процессах; постоянные рабочие процессы сохраняют значение, с которым они были запущены.

НаFlex переменное разрешение

create_naflex_loader загружает изображения как последовательности патчей переменной длины, без изменения размера до фиксированного квадрата, для моделей, принимающих вход в виде патчей NaFlex (например, модели naflexvit_*). Каждая партия представляет собой словарь с ключами patches, patch_coord, patch_valid и seq_len, дополненный до длины последовательности партии.

  • Обучение. Набор данных оборачивается в NaFlexMapDatasetWrapper (только для map-style наборов данных), который выбирает одно из значений train_seq_lens для каждой партии и выполняет случайный resize-crop каждого изображения, чтобы оно соответствовало выбранному количеству патчей. batch_size — это размер партии при максимальной длине последовательности; для более коротких последовательностей размер партии увеличивается пропорционально (округляется вниз до кратного 8), чтобы количество токенов в партии оставалось примерно постоянным. patch_size_choices (вместе с patch_size_choice_probs) также варьирует размер патча для каждой партии, если модель это поддерживает.
  • Оценка. Изображения масштабируются так, чтобы вписать max_seq_len патчей при заданном patch_size (обязательно для оценки), и дополняются до max_seq_len.
  • Mixup. Передайте NaFlexMixup в качестве mixup_fn: он выполняет смешивание внутри каждой партии и не поддерживает mode или cutmix_minmax.

Варианты train.py:

  • --naflex-loader включает загрузчик NaFlex.
  • --naflex-train-seq-lens задаёт длины последовательностей для обучения.
  • --naflex-max-seq-len задает максимальную длину последовательности для оценки.
  • --naflex-patch-sizes задаёт размеры патчей для обучения с переменным размером патчей.
  • --naflex-patch-size-probs задаёт вероятности для указанных размеров патчей.
  • --naflex-loss-scale выбирает масштабирование потерь в зависимости от размера батча (none, sqrt или linear).

API

Конфигурация данных

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 )

Параметры

  • model (nn.Module) — экземпляр модели
  • args (dict) — аргументы командной строки / конфигурация в формате dict (перекрывает pretrained_cfg)
  • pretrained_cfg (dict) — конфигурация предобученной модели (заменяет pretrained_cfg, привязанную к модели)
  • use_test_size (bool) — использовать разрешение входных данных на этапе тестирования (если оно существует) вместо разрешения по умолчанию для обучения
  • verbose (bool) — включить дополнительное логирование разрешённых значений

Resolve Model Data Config Эквивалентно resolve_data_config(), но с изменённым порядком аргументов, чтобы модель шла первой.

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 )

Разрешите предобработку с учётом ограничений на вход для текущей модели.

Фиксированные размеры и каналы должны соответствовать явным запросам. Гибкие модели сохраняют рекомендации по предобработке для обучения и тестирования, если они не переопределены. Нормализация использует существующую политику адаптации каналов загрузчиков с предварительной загрузкой.

Преобразования

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 )

Параметры

  • input_size — целевой размер входа: кортеж (каналы, высота, ширина) или скаляр.
  • is_training — Возвращает тренировочные (случайные) трансформации.
  • no_aug — Отключить аугментацию для обучения (полезно для отладки).
  • train_crop_mode — Режим случайного кадрирования при обучении (‘rrc’, ‘rkrc’, ‘rkrr’).
  • scale — Диапазон случайного масштабирования (область кадрирования, < 1.0 => приближение).
  • ratio — Диапазон случайных соотношений сторон (коэффициент обрезки для RRC, коэффициент корректировки соотношения для RKR).
  • hflip — Вероятность горизонтального отражения.
  • vflip — Вероятность вертикального переворота.
  • color_jitter — Коэффициенты случайного изменения цвета (яркость, контрастность, насыщенность, тон). Скаляр применяется как (scalar,) * 3 (без изменения тона).
  • color_jitter_prob — Применять цветовые искажения с этой вероятностью, если значение не равно None (для аугментаций в стиле SimCLR).
  • grayscale_prob — Вероятность преобразования изображения в оттенки серого (для аугментаций в стиле SimCLR).
  • gaussian_blur_prob — Вероятность применения гауссова размытия (для аугментаций в стиле SimCLR).
  • auto_augment — строка конфигурации Auto augment (см. auto_augment.py).
  • interpolation — Режим интерполяции изображений.
  • mean — Среднее значение для нормализации изображения.
  • std — стандартное отклонение для нормализации изображения.
  • re_prob — Вероятность случайного стирания.
  • re_mode — Режим заполнения для случайного стирания.
  • re_count — Количество областей случайного стирания.
  • re_num_splits — Управление разбиением случайного стирания по размеру батча.
  • crop_pct — Процент обрезки при инференсе (размер вывода / размер масштабирования).
  • crop_mode — Режим обрезки при инференсе. Одно из значений: [‘squash’, ‘border’, ‘center’]. По умолчанию ‘center’, если значение равно None.
  • crop_border_pixels — Обрезка границы при инференсе на указанное количество пикселей вокруг края исходного изображения.
  • tf_preprocessing — Используйте предобработку для вывода TF 1.0 для тестирования портированных моделей
  • use_prefetcher — Включен предварительный загрузчик. Не преобразуйте изображение в тензор и не нормализуйте.
  • normalize — Выход тензора нормализации с указанными средним/стандартным отклонением (если prefetcher не используется).
  • separate — Выводит трансформации в виде кортежа из трёх элементов.
  • patchify — Разбивать вывод на патчи, не полагаясь на префетчер.
  • patchify_channels_last — Использовать каналы-последние (channels-last) внутри каждого патча.
  • patchify_flatten — Разворачивает оценочные патчи в векторы. Отключите, если модели нужны их пространственные размеры для интерполяции размера патча.

timm.data.rand_augment_transform

< >

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

Параметры

  • config_str (str) — строковая переменная, определяющая конфигурацию случайной аугментации. Состоит из нескольких разделов, разделённых дефисами (’-’). Первый раздел определяет конкретный вариант rand augment (на данный момент поддерживается только ‘rand’). Остальные разделы, порядок которых не важен, определяют
    • ‘m’ - целое значение, задающее величину (magnitude) для rand augment
    • ‘n’ - целое число, количество слоёв (число выбранных операций трансформации на изображение)
    • ‘p’ - вероятность применения каждого слоя (по умолчанию 0.5)
    • ‘mstd’ - стандартное отклонение шума амплитуды, применяемого в виде гауссова шума, или равномерная выборка, если значение равно бесконечности (или > 100)
    • ‘mmax’ - установить верхнюю границу амплитуды в значение, отличное от значения по умолчанию _LEVEL_DENOM (10)
    • ‘inc’ - целое (bool), использовать аугментации, чья сила возрастает с увеличением величины (по умолчанию: 0)
    • ‘t’ - str имя набора трансформаций, который следует использовать
  • hparams (dict) — Другие гиперпараметры (kwargs) для схемы RandAugmentation

Создайте трансформацию RandAugment

Примеры:

  • 'rand-m9-n3-mstd0.5' — это RandAugment с величиной 9, 3 слоями и стандартным отклонением величины 0.5.
  • 'rand-mstd1-tweights' — это RandAugment со стандартным отклонением величины 1.0 и взвешенным выбором трансформаций, при величине по умолчанию 10 и 2 слоях.

timm.data.auto_augment_transform

< >

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

Параметры

  • config_str — Строка, определяющая конфигурацию автоматического аугментирования. Состоит из нескольких разделов, разделённых дефисами (’-’). Первый раздел определяет политику AutoAugment (одна из ‘v0’, ‘v0r’, ‘original’, ‘originalr’). Остальные разделы определяют другие аргументы
    • ‘mstd’ - стандартное отклонение шума амплитуды
  • hparams — Другие гиперпараметры (kwargs) для схемы AutoAugmentation

Создайте трансформацию AutoAugment

Примеры:

  • 'original-mstd0.5' — это AutoAugment с исходной политикой и стандартным отклонением величины 0.5.

timm.data.auto_augment.augment_and_mix_transform

< >

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

Параметры

  • config_str (str) — строка, определяющая конфигурацию случайной аугментации. Состоит из нескольких разделов, разделённых дефисами (’-’). Первый раздел определяет конкретный вариант rand augment (в настоящее время поддерживается только ‘rand’). Остальные разделы, порядок которых не важен, определяют: ‘m’ — целое число, величина (серьёзность) смеси аугментаций (по умолчанию: 3) ‘w’ — целое число, ширина цепочки аугментаций (по умолчанию: 3) ‘d’ — целое число, глубина цепочки аугментаций (-1 означает случайное значение из диапазона [1, 3], по умолчанию: -1) ‘b’ — целое число (bool), смешивать каждую ветвь цепочки в итоговый результат без финального смешивания, меньше нагрузки на CPU (по умолчанию: 0) ‘mstd’ — float, стандартное отклонение шума величины, применяемого (по умолчанию: 0) Например, ‘augmix-m5-w4-d2’ приводит к AugMix с серьёзностью 5, шириной цепочки 4 и глубиной цепочки 2
  • hparams — Другие гиперпараметры (kwargs) для трансформаций аугментации

Создание трансформации AugMix для PyTorch

class 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' )

Параметры

  • probability — Вероятность выполнения операции Random Erasing.
  • min_area — Минимальный процент удалённой области относительно площади входного изображения.
  • max_area — Максимальный процент удалённой области относительно площади входного изображения.
  • min_aspect — минимальное соотношение сторон удаляемой области.
  • mode — режим цвета пикселей, одно из значений ‘const’, ‘rand’ или ‘pixel’ ‘const’ — блок стирания имеет постоянный цвет 0 для всех каналов ‘rand’ — блок стирания имеет одинаковый случайный (нормальный) цвет для каждого канала ‘pixel’ — блок стирания имеет случайный (нормальный) цвет для каждого пикселя

Случайным образом выбирает прямоугольную область на изображении и стирает её пиксели. «Random Erasing Data Augmentation» авторов Zhong et al. См. https://arxiv.org/pdf/1708.04896.pdf

Этот вариант RandomErasing предназначен для применения к тензору батча или одиночного изображения после его нормализации средним и стандартным отклонением набора данных.

max_count: максимальное количество блоков стирания на изображение, площадь каждого блока масштабируется в зависимости от количества. Количество блоков на изображение выбирается случайно в диапазоне от 1 до этого значения.

Наборы данных

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 )

Параметры

  • name — имя набора данных; для наборов данных на основе папок может быть пустым. Префикс (например, hfds/) не зависит от регистра, остальная часть передаётся без изменений (с учётом регистра), за исключением имён с префиксом torch/.
  • root — Корневая папка набора данных (All)
  • split — Разделение датасета (Все)
  • search_split — Поиск дочернего фолда, соответствующего указанному сплиту, начиная с корневого узла, чтобы можно было указывать imagenet/ вместо /imagenet/val и т. д. в командной строке или конфигурации. (Папка, Torch)
  • class_map — Укажите сопоставление классов с индексами с помощью текстового файла или словаря (Folder)
  • load_bytes — Загрузка данных, возврат изображений в виде недекодированных байтов (Folder)
  • download — Загрузить датасет, если он отсутствует и поддерживается (HFIDS, TFDS, Torch)
  • is_training — Создать датасет в режиме обучения, это отличается от разбиения (split). Для Iterable / TDFS включает перемешивание, для других датасетов игнорируется. (TFDS, WDS, HFIDS)
  • batch_size — Подсказка размера батча для итерируемых наборов данных (TFDS, WDS, HFIDS)
  • seed — Значение для итерируемых наборов данных (TFDS, WDS, HFIDS)
  • repeats — количество повторов датасета на итерацию, то есть на эпоху (TFDS, WDS, HFIDS)
  • input_img_mode — Режим преобразования цвета входного изображения, например, ‘RGB’, ‘L’ (папка, TFDS, WDS, HFDS, HFIDS)
  • trust_remote_code — Доверять удалённому коду в Hugging Face Datasets, если True (HFDS, HFIDS)
  • **kwargs — Другие аргументы для передачи в базовые классы Dataset и/или Reader

Фабричный метод датасета

В скобках после каждого аргумента указан тип поддерживаемого для него набора данных, один из:

  • Папка — по умолчанию, набор данных изображений на основе папки (или архива tar) timm
  • Torch - наборы данных на основе torchvision
  • HFDS - Hugging Face Datasets
  • HFIDS - Hugging Face Datasets Iterable (потоковый режим, с IterableDataset)
  • TFDS - обёртка над Tensorflow-datasets в интерфейсе IterableDataset через IterableImageDataset
  • WDS - Webdataset
  • Все — любой из перечисленных выше

класс timm.data.ImageDataset

< >

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

класс 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 )

класс timm.data.AugMixDataset

< >

( datasetnum_splits = 2 )

Обёртка набора данных для выполнения AugMix или других смесей чистых/дополненных данных

класс timm.data.MultiLabelTarget

< >

( num_classes: intdense: bool = False )

Кодирует многометочную цель как многогорячий тензор float32 длины num_classes.

По умолчанию целевое значение представляет собой последовательность индексов положительных классов: пустая последовательность означает отсутствие положительных меток, повторения разрешены, а отрицательные, выходящие за пределы диапазона или нецелочисленные значения отклоняются. При dense=True целевое значение уже является вектором длины num_classes, содержащим значения типа bool, int или float в диапазоне [0, 1]; оно проверяется и приводится к float32, при этом сохраняются дробные значения.

Загрузчики

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 )

Параметры

  • dataset — набор изображений для загрузки.
  • input_size — целевой размер входа: кортеж (каналы, высота, ширина) или скаляр.
  • batch_size — количество образцов в батче.
  • is_training — Возвращает тренировочные (случайные) трансформации.
  • no_aug — Отключить аугментацию для обучения (полезно для отладки).
  • re_prob — Вероятность случайного стирания.
  • re_mode — Режим заполнения для случайного стирания.
  • re_count — Количество областей случайного стирания.
  • re_split — Управление разбиением случайного стирания по размеру батча.
  • scale — Диапазон случайного масштабирования (область кадрирования, < 1.0 => приближение).
  • ratio — Диапазон случайных соотношений сторон (коэффициент обрезки для RRC, коэффициент корректировки соотношения для RKR).
  • hflip — Вероятность горизонтального отражения.
  • vflip — Вероятность вертикального переворота.
  • color_jitter — Коэффициенты случайного изменения цвета (яркость, контрастность, насыщенность, тон). Скаляр применяется как (scalar,) * 3 (без изменения тона).
  • color_jitter_prob — Применять цветовые искажения с этой вероятностью, если значение не None (для ауг
  • grayscale_prob — Вероятность преобразования изображения в оттенки серого (для аугментаций в стиле SimCLR).
  • gaussian_blur_prob — Вероятность применения гауссова размытия (для аугментаций в стиле SimCLR).
  • auto_augment — строка конфигурации Auto augment (см. auto_augment.py).
  • num_aug_repeats — Включает специальный сэмплер для повторения одного и того же аугментации на распределённых GPU.
  • num_aug_splits — Включает режим, в котором аугментации могут распределяться по батчу.
  • interpolation — Режим интерполяции изображений.
  • mean — Среднее значение для нормализации изображения.
  • std — стандартное отклонение для нормализации изображения.
  • num_workers — количество рабочих процессов для каждого DataLoader.
  • distributed — Включает загрузку данных для распределённого обучения.
  • crop_pct — Процент обрезки при инференсе (размер вывода / размер масштабирования).
  • crop_mode — Режим обрезки при инференсе. Одно из значений: [‘squash’, ‘border’, ‘center’]. По умолчанию ‘center’, если значение равно None.
  • crop_border_pixels — Обрезка границы при инференсе на указанное количество пикселей вокруг края исходного изображения.
  • collate_fn — Переопределение функции collate_fn по умолчанию.
  • pin_memory — Фиксация памяти для передачи на устройство.
  • fp16 — Устаревший аргумент для входного типа данных с половинной точностью. Используйте img_dtype.
  • img_dtype — Тип данных для входного изображения.
  • device — Устройство, на которое переносятся входные данные и целевые значения.
  • use_prefetcher — Использовать эффективный префетчер для загрузки образцов на устройство.
  • use_multi_epochs_loader —
  • persistent_workers — Включает постоянные рабочие процессы, если num_workers больше нуля.
  • worker_seeding — Управление случайной инициализацией рабочих процессов при инициализации.
  • tf_preprocessing — Используйте предобработку для вывода TF 1.0 для тестирования портированных моделей.
  • input_size_choices — Варианты размера входных данных для каждой партии при обучении с запланиемым разрешением.
  • batch_size_choices — Размер батча, соответствующий каждому варианту размера входных данных. Если не указано, для всех вариантов используется batch_size.
  • batch_choice_weights — Веса выборки для вариантов размера входных данных. По умолчанию равномерные.
  • batch_choice_seed — Случайное зерно, используемое для создания и перемешивания расписания батчей.
  • batch_choice_schedule — Режим расписания выбора, принимает значение constant или progressive.
  • batch_schedule_epochs — Количество эпох, в течение которых прогрессивное расписание проходит по своим вариантам.
  • batch_schedule_spread — Стандартное отклонение окна прогрессивного выбора, в единицах индексов выбора.
  • batch_schedule_random_mix — Доля равномерного случайного исследования среди вариантов с ненулевым весом в прогрессивном расписании.
  • num_batches — фиксированное количество батчей загрузчика на эпоху. Если не указано, вычисляется на основе среднего размера батча в расписании для прогрессивных расписаний.

Mixup и CutMix

класс 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 )

Параметры

  • mixup_alpha (float) — значение альфы для mixup; mixup активен, если значение > 0.
  • cutmix_alpha (float) — значение альфы для cutmix; cutmix активен, если значение > 0.
  • cutmix_minmax (List[float]) — минимальное и максимальное соотношение изображений для cutmix; cutmix активен и использует это значение вместо alpha, если оно не равно None.
  • prob (float) — вероятность применения mixup или cutmix для каждой партии или элемента
  • switch_prob (float) — вероятность переключения на cutmix вместо mixup, когда оба метода активны
  • mode (str) — способ применения параметров mixup/cutmix (для ‘batch’, ‘pair’ (пара элементов), ‘elem’ (элемент)
  • correct_lam (bool) — применять коррекцию lambda, если bbox cutmix обрезан границами изображения
  • label_smoothing (float) — применяет сглаживание меток к смешанному тензору целевых значений
  • num_classes (int) — количество классов для целевой переменной
  • multi_label (bool) — Смешивает плотные многометочные целевые значения, сглаживая каждую метку в сторону 0.5.

Mixup/Cutmix, применяющий разные параметры к каждому элементу или всей выборке

класс 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 с Mixup/Cutmix, применяющий разные параметры к каждому элементу или ко всей выборке

Реализация Mixup, выполняемая при формировании батчей.

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 )

Параметры

  • dataset — Набор данных для загрузки.
  • patch_size — Размер одного патча для использования.
  • patch_size_choices — список размеров патчей для обучения с переменным размером патчей.
  • patch_size_choice_probs — Вероятности для каждого выбора размера патча.
  • train_seq_lens — Длины последовательностей для обучения при динамическом батчинге.
  • max_seq_len — фиксированная длина последовательности для валидации.
  • batch_size — Размер батча для валидации и максимальная длина последовательности при обучении.
  • is_training — Указывает, используется ли для обучения (включает динамическую пакетизацию).
  • mixup_fn — Необязательная функция mixup.
  • no_aug — Отключить аугментацию.
  • re_prob — Вероятность случайного стирания.
  • re_mode — Режим случайного стирания.
  • re_count — максимальное количество прямоугольников для стирания.
  • re_split — Флаг случайного разделения при стирании.
  • train_crop_mode — Режим обрезки при обучении.
  • scale — Диапазон масштаба для случайного обрезания с изменением размера.
  • ratio — Диапазон соотношения сторон для случайного обрезания с изменением размера.
  • hflip — Вероятность горизонтального отражения.
  • vflip — Вероятность вертикального переворота.
  • color_jitter — Коэффициент изменения цвета.
  • color_jitter_prob — Вероятность применения color jitter.
  • grayscale_prob — Вероятность преобразования в оттенки серого.
  • gaussian_blur_prob — вероятность применения гауссова размытия.
  • auto_augment — политика AutoAugment.
  • num_aug_repeats — Количество повторов аугментации.
  • num_aug_splits — Количество разбиений для аугментации.
  • interpolation — Метод интерполяции.
  • mean — Средние значения для нормализации.
  • std — значения стандартного отклонения для нормализации.
  • channels — Количество каналов изображения, используется для нормализации по каналам в префетчере.
  • crop_pct — Процент обрезки для валидации.
  • crop_mode — Режим обрезки.
  • crop_border_pixels — Обрезка пикселей по краям.
  • num_workers — Количество рабочих процессов для загрузки данных.
  • distributed — Используется ли распределённое обучение.
  • rank — Ранг процесса для распределённого обучения.
  • world_size — Общее количество процессов.
  • seed — Случайное зерно.
  • epoch — Начальная эпоха.
  • use_prefetcher — Использовать ли предварительную загрузку данных.
  • pin_memory — Фиксировать ли память.
  • img_dtype — Тип данных изображения.
  • device — Устройство, на которое переносятся тензоры.
  • persistent_workers — Использовать ли постоянных рабочих, если num_workers больше нуля.
  • worker_seeding — Режим инициализации рабочих процессов.
  • patchify_channels_last — Плоская раскладка для каждого патча. True (по умолчанию): индекс канала меняется быстрее всего (настройка по умолчанию в NaFlex). False: C-P-P (каналы впереди — нативная раскладка Gemma4 / HF). Передаётся в внешний Patchify и в раскладку нормализации предзагрузчика.

Создайте загрузчик данных с динамической выборкой длины последовательности для обучения.

класс 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 )

Обёртка IterableDataset для базового набора данных в стиле map.

Формирует батчи с переменной длиной последовательностей. Вычисляет каноническое расписание батчей (пары длины последовательности и размера батча) один раз на основе общего размера набора данных (с выравниванием для распределения). В каждой эпохе перемешивает порядок этого канонического расписания и индексов набора данных. Это обеспечивает одинаковое количество батчей и образцов в каждой эпохе на всех рангах. Поддерживает распределённое обучение и несколько рабочих процессов.

set_epoch

< >

( epoch: int )

Параметры

  • epoch — новый номер эпохи.

Установите чтение эпохи, безопасное для многопроцессорности, для рабочих процессов DataLoader.

класс 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 )

Вызываемая обёртка, объединяющая смешивание и генерацию целевых значений.

set_epoch

< >

( epoch: int )

Обновите состояние mixup для указанной эпохи.

Update on GitHub