PyTorch の RandomPerspective

Linda Hamilton
リリース: 2025-01-17 12:10:10
オリジナル
587 人が閲覧しました

コーヒー買ってきて☕

*メモ:

  • 私の投稿では RandomRotation() について説明しています。
  • 私の投稿では RandomAffine() について説明しています。
  • 私の投稿では Randomhorizo​​ntalFlip() について説明しています。
  • 私の投稿では RandomVerticalFlip() について説明しています。
  • 私の投稿では OxfordIIITPet() について説明しています。

RandomPerspective() は、以下に示すように、0 個以上の画像に対して透視変換を実行できます。

*メモ:

  • 初期化の最初の引数は、distortion_scale(オプション-デフォルト:0.5-タイプ:int または float) です。 *メモ:
    • 透視変換を行うことができます。
    • 0
  • 初期化の 2 番目の引数は p(Optional-Default:0.5-Type:int または float) です。 *メモ:
    • 各画像が透視変換されているかどうかの確率です。
    • 0
  • 初期化の 3 番目の引数は interpolation(Optional-Default:InterpolationMode.BILINEAR-Type:InterpolationMode) です。
  • 初期化の 4 番目の引数は fill(Optional-Default:0-Type:int, float または tuple/list(int or float)) です。 *メモ:
    • 画像の背景を変更できます。 ※画像を透視変換すると背景が見えます
    • タプル/リストは 3 つの要素を持つ 1D でなければなりません。
  • 第一引数(Required-Type:PIL Image or tensor(int))があります。 *3D テンソルである必要があります。
  • V1 または V2 に従って 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 の RandomPerspectiveの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート