torch.flip旋转测试

import cv2
import torch
import numpy as np

path = './test.jpg'
img = cv2.imread(path)
print(img.shape)
image = img.transpose(2, 0, 1)
image = np.expand_dims(image, axis=0)
image = torch.Tensor(image)
print(image.shape)

flip1 = torch.flip(image, [0, 3])
flip1 = flip1.squeeze(0)
flip1 = np.array(flip1)
flip1 = flip1.transpose(1,2,0)
print(flip1.shape)
cv2.imwrite('./test_flip1.jpg', flip1)

flip2 = torch.flip(image, [1, 2])
flip2 = flip2.squeeze(0)
flip2 = np.array(flip2)
flip2 = flip2.transpose(1,2,0)
print(flip2.shape)
cv2.imwrite('./test_flip2.jpg', flip2)

flip3 = torch.flip(image, [0, 2])
flip3 = flip3.squeeze(0)
flip3 = np.array(flip3)
flip3 = flip3.transpose(1,2,0)
print(flip3.shape)
cv2.imwrite('./test_flip3.jpg', flip3)

flip4 = torch.flip(image, [1, 3])
flip4 = flip4.squeeze(0)
flip4 = np.array(flip4)
flip4 = flip4.transpose(1,2,0)
print(flip4.shape)
cv2.imwrite('./test_flip4.jpg', flip4)

          原始图                  旋转0和3                旋转1和2                 旋转0和2             旋转1和3

 cv2读入是(618,480,3),原始图像调整维度顺序并且维度增加了一维,shape是(1,3,618,480)

 

第第3关:数据增强 300 学习内容 参考答案 记录 评论 任务描述 相关知识 随机翻转 随机缩放 随机裁剪 编程要求 测试说明 任务描述 本关任务:独立完成前面关卡的小伙伴,相信你们会读取数据并对数据做归一化处理。但是这远远不够,你需要通过数据增强技术来增加数据的多样性。在本关中,你将要实现数据增强中的随机翻转和随机缩放功能。 相关知识 为了完成本关任务,你需要掌握:1. 随机翻转; 2. 随机缩放; 3. 随机裁剪。 随机翻转 水平翻转: 左右翻转,将左边的像素点放在右边,将右边的像素点放在左边。如下图所示: 垂直翻转:上下翻转,将上边的像素点放在下边,将下边的像素点放在上边,如下图所示: Image模块中包含图像的水平翻转和垂直翻转等操作。 # 水平翻转 out = im.transpose(Image.FLIP_LEFT_RIGHT) # 垂直翻转 out = im.transpose(Image.FLIP_TOP_BOTTOM) 随机缩放 缩放:对图片随机进行不同比例大小的缩放 随机裁剪 以固定尺寸裁剪图像,但是每次裁剪的图像内容不同。 在pytorch中,实现随机裁剪的是RandomCrop类。定义如下: torchvision.transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode='constant') size:裁剪尺寸 padding:在裁剪之前,是否对图像进行填充,可以填充图像的左、上、右、下。 pad_if_needed:如果图像小于所需大小,它将填充图像以避免引发异常。 fill :用于恒定填充的像素填充值。 padding_mode :指定填充模式,填充模式有:constant、edge、reflect、symmetric。 示例如下: import torchvision.transforms as tf import torch MyTransfrom = tf.RandomCrop([224,224]) input = torch.randn(3, 256, 256) output = MyTransfrom(input) 编程要求 根据提示,在右侧编辑器补充Begin-End段中的代码,你所需要完成的功能是: 完成随机水平翻转 完成缩放 完成裁剪 将增强后的图像保存至 ./train-2/Imgs/Test/Pass3/img_aug.png 测试说明 平台会对你编写的代码进行测试测试输入: 预期输出: 数据增强成功! 开始你的任务吧,祝你成功!# 导入库 import torchvision.transforms as tf import torch from PIL import Image, ImageOps import random # 随机翻转和随机缩放 class MyCoTransform(object): def __init__(self, augment=True, base_size=320, scale=True,crop = True): self.scale = scale self.augment = augment self.base_size = base_size self.crop = crop def __call__(self, input): ''' :param input: 图片 :return: ''' if (self.augment): # Random hflip random.seed(1) if random.random() < 0.5: # 请在此添加你的代码实现左右翻转 # ********** Begin *********# input = # ********** End **********# # 随机缩放 if self.scale: # 请在此添加你的代码实现缩放,缩放比例为0.75-2.0 # ********** Begin *********# short_size = # ********** End **********# else: short_size = self.base_size w, h = input.size if h > w: ow = short_size oh = int(1.0 * h * ow / w) else: oh = short_size ow = int(1.0 * w * oh / h) input = input.resize((ow, oh), Image.BILINEAR) # 随机裁剪 if self.crop: # 请在此添加你的代码实现随机裁剪,裁剪大小为224x224 # ********** Begin *********# input = # ********** End **********# w, h = input.size # 请在此添加你的代码存储图片 # ********** Begin *********# # ********** End **********#
最新发布
05-28
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如雾如电

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值