timm documentation
Dữ liệu
Dữ liệu
Trang này chứa tài liệu tham khảo API cho sub-package timm.data, cùng với tổng quan về pipeline đầu vào mà nó cung cấp: xác định cấu hình tiền xử lý của model, xây dựng transforms, tạo datasets và loaders, Mixup / CutMix, và loader phân giải biến NaFlex.
Cách sử dụng
Một pipeline được xây dựng qua bốn bước: resolve_model_data_config đọc cấu hình tiền xử lý của mô hình, create_transform xây dựng transform cho tập huấn luyện hoặc đánh giá, create_dataset tạo một dataset theo tên và thư mục gốc, và create_loader xây dựng transform cùng data loader cho một 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 hướng dẫn các bước cấu hình để chuyển đổi cho suy luận.
Tệp huấn luyện (train.py) cung cấp các tùy chọn này cho từng phần của quy trình.
Ghi đè cấu hình đầu vào (resolve_input_data_config):
--input-sizeđặt hình dạng đầu vào(C, H, W).--img-sizelà cú pháp rút gọn dạng vuông cho--input-size, giữ nguyên số kênh của mô hình.--in-chansthiết lập số kênh đầu vào.--interpolationthiết lập phương pháp nội suy khi thay đổi kích thước.--meanđặt giá trị trung bình chuẩn hóa.--stdđặt độ lệch chuẩn của phép chuẩn hóa.--crop-pctđặt tỷ lệ crop đánh giá.
Tạo Dataset (create_dataset) và thiết lập target:
--datasetchọn bộ dữ liệu và trình đọc.--data-dirđặt thư mục gốc của bộ dữ liệu.--train-splitchọn tập dữ liệu huấn luyện.--val-splitchọn phần chia kiểm định.--class-mapcung cấp ánh xạ lớp.--input-img-modeđặt chế độ chuyển đổi màu hình ảnh.--input-keychọn trường ảnh.--target-keychọn trường nhãn hoặc các trường nhãn.--target-formatchọn các chỉ số lớp hoặc các mục tiêu đa nhiệt độ dày đặc.
Các tùy chọn loader và augmentation (create_loader) bao gồm:
--aachọn chính sách tăng cường tự động.--reprobđặt xác suất xóa ngẫu nhiên.--remodechọn chế độ điền cho việc xóa ngẫu nhiên.--scaleđặt phạm vi tỷ lệ crop được resize ngẫu nhiên.--ratiođặt phạm vi tỷ lệ khung hình của thao tác crop có kích thước ngẫu nhiên.--hflipđặt xác suất lật ngang.--color-jitterthiết lập cường độ jitter màu.--train-interpolationđặt phương pháp nội suy khi thay đổi kích thước trong quá trình huấn luyện.--workersthiết lập số lượng worker của loader.--no-prefetchertắt prefetcher.
Mixup và CutMix (Mixup):
--mixupđặt alpha của Mixup.--cutmixđặt alpha của CutMix.--cutmix-minmaxđặt phạm vi kích thước hộp CutMix.--mixup-probđặt xác suất trộn.--mixup-switch-probđặt xác suất chọn CutMix khi cả hai phương pháp đều được bật.--mixup-modechọn trộn theo batch, cặp hoặc từng phần tử.--smoothingthiết lập làm mịn nhãn.
Xem Scripts để có ví dụ.
Cấu hình dữ liệu
resolve_data_config trả về một dict với các key bên dưới, khớp với các đối số của create_transform và create_loader. Các giá trị được đặt trong args (một dict, ví dụ vars(args) của các đối số dòng lệnh đã được phân tích) có độ ưu tiên cao hơn đối số pretrained_cfg, mặc định là model.pretrained_cfg. resolve_model_data_config hoạt động tương tự nhưng với model làm đối số đầu tiên.
Cả hai đều đọc kích thước đầu vào và số kênh từ cfg được huấn luyện trước, mô tả checkpoint nguồn, chứ không phải mô hình được tạo hoặc thay đổi để sử dụng img_size hoặc in_chans khác. resolve_input_data_config, được sử dụng bởi các script huấn luyện, xác thực và suy luận, sẽ đối chiếu với đầu vào hiện tại của mô hình: mô hình có kích thước đầu vào cố định luôn nhận kích thước hiện tại của nó, các args tường minh xung đột với số kênh hoặc kích thước cố định của mô hình sẽ gây ra lỗi, và mean / std không khớp với số kênh sẽ được thay thế bằng giá trị trung bình của chúng (kèm theo cảnh báo).
| Khóa | Các khóa của args | Mô tả | Mặc định |
|---|---|---|---|
input_size | input_size, img_size, in_chans | Kích thước đầu vào (C, H, W). Với use_test_size=True, test_input_size của cấu hình sẽ được sử dụng nếu có | (3, 224, 224) |
interpolation | interpolation | Nội suy thay đổi kích thước, bilinear, bicubic, … | bicubic |
mean, std | mean, std | Chuẩn hóa, một giá trị duy nhất được lặp lại cho mỗi kênh | Trung bình / độ lệch chuẩn của ImageNet |
crop_pct | crop_pct | Với Eval crop, ảnh được thay đổi kích thước thành size / crop_pct trước khi được cắt thành size (test_crop_pct với use_test_size=True) | 0.875 |
crop_mode | crop_mode | Chế độ cắt khi đánh giá, center, squash hoặc border | center |
Các chế độ cắt cho đánh giá, với size đầu ra và scale_size = floor(size / crop_pct):
crop_mode | Hành vi |
|---|---|
center | Phóng to cạnh ngắn nhất thành scale_size (giữ nguyên tỷ lệ khung hình), sau đó cắt ở giữa thành size |
squash | Phóng to cả hai cạnh lên scale_size (không giữ nguyên tỷ lệ khung hình), sau đó cắt ở giữa thành size |
border | Phóng to cạnh dài nhất thành scale_size, cắt ở giữa và chèn viền bằng màu trung bình, toàn bộ hình ảnh được giữ ở crop_pct=1.0 |
Biến đổi
create_transform trả về một Compose của torchvision. Transform đánh giá sẽ resize và crop như ở trên, sau đó chuyển sang tensor và chuẩn hóa. Transform huấn luyện là random resized crop (mặc định scale=(0.08, 1.0), ratio=(3/4, 4/3)), lật ngang (hflip=0.5), color jitter (color_jitter=0.4), chính sách auto_augment tùy chọn, chuyển đổi tensor và chuẩn hóa, cùng với random erasing.
train_crop_mode='rkrc'hoặc'rkrr'thay thế thao tác crop có kích thước ngẫu nhiên bằng thao tác resize ngẫu nhiên giữ nguyên tỷ lệ khung hình, sau đó thực hiện crop hoặc pad ở giữa (rkrc) hoặc ngẫu nhiên (rkrr).interpolation='random'(mặc định củatrain.pykhi huấn luyện) chọn bilinear hoặc bicubic cho từng ảnh.no_aug=Truegiảm quy trình huấn luyện xuống còn thao tác thay đổi kích thước và cắt ở giữa.
auto_augment | Tăng cường |
|---|---|
rand-m9-mstd0.5-inc1 | RandAugment thông qua rand_augment_transform |
augmix-m5-w4-d2 | AugMix thông qua augment_and_mix_transform |
original, originalr, v0, v0r, 3a | AutoAugment policy thông qua auto_augment_transform |
Các token tùy chọn của RandAugment:
mđặt độ lớn (mặc định là 10).nđặt số lượng ops trên mỗi ảnh (mặc định là 2).pđặt xác suất cho mỗi op (mặc định là 0.5).mstdđặt độ lệch chuẩn của nhiễu biên độ.inc1chọn các op mà mức độ nghiêm trọng tăng theo biên độ.t<name>chọn bộ toán tử (weights,3a,3aw).
Các token tùy chọn AugMix:
mđặt mức độ nghiêm trọng (mặc định là 3).wđặt chiều rộng (mặc định là 3).dđặt độ sâu (mặc định -1, ngẫu nhiên 1-3).b1cho phép tăng cường dữ liệu hỗn hợp.mstdđặt độ lệch chuẩn của nhiễu biên độ.
AutoAugment chấp nhận mstd, ví dụ original-mstd0.5.
Hành vi của Transform:
- Color jitter bị vô hiệu hóa khi
auto_augmentđược đặt, trừ khi chuỗi chứa3a. RandomErasing(re_prob,re_count) chạy trên tensor đã chuẩn hóa.re_modeđiền bằng số không (const, mặc định), một màu chuẩn ngẫu nhiên cho mỗi vùng (rand) hoặc các pixel chuẩn ngẫu nhiên (pixel, mặc định củatrain.py).use_prefetcher=Truekết thúc transform tại một tensoruint8, sau đó normalization và random erasing được thực hiện bởi loader trên thiết bị.create_transformvàcreate_loadermặc định sử dụng nội suybilinearvà giá trị trung bình / độ lệch chuẩn của ImageNet, thay vì các giá trị của mô hình. Hãy truyền cấu hình dữ liệu đã được giải quyết để khớp với quá trình tiền huấn luyện của mô hình.
Bộ dữ liệu
create_dataset chọn triển khai dataset và reader từ một tiền tố của name:
name | Bộ dữ liệu | root | Yêu cầu |
|---|---|---|---|
'' hoặc không có tiền tố | ImageDataset, các hình ảnh trong các thư mục con của lớp (tìm kiếm đệ quy, tên thư mục lá là tên lớp), hoặc một tệp .tar duy nhất có cùng | Thư mục Dataset hoặc tệp .tar | |
torch/<name> | torchvision cifar10, cifar100, mnist, kmnist, fashion_mnist, qmnist, inaturalist (inat), places365, imagenet hoặc image_folder (folder) | thư mục gốc của bộ dữ liệu torchvision | |
hfds/<name> | ImageDataset trên một dataset của Hugging Face Hub (hoặc đường dẫn cục bộ) thông qua datasets.load_dataset | Thư mục cache (tùy chọn) | datasets |
hfids/<name> | IterableImageDataset, bộ dữ liệu Hugging Face được stream, hoặc được tải xuống và chuẩn bị trước với download=True | Thư mục cache (tùy chọn) | datasets |
tfds/<name> | IterableImageDataset trên TensorFlow Datasets, download=True sẽ tải xuống và xây dựng | Thư mục dữ liệu TFDS | tensorflow, tensorflow-datasets |
wds/<name> | IterableImageDataset trên các shard tar của WebDataset | Thư mục shard có _info.json (hoặc info.json) mô tả các phần chia | webdataset |
Các tùy chọn bộ dữ liệu:
splitchọn phần chia của bộ dữ liệu (mặc định làvalidation). Đối với WebDataset, nó cũng có thể là một mẫu shard kèm theo số lượng mẫu,'imagenet-train-{0000..1023}.tar|1281167'.search_split=True(mặc định) khiến các dataset dạng thư mục tìm kiếm thư mục con củarootcó tên làsplithoặc, nếu không có, một từ đồng nghĩa của split train (train,training) hoặc eval (val,valid,validation,eval,evaluation).add_img_extensionsbổ sung vào các định dạng ảnh mặc định (.png,.jpgvà.jpeg).class_mapánh xạ lại tên lớp sang chỉ số bằng một dict, một tệp.txt(mỗi dòng một lớp) hoặc một tệp.pkl.
Các tập dữ liệu dạng lặp (hfids, tfds, wds) cũng nhận:
is_trainingcho phép xáo trộn.batch_sizelàm tròn phần mẫu của mỗi worker lên thành các batch nguyên khi huấn luyện.num_samplesđặt số lượng mẫu, bắt buộc khi trình đọc không thể xác định được (hfidskhông có thông tin phân chia).seedđặt hạt ngẫu nhiên.repeatsnhân số mẫu mỗi epoch, các reader sẽ quét qua dữ liệu bấy nhiêu lần.
Gọi dataset.set_epoch() mỗi epoch để xáo trộn lại.
Các đối số từ khóa khác được truyền tiếp đến trình đọc. Đối với các trình đọc Hugging Face, TFDS và WebDataset:
input_keychọn trường ảnh (mặc định làimage, đối vớiwdslà ảnhjpg,pnghoặcwebp).target_keychọn trường nhãn (mặc định làlabel, vớiwdslà tệp.clshoặc trường sidecar.jsonđược đặt tên bởitarget_key). Giá trị phân tách bằng dấu phẩy đọc một trường nhị phân cho mỗi lớp.target_format='multihot'đọc các vector multi-hot dày đặc thay vì các danh sách chỉ số lớp cho dữ liệu đa nhãn.target_transform=MultiLabelTarget(num_classes)mã hóa các mục tiêu thành các tensor multi-hot dạng float. Truyềndense=TruevàoMultiLabelTargetcho các trường multi-hot.
Trình đọc thư mục và tar trả về các chỉ mục lớp đơn. Xem phân loại đa nhãn để biết thêm chi tiết.
Trình nạp
create_loader tạo transform bằng create_transform từ các đối số của chính nó,
gán nó cho dataset.transform (thay thế mọi transform hiện có) và trả về một DataLoader. Các loader huấn luyện
(is_training=True) sẽ xáo trộn và bỏ qua batch cuối cùng không đầy đủ.
- Trình lấy trước (Prefetcher). Với
use_prefetcher=True(mặc định), tập dữ liệu sẽ tạo ra các tensoruint8, các lô (batch) được chuyển đếndevice(mặc định làcuda, trên một luồng phụ cho CUDA), sau đó được chuyển đổi sangimg_dtype, chuẩn hóa và xóa ngẫu nhiên ngay tại đó. Đặtdevicethành thiết bị huấn luyện, hoặc đặtuse_prefetcher=Falseđể sử dụngDataLoaderthông thường với các tensor đã được chuẩn hóa. - Phân tán.
distributed=Truesử dụngDistributedSamplercho các tập dữ liệu huấn luyện theo kiểu map (hoặc một bộ lấy mẫu tăng cường lặp lại vớinum_aug_repeats) và một bộ lấy mẫu có thứ tự cho đánh giá, trong đó mỗi tiến trình được đệm để có cùng số lượng mẫu, điều này có thể làm thay đổi nhẹ kết quả xác thực. Các tập dữ liệu dạng iterable tự chia nhỏ (shard) trên các tiến trình và worker. - Collate.
collate_fnthay thế mặc định (fast_collatevới prefetcher,default_collatekhông có), ví dụ bằngFastCollateMixup. - Các phần chia tăng cường. Đối với AugMix có loss JSD (
--aug-splits), bọc dataset trongAugMixDataset(dataset, num_splits=n)và truyềnnum_aug_splits=n. Mỗi batch chứa một phần chia sạch vàn - 1phần chia đã tăng cường, được nối theo chiều batch bởi prefetcher. - Giải quyết theo lịch trình.
input_size_choices(--train-img-sizes) chọn kích thước đầu vào cho mỗi batch, tùy chọn kèm kích thước batch cho từng lựa chọn (batch_size_choices) và lịch trìnhprogressivetừ lựa chọn đầu tiên đến lựa chọn cuối cùng.
Mixup và CutMix
Mixup trộn một batch ảnh đã chuẩn hóa trên thiết bị, sau loader. FastCollateMixup nhận cùng các đối số và trộn các ảnh uint8 trong khi collate trong các worker của loader, nó yêu cầu prefetcher. Cả hai đều trả về các target dạng dense (batch_size, num_classes) với label_smoothing (mặc định là 0.1) được áp dụng, để sử dụng với một loss target mềm như timm.loss.SoftTargetCrossEntropy, và yêu cầu batch size chẵn.
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))Các điều khiển Mixup và CutMix:
mixup_alpha > 0bật Mixup.cutmix_alpha > 0bật CutMix.cutmix_minmaxcho phép bật CutMix với một khoảng kích thước hộp.switch_probđặt xác suất chọn CutMix khi cả hai phương pháp đều được bật.probđặt xác suất của việc trộn lẫn.modevẽ các tham số một lần cho mỗibatch, cho mỗipaircác phần tử hoặc cho mỗielem(phần tử).multi_label=Truetrộn các mục tiêu đa nhãn dạng dense, làm mượt từng nhãn về phía 0.5.mixup_enabled = Falsetắt tính năng trộn, ví dụ cho các epoch cuối (--mixup-off-epoch). Đối vớiFastCollateMixup, giá trị này được đọc trong các tiến trình worker; các worker bền (persistent) sẽ giữ nguyên giá trị ban đầu của chúng.
NaFlex độ phân giải biến
create_naflex_loader nạp ảnh dưới dạng các chuỗi patch có độ dài thay đổi,
mà không resize về kích thước vuông cố định, dành cho các mô hình nhận đầu vào patch NaFlex (ví dụ các mô hình naflexvit_*). Mỗi
batch là một dict gồm patches, patch_coord, patch_valid và seq_len, được pad đến độ dài chuỗi của batch.
- Đào tạo. Bộ dữ liệu được bọc trong
NaFlexMapDatasetWrapper(chỉ dành cho các bộ dữ liệu dạng map), trong đó mỗi batch sẽ chọn một trong sốtrain_seq_lensvà thực hiện random resize crop cho từng ảnh để vừa với số lượng patch tương ứng.batch_sizelà kích thước batch tại độ dài chuỗi dài nhất; các độ dài ngắn hơn sẽ có batch lớn hơn theo tỷ lệ (làm tròn xuống đến bội số của 8) để số token mỗi batch gần như không đổi.patch_size_choices(kết hợp vớipatch_size_choice_probs) cũng thay đổi kích thước patch theo từng batch, dành cho các mô hình hỗ trợ tính năng này. - Đánh giá. Ảnh được điều chỉnh kích thước để vừa với
max_seq_lenpatch ởpatch_sizeđã cho (bắt buộc cho đánh giá) và được đệm lênmax_seq_len. - Mixup. Truyền một
NaFlexMixupvàomixup_fn, nó sẽ trộn lẫn trong mỗi batch và không hỗ trợmodehoặccutmix_minmax.
Các tùy chọn của train.py là:
--naflex-loaderbật trình nạp NaFlex.--naflex-train-seq-lensthiết lập độ dài chuỗi huấn luyện.--naflex-max-seq-lenđặt độ dài chuỗi đánh giá tối đa.--naflex-patch-sizesthiết lập kích thước patch cho việc huấn luyện với kích thước patch thay đổi.--naflex-patch-size-probsthiết lập xác suất cho các kích thước patch đó.--naflex-loss-scalechọn việc mở rộng loss theo kích thước batch (none,sqrthoặclinear).
API
Cấu hình dữ liệu
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 )
Tham số
- model (nn.Module) — bản thể của mô hình
- args (dict) — các đối số dòng lệnh / cấu hình ở dạng dict (ghi đè pretrained_cfg)
- pretrained_cfg (dict) — cấu hình của mô hình được huấn luyện trước (ghi đè pretrained_cfg gắn với mô hình)
- use_test_size (bool) — sử dụng độ phân giải đầu vào ở thời điểm kiểm tra (nếu có) thay vì độ phân giải huấn luyện mặc định
- verbose (bool) — bật ghi log bổ sung cho các giá trị đã được phân giải
Giải quyết Cấu hình Dữ liệu Mô hình Điều này tương đương với resolve_data_config() nhưng với các đối số được sắp xếp lại để đặt mô hình lên đầu.
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 )
Giải quyết tiền xử lý theo các ràng buộc đầu vào của mô hình hiện tại.
Kích thước và số kênh cố định phải khớp với các yêu cầu tường minh. Các mô hình linh hoạt giữ lại các khuyến nghị tiền xử lý cho tập huấn luyện/kiểm tra trừ khi bị ghi đè. Chuẩn hóa sử dụng chính sách thích ứng kênh hiện có của các trình nạp trước (prefetch loaders).
Biến đổi
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 )
Tham số
- input_size — Kích thước đầu vào mục tiêu, dưới dạng tuple (channels, height, width) hoặc giá trị vô hướng.
- is_training — Trả về các biến đổi (random) cho quá trình huấn luyện.
- no_aug — Tắt tăng cường dữ liệu cho huấn luyện (hữu ích để gỡ lỗi).
- train_crop_mode — Chế độ cắt ngẫu nhiên khi huấn luyện (‘rrc’, ‘rkrc’, ‘rkrr’).
- scale — Khoảng tỷ lệ thay đổi kích thước ngẫu nhiên (vùng crop, < 1.0 => thu phóng vào).
- ratio — Khoảng tỷ lệ khung hình ngẫu nhiên (tỷ lệ cắt cho RRC, hệ số điều chỉnh tỷ lệ cho RKR).
- hflip — Xác suất lật ngang.
- vflip — Xác suất lật dọc.
- color_jitter — Các hệ số thành phần jitter màu ngẫu nhiên (độ sáng, độ tương phản, độ bão hòa, sắc độ). Giá trị vô hướng được áp dụng dưới dạng (scalar,) * 3 (không có sắc độ).
- color_jitter_prob — Áp dụng color jitter với xác suất này nếu không phải None (cho tăng cường kiểu SimCLR).
- grayscale_prob — Xác suất chuyển ảnh sang thang xám (cho tăng cường kiểu SimCLR).
- gaussian_blur_prob — Xác suất áp dụng gaussian blur (cho tăng cường kiểu SimCLR).
- auto_augment — Chuỗi cấu hình auto augment (xem auto_augment.py).
- interpolation — Chế độ nội suy ảnh.
- mean — Giá trị trung bình để chuẩn hóa ảnh.
- std — Độ lệch chuẩn chuẩn hóa ảnh.
- re_prob — Xác suất xóa ngẫu nhiên.
- re_mode — Chế độ lấp đầy xóa ngẫu nhiên.
- re_count — Số lượng vùng xóa ngẫu nhiên.
- re_num_splits — Kiểm soát việc chia tách random erasing trên kích thước batch.
- crop_pct — Tỷ lệ cắt khi suy luận (kích thước đầu ra / kích thước điều chỉnh).
- crop_mode — Chế độ cắt khi suy luận. Một trong [‘squash’, ‘border’, ‘center’]. Mặc định là ‘center’ khi là None.
- crop_border_pixels — Cắt bỏ viền khi suy luận, loại bỏ # pixel quanh cạnh của ảnh gốc.
- tf_preprocessing — Sử dụng tiền xử lý suy luận TF 1.0 để kiểm tra các bản port mô hình
- use_prefetcher — Bật pre-fetcher. Không chuyển đổi ảnh sang tensor hoặc chuẩn hóa.
- normalize — Tensor chuẩn hóa đầu ra với mean/std được cung cấp (nếu không dùng prefetcher).
- separate — Chuyển đổi đầu ra thành bộ ba 3 giai đoạn.
- patchify — Patchify đầu ra thay vì dựa vào prefetcher.
- patchify_channels_last — Sử dụng bố cục channels-last trong mỗi patch.
- patchify_flatten — Dẹt các patch đánh giá thành các vector. Tắt khi mô hình cần các chiều không gian của chúng để nội suy kích thước patch.
timm.data.rand_augment_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = Nonetransforms: typing.Union[str, typing.Dict, typing.List, NoneType] = None )
Tham số
- config_str (str) — Chuỗi định nghĩa cấu hình của random augmentation. Gồm nhiều phần được phân tách bằng dấu gạch ngang ('-'). Phần đầu tiên định nghĩa biến thể cụ thể của rand augment (hiện tại chỉ có 'rand'). Các phần còn lại, không phụ thuộc vào thứ tự, xác định
- ‘m’ - độ lớn nguyên của rand augment
- ‘n’ - số nguyên num layers (số lượng phép biến đổi được chọn cho mỗi ảnh)
- ‘p’ - xác suất float để áp dụng mỗi lớp (mặc định là 0.5)
- ‘mstd’ - độ lệch chuẩn dạng float của nhiễu biên độ được áp dụng, hoặc lấy mẫu đều nếu là vô cùng (hoặc > 100)
- ‘mmax’ - đặt giới hạn trên cho độ lớn thành một giá trị khác mặc định là _LEVEL_DENOM (10)
- ‘inc’ - số nguyên (bool), sử dụng các phép tăng cường có mức độ nghiêm trọng tăng dần theo độ lớn (mặc định: 0)
- ‘t’ - str tên của bộ biến đổi cần sử dụng
- hparams (dict) — Các hparams (kwargs) khác cho phương án RandAugmentation
Tạo một transform RandAugment
Ví dụ:
'rand-m9-n3-mstd0.5'là RandAugment với magnitude 9, 3 lớp và độ lệch chuẩn magnitude là 0.5.'rand-mstd1-tweights'là RandAugment với độ lệch chuẩn của magnitude là 1.0 và lựa chọn biến đổi có trọng số, ở mức magnitude mặc định là 10 và 2 lớp.
timm.data.auto_augment_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = None )
Tham số
- config_str — Chuỗi định nghĩa cấu hình của auto augmentation. Gồm nhiều phần được phân tách bằng dấu gạch ngang ('-'). Phần đầu tiên định nghĩa chính sách AutoAugment (một trong 'v0', 'v0r', 'original', 'originalr'). Trong khi các phần còn lại định nghĩa các đối số khác
- ‘mstd’ - độ lệch chuẩn dạng float của nhiễu biên độ được áp dụng
- hparams — Các hparams (kwargs) khác cho lược đồ AutoAugmentation
Tạo một transform AutoAugment
Ví dụ:
'original-mstd0.5'là AutoAugment với chính sách gốc và độ lệch chuẩn của magnitude là 0.5.
timm.data.auto_augment.augment_and_mix_transform
< source >( config_str: strhparams: typing.Optional[typing.Dict] = None )
Tham số
- config_str (str) — Chuỗi định nghĩa cấu hình của tăng dữ liệu ngẫu nhiên. Gồm nhiều phần được phân tách bằng dấu gạch ngang (’-’). Phần đầu tiên định nghĩa biến thể cụ thể của rand augment (hiện tại chỉ có ‘rand’). Các phần còn lại, không phụ thuộc vào thứ tự, xác định: ‘m’ - độ lớn (mức độ nghiêm trọng) dạng số nguyên của hỗn hợp tăng dữ liệu (mặc định: 3) ‘w’ - độ rộng dạng số nguyên của chuỗi tăng dữ liệu (mặc định: 3) ‘d’ - độ sâu dạng số nguyên của chuỗi tăng dữ liệu (-1 là ngẫu nhiên [1, 3], mặc định: -1) ‘b’ - số nguyên (bool), trộn mỗi nhánh của chuỗi vào kết quả cuối mà không cần bước trộn cuối cùng, ít tốn CPU hơn (mặc định: 0) ‘mstd’ - độ lệch chuẩn dạng số thực của nhiễu độ lớn được áp dụng (mặc định: 0) VD ‘augmix-m5-w4-d2’ cho ra AugMix với mức độ nghiêm trọng 5, độ rộng chuỗi 4, độ sâu chuỗi 2
- hparams — Các hparams (kwargs) khác cho các biến đổi Augmentation
Tạo biến đổi AugMix PyTorch
class 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' )
Tham số
- probability — Xác suất thao tác Random Erasing sẽ được thực hiện.
- min_area — Tỷ lệ phần trăm tối thiểu của vùng bị xóa so với diện tích ảnh đầu vào.
- max_area — Tỷ lệ phần trăm tối đa của vùng bị xóa so với diện tích ảnh đầu vào.
- min_aspect — Tỷ lệ khung hình tối thiểu của vùng bị xóa.
- mode — chế độ màu pixel, một trong ‘const’, ‘rand’ hoặc ‘pixel’ ‘const’ - khối xóa có màu cố định là 0 cho tất cả các kênh ‘rand’ - khối xóa có màu ngẫu nhiên (chuẩn) giống nhau cho từng kênh ‘pixel’ - khối xóa có màu ngẫu nhiên (chuẩn) cho từng pixel
Tự động chọn một vùng hình chữ nhật ngẫu nhiên trong ảnh và xóa các pixel của vùng đó. ‘Random Erasing Data Augmentation’ của Zhong và cộng sự. Xem https://arxiv.org/pdf/1708.04896.pdf
Biến thể của RandomErasing này được thiết kế để áp dụng cho một batch hoặc một tensor ảnh đơn sau khi đã được chuẩn hóa bằng mean và std của dataset.
max_count: số lượng khối xóa tối đa trên mỗi ảnh, diện tích của mỗi hộp được nhân theo count. số lượng trên mỗi ảnh được chọn ngẫu nhiên giữa 1 và giá trị này.
Bộ dữ liệu
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 )
Tham số
- name — Tên dataset, có thể để trống đối với dataset dựa trên thư mục. Tiền tố (ví dụ
hfds/) không phân biệt chữ hoa chữ thường, phần còn lại được truyền qua nguyên vẹn (phân biệt chữ hoa chữ thường) ngoại trừ các têntorch/. - root — Thư mục gốc của bộ dữ liệu (Tất cả)
- split — Tập dữ liệu (Tất cả)
- search_split — Tìm kiếm fold con cụ thể cho split từ root để có thể chỉ định
imagenet/thay vì/imagenet/val, v.v. trên dòng lệnh / cấu hình. (Folder, Torch) - class_map — Chỉ định ánh xạ lớp -> chỉ số thông qua tệp văn bản hoặc dict (Folder)
- load_bytes — Nạp dữ liệu, trả về các hình ảnh dưới dạng byte chưa giải mã (Folder)
- download — Tải xuống bộ dữ liệu nếu chưa có và được hỗ trợ (HFIDS, TFDS, Torch)
- is_training — Tạo dataset ở chế độ train, điều này khác với split. Với Iterable / TDFS, nó bật shuffle, bị bỏ qua với các dataset khác. (TFDS, WDS, HFIDS)
- batch_size — Gợi ý kích thước batch cho các tập dữ liệu dạng lặp (TFDS, WDS, HFIDS)
- seed — Hạt giống cho các tập dữ liệu có thể lặp lại (TFDS, WDS, HFIDS)
- repeats — Số lần lặp lại của Dataset cho mỗi lần lặp, tức là mỗi epoch (TFDS, WDS, HFIDS)
- input_img_mode — Chế độ chuyển đổi màu ảnh đầu vào, ví dụ ‘RGB’, ‘L’ (folder, TFDS, WDS, HFDS, HFIDS)
- trust_remote_code — Tin tưởng mã từ xa trong Hugging Face Datasets nếu là True (HFDS, HFIDS)
- **kwargs — Các đối số khác để truyền qua cho các lớp Dataset và/hoặc Reader bên dưới
Phương thức factory của Dataset
Trong ngoặc đơn sau mỗi arg là kiểu dataset được hỗ trợ cho mỗi arg, một trong các
- Thư mục - mặc định, tập dữ liệu ảnh dựa trên thư mục (hoặc tệp tar) của timm
- Torch - Bộ dữ liệu dựa trên torchvision
- HFDS - Hugging Face Datasets
- HFIDS - Hugging Face Datasets Iterable (chế độ streaming, với IterableDataset)
- TFDS - lớp bọc Tensorflow-datasets trong giao diện IterableDataset thông qua IterableImageDataset
- WDS - Webdataset
- Tất cả - bất kỳ mục nào ở trên
lớp timm.data.ImageDataset
< source >( rootreader = Nonesplit = 'train'class_map = Noneload_bytes = Falseinput_img_mode = 'RGB'transform = Nonetarget_transform = Noneadditional_features = None**kwargs )
lớp 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 )
Dataset wrapper để thực hiện AugMix hoặc các hỗn hợp sạch/tăng cường khác
Mã hóa một mục tiêu đa nhãn thành một tensor đa nhiệt kiểu float32 có độ dài num_classes.
Mặc định, target là một chuỗi các chỉ số lớp dương: chuỗi rỗng có nghĩa là không có nhãn dương, cho phép lặp lại, và các giá trị âm, ngoài phạm vi hoặc không phải số nguyên sẽ bị từ chối. Với dense=True, target đã là một vector có độ dài num_classes chứa các giá trị bool, int hoặc float trong khoảng [0, 1]; nó được kiểm tra và chuyển đổi sang float32, giữ nguyên các giá trị mềm.
Trình nạp
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 )
Tham số
- dataset — Bộ dữ liệu ảnh cần tải.
- input_size — Kích thước đầu vào mục tiêu, dưới dạng tuple (channels, height, width) hoặc giá trị vô hướng.
- batch_size — Số lượng mẫu trong một batch.
- is_training — Trả về các biến đổi (random) cho quá trình huấn luyện.
- no_aug — Tắt tăng cường dữ liệu cho huấn luyện (hữu ích để gỡ lỗi).
- re_prob — Xác suất xóa ngẫu nhiên.
- re_mode — Chế độ lấp đầy xóa ngẫu nhiên.
- re_count — Số lượng vùng xóa ngẫu nhiên.
- re_split — Kiểm soát việc chia tách random erasing theo kích thước batch.
- scale — Khoảng tỷ lệ thay đổi kích thước ngẫu nhiên (vùng crop, < 1.0 => thu phóng vào).
- ratio — Khoảng tỷ lệ khung hình ngẫu nhiên (tỷ lệ cắt cho RRC, hệ số điều chỉnh tỷ lệ cho RKR).
- hflip — Xác suất lật ngang.
- vflip — Xác suất lật dọc.
- color_jitter — Các hệ số thành phần jitter màu ngẫu nhiên (độ sáng, độ tương phản, độ bão hòa, sắc độ). Giá trị vô hướng được áp dụng dưới dạng (scalar,) * 3 (không có sắc độ).
- color_jitter_prob — Áp dụng jitter màu với xác suất này nếu không phải None (cho tăng cường kiểu SimCLR
- grayscale_prob — Xác suất chuyển ảnh sang thang xám (cho tăng cường kiểu SimCLR).
- gaussian_blur_prob — Xác suất áp dụng gaussian blur (cho tăng cường kiểu SimCLR).
- auto_augment — Chuỗi cấu hình auto augment (xem auto_augment.py).
- num_aug_repeats — Bật bộ lấy mẫu đặc biệt để lặp lại cùng một phép tăng dữ liệu trên các GPU phân tán.
- num_aug_splits — Bật chế độ cho phép chia các phép tăng cường dữ liệu (augmentations) trên toàn bộ batch.
- interpolation — Chế độ nội suy ảnh.
- mean — Giá trị trung bình để chuẩn hóa ảnh.
- std — Độ lệch chuẩn chuẩn hóa ảnh.
- num_workers — Số tiến trình worker cho mỗi DataLoader.
- distributed — Bật tải dữ liệu cho huấn luyện phân tán.
- crop_pct — Tỷ lệ cắt khi suy luận (kích thước đầu ra / kích thước điều chỉnh).
- crop_mode — Chế độ cắt khi suy luận. Một trong [‘squash’, ‘border’, ‘center’]. Mặc định là ‘center’ khi là None.
- crop_border_pixels — Cắt bỏ viền khi suy luận, loại bỏ # pixel quanh cạnh của ảnh gốc.
- collate_fn — Ghi đè collate_fn mặc định.
- pin_memory — Cố định bộ nhớ để chuyển sang thiết bị.
- fp16 — Tham số đã bị ngừng hỗ trợ cho kiểu dữ liệu đầu vào độ chính xác nửa. Hãy dùng img_dtype.
- img_dtype — Kiểu dữ liệu cho ảnh đầu vào.
- device — Thiết bị để chuyển các đầu vào và mục tiêu sang.
- use_prefetcher — Sử dụng bộ pre-fetcher hiệu quả để nạp mẫu lên thiết bị.
- use_multi_epochs_loader —
- persistent_workers — Bật các tiến trình worker bền vững khi
num_workerslớn hơn không. - worker_seeding — Kiểm soát việc khởi tạo ngẫu nhiên của worker khi khởi tạo.
- tf_preprocessing — Sử dụng tiền xử lý suy luận TF 1.0 để kiểm tra các bản port mô hình.
- input_size_choices — Các lựa chọn kích thước đầu vào cho từng lô (batch) trong quá trình huấn luyện độ phân giải được lên lịch.
- batch_size_choices — Batch size tương ứng với mỗi lựa chọn kích thước đầu vào. Sử dụng
batch_sizecho tất cả các lựa chọn khi không được chỉ định. - batch_choice_weights — Trọng số lấy mẫu cho các lựa chọn kích thước đầu vào. Phân phối đều khi không được chỉ định.
- batch_choice_seed — Hạt ngẫu nhiên được sử dụng để tạo và xáo trộn lịch trình lô.
- batch_choice_schedule — Chế độ lịch chọn, có thể là
constanthoặcprogressive. - batch_schedule_epochs — Số epoch mà lịch trình tiến bộ di chuyển qua các lựa chọn của nó.
- batch_schedule_spread — Độ lệch chuẩn của cửa sổ lựa chọn tiến trình, tính theo đơn vị chỉ số lựa chọn.
- batch_schedule_random_mix — Tỷ lệ khám phá ngẫu nhiên đều trên các lựa chọn có trọng số khác không trong lịch trình tiến bộ.
- num_batches — Số lượng cố định các lô (batch) của loader cho mỗi epoch. Được suy ra từ kích thước lô trung bình của lịch trình đối với các lịch trình tiến bộ khi không được chỉ định.
Mixup và CutMix
lớp 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 )
Tham số
- mixup_alpha (float) — giá trị alpha của mixup, mixup được kích hoạt nếu > 0.
- cutmix_alpha (float) — giá trị alpha của cutmix, cutmix được kích hoạt nếu > 0.
- cutmix_minmax (List[float]) — tỷ lệ ảnh min/max của cutmix, cutmix được kích hoạt và sử dụng giá trị này thay cho alpha nếu không phải None.
- prob (float) — xác suất áp dụng mixup hoặc cutmix cho mỗi batch hoặc phần tử
- switch_prob (float) — xác suất chuyển sang cutmix thay vì mixup khi cả hai đều được kích hoạt
- mode (str) — cách áp dụng các tham số mixup/cutmix (theo ‘batch’, ‘pair’ (cặp phần tử), ‘elem’ (phần tử)
- correct_lam (bool) — áp dụng hiệu chỉnh lambda khi bbox của cutmix bị cắt bởi biên ảnh
- label_smoothing (float) — áp dụng label smoothing cho tensor mục tiêu đã trộn
- num_classes (int) — số lượng lớp cho target
- multi_label (bool) — Trộn các mục tiêu đa nhãn dạng dense, làm mịn mỗi nhãn về phía 0.5.
Mixup/Cutmix áp dụng các tham số khác nhau cho từng phần tử hoặc toàn bộ batch
lớp 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 w/ Mixup/Cutmix áp dụng các tham số khác nhau cho từng phần tử hoặc toàn bộ batch
Một cài đặt Mixup được thực hiện trong khi gom các lô (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 )
Tham số
- dataset — Bộ dữ liệu để tải.
- patch_size — Kích thước patch đơn lẻ cần sử dụng.
- patch_size_choices — Danh sách các kích thước patch cho việc huấn luyện với kích thước patch thay đổi.
- patch_size_choice_probs — Xác suất cho mỗi lựa chọn kích thước patch.
- train_seq_lens — Độ dài chuỗi huấn luyện cho việc phân lô động.
- max_seq_len — Độ dài chuỗi cố định cho kiểm chứng.
- batch_size — Kích thước batch cho kiểm chứng và độ dài chuỗi huấn luyện tối đa.
- is_training — Xác định xem đây có phải là cho huấn luyện hay không (bật dynamic batching).
- mixup_fn — Hàm mixup tùy chọn.
- no_aug — Tắt tăng cường dữ liệu.
- re_prob — Xác suất xóa ngẫu nhiên.
- re_mode — Chế độ xóa ngẫu nhiên.
- re_count — Số lượng tối đa của các hình chữ nhật xóa.
- re_split — Cờ chia cắt xóa ngẫu nhiên.
- train_crop_mode — Chế độ cắt khi huấn luyện.
- scale — Phạm vi tỷ lệ cho thao tác cắt và thay đổi kích thước ngẫu nhiên.
- ratio — Phạm vi tỷ lệ khung hình cho thao tác cắt và thay đổi kích thước ngẫu nhiên.
- hflip — Xác suất lật ngang.
- vflip — Xác suất lật dọc.
- color_jitter — Hệ số jitter màu.
- color_jitter_prob — Xác suất jitter màu.
- grayscale_prob — Xác suất chuyển đổi sang thang xám.
- gaussian_blur_prob — Xác suất làm mờ Gaussian.
- auto_augment — Chính sách AutoAugment.
- num_aug_repeats — Số lần lặp tăng cường.
- num_aug_splits — Số lượng phần chia tăng cường.
- interpolation — Phương pháp nội suy.
- mean — Giá trị trung bình để chuẩn hóa.
- std — Các giá trị độ lệch chuẩn chuẩn hóa.
- channels — Số kênh của ảnh, được dùng để chuẩn hóa theo từng kênh trong prefetcher.
- crop_pct — Tỷ lệ cắt cho kiểm tra.
- crop_mode — Chế độ cắt.
- crop_border_pixels — Cắt các pixel ở viền.
- num_workers — Số lượng worker tải dữ liệu.
- distributed — Có sử dụng huấn luyện phân tán hay không.
- rank — Xếp hạng tiến trình cho huấn luyện phân tán.
- world_size — Tổng số tiến trình.
- seed — Hạt ngẫu nhiên.
- epoch — Epoch bắt đầu.
- use_prefetcher — Xác định có sử dụng prefetching hay không.
- pin_memory — Có nên ghim bộ nhớ hay không.
- img_dtype — Kiểu dữ liệu ảnh.
- device — Thiết bị để di chuyển các tensor tới.
- persistent_workers — Xác định có sử dụng các worker bền vững hay không khi
num_workerslớn hơn không. - worker_seeding — Chế độ khởi tạo hạt cho worker.
- patchify_channels_last — Bố cục phẳng theo từng patch.
True(mặc định): chỉ số kênh thay đổi nhanh nhất (mặc định của NaFlex).False: C-P-P (kênh trước — bố cục gốc của Gemma4 / HF). Được chuyển tiếp đếnPatchifyphía upstream và đến bố cục chuẩn hóa của prefetcher.
Tạo một trình tải dữ liệu với lấy mẫu độ dài chuỗi động cho huấn luyện.
class 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 )
IterableDataset là lớp bọc (wrapper) cho một dataset gốc theo kiểu map.
Trả về các lô (batch) có độ dài chuỗi thay đổi. Nó tính toán một lịch trình lô chuẩn (các cặp độ dài chuỗi, kích thước lô) một lần dựa trên kích thước tổng của bộ dữ liệu (được đệm để phân phối). Mỗi epoch, nó xáo trộn thứ tự của lịch trình chuẩn này và các chỉ số bộ dữ liệu. Điều này đảm bảo số lượng lô và mẫu mỗi epoch nhất quán trên tất cả các rank. Xử lý huấn luyện phân tán và nhiều worker.
Đặt epoch đọc an toàn cho đa tiến trình bởi các worker của DataLoader.
class 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 )
Bọc có thể gọi kết hợp trộn lẫn và tạo mục tiêu.
Cập nhật trạng thái mixup cho epoch được chỉ định.