RandomCrop in PyTorch (2)

Buy Me a Coffee☕ *Memos: My post explains RandomCrop() about size argument. My post explains RandomCrop() about pad_if_needed argument. RandomCrop() can crop an image randomly as shown below. *It's about padding, fill and padding_mode argument: from torchvision.datasets import OxfordIIITPet from torchvision.transforms.v2 import RandomCrop origin_data = OxfordIIITPet( root="data", transform=None ) s700_594p100origin_data = OxfordIIITPet( # `s` is size and `p` is padding. root="data", transform=RandomCrop(size=[700, 594], padding=100) ) s300p100_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=100) # transform=RandomCrop(size=300, padding=[100, 100]) # transform=RandomCrop(size=300, padding=[100, 100, 100, 100]) ) s600_594p100_50origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[600, 594], padding=[100, 50]) ) s300p100_50_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=[100, 50]) ) s650_494p25_50_75_100origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[650, 494], padding=[25, 50, 75, 100]) ) s300p25_50_75_100_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=[25, 50, 75, 100]) ) s300_194pn100origin_data = OxfordIIITPet( # `n` is negative. root="data", transform=RandomCrop(size=[300, 194], padding=-100) ) s150pn100_data = OxfordIIITPet( root="data", transform=RandomCrop(size=150, padding=-100) ) s300_294pn50n100origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[300, 294], padding=[-50, -100]) ) s150pn50n100_data = OxfordIIITPet( root="data", transform=RandomCrop(size=150, padding=[-50, -100]) ) s350_294pn25n50n75n100origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[350, 294], padding=[-25, -50, -75, -100]) ) s150pn25n50n75n100_data = OxfordIIITPet( root="data", transform=RandomCrop(size=150, padding=[-25, -50, -75, -100]) ) s600_444p25_50origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[600, 444], padding=[25, 50]) ) s200p25_50_data = OxfordIIITPet( root="data", transform=RandomCrop(size=200, padding=[25, 50]) ) s400_344pn25n50origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[400, 344], padding=[-25, -50]) ) s200pn25n50_data = OxfordIIITPet( root="data", transform=RandomCrop(size=200, padding=[-25, -50]) ) s400_444p25n50origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[400, 444], padding=[25, -50]) ) s200p25n50_data = OxfordIIITPet( root="data", transform=RandomCrop(size=200, padding=[25, -50]) ) s600_344pn25_50origin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[600, 344], padding=[-25, 50]) ) s200pn25_50_data = OxfordIIITPet( root="data", transform=RandomCrop(size=200, padding=[-25, 50]) ) s700_594p150_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=150) ) s700_594p200_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=200) ) s700_594p250_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=250) ) s700_594p300_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=300) ) s700_594p350_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=350) ) s700_594p100fgrayorigin_data = OxfordIIITPet( # `f` is fill. root="data", transform=RandomCrop(size=[700, 594], padding=100, fill=150) # transform=RandomCrop(size=[700, 594], padding=100, fill=[150]) ) s300p100fgray_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=100, fill=150) ) s700_594p100fpurpleorigin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=100, fill=[160, 32, 240]) ) s300p100fpurple_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=100, fill=[160, 32, 240]) ) s700_594p100pmconstantorigin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=100, padding_mode='constant') # `pm` is padding_mode. ) s300p100pmconstant_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=100, padding_mode='constant') ) s700_594p100pmedgeorigin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=100, padding_mode='edge') ) s300p100pmedge_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=100, padding_mode='edge') ) s700_594p100pmreflectorigin_data = OxfordIIITPet( root="data", transform=RandomCrop(size=[700, 594], padding=100, padding_mode='reflect') ) s300p100pmreflect_data = OxfordIIITPet( root="data", transform=RandomCrop(size=300, padding=100, padding_mode='reflect') ) s700_594p100pmsymmetric

Mar 13, 2025 - 05:04
 0
RandomCrop in PyTorch (2)

Buy Me a Coffee

*Memos:

RandomCrop() can crop an image randomly as shown below. *It's about padding, fill and padding_mode argument:

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

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

s700_594p100origin_data = OxfordIIITPet( # `s` is size and `p` is padding.
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100)
)

s300p100_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100)
    # transform=RandomCrop(size=300, padding=[100, 100])
    # transform=RandomCrop(size=300, padding=[100, 100, 100, 100])
)

s600_594p100_50origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[600, 594], padding=[100, 50])
)

s300p100_50_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=[100, 50])
)

s650_494p25_50_75_100origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[650, 494], padding=[25, 50, 75, 100])
)

s300p25_50_75_100_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=[25, 50, 75, 100])
)

s300_194pn100origin_data = OxfordIIITPet( # `n` is negative.
    root="data",
    transform=RandomCrop(size=[300, 194], padding=-100)
)

s150pn100_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=150, padding=-100)
)

s300_294pn50n100origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[300, 294], padding=[-50, -100])
)

s150pn50n100_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=150, padding=[-50, -100])
)

s350_294pn25n50n75n100origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[350, 294], padding=[-25, -50, -75, -100])
)

s150pn25n50n75n100_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=150, padding=[-25, -50, -75, -100])
)

s600_444p25_50origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[600, 444], padding=[25, 50])
)

s200p25_50_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=200, padding=[25, 50])
)

s400_344pn25n50origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[400, 344], padding=[-25, -50])
)

s200pn25n50_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=200, padding=[-25, -50])
)

s400_444p25n50origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[400, 444], padding=[25, -50])
)

s200p25n50_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=200, padding=[25, -50])
)

s600_344pn25_50origin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[600, 344], padding=[-25, 50])
)

s200pn25_50_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=200, padding=[-25, 50])
)

s700_594p150_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=150)
)

s700_594p200_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=200)
)

s700_594p250_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=250)
)

s700_594p300_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=300)
)

s700_594p350_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=350)
)

s700_594p100fgrayorigin_data = OxfordIIITPet( # `f` is fill.
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100, fill=150)
    # transform=RandomCrop(size=[700, 594], padding=100, fill=[150])
)

s300p100fgray_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100, fill=150)
)

s700_594p100fpurpleorigin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100, fill=[160, 32, 240])
)

s300p100fpurple_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100, fill=[160, 32, 240])
)

s700_594p100pmconstantorigin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100,
padding_mode='constant')
    # `pm` is padding_mode.
)

s300p100pmconstant_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100, padding_mode='constant')
)

s700_594p100pmedgeorigin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100, padding_mode='edge')
)

s300p100pmedge_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100, padding_mode='edge')
)

s700_594p100pmreflectorigin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100, padding_mode='reflect')
)

s300p100pmreflect_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100, padding_mode='reflect')
)

s700_594p100pmsymmetricorigin_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=[700, 594], padding=100, 
                         padding_mode='symmetric')
)

s300p100pmsymmetric_data = OxfordIIITPet(
    root="data",
    transform=RandomCrop(size=300, padding=100, padding_mode='symmetric')
)

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()

show_images1(data=s700_594p100origin_data,
             main_title="s700_594p100origin_data")
show_images1(data=s300p100_data, main_title="s300p100_data")
print()
show_images1(data=s600_594p100_50origin_data,
             main_title="s600_594p100_50origin_data")
show_images1(data=s300p100_50_data, main_title="s300p100_50_data")
print()
show_images1(data=s650_494p25_50_75_100origin_data,
             main_title="s650_494p25_50_75_100origin_data")
show_images1(data=s300p25_50_75_100_data, 
             main_title="s300p25_50_75_100_data")
print()
show_images1(data=s300_194pn100origin_data,
             main_title="s300_194pn100origin_data")
show_images1(data=s150pn100_data, 
             main_title="s150pn100_data")
print()
show_images1(data=s300_294pn50n100origin_data,
             main_title="s300_294pn50n100origin_data")
show_images1(data=s150pn50n100_data, 
             main_title="s150pn50n100_data")
print()
show_images1(data=s350_294pn25n50n75n100origin_data,
             main_title="s350_294pn25n50n75n100origin_data")
show_images1(data=s150pn25n50n75n100_data, 
             main_title="s150pn25n50n75n100_data")
print()
show_images1(data=s600_444p25_50origin_data,
             main_title="s600_444p25_50origin_data")
show_images1(data=s200p25_50_data, 
             main_title="s200p25_50_data")
print()
show_images1(data=s400_344pn25n50origin_data,
             main_title="s400_344pn25n50origin_data")
show_images1(data=s200pn25n50_data, 
             main_title="s200pn25n50_data")
print()
show_images1(data=s400_444p25n50origin_data,
             main_title="s400_444p25n50origin_data")
show_images1(data=s200p25n50_data, 
             main_title="s200p25n50_data")
print()
show_images1(data=s600_344pn25_50origin_data,
             main_title="s600_344pn25_50origin_data")
show_images1(data=s200pn25_50_data, 
             main_title="s200pn25_50_data")
print()
show_images1(data=s700_594p100origin_data, 
             main_title="s700_594p100origin_data")
show_images1(data=s700_594p150_data, 
             main_title="s700_594p150_data")
show_images1(data=s700_594p200_data, 
             main_title="s700_594p200_data")
show_images1(data=s700_594p250_data, 
             main_title="s700_594p250_data")
show_images1(data=s700_594p300_data, 
             main_title="s700_594p300_data")
show_images1(data=s700_594p350_data, 
             main_title="s700_594p350_data")
print()
show_images1(data=s700_594p100fgrayorigin_data,
             main_title="s700_594p100fgrayorigin_data")
show_images1(data=s300p100fgray_data, main_title="s300p100fgray_data")
print()
show_images1(data=s700_594p100fpurpleorigin_data,
             main_title="s700_594p100fpurpleorigin_data")
show_images1(data=s300p100fpurple_data, main_title="s300p100fpurple_data")
print()
show_images1(data=s700_594p100pmconstantorigin_data,
             main_title="s700_594p100pmconstantorigin_data")
show_images1(data=s300p100pmconstant_data,
             main_title="s300p100pmconstant_data")
print()
show_images1(data=s700_594p100pmedgeorigin_data,
             main_title="s700_594p100pmedgeorigin_data")
show_images1(data=s300p100pmedge_data, main_title="s300p100pmedge_data")
print()
show_images1(data=s700_594p100pmreflectorigin_data,
             main_title="s700_594p100pmreflectorigin_data")
show_images1(data=s300p100pmreflect_data, main_title="s300p100pmreflect_data")
print()
show_images1(data=s700_594p100pmsymmetricorigin_data,
             main_title="s700_594p100pmsymmetricorigin_data")
show_images1(data=s300p100pmsymmetric_data,
             main_title="s300p100pmsymmetric_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)
    im = data[0][0]
    if not s:
        s = [im.size[1], im.size[0]]
    for i in range(1, 6):
        plt.subplot(1, 5, i)
        rc = RandomCrop(size=s, padding=p, pad_if_needed=pin,
                        fill=f, padding_mode=pm)
        plt.imshow(X=rc(im))
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title="s700_594p100origin_data",
             s=[700, 594], p=100)
show_images2(data=origin_data, main_title="s300p100_data", s=300, p=100)
print()
show_images2(data=origin_data, main_title="s600_594p100_50origin_data",
             s=[600, 594], p=[100, 50])
show_images2(data=origin_data, main_title="s300p100_50_data", s=300,
             p=[100, 50])
print()
show_images2(data=origin_data, main_title="s650_494p25_50_75_100origin_data",
             s=[650, 494], p=[25, 50, 75, 100])
show_images2(data=origin_data, main_title="s300p25_50_75_100_data", s=300, 
             p=[25, 50, 75, 100])
print()
show_images2(data=origin_data, main_title="s300_194pn100origin_data",
             s=[300, 194], p=-100)
show_images2(data=origin_data, main_title="s150pn100_data", s=150, p=-100)
print()
show_images2(data=origin_data, main_title="s300_294pn50n100origin_data",
             s=[300, 294], p=[-50, -100])
show_images2(data=origin_data, main_title="s150pn50n100_data", s=150,
             p=[-50, -100])
print()
show_images2(data=origin_data, main_title="s350_294pn25n50n75n100origin_data",
             s=[350, 294], p=[-25, -50, -75, -100])
show_images2(data=origin_data, main_title="s150pn25n50n75n100_data", s=150,
             p=[-25, -50, -75, -100])
print()
show_images2(data=origin_data, main_title="s600_444p25_50origin_data",
             s=[600, 444], p=[25, 50])
show_images2(data=origin_data, main_title="s200p25_50_data", s=200,
             p=[25, 50])
print()
show_images2(data=origin_data, main_title="s400_344pn25n50origin_data",
             s=[400, 344], p=[-25, -50])
show_images2(data=origin_data, main_title="s200pn25n50_data", s=200,
             p=[-25, -50])
print()
show_images2(data=origin_data, main_title="s400_444p25n50origin_data",
             s=[400, 444], p=[25, -50])
show_images2(data=origin_data, main_title="s200p25n50_data", s=200,
             p=[25, -50])
print()
show_images2(data=origin_data, main_title="s600_344pn25_50origin_data",
             s=[600, 344], p=[-25, 50])
show_images2(data=origin_data, main_title="s200pn25_50_data", s=200,
             p=[-25, 50])
print()
show_images2(data=origin_data, main_title="s700_594p100origin_data",
             s=[700, 594], p=100)
show_images2(data=origin_data, main_title="s700_594p150_data",
             s=[700, 594], p=150)
show_images2(data=origin_data, main_title="s700_594p200_data",
             s=[700, 594], p=200)
show_images2(data=origin_data, main_title="s700_594p250_data",
             s=[700, 594], p=250)
show_images2(data=origin_data, main_title="s700_594p300_data",
             s=[700, 594], p=300)
show_images2(data=origin_data, main_title="s700_594p350_data",
             s=[700, 594], p=350)
print()
show_images2(data=origin_data, main_title="s700_594p100fgrayorigin_data", 
             s=[700, 594], p=100, f=150)
show_images2(data=origin_data, main_title="s300p100fgray_data", s=300,
             p=100, f=150)
print()
show_images2(data=origin_data, main_title="s700_594p100fpurpleorigin_data",
             s=[700, 594], p=100, f=[160, 32, 240])
show_images2(data=origin_data, main_title="s300p100fpurple_data", s=300,
             p=100, f=[160, 32, 240])
print()
show_images2(data=origin_data, main_title="s700_594p100pmconstantorigin_data",
             s=[700, 594], p=100, pm='constant')
show_images2(data=origin_data, main_title="s300p100pmconstant_data", s=300, 
             p=100, pm='constant')
print()
show_images2(data=origin_data, main_title="s700_594p100pmedgeorigin_data",
             s=[700, 594], p=100, pm='edge')
show_images2(data=origin_data, main_title="s300p100pmedge_data", s=300, 
             p=100, pm='edge')
print()
show_images2(data=origin_data, main_title="s700_594p100pmreflectorigin_data",
             s=[700, 594], p=100, pm='reflect')
show_images2(data=origin_data, main_title="s300p100pmreflect_data", s=300, 
             p=100, pm='reflect')
print()
show_images2(data=origin_data, main_title="s700_594p100pmsymmetricorigin_data",
             s=[700, 594], p=100, pm='symmetric')
show_images2(data=origin_data, main_title="s300p100pmsymmetric_data", s=300, 
             p=100, pm='symmetric')

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description

Image description