PyTorch - torchvision.transforms.Compose 几个图像变换组合在一起
flyfish
transforms是常见的图像变换
torchvision.transforms.Compose是将几个变换组合在一起
原始图片
经过变换的图片
代码如下
import numpy as np
import cv2
import os
import torch
import math
import torchvision.transforms as transforms
from PIL import Image
path="original.jpg"
# 112* 112*3 ,通道顺序B G R,0~255,格式为(H,W,C)
img_original = cv2.imread(path)
img_original = cv2.resize(img_original, (200, 200), interpolation=cv2.INTER_CUBIC)
print(img_original.shape)
for i in range(100):
transform = transforms.Compose([
transforms.RandomHorizontalFlip(p=0.5), # 水平翻转
transforms.RandomGrayscale(p=0.5), # 随机灰度
transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5), # 亮度,对比度,饱和度,色相
])
#CV格式转PIL
img = Image.fromarray(cv2.cvtColor(img_original, cv2.COLOR_BGR2RGB))
img = transform(img)
#PIL转CV格式
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)
cv2.imwrite(str(i)+'.jpg',img)
在train的阶段和test阶段执行不同的transforms
代码如下
import numpy as np
import cv2
import os
import torch
import math
import torchvision.transforms as transforms
from PIL import Image
path="original.jpg"
# 112* 112*3 ,通道顺序B G R,0~255,格式为(H,W,C)
img_original = cv2.imread(path)
img_original = cv2.resize(img_original, (200, 200), interpolation=cv2.INTER_CUBIC)
transform_dict = {
'train': transforms.Compose(
[transforms.Resize(256),
]),
'test': transforms.Compose(
[transforms.Resize(128),
])}
img_original = Image.fromarray(cv2.cvtColor(img_original, cv2.COLOR_BGR2RGB))
phase="train"
transform=transform_dict[phase]
img = transform(img_original)
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)
#最终输出文件大小是256 × 256
cv2.imwrite("train.jpg", img)
phase="test"
transform=transform_dict[phase]
img = transform(img_original)
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
#最终输出文件大小是128 × 128
cv2.imwrite("test.jpg", img)