#AugMix
데이터 증강 완벽 가이드! 과적합 방지와 모델 성능 향상의 핵심 기법. 이미지 증강: Mixup vs CutMix vs AugMix 비교, AutoAugment vs RandAugment 성능/비용. NLP 증강: Back Translation, EDA 4가지 연산, LLM 활용 최신 기법. GAN 기반 증강으로 민감도 10% 향상!

#AugMix #AutoAugment #BackTranslation #CutMix #Cutout #DataAugmentation #EDA
doyouknow.kr/631/data-aug...
데이터 증강 완벽 가이드: AI 학습 데이터가 부족할 때의 마법! Mixup, CutMix, AutoAugment 총정리
데이터 증강 완벽 가이드! 과적합 방지와 모델 성능 향상의 핵심 기법. 이미지 증강: Mixup vs CutMix vs AugMix 비교, AutoAugment vs RandAugment 성능/비용. NLP 증강: Back Translation, EDA 4가지 연산, LLM 활용 최신 기법. GAN 기반 증강으로 민감도 10% 향상!
doyouknow.kr
December 5, 2025 at 12:26 PM
disease fundus datasets. Our contributions are threefold. (1) We introduce MediAug, a comprehensive and reproducible benchmark for advanced data augmentation in medical imaging. (2) We systematically evaluate MixUp, YOCO, CropMix, CutMix, AugMix, and [4/7 of https://arxiv.org/abs/2504.18983v1]
April 29, 2025 at 5:59 AM
AugMix in PyTorch (7)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). * My post explains AugMix() about `chain_depth` argument (1). AugMix() can randomly do AugMix to an image as shown below. *It's about `chain_depth` argument (2): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) cd0a50_data = OxfordIIITPet( # `cd` is chain_depth and `a` is alpha. root="data", transform=AugMix(chain_depth=0, alpha=50.0) ) cd1a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=1, alpha=50.0) ) cd2a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=2, alpha=50.0) ) cd5a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=5, alpha=50.0) ) cd10a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=10, alpha=50.0) ) cd25a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=25, alpha=50.0) ) cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=50.0) ) s10mw50cd0a50_data = OxfordIIITPet( # `s` is severity. root="data", # `mw` is mixture_width. transform=AugMix(severity=10, mixture_width=50, chain_depth=0, alpha=50.0) ) s10mw50cd1a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=1, alpha=50.0) ) s10mw50cd2a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=2, alpha=50.0) ) s10mw50cd5a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=5, alpha=50.0) ) s10mw50cd10a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=10, alpha=50.0) ) s10mw50cd25a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=25, alpha=50.0) ) s10mw50cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=50.0) ) s1mw0cd0a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=0, alpha=0.0) ) s1mw0cd1a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=1, alpha=0.0) ) s1mw0cd2a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=2, alpha=0.0) ) s1mw0cd5a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=5, alpha=0.0) ) s1mw0cd10a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=10, alpha=0.0) ) s1mw0cd25a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=25, alpha=0.0) ) s1mw0cd50a0_data = OxfordIIITPet( root="data", transform=AugMix(severity=1, mixture_width=0, chain_depth=50, alpha=0.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=cd0a50_data, main_title="cd0a50_data") show_images1(data=cd1a50_data, main_title="cd1a50_data") show_images1(data=cd2a50_data, main_title="cd2a50_data") show_images1(data=cd5a50_data, main_title="cd5a50_data") show_images1(data=cd10a50_data, main_title="cd10a50_data") show_images1(data=cd25a50_data, main_title="cd25a50_data") show_images1(data=cd50a50_data, main_title="cd50a50_data") print() show_images1(data=s10mw50cd0a50_data, main_title="s10mw50cd0a50_data") show_images1(data=s10mw50cd1a50_data, main_title="s10mw50cd1a50_data") show_images1(data=s10mw50cd2a50_data, main_title="s10mw50cd2a50_data") show_images1(data=s10mw50cd5a50_data, main_title="s10mw50cd5a50_data") show_images1(data=s10mw50cd10a50_data, main_title="s10mw50cd10a50_data") show_images1(data=s10mw50cd25a50_data, main_title="s10mw50cd25a50_data") show_images1(data=s10mw50cd50a50_data, main_title="s10mw50cd50a50_data") print() show_images1(data=s1mw0cd0a0_data, main_title="s1mw0cd0a0_data") show_images1(data=s1mw0cd1a0_data, main_title="s1mw0cd1a0_data") show_images1(data=s1mw0cd2a0_data, main_title="s1mw0cd2a0_data") show_images1(data=s1mw0cd5a0_data, main_title="s1mw0cd5a0_data") show_images1(data=s1mw0cd10a0_data, main_title="s1mw0cd10a0_data") show_images1(data=s1mw0cd25a0_data, main_title="s1mw0cd25a0_data") show_images1(data=s1mw0cd50a0_data, main_title="s1mw0cd50a0_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="cd0a50_data", cd=0, a=50.0) show_images2(data=origin_data, main_title="cd1a50_data", cd=1, a=50.0) show_images2(data=origin_data, main_title="cd2a50_data", cd=2, a=50.0) show_images2(data=origin_data, main_title="cd5a50_data", cd=5, a=50.0) show_images2(data=origin_data, main_title="cd10a50_data", cd=10, a=50.0) show_images2(data=origin_data, main_title="cd25a50_data", cd=25, a=50.0) show_images2(data=origin_data, main_title="cd50a50_data", cd=50, a=50.0) print() show_images2(data=origin_data, main_title="s10mw50cd0a50_data", s=10, mw=50, cd=0, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd1a50_data", s=10, mw=50, cd=1, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd2a50_data", s=10, mw=50, cd=2, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd5a50_data", s=10, mw=50, cd=5, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd10a50_data", s=10, mw=50, cd=10, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd25a50_data", s=10, mw=50, cd=25, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd50a50_data", s=10, mw=50, cd=50, a=50.0) print() show_images2(data=origin_data, main_title="s1mw0cd0a0_data", s=1, mw=0, cd=0, a=0.0) show_images2(data=origin_data, main_title="s1mw0cd1a0_data", s=1, mw=0, cd=1, a=0.0) show_images2(data=origin_data, main_title="s1mw0cd2a0_data", s=1, mw=0, cd=2, a=0.0) show_images2(data=origin_data, main_title="s1mw0cd5a0_data", s=1, mw=0, cd=5, a=0.0) show_images2(data=origin_data, main_title="s1mw0cd10a0_data", s=1, mw=0, cd=10, a=0.0) show_images2(data=origin_data, main_title="s1mw0cd25a0_data", s=1, mw=0, cd=25, a=0.0) show_images2(data=origin_data, main_title="s1mw0cd50a0_data", s=1, mw=0, cd=50, a=0.0)
forem.com
April 15, 2025 at 3:31 PM
AugMix in PyTorch (4)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `mixture_width` argument (2). AugMix() can randomly do AugMix to an image as shown below. *It's about `mixture_width` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) mw0_data = OxfordIIITPet( # `mw` is mixture_width. root="data", transform=AugMix(mixture_width=0) ) mw1_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1) ) mw2_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2) ) mw5_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5) ) mw10_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10) ) mw25_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25) ) mw50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50) ) s10mw0_data = OxfordIIITPet( # `s` is severity. root="data", transform=AugMix(severity=10, mixture_width=0) ) s10mw1_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=1) ) s10mw2_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=2) ) s10mw5_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=5) ) s10mw10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=10) ) s10mw25_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=25) ) s10mw50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50) ) mw0cd50_data = OxfordIIITPet( # `cd` is chain_depth. root="data", transform=AugMix(mixture_width=0, chain_depth=50) ) mw1cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1, chain_depth=50) ) mw2cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2, chain_depth=50) ) mw5cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5, chain_depth=50) ) mw10cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10, chain_depth=50) ) mw25cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25, chain_depth=50) ) mw50cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=50) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=mw0_data, main_title="mw0_data") show_images1(data=mw1_data, main_title="mw1_data") show_images1(data=mw2_data, main_title="mw2_data") show_images1(data=mw5_data, main_title="mw5_data") show_images1(data=mw10_data, main_title="mw10_data") show_images1(data=mw25_data, main_title="mw25_data") show_images1(data=mw50_data, main_title="mw50_data") print() show_images1(data=s10mw0_data, main_title="s10mw0_data") show_images1(data=s10mw1_data, main_title="s10mw1_data") show_images1(data=s10mw2_data, main_title="s10mw2_data") show_images1(data=s10mw5_data, main_title="s10mw5_data") show_images1(data=s10mw10_data, main_title="s10mw10_data") show_images1(data=s10mw25_data, main_title="s10mw25_data") show_images1(data=s10mw50_data, main_title="s10mw50_data") print() show_images1(data=mw0cd50_data, main_title="mw0cd50_data") show_images1(data=mw1cd50_data, main_title="mw1cd50_data") show_images1(data=mw2cd50_data, main_title="mw2cd50_data") show_images1(data=mw5cd50_data, main_title="mw5cd50_data") show_images1(data=mw10cd50_data, main_title="mw10cd50_data") show_images1(data=mw25cd50_data, main_title="mw25cd50_data") show_images1(data=mw50cd50_data, main_title="mw50cd50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="mw0_data", mw=0) show_images2(data=origin_data, main_title="mw1_data", mw=1) show_images2(data=origin_data, main_title="mw2_data", mw=2) show_images2(data=origin_data, main_title="mw5_data", mw=5) show_images2(data=origin_data, main_title="mw10_data", mw=10) show_images2(data=origin_data, main_title="mw25_data", mw=25) show_images2(data=origin_data, main_title="mw50_data", mw=50) print() show_images2(data=origin_data, main_title="s10mw0_data", s=10, mw=0) show_images2(data=origin_data, main_title="s10mw1_data", s=10, mw=1) show_images2(data=origin_data, main_title="s10mw2_data", s=10, mw=2) show_images2(data=origin_data, main_title="s10mw5_data", s=10, mw=5) show_images2(data=origin_data, main_title="s10mw10_data", s=10, mw=10) show_images2(data=origin_data, main_title="s10mw25_data", s=10, mw=25) show_images2(data=origin_data, main_title="s10mw50_data", s=10, mw=50) print() show_images2(data=origin_data, main_title="mw0cd50_data", mw=0, cd=50) show_images2(data=origin_data, main_title="mw1cd50_data", mw=1, cd=50) show_images2(data=origin_data, main_title="mw2cd50_data", mw=2, cd=50) show_images2(data=origin_data, main_title="mw5cd50_data", mw=5, cd=50) show_images2(data=origin_data, main_title="mw10cd50_data", mw=10, cd=50) show_images2(data=origin_data, main_title="mw25cd50_data", mw=25, cd=50) show_images2(data=origin_data, main_title="mw50cd50_data", mw=50, cd=50)
forem.com
April 15, 2025 at 5:25 AM
AugMix in PyTorch (11)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `severity` argument (3). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). * My post explains AugMix() about `mixture_width` argument (3). * My post explains AugMix() about `chain_depth` argument (1). * My post explains AugMix() about `chain_depth` argument (2). * My post explains AugMix() about `chain_depth` argument (3). AugMix() can randomly do AugMix to an image as shown below. *It's about `alpha` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) a0_data = OxfordIIITPet( # `a` is alpha. root="data", transform=AugMix(alpha=0.0) ) a1_data = OxfordIIITPet( root="data", transform=AugMix(alpha=1.0) ) a2_data = OxfordIIITPet( root="data", transform=AugMix(alpha=2.0) ) a5_data = OxfordIIITPet( root="data", transform=AugMix(alpha=5.0) ) a10_data = OxfordIIITPet( root="data", transform=AugMix(alpha=10.0) ) a25_data = OxfordIIITPet( root="data", transform=AugMix(alpha=25.0) ) a50_data = OxfordIIITPet( root="data", transform=AugMix(alpha=50.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=a0_data, main_title="a0_data") show_images1(data=a1_data, main_title="a1_data") show_images1(data=a2_data, main_title="a2_data") show_images1(data=a5_data, main_title="a5_data") show_images1(data=a10_data, main_title="a10_data") show_images1(data=a25_data, main_title="a25_data") show_images1(data=a50_data, main_title="a50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="a0_data", a=0.0) show_images2(data=origin_data, main_title="a1_data", a=1.0) show_images2(data=origin_data, main_title="a2_data", a=2.0) show_images2(data=origin_data, main_title="a5_data", a=5.0) show_images2(data=origin_data, main_title="a10_data", a=10.0) show_images2(data=origin_data, main_title="a25_data", a=25.0) show_images2(data=origin_data, main_title="a50_data", a=50.0)
forem.com
April 4, 2025 at 4:53 AM
AugMix in PyTorch (2)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). AugMix() can randomly do AugMix to an image as shown below. *It's about `severity` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) s1_data = OxfordIIITPet( # `s` is severity. root="data", transform=AugMix(severity=1) ) s2_data = OxfordIIITPet( root="data", transform=AugMix(severity=2) ) s3_data = OxfordIIITPet( root="data", transform=AugMix(severity=3) ) s4_data = OxfordIIITPet( root="data", transform=AugMix(severity=4) ) s5_data = OxfordIIITPet( root="data", transform=AugMix(severity=5) ) s6_data = OxfordIIITPet( root="data", transform=AugMix(severity=6) ) s7_data = OxfordIIITPet( root="data", transform=AugMix(severity=7) ) s8_data = OxfordIIITPet( root="data", transform=AugMix(severity=8) ) s9_data = OxfordIIITPet( root="data", transform=AugMix(severity=9) ) s10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=s1_data, main_title="s1_data") show_images1(data=s2_data, main_title="s2_data") show_images1(data=s3_data, main_title="s3_data") show_images1(data=s4_data, main_title="s4_data") show_images1(data=s5_data, main_title="s5_data") show_images1(data=s6_data, main_title="s6_data") show_images1(data=s7_data, main_title="s7_data") show_images1(data=s8_data, main_title="s8_data") show_images1(data=s9_data, main_title="s9_data") show_images1(data=s10_data, main_title="s10_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="s1_data", s=1) show_images2(data=origin_data, main_title="s2_data", s=2) show_images2(data=origin_data, main_title="s3_data", s=3) show_images2(data=origin_data, main_title="s4_data", s=4) show_images2(data=origin_data, main_title="s5_data", s=5) show_images2(data=origin_data, main_title="s6_data", s=6) show_images2(data=origin_data, main_title="s7_data", s=7) show_images2(data=origin_data, main_title="s8_data", s=8) show_images2(data=origin_data, main_title="s9_data", s=9) show_images2(data=origin_data, main_title="s10_data", s=10)
forem.com
March 22, 2025 at 2:25 AM
AugMix in PyTorch (5)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `mixture_width` argument (1). AugMix() can randomly do AugMix to an image as shown below. *It's about `mixture_width` argument (2): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) mw0a50_data = OxfordIIITPet( # `mw` is mixture_width and `a` is alpha. root="data", transform=AugMix(mixture_width=0, alpha=50.0) ) mw1a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1, alpha=50.0) ) mw2a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2, alpha=50.0) ) mw5a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5, alpha=50.0) ) mw10a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10, alpha=50.0) ) mw25a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25, alpha=50.0) ) mw50a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=50.0) ) s10mw0cd50a50_data = OxfordIIITPet( # `s` is severity and `cd` is chain_depth. root="data", transform=AugMix(severity=10, mixture_width=0, chain_depth=50, alpha=50.0) ) s10mw1cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=1, chain_depth=50, alpha=50.0) ) s10mw2cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=2, chain_depth=50, alpha=50.0) ) s10mw5cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=5, chain_depth=50, alpha=50.0) ) s10mw10cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=10, chain_depth=50, alpha=50.0) ) s10mw25cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=25, chain_depth=50, alpha=50.0) ) s10mw50cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=50.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=mw0a50_data, main_title="mw0a50_data") show_images1(data=mw1a50_data, main_title="mw1a50_data") show_images1(data=mw2a50_data, main_title="mw2a50_data") show_images1(data=mw5a50_data, main_title="mw5a50_data") show_images1(data=mw10a50_data, main_title="mw10a50_data") show_images1(data=mw25a50_data, main_title="mw25a50_data") show_images1(data=mw50a50_data, main_title="mw50a50_data") print() show_images1(data=s10mw0cd50a50_data, main_title="s10mw0cd50a50_data") show_images1(data=s10mw1cd50a50_data, main_title="s10mw1cd50a50_data") show_images1(data=s10mw2cd50a50_data, main_title="s10mw2cd50a50_data") show_images1(data=s10mw5cd50a50_data, main_title="s10mw5cd50a50_data") show_images1(data=s10mw10cd50a50_data, main_title="s10mw10cd50a50_data") show_images1(data=s10mw25cd50a50_data, main_title="s10mw25cd50a50_data") show_images1(data=s10mw50cd50a50_data, main_title="s10mw50cd50a50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="mw0a50_data", mw=0, a=50.0) show_images2(data=origin_data, main_title="mw1a50_data", mw=1, a=50.0) show_images2(data=origin_data, main_title="mw2a50_data", mw=2, a=50.0) show_images2(data=origin_data, main_title="mw5a50_data", mw=5, a=50.0) show_images2(data=origin_data, main_title="mw10a50_data", mw=10, a=50.0) show_images2(data=origin_data, main_title="mw25a50_data", mw=25, a=50.0) show_images2(data=origin_data, main_title="mw50a50_data", mw=50, a=50.0) print() show_images2(data=origin_data, main_title="s10mw0cd50a50_data", s=10, mw=0, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw1cd50a50_data", s=10, mw=1, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw2cd50a50_data", s=10, mw=2, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw5cd50a50_data", s=10, mw=5, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw10cd50a50_data", s=10, mw=10, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw25cd50a50_data", s=10, mw=25, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd50a50_data", s=10, mw=50, cd=50, a=50.0)
forem.com
March 22, 2025 at 12:27 AM
AugMix in PyTorch (4)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). AugMix() can randomly do AugMix to an image as shown below. *It's about `mixture_width` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) mw0_data = OxfordIIITPet( # `mw` is mixture_width. root="data", transform=AugMix(mixture_width=0) ) mw1_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1) ) mw2_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2) ) mw5_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5) ) mw10_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10) ) mw25_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25) ) mw50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50) ) s10mw0_data = OxfordIIITPet( # `s` is severity. root="data", transform=AugMix(severity=10, mixture_width=0) ) s10mw1_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=1) ) s10mw2_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=2) ) s10mw5_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=5) ) s10mw10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=10) ) s10mw25_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=25) ) s10mw50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50) ) mw0cd50_data = OxfordIIITPet( # `cd` is chain_depth. root="data", transform=AugMix(mixture_width=0, chain_depth=50) ) mw1cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1, chain_depth=50) ) mw2cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2, chain_depth=50) ) mw5cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5, chain_depth=50) ) mw10cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10, chain_depth=50) ) mw25cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25, chain_depth=50) ) mw50cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=50) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=mw0_data, main_title="mw0_data") show_images1(data=mw1_data, main_title="mw1_data") show_images1(data=mw2_data, main_title="mw2_data") show_images1(data=mw5_data, main_title="mw5_data") show_images1(data=mw10_data, main_title="mw10_data") show_images1(data=mw25_data, main_title="mw25_data") show_images1(data=mw50_data, main_title="mw50_data") print() show_images1(data=s10mw0_data, main_title="s10mw0_data") show_images1(data=s10mw1_data, main_title="s10mw1_data") show_images1(data=s10mw2_data, main_title="s10mw2_data") show_images1(data=s10mw5_data, main_title="s10mw5_data") show_images1(data=s10mw10_data, main_title="s10mw10_data") show_images1(data=s10mw25_data, main_title="s10mw25_data") show_images1(data=s10mw50_data, main_title="s10mw50_data") print() show_images1(data=mw0cd50_data, main_title="mw0cd50_data") show_images1(data=mw1cd50_data, main_title="mw1cd50_data") show_images1(data=mw2cd50_data, main_title="mw2cd50_data") show_images1(data=mw5cd50_data, main_title="mw5cd50_data") show_images1(data=mw10cd50_data, main_title="mw10cd50_data") show_images1(data=mw25cd50_data, main_title="mw25cd50_data") show_images1(data=mw50cd50_data, main_title="mw50cd50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="mw0_data", mw=0) show_images2(data=origin_data, main_title="mw1_data", mw=1) show_images2(data=origin_data, main_title="mw2_data", mw=2) show_images2(data=origin_data, main_title="mw5_data", mw=5) show_images2(data=origin_data, main_title="mw10_data", mw=10) show_images2(data=origin_data, main_title="mw25_data", mw=25) show_images2(data=origin_data, main_title="mw50_data", mw=50) print() show_images2(data=origin_data, main_title="s10mw0_data", s=10, mw=0) show_images2(data=origin_data, main_title="s10mw1_data", s=10, mw=1) show_images2(data=origin_data, main_title="s10mw2_data", s=10, mw=2) show_images2(data=origin_data, main_title="s10mw5_data", s=10, mw=5) show_images2(data=origin_data, main_title="s10mw10_data", s=10, mw=10) show_images2(data=origin_data, main_title="s10mw25_data", s=10, mw=25) show_images2(data=origin_data, main_title="s10mw50_data", s=10, mw=50) print() show_images2(data=origin_data, main_title="mw0cd50_data", mw=0, cd=50) show_images2(data=origin_data, main_title="mw1cd50_data", mw=1, cd=50) show_images2(data=origin_data, main_title="mw2cd50_data", mw=2, cd=50) show_images2(data=origin_data, main_title="mw5cd50_data", mw=5, cd=50) show_images2(data=origin_data, main_title="mw10cd50_data", mw=10, cd=50) show_images2(data=origin_data, main_title="mw25cd50_data", mw=25, cd=50) show_images2(data=origin_data, main_title="mw50cd50_data", mw=50, cd=50)
forem.com
March 19, 2025 at 2:27 AM
Haoyang Li, Wei Chen, Xiaojin Zhang
Fed-AugMix: Balancing Privacy and Utility via Data Augmentation
https://arxiv.org/abs/2412.13818
December 19, 2024 at 5:53 AM
AugMix in PyTorch (6)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). * My post explains AugMix() about `chain_depth` argument (2). AugMix() can randomly do AugMix to an image as shown below. *It's about `chain_depth` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) cd0_data = OxfordIIITPet( # `cd` is chain_depth. root="data", transform=AugMix(chain_depth=0) ) cd1_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=1) ) cd2_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=2) ) cd5_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=5) ) cd10_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=10) ) cd25_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=25) ) cd50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50) ) cdn1_data = OxfordIIITPet( # `n` is negative. root="data", transform=AugMix(chain_depth=-1) ) cdn2_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=-2) ) cdn5_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=-5) ) cdn10_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=-10) ) cdn25_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=-25) ) cdn50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=-50) ) s10cd0_data = OxfordIIITPet( # `s` is severity. root="data", transform=AugMix(severity=10, chain_depth=0) ) s10cd1_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=1) ) s10cd2_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=2) ) s10cd5_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=5) ) s10cd10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=10) ) s10cd25_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=25) ) s10cd50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=50) ) mw50cd0_data = OxfordIIITPet( # `mw` is mixture_width. root="data", transform=AugMix(mixture_width=50, chain_depth=0) ) mw50cd1_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=1) ) mw50cd2_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=2) ) mw50cd5_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=5) ) mw50cd10_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=10) ) mw50cd25_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=25) ) mw50cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=50) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=cd0_data, main_title="cd0_data") show_images1(data=cd1_data, main_title="cd1_data") show_images1(data=cd2_data, main_title="cd2_data") show_images1(data=cd5_data, main_title="cd5_data") show_images1(data=cd10_data, main_title="cd10_data") show_images1(data=cd25_data, main_title="cd25_data") show_images1(data=cd50_data, main_title="cd50_data") print() show_images1(data=cd0_data, main_title="cd0_data") show_images1(data=cdn1_data, main_title="cdn1_data") show_images1(data=cdn2_data, main_title="cdn2_data") show_images1(data=cdn5_data, main_title="cdn5_data") show_images1(data=cdn10_data, main_title="cdn10_data") show_images1(data=cdn25_data, main_title="cdn25_data") show_images1(data=cdn50_data, main_title="cdn50_data") print() show_images1(data=s10cd0_data, main_title="s10cd0_data") show_images1(data=s10cd1_data, main_title="s10cd1_data") show_images1(data=s10cd2_data, main_title="s10cd2_data") show_images1(data=s10cd5_data, main_title="s10cd5_data") show_images1(data=s10cd10_data, main_title="s10cd10_data") show_images1(data=s10cd25_data, main_title="s10cd25_data") show_images1(data=s10cd50_data, main_title="s10cd50_data") print() show_images1(data=mw50cd0_data, main_title="mw50cd0_data") show_images1(data=mw50cd1_data, main_title="mw50cd1_data") show_images1(data=mw50cd2_data, main_title="mw50cd2_data") show_images1(data=mw50cd5_data, main_title="mw50cd5_data") show_images1(data=mw50cd10_data, main_title="mw50cd10_data") show_images1(data=mw50cd25_data, main_title="mw50cd25_data") show_images1(data=mw50cd50_data, main_title="mw50cd50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="cd0_data", cd=0) show_images2(data=origin_data, main_title="cd1_data", cd=1) show_images2(data=origin_data, main_title="cd2_data", cd=2) show_images2(data=origin_data, main_title="cd5_data", cd=5) show_images2(data=origin_data, main_title="cd10_data", cd=10) show_images2(data=origin_data, main_title="cd25_data", cd=25) show_images2(data=origin_data, main_title="cd50_data", cd=50) print() show_images2(data=origin_data, main_title="cd0_data", cd=0) show_images2(data=origin_data, main_title="cdn1_data", cd=-1) show_images2(data=origin_data, main_title="cdn2_data", cd=-2) show_images2(data=origin_data, main_title="cdn5_data", cd=-5) show_images2(data=origin_data, main_title="cdn10_data", cd=-10) show_images2(data=origin_data, main_title="cdn25_data", cd=-25) show_images2(data=origin_data, main_title="cdn50_data", cd=-50) print() show_images2(data=origin_data, main_title="s10cd0_data", s=10, cd=0) show_images2(data=origin_data, main_title="s10cd1_data", s=10, cd=1) show_images2(data=origin_data, main_title="s10cd2_data", s=10, cd=2) show_images2(data=origin_data, main_title="s10cd5_data", s=10, cd=5) show_images2(data=origin_data, main_title="s10cd10_data", s=10, cd=10) show_images2(data=origin_data, main_title="s10cd25_data", s=10, cd=25) show_images2(data=origin_data, main_title="s10cd50_data", s=10, cd=50) print() show_images2(data=origin_data, main_title="mw50cd0_data", mw=50, cd=0) show_images2(data=origin_data, main_title="mw50cd1_data", mw=50, cd=1) show_images2(data=origin_data, main_title="mw50cd2_data", mw=50, cd=2) show_images2(data=origin_data, main_title="mw50cd5_data", mw=50, cd=5) show_images2(data=origin_data, main_title="mw50cd10_data", mw=50, cd=10) show_images2(data=origin_data, main_title="mw50cd25_data", mw=50, cd=25) show_images2(data=origin_data, main_title="mw50cd50_data", mw=50, cd=50)
dev.to
April 15, 2025 at 3:14 PM
AugMix in PyTorch (13)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `severity` argument (3). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). * My post explains AugMix() about `mixture_width` argument (3). * My post explains AugMix() about `chain_depth` argument (1). * My post explains AugMix() about `chain_depth` argument (2). * My post explains AugMix() about `chain_depth` argument (3). * My post explains AugMix() about `alpha` argument (1). * My post explains AugMix() about `alpha` argument (2). AugMix() can randomly do AugMix to an image as shown below. *It's about `alpha` argument (3): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) cd50a0_data = OxfordIIITPet( # `cd` is chain_depth and `a` is alpha. root="data", transform=AugMix(chain_depth=50, alpha=0.0) ) cd50a1_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=1.0) ) cd50a2_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=2.0) ) cd50a5_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=5.0) ) cd50a10_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=10.0) ) cd50a25_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=25.0) ) cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(chain_depth=50, alpha=50.0) ) s10mw50cd50a0_data = OxfordIIITPet( # `s` is severity. root="data", # `mw` is mixture_width. transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=0.0) ) s10mw50cd50a1_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=1.0) ) s10mw50cd50a2_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=2.0) ) s10mw50cd50a5_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=5.0) ) s10mw50cd50a10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=10.0) ) s10mw50cd50a25_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=25.0) ) s10mw50cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=50.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=cd50a0_data, main_title="cd50a0_data") show_images1(data=cd50a1_data, main_title="cd50a1_data") show_images1(data=cd50a2_data, main_title="cd50a2_data") show_images1(data=cd50a5_data, main_title="cd50a5_data") show_images1(data=cd50a10_data, main_title="cd50a10_data") show_images1(data=cd50a25_data, main_title="cd50a25_data") show_images1(data=cd50a50_data, main_title="cd50a50_data") print() show_images1(data=s10mw50cd50a0_data, main_title="s10mw50cd50a0_data") show_images1(data=s10mw50cd50a1_data, main_title="s10mw50cd50a1_data") show_images1(data=s10mw50cd50a2_data, main_title="s10mw50cd50a2_data") show_images1(data=s10mw50cd50a5_data, main_title="s10mw50cd50a5_data") show_images1(data=s10mw50cd50a10_data, main_title="s10mw50cd50a10_data") show_images1(data=s10mw50cd50a25_data, main_title="s10mw50cd50a25_data") show_images1(data=s10mw50cd50a50_data, main_title="s10mw50cd50a50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="cd50a0_data", cd=50, a=0.0) show_images2(data=origin_data, main_title="cd50a1_data", cd=50, a=1.0) show_images2(data=origin_data, main_title="cd50a2_data", cd=50, a=2.0) show_images2(data=origin_data, main_title="cd50a5_data", cd=50, a=5.0) show_images2(data=origin_data, main_title="cd50a10_data", cd=50, a=10.0) show_images2(data=origin_data, main_title="cd50a25_data", cd=50, a=25.0) show_images2(data=origin_data, main_title="cd50a50_data", cd=50, a=50.0) print() show_images2(data=origin_data, main_title="s10mw50cd50a0_data", s=10, mw=50, cd=50, a=0.0) show_images2(data=origin_data, main_title="s10mw50cd50a1_data", s=10, mw=50, cd=50, a=1.0) show_images2(data=origin_data, main_title="s10mw50cd50a2_data", s=10, mw=50, cd=50, a=2.0) show_images2(data=origin_data, main_title="s10mw50cd50a5_data", s=10, mw=50, cd=50, a=5.0) show_images2(data=origin_data, main_title="s10mw50cd50a10_data", s=10, mw=50, cd=50, a=10.0) show_images2(data=origin_data, main_title="s10mw50cd50a25_data", s=10, mw=50, cd=50, a=25.0) show_images2(data=origin_data, main_title="s10mw50cd50a50_data", s=10, mw=50, cd=50, a=50.0)
dev.to
April 10, 2025 at 9:03 PM
AugMix in PyTorch (12)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `severity` argument (3). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). * My post explains AugMix() about `mixture_width` argument (3). * My post explains AugMix() about `chain_depth` argument (1). * My post explains AugMix() about `chain_depth` argument (2). * My post explains AugMix() about `chain_depth` argument (3). * My post explains AugMix() about `alpha` argument (1). AugMix() can randomly do AugMix to an image as shown below. *It's about `alpha` argument (2): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) s10a0_data = OxfordIIITPet( # `s` is severity and `a` is alpha. root="data", transform=AugMix(severity=10, alpha=0.0) ) s10a1_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, alpha=1.0) ) s10a2_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, alpha=2.0) ) s10a5_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, alpha=5.0) ) s10a10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, alpha=10.0) ) s10a25_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, alpha=25.0) ) s10a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, alpha=50.0) ) mw50a0_data = OxfordIIITPet( # `mw` is mixture_width. root="data", transform=AugMix(mixture_width=50, alpha=0.0) ) mw50a1_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=1.0) ) mw50a2_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=2.0) ) mw50a5_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=5.0) ) mw50a10_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=10.0) ) mw50a25_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=25.0) ) mw50a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=50.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=s10a0_data, main_title="s10a0_data") show_images1(data=s10a1_data, main_title="s10a1_data") show_images1(data=s10a2_data, main_title="s10a2_data") show_images1(data=s10a5_data, main_title="s10a5_data") show_images1(data=s10a10_data, main_title="s10a10_data") show_images1(data=s10a25_data, main_title="s10a25_data") show_images1(data=s10a50_data, main_title="s10a50_data") print() show_images1(data=mw50a0_data, main_title="mw50a0_data") show_images1(data=mw50a1_data, main_title="mw50a1_data") show_images1(data=mw50a2_data, main_title="mw50a2_data") show_images1(data=mw50a5_data, main_title="mw50a5_data") show_images1(data=mw50a10_data, main_title="mw50a10_data") show_images1(data=mw50a25_data, main_title="mw50a25_data") show_images1(data=mw50a50_data, main_title="mw50a50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="s10a0_data", s=10, a=0.0) show_images2(data=origin_data, main_title="s10a1_data", s=10, a=1.0) show_images2(data=origin_data, main_title="s10a2_data", s=10, a=2.0) show_images2(data=origin_data, main_title="s10a5_data", s=10, a=5.0) show_images2(data=origin_data, main_title="s10a10_data", s=10, a=10.0) show_images2(data=origin_data, main_title="s10a25_data", s=10, a=25.0) show_images2(data=origin_data, main_title="s10a50_data", s=10, a=50.0) print() show_images2(data=origin_data, main_title="mw50a0_data", mw=50, a=0.0) show_images2(data=origin_data, main_title="mw50a1_data", mw=50, a=1.0) show_images2(data=origin_data, main_title="mw50a2_data", mw=50, a=2.0) show_images2(data=origin_data, main_title="mw50a5_data", mw=50, a=5.0) show_images2(data=origin_data, main_title="mw50a10_data", mw=50, a=10.0) show_images2(data=origin_data, main_title="mw50a25_data", mw=50, a=25.0) show_images2(data=origin_data, main_title="mw50a50_data", mw=50, a=50.0)
dev.to
April 8, 2025 at 2:47 AM
AugMix in PyTorch (11)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `severity` argument (3). * My post explains AugMix() about `mixture_width` argument (1). * My post explains AugMix() about `mixture_width` argument (2). * My post explains AugMix() about `mixture_width` argument (3). * My post explains AugMix() about `chain_depth` argument (1). * My post explains AugMix() about `chain_depth` argument (2). * My post explains AugMix() about `chain_depth` argument (3). AugMix() can randomly do AugMix to an image as shown below. *It's about `alpha` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) a0_data = OxfordIIITPet( # `a` is alpha. root="data", transform=AugMix(alpha=0.0) ) a1_data = OxfordIIITPet( root="data", transform=AugMix(alpha=1.0) ) a2_data = OxfordIIITPet( root="data", transform=AugMix(alpha=2.0) ) a5_data = OxfordIIITPet( root="data", transform=AugMix(alpha=5.0) ) a10_data = OxfordIIITPet( root="data", transform=AugMix(alpha=10.0) ) a25_data = OxfordIIITPet( root="data", transform=AugMix(alpha=25.0) ) a50_data = OxfordIIITPet( root="data", transform=AugMix(alpha=50.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=a0_data, main_title="a0_data") show_images1(data=a1_data, main_title="a1_data") show_images1(data=a2_data, main_title="a2_data") show_images1(data=a5_data, main_title="a5_data") show_images1(data=a10_data, main_title="a10_data") show_images1(data=a25_data, main_title="a25_data") show_images1(data=a50_data, main_title="a50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="a0_data", a=0.0) show_images2(data=origin_data, main_title="a1_data", a=1.0) show_images2(data=origin_data, main_title="a2_data", a=2.0) show_images2(data=origin_data, main_title="a5_data", a=5.0) show_images2(data=origin_data, main_title="a10_data", a=10.0) show_images2(data=origin_data, main_title="a25_data", a=25.0) show_images2(data=origin_data, main_title="a50_data", a=50.0)
dev.to
April 4, 2025 at 4:42 AM
AugMix in PyTorch (5)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AugMix() about `mixture_width` argument (1). AugMix() can randomly do AugMix to an image as shown below. *It's about `mixture_width` argument (2): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) mw0a50_data = OxfordIIITPet( # `mw` is mixture_width and `a` is alpha. root="data", transform=AugMix(mixture_width=0, alpha=50.0) ) mw1a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1, alpha=50.0) ) mw2a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2, alpha=50.0) ) mw5a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5, alpha=50.0) ) mw10a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10, alpha=50.0) ) mw25a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25, alpha=50.0) ) mw50a50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, alpha=50.0) ) s10mw0cd50a50_data = OxfordIIITPet( # `s` is severity and `cd` is chain_depth. root="data", transform=AugMix(severity=10, mixture_width=0, chain_depth=50, alpha=50.0) ) s10mw1cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=1, chain_depth=50, alpha=50.0) ) s10mw2cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=2, chain_depth=50, alpha=50.0) ) s10mw5cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=5, chain_depth=50, alpha=50.0) ) s10mw10cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=10, chain_depth=50, alpha=50.0) ) s10mw25cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=25, chain_depth=50, alpha=50.0) ) s10mw50cd50a50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50, chain_depth=50, alpha=50.0) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=mw0a50_data, main_title="mw0a50_data") show_images1(data=mw1a50_data, main_title="mw1a50_data") show_images1(data=mw2a50_data, main_title="mw2a50_data") show_images1(data=mw5a50_data, main_title="mw5a50_data") show_images1(data=mw10a50_data, main_title="mw10a50_data") show_images1(data=mw25a50_data, main_title="mw25a50_data") show_images1(data=mw50a50_data, main_title="mw50a50_data") print() show_images1(data=s10mw0cd50a50_data, main_title="s10mw0cd50a50_data") show_images1(data=s10mw1cd50a50_data, main_title="s10mw1cd50a50_data") show_images1(data=s10mw2cd50a50_data, main_title="s10mw2cd50a50_data") show_images1(data=s10mw5cd50a50_data, main_title="s10mw5cd50a50_data") show_images1(data=s10mw10cd50a50_data, main_title="s10mw10cd50a50_data") show_images1(data=s10mw25cd50a50_data, main_title="s10mw25cd50a50_data") show_images1(data=s10mw50cd50a50_data, main_title="s10mw50cd50a50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="mw0a50_data", mw=0, a=50.0) show_images2(data=origin_data, main_title="mw1a50_data", mw=1, a=50.0) show_images2(data=origin_data, main_title="mw2a50_data", mw=2, a=50.0) show_images2(data=origin_data, main_title="mw5a50_data", mw=5, a=50.0) show_images2(data=origin_data, main_title="mw10a50_data", mw=10, a=50.0) show_images2(data=origin_data, main_title="mw25a50_data", mw=25, a=50.0) show_images2(data=origin_data, main_title="mw50a50_data", mw=50, a=50.0) print() show_images2(data=origin_data, main_title="s10mw0cd50a50_data", s=10, mw=0, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw1cd50a50_data", s=10, mw=1, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw2cd50a50_data", s=10, mw=2, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw5cd50a50_data", s=10, mw=5, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw10cd50a50_data", s=10, mw=10, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw25cd50a50_data", s=10, mw=25, cd=50, a=50.0) show_images2(data=origin_data, main_title="s10mw50cd50a50_data", s=10, mw=50, cd=50, a=50.0)
dev.to
March 22, 2025 at 12:24 AM
AugMix in PyTorch (4)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about no arguments and `full` argument. * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). AugMix() can randomly do AugMix to an image as shown below. *It's about `mixture_width` argument (1): from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode origin_data = OxfordIIITPet( root="data", transform=None ) mw0_data = OxfordIIITPet( # `mw` is mixture_width. root="data", transform=AugMix(mixture_width=0) ) mw1_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1) ) mw2_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2) ) mw5_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5) ) mw10_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10) ) mw25_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25) ) mw50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50) ) s10mw0_data = OxfordIIITPet( # `s` is severity. root="data", transform=AugMix(severity=10, mixture_width=0) ) s10mw1_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=1) ) s10mw2_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=2) ) s10mw5_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=5) ) s10mw10_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=10) ) s10mw25_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=25) ) s10mw50_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, mixture_width=50) ) mw0cd50_data = OxfordIIITPet( # `cd` is chain_depth. root="data", transform=AugMix(mixture_width=0, chain_depth=50) ) mw1cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=1, chain_depth=50) ) mw2cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=2, chain_depth=50) ) mw5cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=5, chain_depth=50) ) mw10cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=10, chain_depth=50) ) mw25cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=25, chain_depth=50) ) mw50cd50_data = OxfordIIITPet( root="data", transform=AugMix(mixture_width=50, chain_depth=50) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=mw0_data, main_title="mw0_data") show_images1(data=mw1_data, main_title="mw1_data") show_images1(data=mw2_data, main_title="mw2_data") show_images1(data=mw5_data, main_title="mw5_data") show_images1(data=mw10_data, main_title="mw10_data") show_images1(data=mw25_data, main_title="mw25_data") show_images1(data=mw50_data, main_title="mw50_data") print() show_images1(data=s10mw0_data, main_title="s10mw0_data") show_images1(data=s10mw1_data, main_title="s10mw1_data") show_images1(data=s10mw2_data, main_title="s10mw2_data") show_images1(data=s10mw5_data, main_title="s10mw5_data") show_images1(data=s10mw10_data, main_title="s10mw10_data") show_images1(data=s10mw25_data, main_title="s10mw25_data") show_images1(data=s10mw50_data, main_title="s10mw50_data") print() show_images1(data=mw0cd50_data, main_title="mw0cd50_data") show_images1(data=mw1cd50_data, main_title="mw1cd50_data") show_images1(data=mw2cd50_data, main_title="mw2cd50_data") show_images1(data=mw5cd50_data, main_title="mw5cd50_data") show_images1(data=mw10cd50_data, main_title="mw10cd50_data") show_images1(data=mw25cd50_data, main_title="mw25cd50_data") show_images1(data=mw50cd50_data, main_title="mw50cd50_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="mw0_data", mw=0) show_images2(data=origin_data, main_title="mw1_data", mw=1) show_images2(data=origin_data, main_title="mw2_data", mw=2) show_images2(data=origin_data, main_title="mw5_data", mw=5) show_images2(data=origin_data, main_title="mw10_data", mw=10) show_images2(data=origin_data, main_title="mw25_data", mw=25) show_images2(data=origin_data, main_title="mw50_data", mw=50) print() show_images2(data=origin_data, main_title="s10mw0_data", s=10, mw=0) show_images2(data=origin_data, main_title="s10mw1_data", s=10, mw=1) show_images2(data=origin_data, main_title="s10mw2_data", s=10, mw=2) show_images2(data=origin_data, main_title="s10mw5_data", s=10, mw=5) show_images2(data=origin_data, main_title="s10mw10_data", s=10, mw=10) show_images2(data=origin_data, main_title="s10mw25_data", s=10, mw=25) show_images2(data=origin_data, main_title="s10mw50_data", s=10, mw=50) print() show_images2(data=origin_data, main_title="mw0cd50_data", mw=0, cd=50) show_images2(data=origin_data, main_title="mw1cd50_data", mw=1, cd=50) show_images2(data=origin_data, main_title="mw2cd50_data", mw=2, cd=50) show_images2(data=origin_data, main_title="mw5cd50_data", mw=5, cd=50) show_images2(data=origin_data, main_title="mw10cd50_data", mw=10, cd=50) show_images2(data=origin_data, main_title="mw25cd50_data", mw=25, cd=50) show_images2(data=origin_data, main_title="mw50cd50_data", mw=50, cd=50)
dev.to
March 19, 2025 at 2:24 AM
AugMix in PyTorch (1)
Buy Me a Coffee☕ *Memos: * My post explains AugMix() about `severity` argument (1). * My post explains AugMix() about `severity` argument (2). * My post explains AutoAugment(). * My post explains RandAugment() about `num_ops` and `fill` argument. * My post explains TrivialAugmentWide(). * My post explains OxfordIIITPet(). AugMix() can randomly do AugMix to an image as shown below. *It's about no arguments and `full` argument: *Memos: * The 1st argument for initialization is `severity`(Optional-Default:`3`-Type:`int`). *It must be `1 <= x <= 10`. * The 2nd argument for initialization is `mixture_width`(Optional-Default:`3`-Type:`int`). * The 3rd argument for initialization is `chain_depth`(Optional-Default:`-1`-Type:`int`). *If it's `x <= 0`, it's randomly taken from the interval `[1, 3]`. * The 4th argument for initialization is `alpha`(Optional-Default:`1.0`-Type:`float`). *It must be `1 <= x`. * The 5th argument for initialization is `all_ops`(Optional-Default:`True`-Type:`bool`). *It must be `1 <= x`. * The 6th argument for initialization is `interpolation`(Optional-Default:`InterpolationMode.NEAREST`-Type:InterpolationMode). *If the input is a tensor, only `InterpolationMode.NEAREST` and `InterpolationMode.BILINEAR` can be set to it. * The 7th argument for initialization is `fill`(Optional-Default:`0`-Type:`int`, `float` or `tuple`/`list`(`int` or `float`)): *Memos: * It can change the background of an image. *The background can be seen when doing AugMix to an image. * A tuple/list must be the 1D with 1 or 3 elements. * If all values are `x <= 0`, it's black. * If all values are `255 <= x`, it's white. * The 1st argument is `img`(Required-Type:`PIL Image` or `tensor`(`int`)): *Memos: * A tensor must be 2D or 3D. * Don't use `img=`. * `v2` is recommended to use according to V1 or V2? Which one should I use?. from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import AugMix from torchvision.transforms.functional import InterpolationMode am = AugMix() am = AugMix(severity=3, mixture_width=3, chain_depth=-1, alpha=1.0, all_ops=True, interpolation=InterpolationMode.BILINEAR, fill=None) am # AugMix(interpolation=InterpolationMode.BILINEAR, severity=3, # mixture_width=3, chain_depth=-1, alpha=1.0, all_ops=True) am.severity # 3 am.mixture_width # 3 am.chain_depth # -1 am.alpha # 1.0 am.all_ops # True am.interpolation # <InterpolationMode.BILINEAR: 'bilinear'> print(am.fill) # None origin_data = OxfordIIITPet( root="data", transform=None ) noargs_data = OxfordIIITPet( # `noargs` is no arguments. root="data", transform=AugMix() ) aoFalse_data = OxfordIIITPet( # `ao` is all_ops. root="data", transform=AugMix(all_ops=False) # transform=AugMix(severity=3, mixture_width=3, chain_depth=-1, # alpha=1.0, all_ops=True, # interpolation=InterpolationMode.BILINEAR, # fill=None) ) s10cd25fgray_data = OxfordIIITPet( # `s` is severity and `cd` is chain_depth. root="data", # `f` is fill. transform=AugMix(severity=10, chain_depth=25, fill=150) ) s10cd25fpurple_data = OxfordIIITPet( root="data", transform=AugMix(severity=10, chain_depth=25, fill=[160, 32, 240]) ) import matplotlib.pyplot as plt def show_images1(data, main_title=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images1(data=origin_data, main_title="origin_data") print() show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") show_images1(data=noargs_data, main_title="noargs_data") print() show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") show_images1(data=aoFalse_data, main_title="aoFalse_data") print() show_images1(data=s10cd25fgray_data, main_title="s10cd25fgray_data") show_images1(data=s10cd25fpurple_data, main_title="s10cd25fpurple_data") # ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓ def show_images2(data, main_title=None, s=3, mw=3, cd=-1, a=1.0, ao=True, ip=InterpolationMode.BILINEAR, f=None): plt.figure(figsize=[10, 5]) plt.suptitle(t=main_title, y=0.8, fontsize=14) if main_title != "origin_data": for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) am = AugMix(severity=s, mixture_width=mw, chain_depth=cd, alpha=a, all_ops=ao, interpolation=ip, fill=f) plt.imshow(X=am(im)) plt.xticks(ticks=[]) plt.yticks(ticks=[]) else: for i, (im, _) in zip(range(1, 6), data): plt.subplot(1, 5, i) plt.imshow(X=im) plt.xticks(ticks=[]) plt.yticks(ticks=[]) plt.tight_layout() plt.show() show_images2(data=origin_data, main_title="origin_data") print() show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") show_images2(data=origin_data, main_title="noargs_data") print() show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) show_images2(data=origin_data, main_title="aoFalse_data", ao=False) print() show_images2(data=origin_data, main_title="s10cd25fgray_data", s=10, cd=25, f=150) show_images2(data=origin_data, main_title="s10cd25fpurple_data", s=10, cd=25, f=[160, 32, 240])
dev.to
March 16, 2025 at 2:07 PM