برنامه نویسی

RandomCrop در Pytorch (1) – Community Dev

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

*یادداشت ها:

RandomCrop () می تواند یک تصویر را به طور تصادفی همانطور که در شکل زیر نشان داده شده است ، خرد کند:

*یادداشت ها:

  • اولین استدلال برای اولیه سازی است size(نوع مورد نیاز:int یا tuple/list(int) یا اندازه ()): *یادداشت ها:
    • این است [height, width]بشر
    • باید باشد 1 <= xبشر
    • یک لیست/لیست باید 1D با 1 یا 2 عنصر باشد.
    • یک مقدار واحد (int یا tuple/list(int)) یعنی [size, size]بشر
  • استدلال دوم برای اولیه سازی است padding(پیش فرض اختیاری:Noneنوع:int یا tuple/list(int)): *یادداشت ها:
    • این است [left, top, right, bottom] که می تواند از [left-right, top-bottom] یا [left-top-right-bottom]بشر
    • یک لیست/لیست باید 1D با 1 ، 2 یا 4 عنصر باشد.
    • یک مقدار واحد (int یا tuple/list(int)) یعنی

      بشر
    • مقادیر دوتایی (tuple/list(int)) یعنی

      , padding[1], padding[0], padding[1]]
      بشر
  • استدلال سوم برای اولیه سازی است pad_if_needed(پیش فرض اختیاری:Falseنوع:bool):
    • اگر باشد False وت size کوچکتر از یک تصویر اصلی یا تصویر خالی توسط padding، خطا وجود دارد.
    • اگر باشد True وت size کوچکتر از یک تصویر اصلی یا تصویر خالی توسط padding، هیچ خطایی وجود ندارد ، پس از آن تصویر به طور تصادفی خالی می شود تا تبدیل شود sizeبشر
  • چهارمین استدلال برای اولیه سازی است fill(پیش فرض اختیاری:0نوع:intبا float یا tuple/list(int یا float)): *یادداشت ها:
    • این می تواند زمینه یک تصویر را تغییر دهد. *پس زمینه را می توان مشاهده کرد که یک تصویر به طور مثبت خالی می شود.
    • یک لیست/لیست باید 1D با 1 یا 3 عنصر باشد.
  • استدلال 5 برای اولیه سازی است padding_mode(پیش فرض اختیاری:'constant'نوع:str). *'constant'با 'edge'با 'reflect' یا 'symmetric' می توان روی آن تنظیم کرد.
  • استدلال اول است img(نوع مورد نیاز:PIL Image یا tensor(int)): *یادداشت ها:
    • تانسور باید 2D یا 3D باشد.
    • استفاده نکنید img=بشر
  • v2 توصیه می شود مطابق V1 یا V2 استفاده شود؟ از کدام یک باید استفاده کنم؟
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import RandomCrop

randomcrop = RandomCrop(size=100)
randomcrop = RandomCrop(size=100,
                        padding=None,
                        pad_if_needed=False, 
                        fill=0,
                        padding_mode='constant')
randomcrop
# RandomCrop(size=(100, 100),
#            pad_if_needed=False,
#            fill=0,
#            padding_mode=constant)

randomcrop.size
# (100, 100)

print(randomcrop.padding)
# None

randomcrop.pad_if_needed
# False

randomcrop.fill
# 0

randomcrop.padding_mode
# 'constant'

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

s300_data = OxfordIIITPet( # `s` is size.
    root="data",
    transform=RandomCrop(size=300)
    # transform=RandomCrop(size=[300, 300])
)

s200_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=200)
)

s100_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=100)
)

s50_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=50)
)

s10_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=10)
)

s1_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=1)
)

s200_300_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[200, 300])
)

s300_200_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[300, 200])
)

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 in range(1, 6):
        plt.subplot(1, 5, i)
        plt.imshow(X=data[0][0])
    plt.tight_layout()
    plt.show()

plt.figure(figsize=[7, 9])
plt.title(label="s500_394origin_data", fontsize=14)
plt.imshow(X=origin_data[0][0])
show_images1(data=origin_data, main_title="s500_394origin_data")
show_images1(data=s300_data, main_title="s300_data")
show_images1(data=s200_data, main_title="s200_data")
show_images1(data=s100_data, main_title="s100_data")
show_images1(data=s50_data, main_title="s50_data")
show_images1(data=s10_data, main_title="s10_data")
show_images1(data=s1_data, main_title="s1_data")
show_images1(data=s200_300_data, main_title="s200_300_data")
show_images1(data=s300_200_data, main_title="s300_200_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, s=None, p=None,
                 pin=False, f=0, pm='constant'):
    plt.figure(figsize=[10, 5])
    plt.suptitle(t=main_title, y=0.8, fontsize=14)
    temp_s = s
    im = data[0][0]
    for i in range(1, 6):
        plt.subplot(1, 5, i)
        if not temp_s:
            s = [im.size[1], im.size[0]]
        rc = RandomCrop(size=s, padding=p, # Here
                        pad_if_needed=pin, fill=f, padding_mode=pm)
        plt.imshow(X=rc(im)) # Here
    plt.tight_layout()
    plt.show()

plt.figure(figsize=[7, 9])
plt.title(label="s500_394origin_data", fontsize=14)
plt.imshow(X=origin_data[0][0])
show_images2(data=origin_data, main_title="s500_394origin_data")
show_images2(data=origin_data, main_title="s300_data", s=300)
show_images2(data=origin_data, main_title="s200_data", s=200)
show_images2(data=origin_data, main_title="s100_data", s=100)
show_images2(data=origin_data, main_title="s50_data", s=50)
show_images2(data=origin_data, main_title="s10_data", s=10)
show_images2(data=origin_data, main_title="s1_data", s=1)
show_images2(data=origin_data, main_title="s200_300_data", s=[200, 300])
show_images2(data=origin_data, main_title="s300_200_data", s=[300, 200])
حالت تمام صفحه را وارد کنید

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

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

شرح تصویر

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

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

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

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