Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

PyTorch의 이미지 채널에서 평균을 찾는 방법은 무엇입니까?

<시간/>

RGB 이미지에는 Red, Green 및 Blue의 세 가지 채널이 있습니다. 이러한 이미지 채널에서 이미지 픽셀 값의 평균을 계산해야 합니다. 이를 위해 torch.mean() 메서드를 사용합니다. . 그러나 이 메소드의 입력 매개변수는 PyTorch 텐서입니다. 따라서 먼저 이미지를 PyTorch 텐서로 변환한 다음 이 방법을 적용합니다. 텐서에 있는 모든 요소의 평균값을 반환합니다. 이미지 채널에서 평균을 찾기 위해 매개변수 dim =[1,2]을 설정합니다. .

단계

  • 필요한 라이브러리를 가져옵니다. 다음 모든 Python 예제에서 필수 Python 라이브러리는 torch, torchvision, Pillow입니다. 및 OpenCV . 이미 설치했는지 확인하십시오.

  • image.open()을 사용하여 입력 이미지 읽기 변수 "img"에 할당 .

  • PIL 이미지를 PyTorch Tensor로 변환하는 변환 정의

  • "img 이미지 변환 " 위에서 정의한 변환을 사용하여 PyTorch 텐서에 연결하고 이 텐서를 "imgTensor"에 할당합니다. .

  • torch.mean(imgTensor, dim =[1,2]) 계산 . 세 값의 텐서를 반환합니다. 이 세 값은 세 채널 RGB에 대한 평균 값입니다. 이 세 가지 평균 값을 세 개의 새 변수 "R_mean", "G_mean"에 별도로 할당할 수 있습니다. , 및 "B_mean" .

  • 세 가지 평균 값 "R_mean", "G_mean", 인쇄 및 "B_mean" 이미지 픽셀의.

입력 이미지

두 예에서 입력으로 다음 이미지를 사용합니다.

PyTorch의 이미지 채널에서 평균을 찾는 방법은 무엇입니까?

예시 1

# Python program to find mean across the image channels
# import necessary libraries
import torch
from PIL import Image
import torchvision.transforms as transforms

# Read the input image
img = Image.open('opera.jpg')

# Define transform to convert the image to PyTorch Tensor
transform = transforms.ToTensor()

# Convert image to PyTorch Tensor (Image Tensor)
imgTensor = transform(img)
print("Shape of Image Tensor:\n", imgTensor.shape)

# Compute mean of the Image Tensor across image channels RGB
R_mean, G_mean ,B_mean = torch.mean(imgTensor, dim = [1,2])

# print mean across image channel RGB
print("Mean across Read channel:", R_mean)
print("Mean across Green channel:", G_mean)
print("Mean across Blue channel:", B_mean)

출력

Shape of Image Tensor:
   torch.Size([3, 447, 640])
Mean across Read channel: tensor(0.1487)
Mean across Green channel: tensor(0.1607)
Mean across Blue channel: tensor(0.2521)

예시 2

OpenCV를 사용하여 이미지를 읽을 수도 있습니다. . OpenCV를 사용하여 읽은 이미지는 numpy.ndarray 유형입니다. . 여기 이 예에서는 다른 방법을 사용하여 평균을 계산합니다. imgTensor.mean()을 사용합니다. , 텐서의 기본 연산. 다음 예를 살펴보십시오.

# Python program to find mean across the image channels
# import necessary libraries
import torch
import cv2
import torchvision.transforms as transforms

# Read the input image either using cv2 or PIL
img = cv2.imread('opera.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Define transform to convert the image to PyTorch Tensor
transform = transforms.ToTensor()

# Convert image to PyTorch Tensor (Image Tensor)
imgTensor = transform(img)
print("Shape of Image Tensor:\n", imgTensor.shape)

# compute mean of the Image Tensor across image channels RGB
# The other way to compute the mean
R_mean, G_mean ,B_mean = imgTensor.mean(dim = [1,2])

# print mean across image channel RGB
print("Mean across Read channel:", R_mean)
print("Mean across Green channel:", G_mean)
print("Mean across Blue channel:", B_mean)

출력

Shape of Image Tensor:
   torch.Size([3, 447, 640])
Mean across Read channel: tensor(0.1487)
Mean across Green channel: tensor(0.1607)
Mean across Blue channel: tensor(0.2521)