首页 > 后端开发 > Python教程 > PyTorch 中的 Pad

PyTorch 中的 Pad

Barbara Streisand
发布: 2025-01-18 08:10:11
原创
165 人浏览过

请我喝杯咖啡☕

*备忘录:

  • 我的帖子解释了 OxfordIIITPet()。

Pad() 可以向零个或多个图像添加填充,如下所示:

*备忘录:

  • 初始化的第一个参数是 padding(必需类型:int 或 tuple/list(int)): *备注:
    • 它可以添加填充。
    • 元组/列表必须是具有 2 或 4 个元素的一维。
  • 初始化的第二个参数是 fill(Optional-Default:0-Type:int, float or tuple/list(int or float)): *备注:
    • 它可以改变图像的背景。 *为图像添加内边距时可以看到背景。
    • 元组/列表必须是具有 3 个元素的一维。
  • 初始化的第三个参数是 padding_mode(可选-默认:'constant'-类型:str)。 *可以设置“constant”、“edge”、“reflect”或“symmetry”。
  • 有第一个参数(必需类型:PIL 图像或张量(int))。 *它必须是 3D 或更多 D 张量。
  • v2建议按照V1还是V2使用?我应该使用哪一个?
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import Pad

pad = Pad(padding=100)
pad = Pad(padding=100, fill=0, padding_mode='constant')

pad
# Pad(padding=100, fill=0, padding_mode=constant)

pad.padding
# 100

pad.fill
# 0

pad.padding_mode
# 'constant'

origin_data = OxfordIIITPet(
    root="data",
    transform=None
    # transform=Pad(padding=0)
)

p50_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=50)
)

p100_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=100)
)

p150_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=150)
)

m50_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=-50)
)

m100_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=-100)
)

m150_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=-150)
)

p100p50_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=[100, 50])
)

m100m50_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=[-100, -50])
)

p100m50_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=[100, -50])
)

p25p50p75p100_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=[25, 50, 75, 100])
)

m25m50m75m100_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=[-25, -50, -75, -100])
)

p25m50p75m100_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=[25, -50, 75, -100])
)

p100fillgray_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=100, fill=150)
)

p100fillpurple_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=100, fill=[160, 32, 240])
)

p100edge_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=100, padding_mode="edge")
)

p100reflect_data = OxfordIIITPet(
    root="data",
    transform=Pad(padding=100, padding_mode="reflect")
)

p100symmetric_data = OxfordIIITPet(
    root="data",
    transform=Pad(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, (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')
show_images1(data=p50_data, main_title='p50_data')
show_images1(data=p100_data, main_title='p100_data')
show_images1(data=p150_data, main_title='p150_data')
print()
show_images1(data=origin_data, main_title='origin_data')
show_images1(data=m50_data, main_title='m50_data')
show_images1(data=m100_data, main_title='m100_data')
show_images1(data=m150_data, main_title='m150_data')
print()
show_images1(data=origin_data, main_title='origin_data')
show_images1(data=p100p50_data, main_title='p100p50_data')
show_images1(data=m100m50_data, main_title='m100m50_data')
show_images1(data=p100m50_data, main_title='p100m50_data')
print()
show_images1(data=origin_data, main_title='origin_data')
show_images1(data=p25p50p75p100_data, main_title='p25p50p75p100_data')
show_images1(data=m25m50m75m100_data, main_title='m25m50m75m100_data')
show_images1(data=p25m50p75m100_data, main_title='p25m50p75m100_data')
print()
show_images1(data=p100fillgray_data, main_title='p100fillgray_data')
show_images1(data=p100fillpurple_data, main_title='p100fillpurple_data')
print()
show_images1(data=p100edge_data, main_title='p100edge_data')
show_images1(data=p100reflect_data, main_title='p100reflect_data')
show_images1(data=p100symmetric_data, main_title='p100symmetric_data')

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, p=0, f=0, pm='constant'):
    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)
        pad = Pad(padding=p, fill=f, padding_mode=pm) # Here
        plt.imshow(X=pad(im)) # Here
        plt.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title='origin_data')
show_images2(data=origin_data, main_title='p50_data', p=50)
show_images2(data=origin_data, main_title='p100_data', p=100)
show_images2(data=origin_data, main_title='p150_data', p=150)
print()
show_images2(data=origin_data, main_title='origin_data')
show_images2(data=origin_data, main_title='m50_data', p=-50)
show_images2(data=origin_data, main_title='m100_data', p=-100)
show_images2(data=origin_data, main_title='m150_data', p=-150)
print()
show_images2(data=origin_data, main_title='origin_data')
show_images2(data=origin_data, main_title='p100p50_data', p=[100, 50])
show_images2(data=origin_data, main_title='m100m50_data', p=[-100, -50])
show_images2(data=origin_data, main_title='p100m50_data', p=[100, -50])
print()
show_images2(data=origin_data, main_title='origin_data')
show_images2(data=origin_data, main_title='p25p50p75p100_data',
             p=[25, 50, 75, 100])
show_images2(data=origin_data, main_title='m25m50m75m100_data',
             p=[-25, -50, -75, -100])
show_images2(data=origin_data, main_title='p25m50p75m100_data',
             p=[25, -50, 75, -100])
print()
show_images2(data=origin_data, main_title='p100fillgray_data', p=100,
             f=[150])
show_images2(data=origin_data, main_title='p100fillpurple_data', p=100,
             f=[160, 32, 240])
print()
show_images2(data=origin_data, main_title='p100edge_data', p=100, 
             pm='edge')
show_images2(data=origin_data, main_title='p100reflect_data', p=100,
             pm='reflect')
show_images2(data=origin_data, main_title='p100symmetric_data', 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

以上是PyTorch 中的 Pad的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板