PyTorch – torchvision.transforms – RandomGrayscale()


為了以一定機率隨機將影像轉換為灰度影像,我們應用**RandomGrayscale()**變換。它是**torchvision.transforms**模組提供的眾多變換之一。此模組包含許多重要的變換,可用於對影像資料執行不同的操作。

**RandomGrayscale()**接受 PIL 和張量影像或一批張量影像。張量影像是一個形狀為**[3, H, W]**的 PyTorch 張量,其中 H 是影像高度,W 是影像寬度。一批張量影像也是一個 torch 張量,形狀為**[B, 3, H, W]**。**B**是批次中的影像數量。

語法

torchvision.transforms.RandomGrayscale(p)(img)
  • 如果**p** = 1,則返回灰度影像。

  • 如果**p** = 0,則返回原始影像。

  • 如果**p**在(0,1)範圍內,則返回灰度影像的機率為**p**。它以給定的機率 p 返回隨機灰度影像。

步驟

我們可以使用以下步驟以給定的機率隨機將影像轉換為灰度影像:

  • 匯入所需的庫。在以下所有示例中,所需的 Python 庫為**torch、Pillow**和**torchvision**。確保您已安裝它們。

import torch
import torchvision
import torchvision.transforms as T
from PIL import Image
  • 讀取輸入影像。輸入影像為 PIL 影像或 torch 張量。

img = Image.open('bargraph.png')
  • 定義一個變換,以給定的機率 p 將原始輸入影像隨機轉換為灰度影像。

transform = T.RandomGrayscale(p = 0.25)
  • 將上面定義的變換應用於輸入影像以將其轉換為灰度影像。

img = transform(img)
  • 顯示灰度影像。

img.show()

輸入影像

此影像用作以下所有示例中的輸入。

示例 1

在這個 Python3 程式中,我們使用 p = 1。它一定會將影像轉換為灰度影像。

# import required libraries
import torch
import torchvision.transforms as T
from PIL import Image

# read the input image
img = Image.open('bargraph.png')

# define the transform to randomly convert the input image
# to grayscale with a probability
transform = T.RandomGrayscale(p=1)

# apply the above transform on input image
img = transform(img)
img.show()

輸出

它將產生以下輸出:

示例 2

在這個程式中,我們使用 p = 0.25%。這意味著,影像被轉換為灰度影像的機率為 25%。

import torch
import torchvision.transforms as T
from PIL import Image
import matplotlib.pyplot as plt
img = Image.open('bargraph.png')
transform = T.RandomGrayscale(p=0.25)

imgs = [transform(img) for _ in range(4)]

fig = plt.figure(figsize=(7,3))
rows, cols = 2,2
for j in range(0, len(imgs)):
   fig.add_subplot(rows, cols, j+1)
   plt.imshow(imgs[j])
   plt.xticks([])
   plt.yticks([])
plt.show()

輸出

它將產生以下輸出:

請注意,在 4 個輸出影像中,有一個影像為灰度影像。這是因為我們設定了 p = 0.25。

更新於: 2022年1月6日

423 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.