timm documentation
Data
Data
Halaman ini berisi dokumentasi referensi API untuk sub-paket timm.data, serta gambaran umum tentang pipeline input yang disediakan: resolusi konfigurasi pra-pemrosesan model, pembuatan transformasi, pembuatan dataset dan loader, Mixup / CutMix, dan loader resolusi variabel NaFlex.
Penggunaan
Sebuah pipeline dibangun dalam empat langkah: resolve_model_data_config membaca konfigurasi pra-pemrosesan model, create_transform membangun transform untuk train atau eval, create_dataset membuat dataset berdasarkan nama dan root, dan create_loader membangun transform serta data loader untuk sebuah dataset.
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,)quickstart menjelaskan langkah-langkah konfigurasi hingga transformasi untuk inferensi.
Skrip pelatihan (train.py) menyediakan opsi-opsi ini untuk setiap bagian dari pipeline.
Override konfigurasi input (resolve_input_data_config):
--input-sizemengatur bentuk input(C, H, W).--img-sizeadalah pintasan persegi untuk--input-size, yang mempertahankan jumlah channel model.--in-chansmengatur saluran input.--interpolationmengatur interpolasi resize.--meanmengatur rata-rata normalisasi.--stdmengatur standar deviasi normalisasi.--crop-pctmengatur fraksi crop evaluasi.
Pembuatan dataset (create_dataset) dan pengaturan target:
--datasetmemilih dataset dan pembaca.--data-dirmengatur root dataset.--train-splitmemilih split pelatihan.--val-splitmemilih split validasi.--class-mapmenyediakan pemetaan kelas.--input-img-modemengatur mode konversi warna gambar.--input-keymemilih bidang gambar.--target-keymemilih bidang label atau beberapa bidang label.--target-formatmemilih indeks kelas atau target multi-hot padat.
Opsi loader dan augmentasi (create_loader) meliputi:
--aamemilih kebijakan auto-augmentation.--reprobmengatur probabilitas penghapusan acak.--remodememilih mode pengisian penghapusan acak.--scalemengatur rentang skala untuk random resized crop.--ratiomengatur rentang rasio aspek untuk random resized crop.--hflipmengatur probabilitas flip horizontal.--color-jittermengatur kekuatan color jitter.--train-interpolationmengatur interpolasi pengubahan ukuran (resize) untuk pelatihan.--workersmengatur jumlah worker loader.--no-prefetchermenonaktifkan prefetcher.
Mixup dan CutMix (Mixup):
--mixupmengatur alpha Mixup.--cutmixmengatur alpha CutMix.--cutmix-minmaxmengatur rentang ukuran kotak CutMix.--mixup-probmengatur probabilitas pencampuran.--mixup-switch-probmengatur probabilitas memilih CutMix ketika kedua metode diaktifkan.--mixup-modememilih pencampuran batch, pair, atau element-wise.--smoothingmengatur label smoothing.
Lihat Scripts untuk contoh.
Konfigurasi data
resolve_data_config mengembalikan dict dengan kunci-kunci di bawah, yang sesuai dengan
argumen dari create_transform dan create_loader. Nilai yang diset dalam args (sebuah dict, misalnya vars(args) dari argumen
baris perintah yang diurai) memiliki prioritas lebih tinggi daripada argumen pretrained_cfg, yang secara default adalah model.pretrained_cfg. resolve_model_data_config memiliki fungsi yang sama dengan model sebagai argumen pertama.
Keduanya membaca ukuran input dan channel dari cfg pretrained, yang menjelaskan checkpoint sumber, bukan model yang dibuat atau diubah untuk menggunakan img_size atau in_chans yang berbeda. resolve_input_data_config, yang digunakan oleh skrip pelatihan, validasi, dan inferensi, menyelesaikan terhadap input saat ini dari model: model dengan ukuran input tetap selalu mendapatkan ukuran saat ini, args eksplisit yang bertentangan dengan channel atau ukuran tetap model akan memicu error, dan mean / std yang tidak sesuai dengan jumlah channel akan diganti dengan rata-ratanya (dengan peringatan).
| Kunci | Kunci args | Deskripsi | Default |
|---|---|---|---|
input_size | input_size, img_size, in_chans | Ukuran input (C, H, W). Dengan use_test_size=True, test_input_size dari config digunakan jika ada | (3, 224, 224) |
interpolation | interpolation | Interpolasi resize, bilinear, bicubic, β¦ | bicubic |
mean, std | mean, std | Normalisasi, satu nilai diulang untuk setiap channel | Mean / std ImageNet |
crop_pct | crop_pct | Pada Eval crop, gambar di-resize menjadi size / crop_pct sebelum dipotong menjadi size (test_crop_pct dengan use_test_size=True) | 0.875 |
crop_mode | crop_mode | Mode crop evaluasi, center, squash atau border | center |
Mode crop eval, untuk output size dan scale_size = floor(size / crop_pct):
crop_mode | Perilaku |
|---|---|
center | Perkecil sisi terpendek menjadi scale_size (rasio aspek dipertahankan), lalu crop tengah menjadi size |
squash | Ukurkan kedua tepi menjadi scale_size (rasio aspek tidak dipertahankan), lalu potong tengah menjadi size |
border | Perbesar sisi terpanjang menjadi scale_size, lakukan center crop dan pad dengan warna rata-rata, seluruh gambar dipertahankan pada crop_pct=1.0 |
Transforms
create_transform mengembalikan torchvision Compose. Transformasi eval melakukan resize dan crop seperti di atas, lalu mengonversi ke tensor dan menormalisasi. Transformasi pelatihan adalah random resized crop (scale=(0.08, 1.0), ratio=(3/4, 4/3) secara default), horizontal flip (hflip=0.5), color jitter (color_jitter=0.4), kebijakan auto_augment opsional, konversi tensor dan normalisasi, serta random erasing.
train_crop_mode='rkrc'atau'rkrr'menggantikan random resized crop dengan random resize yang mempertahankan rasio aspek, diikuti oleh center (rkrc) atau random (rkrr) crop atau pad.interpolation='random'(defaulttrain.pyuntuk pelatihan) memilih bilinear atau bicubic per gambar.no_aug=Truemengurangi pelatihan menjadi hanya resize dan center crop.
auto_augment | Augmentasi |
|---|---|
rand-m9-mstd0.5-inc1 | RandAugment melalui rand_augment_transform |
augmix-m5-w4-d2 | AugMix melalui augment_and_mix_transform |
original, originalr, v0, v0r, 3a | Kebijakan AutoAugment melalui auto_augment_transform |
Token opsi RandAugment:
mmengatur magnitudo (default 10).nmengatur jumlah operasi per gambar (default 2).pmengatur probabilitas per op (default 0.5).mstdmengatur standar deviasi noise magnitudo.inc1memilih operasi yang tingkat keparahannya meningkat seiring dengan besarnya magnitudo.t<name>memilih set op (weights,3a,3aw).
Token opsi AugMix:
mmengatur tingkat keparahan (default 3).wmengatur lebar (default 3).dmengatur kedalaman (default -1, acak 1-3).b1memungkinkan augmentasi campuran.mstdmengatur standar deviasi noise magnitudo.
AutoAugment menerima mstd, misalnya original-mstd0.5.
Perilaku transformasi:
- Color jitter dinonaktifkan ketika
auto_augmentdisetel, kecuali string tersebut mengandung3a. RandomErasing(re_prob,re_count) dijalankan pada tensor yang telah dinormalisasi.re_modemengisi dengan nol (const, nilai default), warna normal acak per wilayah (rand) atau piksel normal acak (pixel, defaulttrain.py).use_prefetcher=Truemengakhiri transform pada tensoruint8, kemudian normalisasi dan penghapusan acak dilakukan oleh loader pada perangkat.create_transformdancreate_loadersecara default menggunakan interpolasibilinearserta mean / std ImageNet, bukan nilai dari model. Sampaikan konfigurasi data yang telah dipecahkan agar sesuai dengan pra-pelatihan model.
Dataset
create_dataset memilih implementasi dataset dan reader dari prefiks name:
name | Dataset | root | Diperlukan |
|---|---|---|---|
'' atau tanpa awalan | ImageDataset, gambar dalam sub-folder kelas (dicari secara rekursif, nama folder daun adalah kelasnya), atau satu file .tar tunggal dengan struktur yang sama | Folder dataset atau file .tar | |
torch/<name> | torchvision cifar10, cifar100, mnist, kmnist, fashion_mnist, qmnist, inaturalist (inat), places365, imagenet atau image_folder (folder) | root dataset torchvision | |
hfds/<name> | ImageDataset pada dataset Hugging Face Hub (atau path lokal) melalui datasets.load_dataset | Direktori cache (opsional) | datasets |
hfids/<name> | IterableImageDataset, dataset Hugging Face yang di-streaming, atau diunduh dan disiapkan terlebih dahulu dengan download=True | Direktori cache (opsional) | datasets |
tfds/<name> | IterableImageDataset pada TensorFlow Datasets, download=True mengunduh dan membangun | Direktori data TFDS | tensorflow, tensorflow-datasets |
wds/<name> | IterableImageDataset pada tar shards WebDataset | Folder shard dengan _info.json (atau info.json) yang menjelaskan split | webdataset |
Opsi dataset:
splitmemilih split dataset (defaultvalidation). Untuk WebDataset, ini juga bisa berupa pola shard dengan jumlah sampel,'imagenet-train-{0000..1023}.tar|1281167'.search_split=True(default) membuat dataset folder mencari sub-folder darirootyang bernamasplitatau, jika tidak ada, sinonim dari split train (train,training) atau eval (val,valid,validation,eval,evaluation).add_img_extensionsmenambahkan ke ekstensi gambar bawaan (.png,.jpgdan.jpeg).class_mapmemetakan ulang nama kelas ke indeks menggunakan dict, file.txt(satu kelas per baris), atau file.pkl.
Dataset iterable (hfids, tfds, wds) juga menerima:
is_trainingmengaktifkan pengacakan.batch_sizemembulatkan bagian sampel setiap worker ke atas menjadi batch utuh saat pelatihan.num_samplesmengatur jumlah sampel, yang diperlukan ketika pembaca tidak dapat menentukannya (hfidstanpa info split).seedmengatur seed acak.repeatsmengalikan jumlah sampel per epoch, sehingga pembaca melewati data sebanyak itu kali.
Panggil dataset.set_epoch() setiap epoch untuk mengacak ulang.
Argumen kata kunci lainnya diteruskan ke pembaca. Untuk pembaca Hugging Face, TFDS, dan WebDataset:
input_keymemilih bidang gambar (imagesecara default, untukwdsberupa gambarjpg,pngatauwebp).target_keymemilih bidang label (secara defaultlabel, untukwdsberupa file.clsatau bidang sidecar.jsonyang dinamai olehtarget_key). Nilai yang dipisahkan koma membaca satu bidang biner per kelas.target_format='multihot'membaca vektor multi-hot padat alih-alih daftar indeks kelas untuk data multi-label.target_transform=MultiLabelTarget(num_classes)mengkodekan target sebagai tensor multi-hot float. Lewatkandense=TruekeMultiLabelTargetuntuk field multi-hot.
Pembaca folder dan tar menghasilkan indeks kelas tunggal. Lihat klasifikasi multi-label untuk detailnya.
Pemuat
create_loader membuat transform dengan create_transform dari argumennya sendiri,
menugaskannya ke dataset.transform (menggantikan transform yang sudah ada) dan mengembalikan DataLoader. Loader pelatihan
(is_training=True) mengacak dan membuang batch terakhir yang tidak lengkap.
- Prefetcher. Dengan
use_prefetcher=True(default), dataset menghasilkan tensoruint8, batch dipindahkan kedevice(defaultcuda, pada side stream untuk CUDA), dikonversi keimg_dtype, dinormalisasi, dan dihapus secara acak di sana. Aturdeviceke perangkat pelatihan, atauuse_prefetcher=FalseuntukDataLoaderbiasa dari tensor yang dinormalisasi. - Distribusi.
distributed=TruemenggunakanDistributedSampleruntuk dataset pelatihan gaya peta (atau sampler augmentasi berulang dengannum_aug_repeats) dan sampler berurutan untuk evaluasi yang mengisi setiap proses hingga jumlah sampel yang sama, yang dapat sedikit mengubah hasil validasi. Dataset iterable membagi diri mereka sendiri di antara proses dan pekerja. - Collate.
collate_fnmenggantikan default (fast_collatedengan prefetcher,default_collatetanpa), misalnya denganFastCollateMixup. - Pembagian augmentasi. Untuk AugMix dengan loss JSD (
--aug-splits), bungkus dataset dalamAugMixDataset(dataset, num_splits=n)dan teruskannum_aug_splits=n. Setiap batch berisi satu bagian bersih dann - 1bagian yang di-augmentasi, yang digabungkan sepanjang dimensi batch oleh prefetcher. - Resolusi terjadwal.
input_size_choices(--train-img-sizes) memilih ukuran input per batch, secara opsional dengan ukuran batch per pilihan (batch_size_choices) dan jadwalprogressivedari pilihan pertama hingga terakhir.
Mixup dan CutMix
Mixup mencampur batch gambar ternormalisasi di perangkat, setelah loader. FastCollateMixup mengambil argumen yang sama dan mencampur gambar uint8 saat melakukan collating di worker loader, dan memerlukan prefetcher. Keduanya mengembalikan target padat (batch_size, num_classes) dengan label_smoothing (default 0.1) yang diterapkan, untuk digunakan dengan loss target lunak seperti timm.loss.SoftTargetCrossEntropy, dan memerlukan ukuran batch yang genap.
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))Kontrol Mixup dan CutMix:
mixup_alpha > 0mengaktifkan Mixup.cutmix_alpha > 0mengaktifkan CutMix.cutmix_minmaxmengaktifkan CutMix dengan rentang ukuran kotak.switch_probmengatur probabilitas memilih CutMix ketika kedua metode diaktifkan.probmengatur probabilitas pencampuran.modemenggambar parameter sekali perbatch, perpairelemen, atau perelem(elemen).multi_label=Truemencampur target multi-label padat, dengan menghaluskan setiap label menuju 0,5.mixup_enabled = Falsemematikan pencampuran, misalnya untuk epoch terakhir (--mixup-off-epoch). UntukFastCollateMixup, nilai ini dibaca di proses worker; worker yang persisten mempertahankan nilai yang mereka gunakan saat dimulai.
Resolusi variabel NaFlex
create_naflex_loader memuat gambar sebagai sekuens patch dengan panjang variabel,
tanpa mengubah ukuran menjadi ukuran persegi tetap, untuk model yang menerima input patch NaFlex (misalnya model naflexvit_*). Setiap
batch adalah dict dari patches, patch_coord, patch_valid dan seq_len, yang di-pad hingga panjang sekuens batch.
- Pelatihan. Dataset dibungkus dalam
NaFlexMapDatasetWrapper(hanya untuk dataset bergaya map), yang memilih salah satu daritrain_seq_lensper batch dan melakukan random resize crop pada setiap gambar agar sesuai dengan jumlah patch tersebut.batch_sizeadalah ukuran batch pada panjang urutan terpanjang; panjang yang lebih pendek mendapatkan batch yang lebih besar secara proporsional (dibulatkan ke bawah menjadi kelipatan 8) sehingga jumlah token per batch tetap relatif konstan.patch_size_choices(denganpatch_size_choice_probs) juga memvariasikan ukuran patch per batch, untuk model yang mendukungnya. - Eval. Gambar di-resize agar muat
max_seq_lenpatch padapatch_sizeyang diberikan (diperlukan untuk eval) dan di-pad hinggamax_seq_len. - Mixup. Lewatkan
NaFlexMixupsebagaimixup_fn, ia mencampur di dalam setiap batch dan tidak mendukungmodeataucutmix_minmax.
Opsi untuk train.py adalah:
--naflex-loadermengaktifkan pemuat NaFlex.--naflex-train-seq-lensmengatur panjang sekuens pelatihan.--naflex-max-seq-lenmengatur panjang urutan evaluasi maksimum.--naflex-patch-sizesmengatur ukuran patch untuk pelatihan ukuran patch variabel.--naflex-patch-size-probsmengatur probabilitas untuk ukuran patch tersebut.--naflex-loss-scalememilih penskalaan loss berdasarkan ukuran batch (none,sqrtataulinear).
API
Konfigurasi data
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 )
Parameter
- model (nn.Module) β instance model
- args (dict) β argumen baris perintah / konfigurasi dalam bentuk dict (menimpa pretrained_cfg)
- pretrained_cfg (dict) β konfigurasi model pretrained (menimpa pretrained_cfg yang melekat pada model)
- use_test_size (bool) β gunakan resolusi input saat pengujian (jika ada) alih-alih resolusi pelatihan default
- verbose (bool) β mengaktifkan pencatatan tambahan untuk nilai yang telah diselesaikan
Resolve Model Data Config Ini setara dengan resolve_data_config() tetapi dengan urutan argumen yang diubah agar model berada di depan.
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 )
Selesaikan pra-pemrosesan terhadap batasan input model saat ini.
Dimensi dan kanal yang tetap harus sesuai dengan permintaan eksplisit. Model fleksibel mempertahankan rekomendasi pra-pemrosesan latih/tes kecuali ditimpa. Normalisasi menggunakan kebijakan adaptasi kanal yang ada dari loader prefetch.
Transforms
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 )
Parameter
- input_size β Ukuran input target (kanal, tinggi, lebar) berupa tuple atau skalar ukuran.
- is_training β Kembalikan transformasi pelatihan (acak).
- no_aug β Nonaktifkan augmentasi untuk pelatihan (berguna untuk debug).
- train_crop_mode β Mode crop acak untuk pelatihan (βrrcβ, βrkrcβ, βrkrrβ).
- scale β Rentang skala resize acak (area crop, < 1.0 => zoom in).
- ratio β Rentang rasio aspek acak (rasio crop untuk RRC, faktor penyesuaian rasio untuk RKR).
- hflip β Probabilitas flip horizontal.
- vflip β Probabilitas flip vertikal.
- color_jitter β Faktor-faktor komponen jitter warna acak (kecerahan, kontras, saturasi, rona). Skalar diterapkan sebagai (scalar,) * 3 (tanpa rona).
- color_jitter_prob β Terapkan color jitter dengan probabilitas ini jika bukan None (untuk augmentasi mirip SimCLR).
- grayscale_prob β Probabilitas mengonversi gambar menjadi grayscale (untuk augmentasi serupa SimCLR).
- gaussian_blur_prob β Probabilitas penerapan gaussian blur (untuk augmentasi mirip SimCLR).
- auto_augment β String konfigurasi auto augment (lihat auto_augment.py).
- interpolation β Mode interpolasi gambar.
- mean β Rata-rata normalisasi gambar.
- std β Standar deviasi normalisasi gambar.
- re_prob β Probabilitas penghapusan acak.
- re_mode β Mode pengisian penghapusan acak.
- re_count β Jumlah wilayah penghapusan acak.
- re_num_splits β Mengontrol pembagian random erasing di sepanjang ukuran batch.
- crop_pct β Persentase crop saat inferensi (ukuran output / ukuran resize).
- crop_mode β Mode crop saat inferensi. Salah satu dari [βsquashβ, βborderβ, βcenterβ]. Bawaan adalah βcenterβ jika None.
- crop_border_pixels β Pemotongan batas inferensi sebanyak # piksel di sekitar tepi gambar asli.
- tf_preprocessing β Gunakan prapemrosesan inferensi TF 1.0 untuk menguji port model
- use_prefetcher β Pre-fetcher diaktifkan. Jangan konversi gambar menjadi tensor atau normalisasi.
- normalize β Output tensor normalisasi dengan mean/std yang diberikan (jika prefetcher tidak digunakan).
- separate β Output transform dalam tuple 3 tahap.
- patchify β Patchify output alih-alih mengandalkan prefetcher.
- patchify_channels_last β Gunakan tata letak channels-last di dalam setiap patch.
- patchify_flatten β Meratakan patch eval menjadi vektor. Nonaktifkan ketika model membutuhkan dimensi spasialnya untuk interpolasi ukuran patch.
timm.data.rand_augment_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = Nonetransforms: typing.Union[str, typing.Dict, typing.List, NoneType] = None )
Parameter
- config_str (str) β String yang mendefinisikan konfigurasi augmentasi acak. Terdiri dari beberapa bagian yang dipisahkan oleh tanda hubung ('-'). Bagian pertama mendefinisikan varian spesifik dari rand augment (saat ini hanya 'rand'). Bagian-bagian sisanya, yang tidak bergantung pada urutan, menentukan
- βmβ - magnitudo bilangan bulat dari rand augment
- βnβ - bilangan bulat num layers (jumlah operasi transformasi yang dipilih per gambar)
- βpβ - probabilitas float untuk menerapkan setiap lapisan (default 0.5)
- βmstdβ - float deviasi standar dari noise magnitudo yang diterapkan, atau sampling seragam jika infinity (atau > 100)
- βmmaxβ - atur batas atas magnitudo menjadi nilai selain nilai default _LEVEL_DENOM (10)
- βincβ - integer (bool), gunakan augmentasi yang tingkat keparahannya meningkat seiring dengan magnitudo (default: 0)
- βtβ - str nama transform yang akan digunakan
- hparams (dict) β hparams (kwargs) lain untuk skema RandAugmentation
Buat transformasi RandAugment
Contoh:
'rand-m9-n3-mstd0.5'adalah RandAugment dengan magnitudo 9, 3 lapisan, dan standar deviasi magnitudo 0,5.'rand-mstd1-tweights'adalah RandAugment dengan standar deviasi magnitudo 1.0 dan pemilihan transformasi berbobot, pada magnitudo default 10 dan 2 lapisan.
timm.data.auto_augment_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = None )
Parameter
- config_str β String yang mendefinisikan konfigurasi auto augmentation. Terdiri dari beberapa bagian yang dipisahkan oleh tanda hubung ('-'). Bagian pertama mendefinisikan kebijakan AutoAugment (salah satu dari 'v0', 'v0r', 'original', 'originalr'). Sementara bagian lainnya mendefinisikan argumen lain
- βmstdβ - float deviasi standar dari noise magnitudo yang diterapkan
- hparams β hparams (kwargs) lain untuk skema AutoAugmentation
Buat transformasi AutoAugment
Contoh:
'original-mstd0.5'adalah AutoAugment dengan kebijakan asli dan standar deviasi magnitudo 0,5.
timm.data.auto_augment.augment_and_mix_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = None )
Parameter
- config_str (str) β String yang mendefinisikan konfigurasi augmentasi acak. Terdiri dari beberapa bagian yang dipisahkan oleh tanda hubung (β-β). Bagian pertama mendefinisikan varian spesifik dari rand augment (saat ini hanya βrandβ). Bagian-bagian sisanya, yang tidak spesifik urutan, menentukan βmβ - integer magnitude (keparahan) dari campuran augmentasi (default: 3) βwβ - integer lebar dari rantai augmentasi (default: 3) βdβ - integer kedalaman dari rantai augmentasi (-1 adalah acak [1, 3], default: -1) βbβ - integer (bool), blend setiap cabang rantai ke hasil akhir tanpa blend final, lebih sedikit CPU (default: 0) βmstdβ - float deviasi standar dari noise magnitude yang diterapkan (default: 0) Contoh βaugmix-m5-w4-d2β menghasilkan AugMix dengan keparahan 5, lebar rantai 4, kedalaman rantai 2
- hparams β hparams (kwargs) lainnya untuk transformasi Augmentation
Buat transformasi AugMix PyTorch
kelas 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' )
Parameter
- probability β Probabilitas bahwa operasi Random Erasing akan dilakukan.
- min_area β Persentase minimum area yang dihapus terhadap area gambar input.
- max_area β Persentase maksimum area yang dihapus terhadap area gambar input.
- min_aspect β Rasio aspek minimum area yang dihapus.
- mode β mode warna piksel, salah satu dari βconstβ, βrandβ, atau βpixelβ βconstβ - blok penghapusan memiliki warna konstan 0 untuk semua saluran βrandβ - blok penghapusan memiliki warna acak (normal) yang sama per saluran βpixelβ - blok penghapusan memiliki warna acak (normal) per piksel
Memilih secara acak sebuah area persegi panjang pada gambar dan menghapus pikselnya. βRandom Erasing Data Augmentationβ oleh Zhong dkk. Lihat https://arxiv.org/pdf/1708.04896.pdf
Varian RandomErasing ini dimaksudkan untuk diterapkan pada tensor batch atau tensor gambar tunggal setelah dinormalisasi dengan mean dan std dataset.
max_count: jumlah maksimum blok penghapusan per gambar, area per kotak diskalakan berdasarkan count. count per gambar dipilih secara acak antara 1 dan nilai ini.
Dataset
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 )
Parameter
- name β Nama dataset, boleh kosong untuk dataset berbasis folder. Prefiks (mis.
hfds/) tidak membedakan huruf besar/kecil, sisanya diteruskan apa adanya (membedakan huruf besar/kecil) kecuali untuk namatorch/. - root β Folder akar dari dataset (Semua)
- split β Pemecahan dataset (Semua)
- search_split β Cari fold anak spesifik split dari root sehingga Anda dapat menentukan
imagenet/alih-alih/imagenet/val, dll. di cmd line / config. (Folder, Torch) - class_map β Tentukan pemetaan kelas -> indeks melalui file teks atau dict (Folder)
- load_bytes β Muat data, kembalikan gambar sebagai byte yang belum didekode (Folder)
- download β Unduh dataset jika tidak ada dan didukung (HFIDS, TFDS, Torch)
- is_training β Buat dataset dalam mode train, ini berbeda dari split. Untuk Iterable / TDFS, ini mengaktifkan shuffle, diabaikan untuk dataset lain. (TFDS, WDS, HFIDS)
- batch_size β Petunjuk ukuran batch untuk dataset iterable (TFDS, WDS, HFIDS)
- seed β Seed untuk dataset iterable (TFDS, WDS, HFIDS)
- repeats β Pengulangan dataset per iterasi, yaitu epoch (TFDS, WDS, HFIDS)
- input_img_mode β Mode konversi warna gambar input, misalnya βRGBβ, βLβ (folder, TFDS, WDS, HFDS, HFIDS)
- trust_remote_code β Percayai kode jarak jauh di Hugging Face Datasets jika True (HFDS, HFIDS)
- **kwargs β Argumen lain untuk diteruskan ke kelas Dataset dan/atau Reader yang mendasarinya
Metode pabrik Dataset
Dalam tanda kurung setelah setiap argumen adalah jenis dataset yang didukung untuk masing-masing argumen, salah satu dari:
- Folder - default, dataset gambar berbasis folder (atau tar) timm
- Torch - dataset berbasis torchvision
- HFDS - Hugging Face Datasets
- HFIDS - Hugging Face Datasets Iterable (mode streaming, dengan IterableDataset)
- TFDS - pembungkus tensorflow-datasets dalam antarmuka IterableDataset melalui IterableImageDataset
- WDS - Webdataset
- Semua - salah satu dari yang di atas
kelas timm.data.ImageDataset
< source >( rootreader = Nonesplit = 'train'class_map = Noneload_bytes = Falseinput_img_mode = 'RGB'transform = Nonetarget_transform = Noneadditional_features = None**kwargs )
kelas 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 )
Wrapper dataset untuk melakukan AugMix atau campuran bersih/augmentasi lainnya
Enkodekan target multi-label sebagai tensor multi-hot float32 dengan panjang num_classes.
Secara default, target adalah urutan indeks kelas positif: urutan kosong berarti tidak ada label positif, pengulangan diizinkan, dan nilai negatif, di luar rentang, atau non-integer akan ditolak. Dengan dense=True, target sudah berupa vektor dengan panjang num_classes yang berisi nilai bool, int, atau float dalam [0, 1]; nilai ini divalidasi dan di-cast ke float32, dengan mempertahankan nilai soft.
Pemuat
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 )
Parameter
- dataset β Dataset gambar yang akan dimuat.
- input_size β Ukuran input target (kanal, tinggi, lebar) berupa tuple atau skalar ukuran.
- batch_size β Jumlah sampel dalam satu batch.
- is_training β Kembalikan transformasi pelatihan (acak).
- no_aug β Nonaktifkan augmentasi untuk pelatihan (berguna untuk debug).
- re_prob β Probabilitas penghapusan acak.
- re_mode β Mode pengisian penghapusan acak.
- re_count β Jumlah wilayah penghapusan acak.
- re_split β Mengontrol pembagian random erasing di seluruh ukuran batch.
- scale β Rentang skala resize acak (area crop, < 1.0 => zoom in).
- ratio β Rentang rasio aspek acak (rasio crop untuk RRC, faktor penyesuaian rasio untuk RKR).
- hflip β Probabilitas flip horizontal.
- vflip β Probabilitas flip vertikal.
- color_jitter β Faktor-faktor komponen jitter warna acak (kecerahan, kontras, saturasi, rona). Skalar diterapkan sebagai (scalar,) * 3 (tanpa rona).
- color_jitter_prob β Terapkan color jitter dengan probabilitas ini jika bukan None (untuk augmentasi
- grayscale_prob β Probabilitas mengonversi gambar menjadi grayscale (untuk augmentasi serupa SimCLR).
- gaussian_blur_prob β Probabilitas penerapan gaussian blur (untuk augmentasi mirip SimCLR).
- auto_augment β String konfigurasi auto augment (lihat auto_augment.py).
- num_aug_repeats β Aktifkan sampler khusus untuk mengulang augmentasi yang sama di seluruh GPU terdistribusi.
- num_aug_splits β Aktifkan mode di mana augmentasi dapat dipecah di seluruh batch.
- interpolation β Mode interpolasi gambar.
- mean β Rata-rata normalisasi gambar.
- std β Standar deviasi normalisasi gambar.
- num_workers β Jumlah proses worker per DataLoader.
- distributed β Aktifkan pemuatan data untuk pelatihan terdistribusi.
- crop_pct β Persentase crop saat inferensi (ukuran output / ukuran resize).
- crop_mode β Mode crop saat inferensi. Salah satu dari [βsquashβ, βborderβ, βcenterβ]. Bawaan adalah βcenterβ jika None.
- crop_border_pixels β Pemotongan batas inferensi sebanyak # piksel di sekitar tepi gambar asli.
- collate_fn β Mengganti collate_fn default.
- pin_memory β Pin memori untuk transfer perangkat.
- fp16 β Argumen yang tidak lagi didukung untuk dtype input presisi setengah. Gunakan img_dtype.
- img_dtype β Tipe data untuk gambar input.
- device β Perangkat untuk mentransfer input dan target.
- use_prefetcher β Gunakan pre-fetcher yang efisien untuk memuat sampel ke perangkat.
- use_multi_epochs_loader —
- persistent_workers β Aktifkan proses worker persisten ketika
num_workerslebih besar dari nol. - worker_seeding β Mengontrol penanaman acak worker saat inisialisasi.
- tf_preprocessing β Gunakan prapemrosesan inferensi TF 1.0 untuk menguji port model.
- input_size_choices β Pilihan ukuran input per batch untuk pelatihan resolusi terjadwal.
- batch_size_choices β Batch size yang sesuai dengan setiap pilihan ukuran input. Menggunakan
batch_sizeuntuk semua pilihan jika tidak ditentukan. - batch_choice_weights β Bobot sampling untuk pilihan ukuran input. Seragam jika tidak ditentukan.
- batch_choice_seed β Benang acak yang digunakan untuk membuat dan mengacak jadwal batch.
- batch_choice_schedule β Mode jadwal pilihan, yaitu
constantatauprogressive. - batch_schedule_epochs β Jumlah epoch yang dilalui oleh jadwal progresif untuk melewati pilihan-pilihannya.
- batch_schedule_spread β Deviasi standar dari jendela pilihan progresif, dalam satuan indeks pilihan.
- batch_schedule_random_mix β Fraksi eksplorasi acak seragam di atas pilihan dengan bobot non-nol dalam jadwal progresif.
- num_batches β Jumlah tetap batch loader per epoch. Disimpulkan dari ukuran batch rata-rata jadwal untuk jadwal progresif jika tidak ditentukan.
Mixup dan CutMix
kelas 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 )
Parameter
- mixup_alpha (float) β nilai alpha mixup, mixup aktif jika > 0.
- cutmix_alpha (float) β nilai alpha cutmix, cutmix aktif jika > 0.
- cutmix_minmax (List[float]) β rasio gambar min/max cutmix, cutmix aktif dan menggunakan ini vs alpha jika tidak None.
- prob (float) β probabilitas penerapan mixup atau cutmix per batch atau elemen
- switch_prob (float) β probabilitas untuk beralih ke cutmix alih-alih mixup ketika keduanya aktif
- mode (str) β cara menerapkan parameter mixup/cutmix (per βbatchβ, βpairβ (pasangan elemen), βelemβ (elemen)
- correct_lam (bool) β terapkan koreksi lambda saat bbox cutmix terpotong oleh batas gambar
- label_smoothing (float) β terapkan label smoothing pada tensor target campuran
- num_classes (int) β jumlah kelas untuk target
- multi_label (bool) β Campurkan target multi-label padat, dengan menghaluskan setiap label menuju 0,5.
Mixup/Cutmix yang menerapkan parameter berbeda untuk setiap elemen atau seluruh batch
kelas 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 dengan Mixup/Cutmix yang menerapkan parameter berbeda untuk setiap elemen atau seluruh batch
Implementasi Mixup yang dilakukan saat merangkai batch.
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 )
Parameter
- dataset β Dataset yang akan dimuat.
- patch_size β Ukuran patch tunggal yang akan digunakan.
- patch_size_choices β Daftar ukuran patch untuk pelatihan ukuran patch variabel.
- patch_size_choice_probs β Probabilitas untuk setiap pilihan ukuran patch.
- train_seq_lens β Panjang sekuens pelatihan untuk pengelompokan dinamis.
- max_seq_len β Panjang sekuens tetap untuk validasi.
- batch_size β Ukuran batch untuk validasi dan panjang urutan pelatihan maksimum.
- is_training β Apakah ini untuk pelatihan (mengaktifkan pengelompokan dinamis).
- mixup_fn β Fungsi mixup opsional.
- no_aug β Nonaktifkan augmentasi.
- re_prob β Probabilitas penghapusan acak.
- re_mode β Mode penghapusan acak.
- re_count β Jumlah maksimum persegi panjang penghapus.
- re_split β Flag pemisahan penghapusan acak.
- train_crop_mode β Mode crop pelatihan.
- scale β Rentang skala untuk random resize crop.
- ratio β Rentang rasio aspek untuk random resize crop.
- hflip β Probabilitas flip horizontal.
- vflip β Probabilitas flip vertikal.
- color_jitter β Faktor jitter warna.
- color_jitter_prob β Probabilitas color jitter.
- grayscale_prob β Probabilitas konversi grayscale.
- gaussian_blur_prob β Probabilitas blur Gaussian.
- auto_augment β kebijakan AutoAugment.
- num_aug_repeats β Jumlah pengulangan augmentasi.
- num_aug_splits β Jumlah split augmentasi.
- interpolation β Metode interpolasi.
- mean β Nilai rata-rata normalisasi.
- std β Nilai standar deviasi normalisasi.
- channels β Jumlah channel gambar, digunakan untuk normalisasi per-channel di prefetcher.
- crop_pct β Persentase pemotongan untuk validasi.
- crop_mode β Mode pemotongan.
- crop_border_pixels β Memotong piksel tepi.
- num_workers β Jumlah worker pemuatan data.
- distributed β Apakah menggunakan pelatihan terdistribusi.
- rank β Rank proses untuk pelatihan terdistribusi.
- world_size β Total jumlah proses.
- seed β Benang acak.
- epoch β Epoch awal.
- use_prefetcher β Apakah akan menggunakan prefetching.
- pin_memory β Apakah akan mengunci memori.
- img_dtype β Tipe data gambar.
- device β Perangkat untuk memindahkan tensor.
- persistent_workers β Apakah akan menggunakan pekerja persisten ketika
num_workerslebih besar dari nol. - worker_seeding β Mode seeding worker.
- patchify_channels_last β Tata letak datar per-patch.
True(default): indeks channel bervariasi paling cepat (default NaFlex).False: C-P-P (channels first β tata letak asli Gemma4 / HF). Diteruskan kePatchifyupstream dan ke tata letak normalisasi prefetcher.
Buat data loader dengan pengambilan sampel panjang sekuens dinamis untuk pelatihan.
kelas 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 untuk dataset dasar bergaya map.
Menghasilkan batch dengan panjang sekuens yang bervariasi. Menghitung jadwal batch kanonik (pasangan panjang sekuens, ukuran batch) sekali berdasarkan ukuran total dataset (dipadatkan untuk distribusi). Setiap epoch, mengacak urutan jadwal kanonik ini dan indeks dataset. Hal ini memastikan jumlah batch dan sampel per epoch yang konsisten di semua rank. Menangani pelatihan terdistribusi dan beberapa worker.
Atur epoch baca yang aman untuk multiprocessing oleh pekerja DataLoader.
kelas 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 )
Wrapper callable yang menggabungkan pencampuran dan pembuatan target.
Perbarui status mixup untuk epoch yang diberikan.