timm documentation
Données
Données
Cette page contient la documentation de référence de l’API du sous-package timm.data, ainsi qu’un aperçu du pipeline d’entrée qu’il fournit : résolution de la configuration de prétraitement d’un modèle, construction des transformations, création de jeux de données et de chargeurs, Mixup / CutMix, et le chargeur de résolution variable NaFlex.
Utilisation
Un pipeline est construit en quatre étapes : resolve_model_data_config lit la configuration de prétraitement du modèle, create_transform construit la transformation d’entraînement ou d’évaluation, create_dataset crée un jeu de données à partir de son nom et de sa racine, et create_loader construit la transformation et un chargeur de données pour un jeu de données.
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,)Le tutoriel de démarrage rapide détaille la configuration des étapes de transformation pour l’inférence.
Le script d'entraînement (train.py) expose ces options pour chaque partie du pipeline.
Remplacements de la configuration d'entrée (resolve_input_data_config) :
--input-sizedéfinit la forme d'entrée(C, H, W).--img-sizeest le raccourci carré de--input-size, en conservant le nombre de canaux du modèle.--in-chansdéfinit les canaux d'entrée.--interpolationdéfinit l'interpolation de redimensionnement.--meandéfinit la moyenne de normalisation.--stddéfinit l'écart-type de normalisation.--crop-pctdéfinit la fraction de recadrage pour l'évaluation.
Création du jeu de données (create_dataset) et configuration de la cible :
--datasetsélectionne le jeu de données et le lecteur.--data-dirdéfinit le répertoire racine du jeu de données.--train-splitsélectionne la partition d'entraînement.--val-splitsélectionne la partition de validation.--class-mapfournit la correspondance des classes.--input-img-modedéfinit le mode de conversion des couleurs de l'image.--input-keysélectionne le champ d’image.--target-keysélectionne le ou les champs d'étiquette.--target-formatsélectionne les indices de classes ou les cibles multi-hot denses.
Les options de chargeur et d'augmentation (create_loader) incluent :
--aasélectionne la politique d'auto-augmentation.--reprobdéfinit la probabilité d'effacement aléatoire.--remodesélectionne le mode de remplissage de l'effacement aléatoire.--scaledéfinit la plage d'échelle pour le recadrage aléatoire redimensionné.--ratiodéfinit la plage de rapports d’aspect pour le recadrage aléatoire redimensionné.--hflipdéfinit la probabilité de retournement horizontal.--color-jitterdéfinit l'intensité du jitter de couleur.--train-interpolationdéfinit l'interpolation de redimensionnement pour l'entraînement.--workersdéfinit le nombre de workers du loader.--no-prefetcherdésactive le prefetcher.
Mixup et CutMix (Mixup) :
--mixupdéfinit l'alpha de Mixup.--cutmixdéfinit l'alpha de CutMix.--cutmix-minmaxdéfinit la plage de taille des boîtes CutMix.--mixup-probdéfinit la probabilité de mélange.--mixup-switch-probdéfinit la probabilité de choisir CutMix lorsque les deux méthodes sont activées.--mixup-modesélectionne le mélange par lot, par paire ou élément par élément.--smoothingdéfinit le lissage des étiquettes.
Voir Scripts pour des exemples.
Configuration des données
resolve_data_config renvoie un dictionnaire avec les clés ci-dessous, qui correspondent aux arguments de create_transform et create_loader. Les valeurs définies dans args (un dictionnaire, par exemple vars(args) des arguments de ligne de commande analysés) ont la priorité sur l'argument pretrained_cfg, dont la valeur par défaut est model.pretrained_cfg. resolve_model_data_config est identique, avec le modèle comme premier argument.
Les deux lisent la taille d’entrée et les canaux à partir de la configuration préentraînée, qui décrit le point de contrôle source, et non un modèle créé ou modifié pour utiliser une img_size ou des in_chans différents. resolve_input_data_config, utilisé par les scripts d’entraînement, de validation et d’inférence, résout par rapport à l’entrée actuelle du modèle : un modèle à taille d’entrée fixe reçoit toujours sa taille actuelle, des args explicites qui entrent en conflit avec les canaux ou la taille fixe du modèle déclenchent une erreur, et une moyenne / écart-type qui ne correspond pas au nombre de canaux est remplacée par sa moyenne (avec un avertissement).
| Clé | clés de args | Description | Par défaut |
|---|---|---|---|
input_size | input_size, img_size, in_chans | Taille d’entrée (C, H, W). Avec use_test_size=True, la test_input_size de la configuration est utilisée si elle en possède une | (3, 224, 224) |
interpolation | interpolation | Interpolation de redimensionnement, bilinear, bicubic, … | bicubic |
mean, std | mean, std | Normalisation, une seule valeur est répétée pour chaque canal | Moyenne / écart-type d'ImageNet |
crop_pct | crop_pct | Avec l'évaluation par recadrage, l'image est redimensionnée à size / crop_pct avant d'être recadrée à size (test_crop_pct avec use_test_size=True) | 0.875 |
crop_mode | crop_mode | Mode de recadrage d'évaluation, center, squash ou border | center |
Les modes de recadrage d'évaluation, pour une size de sortie et scale_size = floor(size / crop_pct) :
crop_mode | Comportement |
|---|---|
center | Redimensionner le côté le plus court à scale_size (ratio d'aspect préservé), puis recadrer au centre à size |
squash | Redimensionner les deux bords à scale_size (le ratio d'aspect n'est pas préservé), puis recadrer au centre à size |
border | Redimensionner le plus long côté à scale_size, effectuer un recadrage centré et un remplissage avec la couleur moyenne, l'image entière est conservée à crop_pct=1.0 |
Transformations
create_transform renvoie un Compose de torchvision. La transformation d’évaluation redimensionne et recadre comme ci-dessus, puis convertit en tenseur et normalise. La transformation d’entraînement est un recadrage aléatoire redimensionné (scale=(0.08, 1.0), ratio=(3/4, 4/3) par défaut), un retournement horizontal (hflip=0.5), une variation de couleur (color_jitter=0.4), la politique optionnelle auto_augment, la conversion en tenseur et la normalisation, ainsi qu’un effacement aléatoire.
train_crop_mode='rkrc'ou'rkrr'remplace le recadrage aléatoire redimensionné par un redimensionnement aléatoire qui préserve le ratio d’aspect, suivi d’un recadrage ou d’un remplissage centré (rkrc) ou aléatoire (rkrr).interpolation='random'(la valeur par défaut detrain.pypour l’entraînement) sélectionne l’interpolation bilinéaire ou bicubique pour chaque image.no_aug=Trueréduit l'entraînement à un redimensionnement et un recadrage centré.
auto_augment | Augmentation |
|---|---|
rand-m9-mstd0.5-inc1 | RandAugment via rand_augment_transform |
augmix-m5-w4-d2 | AugMix via augment_and_mix_transform |
original, originalr, v0, v0r, 3a | politique AutoAugment via auto_augment_transform |
Jetons d'options pour RandAugment :
mdéfinit l'amplitude (10 par défaut).ndéfinit le nombre d'opérations par image (2 par défaut).pdéfinit la probabilité par opération (valeur par défaut 0,5).mstddéfinit l'écart-type du bruit d'amplitude.inc1sélectionne les opérations dont la gravité augmente avec l'amplitude.t<name>sélectionne le jeu d'opérations (weights,3a,3aw).
Jetons d'option AugMix :
mdéfinit la sévérité (3 par défaut).wdéfinit la largeur (3 par défaut).ddéfinit la profondeur (valeur par défaut -1, aléatoire entre 1 et 3).b1permet l'augmentation de données mixte.mstddéfinit l'écart-type du bruit d'amplitude.
AutoAugment accepte mstd, par exemple original-mstd0.5.
Comportement de transformation :
- Le jitter de couleur est désactivé lorsque
auto_augmentest défini, sauf si la chaîne contient3a. RandomErasing(re_prob,re_count) s’exécute sur le tenseur normalisé.re_moderemplit avec des zéros (const, par défaut), une couleur normale aléatoire par région (rand) ou des pixels normaux aléatoires (pixel, la valeur par défaut detrain.py).use_prefetcher=Truetermine la transformation par un tenseuruint8, la normalisation et l’effacement aléatoire sont ensuite effectués par le chargeur sur l’appareil.create_transformetcreate_loaderutilisent par défaut l’interpolationbilinearet la moyenne / l’écart-type d’ImageNet, et non les valeurs du modèle. Transmettez la configuration de données résolue pour correspondre au pré-entraînement du modèle.
Jeux de données
create_dataset sélectionne l’implémentation du jeu de données et le lecteur à partir d’un préfixe de name :
name | Jeu de données | root | Nécessite |
|---|---|---|---|
'' ou aucun préfixe | ImageDataset, des images dans des sous-dossiers de classes (recherche récursive, le nom du dossier feuille est la classe) ou un seul fichier .tar de même | Dossier de jeu de données ou fichier .tar | |
torch/<name> | torchvision cifar10, cifar100, mnist, kmnist, fashion_mnist, qmnist, inaturalist (inat), places365, imagenet ou image_folder (folder) | racine du jeu de données torchvision | |
hfds/<name> | ImageDataset sur un jeu de données du Hugging Face Hub (ou un chemin local) via datasets.load_dataset | Répertoire de cache (facultatif) | datasets |
hfids/<name> | IterableImageDataset, le jeu de données Hugging Face en flux, ou téléchargé et préparé au préalable avec download=True | Répertoire de cache (facultatif) | datasets |
tfds/<name> | IterableImageDataset sur TensorFlow Datasets, download=True télécharge et construit | Répertoire de données TFDS | tensorflow, tensorflow-datasets |
wds/<name> | IterableImageDataset sur des shards tar WebDataset | Dossier de shards avec un _info.json (ou info.json) décrivant les splits | webdataset |
Options de jeu de données :
splitsélectionne le split du jeu de données (par défautvalidation). Pour WebDataset, il peut également s'agir d'un motif de shard avec un nombre d'échantillons,'imagenet-train-{0000..1023}.tar|1281167'.search_split=True(par défaut) fait en sorte que les jeux de données de dossiers recherchent le sous-dossier derootnommésplitou, à défaut, un synonyme d’un split d’entraînement (train,training) ou d’évaluation (val,valid,validation,eval,evaluation).add_img_extensionsajoute aux extensions d’images par défaut (.png,.jpget.jpeg).class_mapréaffecte les noms de classes à des indices à l'aide d'un dictionnaire, d'un fichier.txt(une classe par ligne) ou d'un fichier.pkl.
Les jeux de données itérables (hfids, tfds, wds) acceptent également :
is_trainingactive le mélange.batch_sizearrondit la part d’échantillons de chaque travailleur à des lots entiers lors de l’entraînement.num_samplesdéfinit le nombre d'échantillons, requis lorsque le lecteur ne peut pas le déterminer (hfidssans information de split).seeddéfinit la graine aléatoire.repeatsmultiplie les échantillons par époque, les lecteurs parcourent les données autant de fois.
Appelez dataset.set_epoch() à chaque époque pour mélanger à nouveau.
Les autres arguments par mot-clé sont transmis au lecteur. Pour les lecteurs Hugging Face, TFDS et WebDataset :
input_keysélectionne le champ d’image (imagepar défaut, pourwdsune imagejpg,pngouwebp).target_keysélectionne le champ d’étiquette (par défautlabel, pourwdsle fichier.clsou un champ de fichier compagnon.jsonnommé partarget_key). Une valeur séparée par des virgules lit un champ binaire par classe.target_format='multihot'lit des vecteurs multi-denses au lieu de listes d'indices de classes pour les données multi-étiquettes.target_transform=MultiLabelTarget(num_classes)encode les cibles sous forme de tenseurs multi-hot flottants. Passezdense=TrueàMultiLabelTargetpour les champs multi-hot.
Les lecteurs de dossiers et de fichiers tar renvoient des indices de classes uniques. Consultez classification multi-étiquettes pour plus de détails.
Chargeurs
create_loader crée la transformation avec create_transform à partir de ses propres arguments,
l’assigne à dataset.transform (en remplaçant toute transformation existante) et renvoie un DataLoader. Les chargeurs d’entraînement
(is_training=True) mélangent les données et suppriment le dernier lot incomplet.
- Préchargeur. Avec
use_prefetcher=True(par défaut), le jeu de données produit des tenseursuint8, les lots sont déplacés versdevice(par défautcuda, sur un flux latéral pour CUDA), convertis enimg_dtype, normalisés et aléatoirement effacés sur place. Définissezdevicesur l’appareil d’entraînement, ouuse_prefetcher=Falsepour unDataLoadersimple de tenseurs normalisés. - Distribué.
distributed=Trueutilise unDistributedSamplerpour les jeux de données d'entraînement de type map (ou un échantillonneur d'augmentation répété avecnum_aug_repeats) et un échantillonneur ordonné pour l'évaluation qui remplit chaque processus jusqu'au même nombre d'échantillons, ce qui peut légèrement altérer les résultats de validation. Les jeux de données itérables se partagent eux-mêmes entre les processus et les workers. - Collation.
collate_fnremplace la fonction par défaut (fast_collateavec le prefetcher,default_collatesans), par exemple par unFastCollateMixup. - Segments d'augmentation. Pour AugMix avec la perte JSD (
--aug-splits), enveloppez le jeu de données dansAugMixDataset(dataset, num_splits=n)et passeznum_aug_splits=n. Chaque lot contient un segment propre etn - 1segments augmentés, concaténés le long de la dimension du lot par le préchargeur. - Résolution planifiée.
input_size_choices(--train-img-sizes) sélectionne la taille d'entrée par lot, éventuellement avec une taille de lot par choix (batch_size_choices) et un planningprogressiveallant du premier au dernier choix.
Mixup et CutMix
Mixup mélange un lot d’images normalisées sur l’appareil, après le chargeur. FastCollateMixup prend les mêmes arguments et mélange des images uint8 lors de la collation dans les workers du chargeur ; il nécessite le préchargeur. Les deux renvoient des cibles denses (batch_size, num_classes) avec label_smoothing (valeur par défaut 0.1) appliqué, à utiliser avec une perte à cible douce telle que timm.loss.SoftTargetCrossEntropy, et exigent une taille de lot paire.
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))Contrôles de Mixup et CutMix :
mixup_alpha > 0active Mixup.cutmix_alpha > 0active CutMix.cutmix_minmaxactive CutMix avec une plage de taille de boîte.switch_probdéfinit la probabilité de choisir CutMix lorsque les deux méthodes sont activées.probdéfinit la probabilité de mélanger.modetire les paramètres une fois parbatch, parpaird'éléments ou parelem(élément).multi_label=Truemélange les cibles multi-étiquettes denses, en lissant chaque étiquette vers 0,5.mixup_enabled = Falsedésactive le mélange, par exemple pour les dernières époques (--mixup-off-epoch). PourFastCollateMixup, la valeur est lue dans les processus workers ; les workers persistants conservent la valeur avec laquelle ils ont démarré.
NaFlex à résolution variable
create_naflex_loader loads images as variable length sequences of patches,
w/o resizing to a fixed square size, for models that take NaFlex patch inputs (e.g. the naflexvit_* models). Each
batch is a dict of patches, patch_coord, patch_valid and seq_len, padded to the batch’s sequence length.
- Entraînement. Le jeu de données est encapsulé dans un
NaFlexMapDatasetWrapper(uniquement pour les jeux de données de type map), qui sélectionne l'une des valeurs detrain_seq_lenspar lot et applique un redimensionnement aléatoire avec recadrage à chaque image pour qu'elle corresponde à ce nombre de patches.batch_sizeest la taille du lot pour la longueur de séquence la plus longue ; les longueurs plus courtes reçoivent des lots proportionnellement plus grands (arrondis à un multiple de 8 inférieur) afin que le nombre de jetons par lot reste approximativement constant.patch_size_choices(avecpatch_size_choice_probs) fait également varier la taille des patches par lot, pour les modèles qui le supportent. - Éval. Les images sont redimensionnées pour correspondre à
max_seq_lenpatches à lapatch_sizedonnée (requis pour l'évaluation) puis remplies jusqu'àmax_seq_len. - Mixup. Passez un
NaFlexMixupen tant quemixup_fn, il mélange au sein de chaque lot et ne prend pas en chargemodeoucutmix_minmax.
Les options de train.py sont :
--naflex-loaderactive le chargeur NaFlex.--naflex-train-seq-lensdéfinit les longueurs de séquence d'entraînement.--naflex-max-seq-lendéfinit la longueur maximale de la séquence d'évaluation.--naflex-patch-sizesdéfinit les tailles de patch pour l'entraînement avec des tailles de patch variables.--naflex-patch-size-probsdéfinit les probabilités pour ces tailles de patch.--naflex-loss-scalesélectionne l'échelle de perte en fonction de la taille du lot (none,sqrtoulinear).
API
Configuration des données
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 )
Paramètres
- model (nn.Module) — l'instance du modèle
- args (dict) — arguments de ligne de commande / configuration sous forme de dictionnaire (remplace pretrained_cfg)
- pretrained_cfg (dict) — configuration du modèle pré-entraîné (remplace pretrained_cfg attaché au modèle)
- use_test_size (bool) — utiliser la résolution d'entrée du temps de test (si elle existe) au lieu de la résolution d'entraînement par défaut
- verbose (bool) — active la journalisation supplémentaire des valeurs résolues
Résoudre la configuration des données du modèle Ceci est équivalent à resolve_data_config() mais avec les arguments réordonnés pour placer le modèle en premier.
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 )
Résoudre le prétraitement par rapport aux contraintes d’entrée du modèle actuel.
Les dimensions et les canaux fixes doivent correspondre aux demandes explicites. Les modèles flexibles conservent les recommandations de prétraitement d’entraînement/test, sauf si elles sont remplacées. La normalisation utilise la politique d’adaptation des canaux existante des chargeurs de préchargement.
Transformations
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 )
Paramètres
- input_size — Taille d'entrée cible, sous forme de tuple (canaux, hauteur, largeur) ou de scalaire.
- is_training — Retourne les transformations d’entraînement (aléatoires).
- no_aug — Désactive l'augmentation pour l'entraînement (utile pour le débogage).
- train_crop_mode — Mode de recadrage aléatoire pour l'entraînement ('rrc', 'rkrc', 'rkrr').
- scale — Plage d'échelle de redimensionnement aléatoire (zone de recadrage, < 1.0 => zoom avant).
- ratio — Plage de rapports d’aspect aléatoires (ratio de recadrage pour RRC, facteur d’ajustement du ratio pour RKR).
- hflip — Probabilité de retournement horizontal.
- vflip — Probabilité de retournement vertical.
- color_jitter — Facteurs de composantes de variation aléatoire de la couleur (luminosité, contraste, saturation, teinte). Un scalaire est appliqué sous la forme (scalaire,) * 3 (sans teinte).
- color_jitter_prob — Applique un ajustement de couleur avec cette probabilité si la valeur n'est pas None (pour des augmentations de type SimCLR).
- grayscale_prob — Probabilité de convertir l’image en niveaux de gris (pour des augmentations de type SimCLR).
- gaussian_blur_prob — Probabilité d'appliquer un flou gaussien (pour des augmentations de type SimCLR).
- auto_augment — Chaîne de configuration Auto augment (voir auto_augment.py).
- interpolation — Mode d'interpolation d'image.
- mean — Moyenne de normalisation de l'image.
- std — Écart-type de normalisation de l'image.
- re_prob — Probabilité d'effacement aléatoire.
- re_mode — Mode de remplissage pour l'effacement aléatoire.
- re_count — Nombre de régions d'effacement aléatoire.
- re_num_splits — Contrôle la répartition de l'effacement aléatoire sur la taille du lot.
- crop_pct — Pourcentage de recadrage lors de l'inférence (taille de sortie / taille de redimensionnement).
- crop_mode — Mode de recadrage pour l'inférence. L'une des valeurs [‘squash’, ‘border’, ‘center’]. Par défaut, ‘center’ si la valeur est None.
- crop_border_pixels — Recadrage de l’inférence de # pixels autour du bord de l’image d’origine.
- tf_preprocessing — Utiliser le prétraitement d’inférence TF 1.0 pour tester les ports de modèles
- use_prefetcher — Pré-chargeur activé. Ne convertissez pas l’image en tenseur et ne normalisez pas.
- normalize — Tenseur de normalisation en sortie avec la moyenne/l'écart-type fournis (si le préchargeur n'est pas utilisé).
- separate — Transforme la sortie en un tuple à trois étapes.
- patchify — Diviser la sortie en patches au lieu de s’appuyer sur le prefetcher.
- patchify_channels_last — Utiliser la disposition channels-last à l’intérieur de chaque patch.
- patchify_flatten — Aplati les patches d'évaluation en vecteurs. À désactiver lorsque le modèle a besoin de leurs dimensions spatiales pour l'interpolation de la taille des patches.
timm.data.rand_augment_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = Nonetransforms: typing.Union[str, typing.Dict, typing.List, NoneType] = None )
Paramètres
- config_str (str) — Chaîne de caractères définissant la configuration de l'augmentation aléatoire. Elle est composée de plusieurs sections séparées par des tirets (« - »). La première section définit la variante spécifique de rand augment (actuellement uniquement « rand »). Les sections restantes, sans ordre imposé, déterminent
- ‘m’ - magnitude entière de rand augment
- ‘n’ - nombre d'entiers de couches (nombre d'opérations de transformation sélectionnées par image)
- ‘p’ - probabilité flottante d'application de chaque couche (par défaut 0.5)
- ‘mstd’ - écart-type flottant du bruit d'amplitude appliqué, ou échantillonnage uniforme si infini (ou > 100)
- ‘mmax’ - définir la limite supérieure de l'amplitude sur une valeur autre que la valeur par défaut de _LEVEL_DENOM (10)
- ‘inc’ - entier (bool), utiliser des augmentations dont la sévérité augmente avec l'amplitude (par défaut : 0)
- ‘t’ - str nom de l'ensemble de transformations à utiliser
- hparams (dict) — Autres hparams (kwargs) pour le schéma RandAugmentation
Créer une transformation RandAugment
Exemples :
'rand-m9-n3-mstd0.5'est RandAugment avec une magnitude de 9, 3 couches et un écart-type de magnitude de 0,5.'rand-mstd1-tweights'est RandAugment avec un écart-type de magnitude de 1,0 et une sélection pondérée des transformations, avec une magnitude par défaut de 10 et 2 couches.
timm.data.auto_augment_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = None )
Paramètres
- config_str — Chaîne définissant la configuration de l'augmentation automatique. Elle est composée de plusieurs sections séparées par des tirets (« - »). La première section définit la politique AutoAugment (l'une des valeurs « v0 », « v0r », « original », « originalr »). Les sections restantes définissent les autres arguments.
- ‘mstd’ - écart-type flottant du bruit d'amplitude appliqué
- hparams — Autres hparams (kwargs) pour le schéma AutoAugmentation
Créer une transformation AutoAugment
Exemples :
'original-mstd0.5'est AutoAugment avec la politique originale et un écart-type de magnitude de 0,5.
timm.data.auto_augment.augment_and_mix_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = None )
Paramètres
- config_str (str) — Chaîne de caractères définissant la configuration de l’augmentation aléatoire. Elle est composée de plusieurs sections séparées par des tirets (’-’). La première section définit la variante spécifique de l’augmentation aléatoire (actuellement uniquement ‘rand’). Les sections restantes, sans ordre imposé, déterminent : ‘m’ — magnitude (gravité) entière du mélange d’augmentations (par défaut : 3) ‘w’ — largeur entière de la chaîne d’augmentations (par défaut : 3) ‘d’ — profondeur entière de la chaîne d’augmentations (-1 signifie aléatoire [1, 3], par défaut : -1) ‘b’ — entier (booléen), fusionne chaque branche de la chaîne dans le résultat final sans fusion finale, moins de CPU (par défaut : 0) ‘mstd’ — écart-type flottant du bruit de magnitude appliqué (par défaut : 0) Exemple : ‘augmix-m5-w4-d2’ donne un AugMix avec une gravité de 5, une largeur de chaîne de 4 et une profondeur de chaîne de 2
- hparams — Autres hparams (kwargs) pour les transformations d'Augmentation
Créer une transformation PyTorch AugMix
classe 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' )
Paramètres
- probability — Probabilité que l'opération Random Erasing soit effectuée.
- min_area — Pourcentage minimal de la zone effacée par rapport à la zone de l'image d'entrée.
- max_area — Pourcentage maximal de la zone effacée par rapport à la zone de l'image d'entrée.
- min_aspect — Rapport d'aspect minimal de la zone effacée.
- mode — mode de couleur des pixels, l’un des éléments suivants : ‘const’, ‘rand’ ou ‘pixel’ ‘const’ - le bloc d’effacement est d’une couleur constante de 0 pour tous les canaux ‘rand’ - le bloc d’effacement est d’une couleur aléatoire (normale) identique pour chaque canal ‘pixel’ - le bloc d’effacement est d’une couleur aléatoire (normale) par pixel
Sélectionne aléatoirement une région rectangulaire dans une image et efface ses pixels. « Random Erasing Data Augmentation » de Zhong et al. Voir https://arxiv.org/pdf/1708.04896.pdf
Cette variante de RandomErasing est destinée à être appliquée à un tenseur d'image unique ou à un lot, après normalisation par la moyenne et l'écart-type du jeu de données.
max_count : nombre maximal de blocs d'effacement par image, la surface de chaque boîte est mise à l'échelle en fonction du nombre. Le nombre par image est choisi aléatoirement entre 1 et cette valeur.
Jeux de données
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 )
Paramètres
- name — Nom du jeu de données, peut être vide pour les jeux de données basés sur des dossiers. Le préfixe (par ex.
hfds/) est insensible à la casse, le reste est transmis tel quel (sensible à la casse) à l’exception des nomstorch/. - root — Dossier racine du jeu de données (Tous)
- split — Partition du jeu de données (Tous)
- search_split — Recherche d’un pliage enfant spécifique à une partition à partir de la racine, afin de pouvoir spécifier
imagenet/plutôt que/imagenet/val, etc. sur la ligne de commande / dans la configuration. (Dossier, Torch) - class_map — Spécifie la correspondance classe -> index via un fichier texte ou un dictionnaire (Folder)
- load_bytes — Charge les données et renvoie les images sous forme d'octets non décodés (Folder)
- download — Télécharge le jeu de données s'il est absent et pris en charge (HFIDS, TFDS, Torch)
- is_training — Crée le jeu de données en mode d’entraînement, ce qui est différent du split. Pour Iterable / TDFS, cela active le shuffle, ignoré pour les autres jeux de données. (TFDS, WDS, HFIDS)
- batch_size — Indice de taille de lot pour les jeux de données itérables (TFDS, WDS, HFIDS)
- seed — Graine pour les jeux de données itérables (TFDS, WDS, HFIDS)
- repeats — Nombre de répétitions du jeu de données par itération, c'est-à-dire par époque (TFDS, WDS, HFIDS)
- input_img_mode — Mode de conversion de couleur de l’image d’entrée, par exemple ‘RGB’, ‘L’ (folder, TFDS, WDS, HFDS, HFIDS)
- trust_remote_code — Faire confiance au code distant dans Hugging Face Datasets si True (HFDS, HFIDS)
- **kwargs — Autres arguments à transmettre aux classes Dataset et/ou Reader sous-jacentes
Méthode de fabrique de jeu de données
Entre parenthèses après chaque argument figure le type de jeu de données pris en charge pour cet argument, l'un des suivants :
- Dossier - dossier timm par défaut (ou tar) basé sur ImageDataset
- Torch - jeux de données basés sur torchvision
- HFDS - Hugging Face Datasets
- HFIDS - Hugging Face Datasets Iterable (mode streaming, avec IterableDataset)
- TFDS - Enveloppeur de Tensorflow-datasets dans l'interface IterableDataset via IterableImageDataset
- WDS - Webdataset
- Tous - l'un des éléments ci-dessus
classe timm.data.ImageDataset
< source >( rootreader = Nonesplit = 'train'class_map = Noneload_bytes = Falseinput_img_mode = 'RGB'transform = Nonetarget_transform = Noneadditional_features = None**kwargs )
classe 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 )
Enveloppe de jeu de données pour effectuer des mélanges AugMix ou d'autres mélanges propres/augmentation
Encode une cible multi-étiquettes comme un tenseur multi-hot float32 de longueur num_classes.
Par défaut, la cible est une séquence d’indices de classes positives : une séquence vide signifie qu’il n’y a pas d’étiquettes positives, les répétitions sont autorisées, et les valeurs négatives, hors plage ou non entières sont rejetées. Avec dense=True, la cible est déjà un vecteur de longueur num_classes contenant des valeurs bool, int ou float dans [0, 1] ; il est validé et converti en float32, en conservant les valeurs douces.
Chargeurs
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 )
Paramètres
- dataset — Le jeu de données d'images à charger.
- input_size — Taille d'entrée cible, sous forme de tuple (canaux, hauteur, largeur) ou de scalaire.
- batch_size — Nombre d'échantillons par lot.
- is_training — Retourne les transformations d’entraînement (aléatoires).
- no_aug — Désactive l'augmentation pour l'entraînement (utile pour le débogage).
- re_prob — Probabilité d'effacement aléatoire.
- re_mode — Mode de remplissage pour l'effacement aléatoire.
- re_count — Nombre de régions d'effacement aléatoire.
- re_split — Contrôle la répartition du random erasing sur la taille du lot.
- scale — Plage d'échelle de redimensionnement aléatoire (zone de recadrage, < 1.0 => zoom avant).
- ratio — Plage de rapports d’aspect aléatoires (ratio de recadrage pour RRC, facteur d’ajustement du ratio pour RKR).
- hflip — Probabilité de retournement horizontal.
- vflip — Probabilité de retournement vertical.
- color_jitter — Facteurs de composantes de variation aléatoire de la couleur (luminosité, contraste, saturation, teinte). Un scalaire est appliqué sous la forme (scalaire,) * 3 (sans teinte).
- color_jitter_prob — Appliquer un ajustement de couleur avec cette probabilité si la valeur n'est pas None (pour des augmentations de type SimCLR
- grayscale_prob — Probabilité de convertir l’image en niveaux de gris (pour des augmentations de type SimCLR).
- gaussian_blur_prob — Probabilité d'appliquer un flou gaussien (pour des augmentations de type SimCLR).
- auto_augment — Chaîne de configuration Auto augment (voir auto_augment.py).
- num_aug_repeats — Active un échantillonneur spécial pour répéter la même augmentation sur les GPU distribués.
- num_aug_splits — Active le mode permettant de répartir les augmentations sur le lot.
- interpolation — Mode d'interpolation d'image.
- mean — Moyenne de normalisation de l'image.
- std — Écart-type de normalisation de l'image.
- num_workers — Nombre de processus de travail par DataLoader.
- distributed — Active le chargement de données pour l’entraînement distribué.
- crop_pct — Pourcentage de recadrage lors de l'inférence (taille de sortie / taille de redimensionnement).
- crop_mode — Mode de recadrage pour l'inférence. L'une des valeurs [‘squash’, ‘border’, ‘center’]. Par défaut, ‘center’ si la valeur est None.
- crop_border_pixels — Recadrage de l’inférence de # pixels autour du bord de l’image d’origine.
- collate_fn — Remplace la fonction collate_fn par défaut.
- pin_memory — Fixe la mémoire pour le transfert vers l’appareil.
- fp16 — Argument obsolète pour le type de données d'entrée en précision réduite. Utilisez img_dtype.
- img_dtype — Type de données de l'image d'entrée.
- device — Appareil vers lequel transférer les entrées et les cibles.
- use_prefetcher — Utilise un préchargeur efficace pour charger les échantillons sur l’appareil.
- use_multi_epochs_loader —
- persistent_workers — Active les processus de travail persistants lorsque
num_workersest supérieur à zéro. - worker_seeding — Contrôle l’initialisation aléatoire des workers lors de l’initialisation.
- tf_preprocessing — Utiliser le prétraitement d’inférence TF 1.0 pour tester les ports de modèles.
- input_size_choices — Choix des tailles d'entrée par lot pour l'entraînement de résolution planifiée.
- batch_size_choices — Taille de lot correspondant à chaque choix de taille d'entrée. Utilise
batch_sizepour tous les choix lorsqu'il n'est pas spécifié. - batch_choice_weights — Poids d'échantillonnage pour les choix de taille d'entrée. Uniformes si non spécifiés.
- batch_choice_seed — Graine aléatoire utilisée pour créer et mélanger le calendrier des lots.
- batch_choice_schedule — Mode du calendrier de choix, soit
constant, soitprogressive. - batch_schedule_epochs — Nombre d'époques sur lesquelles un plan progressif parcourt ses choix.
- batch_schedule_spread — Écart type de la fenêtre de choix progressif, en unités d'index de choix.
- batch_schedule_random_mix — Fraction d'exploration aléatoire uniforme sur les choix de poids non nuls dans un plan progressif.
- num_batches — Nombre fixe de lots de chargeur par époque. Inféré à partir de la taille moyenne des lots du planning pour les progressifs lorsque non spécifié.
Mixup et CutMix
classe 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 )
Paramètres
- mixup_alpha (float) — valeur alpha de mixup, mixup est actif si > 0.
- cutmix_alpha (float) — valeur alpha de cutmix, cutmix est actif si > 0.
- cutmix_minmax (List[float]) — ratio min/max des images pour cutmix, cutmix est actif et utilise ce ratio au lieu d'alpha s'il n'est pas None.
- prob (float) — probabilité d'appliquer mixup ou cutmix par lot ou par élément
- switch_prob (float) — probabilité de passer à cutmix plutôt qu'à mixup lorsque les deux sont actifs
- mode (str) — comment appliquer les paramètres de mixup/cutmix (par « batch », « pair » (paire d’éléments), « elem » (élément)
- correct_lam (bool) — appliquer la correction lambda lorsque la bbox de cutmix est rognée par les bords de l'image
- label_smoothing (float) — applique le lissage des étiquettes au tenseur cible mixte
- num_classes (int) — nombre de classes pour la cible
- multi_label (bool) — Mélange des cibles multi-étiquettes denses, en lissant chaque étiquette vers 0,5.
Mixup/Cutmix qui applique des paramètres différents à chaque élément ou à l'ensemble du lot
classe 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 )
Fast Collate avec Mixup/Cutmix qui applique des paramètres différents à chaque élément ou à l'ensemble du lot
Une implémentation de Mixup effectuée lors de la constitution des lots.
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 )
Paramètres
- dataset — Jeu de données à charger.
- patch_size — Taille unique de patch à utiliser.
- patch_size_choices — Liste des tailles de patch pour l'entraînement avec des tailles de patch variables.
- patch_size_choice_probs — Probabilités pour chaque choix de taille de patch.
- train_seq_lens — Longueurs de séquence d'entraînement pour le lot dynamique.
- max_seq_len — Longueur de séquence fixe pour la validation.
- batch_size — Taille du lot pour la validation et longueur maximale de la séquence d'entraînement.
- is_training — Indique s'il s'agit d'une phase d'entraînement (active le lotissement dynamique).
- mixup_fn — Fonction mixup facultative.
- no_aug — Désactiver l'augmentation.
- re_prob — Probabilité d'effacement aléatoire.
- re_mode — Mode d'effacement aléatoire.
- re_count — Nombre maximal de rectangles d’effacement.
- re_split — Indicateur de division pour l'effacement aléatoire.
- train_crop_mode — Mode de recadrage pour l'entraînement.
- scale — Plage d'échelle pour le redimensionnement aléatoire avec recadrage.
- ratio — Plage de ratio d’aspect pour le recadrage aléatoire avec redimensionnement.
- hflip — Probabilité de retournement horizontal.
- vflip — Probabilité de retournement vertical.
- color_jitter — Facteur de variation de couleur.
- color_jitter_prob — Probabilité de variation de couleur.
- grayscale_prob — Probabilité de conversion en niveaux de gris.
- gaussian_blur_prob — Probabilité de flou gaussien.
- auto_augment — politique AutoAugment.
- num_aug_repeats — Nombre de répétitions d'augmentation.
- num_aug_splits — Nombre de splits d'augmentation.
- Méthode d'interpolation.
- mean — Valeurs moyennes de normalisation.
- std — Valeurs d'écart-type de normalisation.
- channels — Nombre de canaux d'image, utilisé pour la normalisation par canal dans le préchargeur.
- crop_pct — Pourcentage de recadrage pour la validation.
- crop_mode — Mode de recadrage.
- crop_border_pixels — Recouper les pixels de bordure.
- num_workers — Nombre de travailleurs de chargement de données.
- distributed — Indique si l'entraînement distribué est utilisé.
- rank — Rang du processus pour l'entraînement distribué.
- world_size — Nombre total de processus.
- seed — Graine aléatoire.
- epoch — Époque de départ.
- use_prefetcher — Indique s'il faut utiliser le préchargement.
- pin_memory — Indique s'il faut épingler la mémoire.
- img_dtype — Type de données de l'image.
- device — Appareil vers lequel déplacer les tenseurs.
- persistent_workers — Indique s'il faut utiliser des workers persistants lorsque
num_workersest supérieur à zéro. - worker_seeding — Mode d’initialisation des workers.
- patchify_channels_last — Disposition plate par patch.
True(par défaut) : l’indice de canal varie le plus rapidement (défaut NaFlex).False: C-P-P (canaux d’abord — disposition native Gemma4 / HF). Transmis à l’amontPatchifyet à la disposition de normalisation du préchargeur.
Créez un chargeur de données avec un échantillonnage de longueur de séquence dynamique pour l'entraînement.
classe 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 )
Wrapper IterableDataset pour un jeu de données de base de type map.
Produit des lots de longueurs de séquences variables. Il calcule une fois un calendrier de lots canonique (paires de longueur de séquence et de taille de lot) basé sur la taille totale du jeu de données (rembourré pour la distribution). À chaque époque, il mélange l'ordre de ce calendrier canonique et les indices du jeu de données. Cela garantit un nombre constant de lots et d'échantillons par époque sur tous les rangs. Gère l'entraînement distribué et les multiples travailleurs.
Définir l'époque de lecture sûre pour le multiprocessing utilisée par les travailleurs du DataLoader.
classe 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 )
Enveloppe appelant qui combine le mélange et la génération de la cible.
Mettre à jour l'état de mixup pour l'époque donnée.