برنامه نویسی
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))