PyTorch 中的随机透视

花韻仙語
发布: 2025-01-17 12:28:17
转载
419人浏览过

请我喝杯咖啡☕

*备忘录:

  • 我的帖子解释了 randomrotation()。
  • 我的帖子解释了 randomaffine()。
  • 我的帖子解释了 randomhorizo​​ntalflip()。
  • 我的帖子解释了 randomverticalflip()。
  • 我的帖子解释了 oxfordiiitpet()。

randomperspective() 可以对零个或多个图像进行透视变换,如下所示:

*备忘录:

  • 初始化的第一个参数是 distortion_scale(可选-默认:0.5-类型:int 或 float): *备注:
    • 可以进行透视变换。
    • 必须是 0
  • 初始化的第二个参数是 p(可选-默认:0.5-类型:int 或 float): *备注:
    • 每张图像是否经过透视变换的概率。
    • 必须是 0
  • 初始化的第三个参数是插值(optional-default:interpolationmode.bilinear-type:interpolationmode)。
  • 初始化的第四个参数是 fill(optional-default:0-type:int, float or tuple/list(int or float)): *备注:
    • 它可以改变图像的背景。 *对图像进行透视变换时可以看到背景。
    • 元组/列表必须是具有 3 个元素的一维。
  • 有第一个参数(必需类型:pil 图像或张量(int))。 *它必须是 3d 张量。
  • v2建议按照v1还是v2使用?我应该使用哪一个?
from torchvision.datasets import OxfordIIITPet
from torchvision.transforms.v2 import RandomPerspective
from torchvision.transforms.functional import InterpolationMode

randompers = RandomPerspective()
randompers = RandomPerspective(distortion_scale=0.5,
                               p=0.5,
                               interpolation=InterpolationMode.BILINEAR,
                               fill=0)
randompers
# RandomPerspective(p=0.5,
#                   distortion_scale=0.5,
#                   interpolation=InterpolationMode.BILINEAR,
#                   fill=0)

randompers.distortion_scale
# 0.5

randompers.p
# 0.5

randompers.interpolation
# <InterpolationMode.BILINEAR: 'bilinear'>

randompers.fill
# 0

origin_data = OxfordIIITPet(
    root="data",
    transform=None
    # transform=RandomPerspective(distortion_scale=0)
    # transform=RandomPerspective(p=0)
)

dis02p1_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(distortion_scale=0.2, p=1)
)

dis06p1_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(distortion_scale=0.6, p=1)
)

dis1p1_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(distortion_scale=1, p=1)
)

p1_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(p=1)
)

p05_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(p=0.5)
)

p1fillgray_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(p=1, fill=150)
)

p1fillpurple_data = OxfordIIITPet(
    root="data",
    transform=RandomPerspective(p=1, fill=[160, 32, 240])
)

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=dis02p1_data, main_title="dis02p1_data")
show_images1(data=dis06p1_data, main_title="dis06p1_data")
show_images1(data=dis1p1_data, main_title="dis1p1_data")
show_images1(data=p1_data, main_title="p1_data")
show_images1(data=p05_data, main_title="p05_data")
show_images1(data=p1fillgray_data, main_title="p1fillgray_data")
show_images1(data=p1fillpurple_data, main_title="p1fillpurple_data")

# ↓ ↓ ↓ ↓ ↓ ↓ The code below is identical to the code above. ↓ ↓ ↓ ↓ ↓ ↓
def show_images2(data, main_title=None, d=0.5, prob=0.5, f=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)
        rp = RandomPerspective(distortion_scale=d, p=prob, fill=f) # Here
        plt.imshow(X=rp(im)) # Here
        plt.xticks(ticks=[])
        plt.yticks(ticks=[])
    plt.tight_layout()
    plt.show()

show_images2(data=origin_data, main_title="origin_data", d=0)
show_images2(data=origin_data, main_title="dis02p1_data", d=0.2, prob=1)
show_images2(data=origin_data, main_title="dis06p1_data", d=0.6, prob=1)
show_images2(data=origin_data, main_title="dis1p1_data", d=1, prob=1)
show_images2(data=origin_data, main_title="p1_data", prob=1)
show_images2(data=origin_data, main_title="p05_data", prob=0.5)
show_images2(data=origin_data, main_title="p1fillgray_data", prob=1, f=150)
show_images2(data=origin_data, main_title="p1fillpurple_data", prob=1,
             f=[160, 32, 240])
登录后复制

image description

image description

image description

image description

image description

image description

image description

image description

以上就是PyTorch 中的随机透视的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:dev.to网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号