برنامه نویسی

ColorJitter در PyTorch – انجمن DEV

برای من یک قهوه بخر☕

ColorJitter() می تواند روشنایی، کنتراست، اشباع و رنگ صفر یا بیشتر تصاویر را مطابق شکل زیر تغییر دهد:

*یادداشت ها:

  • آرگومان اول برای مقداردهی اولیه است brightness(اختیاری-پیش فرض:0-نوع:float یا tuple/list(float)): *یادداشت ها:
    • این محدوده روشنایی است [min, max].
    • باید باشد 0 <= x.
    • یک مقدار واحد به [max(0, 1-brightness), 1+brightness].
    • یک تاپل یا لیست باید 1 بعدی با 2 عنصر باشد. * عنصر اول باید کمتر یا مساوی با عنصر دوم باشد.
  • آرگومان دوم برای مقداردهی اولیه است contrast(اختیاری-پیش فرض:0-نوع:float یا tuple/list(float)): *یادداشت ها:
    • این محدوده کنتراست است [min, max].
    • باید باشد 0 <= x.
    • یک مقدار واحد به [max(0, 1-contrast), 1+contrast].
    • یک تاپل یا لیست باید 1 بعدی با 2 عنصر باشد. * عنصر اول باید کمتر یا مساوی با عنصر دوم باشد.
  • آرگومان سوم برای مقداردهی اولیه است saturation(اختیاری-پیش فرض:0-نوع:float یا tuple/list(float)): *یادداشت ها:
    • این محدوده اشباع است [min, max].
    • باید باشد 0 <= x.
    • یک مقدار واحد به [max(0, 1-saturation), 1+saturation].
    • یک تاپل یا لیست باید 1 بعدی با 2 عنصر باشد. * عنصر اول باید کمتر یا مساوی با عنصر دوم باشد.
  • آرگومان چهارم برای مقداردهی اولیه است hue(اختیاری-پیش فرض:0-نوع:float یا tuple/list(float)): *یادداشت ها:
    • این محدوده رنگ است [min, max].
    • باید باشد -0.5 <= x <= 0.5.
    • یک مقدار واحد به [-hue, +hue].
    • یک تاپل یا لیست باید 1 بعدی با 2 عنصر باشد. * عنصر اول باید کمتر یا مساوی با عنصر دوم باشد.
  • استدلال اول این است img(الزامی-نوع:PIL Image یا tensor/tuple/list(int یا float)): *یادداشت ها:
    • باید دو بعدی یا سه بعدی باشد. برای سه بعدی، عمیق ترین D باید یک عنصر داشته باشد.
    • استفاده نکنید img=.
  • v2 توصیه می شود با توجه به V1 یا V2 استفاده شود؟ از کدام یک استفاده کنم؟
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import ColorJitter

colorjitter = ColorJitter()
colorjitter = ColorJitter(brightness=0,
                          contrast=0,
                          saturation=0,
                          hue=0)
colorjitter = ColorJitter(brightness=(1.0, 2.0),
                          contrast=(1.0, 1.0),
                          saturation=(1.0, 1.0),
                          hue=(0.0, 0.0))
colorjitter
# ColorJitter()

print(colorjitter.brightness)
# None

print(colorjitter.contrast)
# None

print(colorjitter.saturation)
# None

print(colorjitter.hue)
# None

origin_data = OxfordIIITPet(
    root="data",
    transform=None
    # transform=ColorJitter()
    # colorjitter = ColorJitter(brightness=0,
    #                           contrast=0,
    #                           saturation=0,
    #                           hue=0)
    # transform=ColorJitter(brightness=(1.0, 1.0),
    #                       contrast=(1.0, 1.0),
    #                       saturation=(1.0, 1.0),
    #                       hue=(0.0, 0.0))
)

p2bright_data = OxfordIIITPet( # `p` is plus.
    root="data",
    transform=ColorJitter(brightness=2.0)
    # transform=ColorJitter(brightness=(0.0, 3.0))
)

p2p2bright_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(brightness=(2.0, 2.0))
)

p05p05bright_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(brightness=(0.5, 0.5))
)

p2contra_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(contrast=2.0)
    # transform=ColorJitter(contrast=(0.0, 3.0))
)

p2p2contra_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(contrast=(2.0, 2.0))
)

p05p05contra_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(contrast=(0.5, 0.5))
)

p2satura_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(saturation=2.0)
    # transform=ColorJitter(saturation=(0.0, 3.0))
)

p2p2satura_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(saturation=(2.0, 2.0))
)

p05p05satura_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(saturation=(0.5, 0.5))
)

p05hue_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(hue=0.5)
    # transform=ColorJitter(hue=(-0.5, 0.5))
)

p025p025hue_data = OxfordIIITPet(
    root="data",
    transform=ColorJitter(hue=(0.25, 0.25))
)

m025m025hue_data = OxfordIIITPet( # `m` is minus.
    root="data",
    transform=ColorJitter(hue=(-0.25, -0.25))
)

import matplotlib.pyplot as plt

def show_images(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_images(data=origin_data, main_title="origin_data")
show_images(data=p2bright_data, main_title="p2bright_data")
show_images(data=p2p2bright_data, main_title="p2p2bright_data")
show_images(data=p05p05bright_data, main_title="p05p05bright_data")

show_images(data=origin_data, main_title="origin_data")
show_images(data=p2contra_data, main_title="p2contra_data")
show_images(data=p2p2contra_data, main_title="p2p2contra_data")
show_images(data=p05p05contra_data, main_title="p05p05contra_data")

show_images(data=origin_data, main_title="origin_data")
show_images(data=p2satura_data, main_title="p2satura_data")
show_images(data=p2p2satura_data, main_title="p2p2satura_data")
show_images(data=p05p05satura_data, main_title="p05p05satura_data")

show_images(data=origin_data, main_title="origin_data")
show_images(data=p05hue_data, main_title="p05hue_data")
show_images(data=p025p025hue_data, main_title="p025p025hue_data")
show_images(data=m025m025hue_data, main_title="m025m025hue_data")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import RandomRotation

my_data = OxfordIIITPet(
    root="data",
    transform=None
)

import matplotlib.pyplot as plt

def show_images(data, main_title=None, b=0.0, c=0.0, s=0.0, h=0.0):
    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)
        cj = ColorJitter(brightness=b, contrast=c, saturation=s, hue=h)
        plt.imshow(X=cj(im)) # Here
        plt.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images(data=my_data, main_title="origin_data")
show_images(data=my_data, main_title="p2bright_data", b=2.0)
show_images(data=my_data, main_title="p2p2bright_data", b=(2.0, 2.0))
show_images(data=my_data, main_title="p05p05bright_data", b=(0.5, 0.5))

show_images(data=my_data, main_title="origin_data")
show_images(data=my_data, main_title="p2contra_data", c=2.0)
show_images(data=my_data, main_title="p2p2contra_data", c=(2.0, 2.0))
show_images(data=my_data, main_title="p05p05contra_data", c=(0.5, 0.5))

show_images(data=my_data, main_title="origin_data")
show_images(data=my_data, main_title="p2satura_data", s=2.0)
show_images(data=my_data, main_title="p2p2satura_data", s=(2.0, 2.0))
show_images(data=my_data, main_title="p05p05satura_data", s=(0.5, 0.5))

show_images(data=my_data, main_title="origin_data")
show_images(data=my_data, main_title="p05hue_data", h=0.5)
show_images(data=my_data, main_title="p025p025hue_data", h=(0.25, 0.25))
show_images(data=my_data, main_title="m025m025hue_data", h=(-0.25, -0.25))
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا