Pytorch框架学习第四次作业——transforms

1. 将介绍的transforms方法一一地,单独地实现对图片的变换,并且通过plt.savefig将图片保存下来

(1)中心裁剪
在这里插入图片描述
(2)随机裁剪

transforms.RandomCrop(200, padding=16)

在这里插入图片描述
(3)随机大小、长宽比裁剪图片

transforms.RandomResizedCrop(size=200, scale=(0.1, 0.9))

在这里插入图片描述
(4)FiveCrop裁剪,在图片的左上角、左下角、右上角、右下角和中心位置截取出五幅图片

transforms.FiveCrop(112),
transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops])),

在这里插入图片描述
(5)TenCrop裁剪,在FiveCrop的基础上,在水平或者垂直方向上翻转复制5幅图片

 transforms.TenCrop(112, vertical_flip=True),
 transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops])),

在这里插入图片描述
(6)水平翻转

transforms.RandomHorizontalFlip(p=1)	#以概率1水平翻转图片

在这里插入图片描述
(7)垂直翻转

transforms.RandomVerticalFlip(p=0.8)

在这里插入图片描述
(8)随机旋转一个角度

transforms.RandomRotation(90, center=(0, 0))	#以(0, 0)为中心随机旋转(-90, 90)

在这里插入图片描述
(9)调整亮度

transforms.ColorJitter(brightness=0.5)

在这里插入图片描述
(10)设置为灰度图像

transforms.Grayscale(num_output_channels=3)

在这里插入图片描述

2. 自定义一个增加椒盐噪声的transforms方法,使得其能正确运行

class AddPepperNoise(object):
    '''
        功能:增加椒盐噪声
        snr:信噪比Signal Noise Rate
        p:概率值
    '''
    def __init__(self, snr, p=0.9):
        # 断言用于判断一个表达式,在表达式条件为 false 的时候触发异常。
        assert isinstance(snr, float) or (isinstance(p, float))
        self.snr = snr
        self.p = p

    def __call__(self, img):
        if random.uniform(0, 1) < self.p:
            img_ = np.array(img).copy()
            h, w, c = img_.shape
            signal_pct = self.snr
            noise_pct = (1 - self.snr)  # 噪声信号的比例
            mask = np.random.choice((0, 1, 2), size=(h, w, 1), p=[signal_pct, noise_pct*0.8, noise_pct*0.2])
            mask = np.repeat(mask, c, axis=2)
            img_[mask == 1] = 255     # 盐噪声
            img_[mask == 2] = 0       # 椒噪声
            return Image.fromarray(img_.astype('uint8')).convert('RGB')
        else:
            return img

打卡要求:文字简答,复制YourTransforms类的代码

3. 用手机将自己钱包中的100元人民币正面进行拍照,并且放到hello pytorch/lesson/lesson-09/test_data/100文件夹下,通过修改不同的数据增强方法,使得模型在10个epoch之后能正确区分你钱包中的100元

新版人民币也老版人民币在颜色上区别较大,这里可以采用将原始训练样本转化为灰度图像的方式进行数据增强。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aidanmomo

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值