深度学习中的图像强化

如果我们的训练集过少,我们可以对训练集进行图像强化,因为一种图片进行裁剪,反转,平移,对图片的类别不会发生改变,但对计算机来说就是不同的图片。

代码主要包含这些,只需要对训练集处理,不需要对测试集处理。

data_transform={
    'train': transforms.Compose([
        # 调整图像大小为300x300像素
        transforms.Resize([256, 256]),

        # 随机旋转:-45到45度之间随机选择角度
        transforms.RandomRotation(45),
        #
        # # 从中心裁剪出256x256的区域
        transforms.CenterCrop([256, 256]),

        # 随机水平翻转:以50%的概率进行水平镜像
        transforms.RandomHorizontalFlip(p=0.5),

        # 随机垂直翻转:以50%的概率进行垂直镜像
        transforms.RandomVerticalFlip(p=0.5),

        # # 颜色抖动:随机调整亮度、对比度、饱和度和色调
        transforms.ColorJitter(
            brightness=0.2,    # 亮度变化幅度为20%
            contrast=0.1,      # 对比度变化幅度为10%
            saturation=0.1,    # 饱和度变化幅度为10%
            hue=0.1            # 色调变化幅度为10%
        ),

        # # 随机灰度化:以10%的概率将图像转换为灰度图
        transforms.RandomGrayscale(p=0.1),

        # 将PIL图像转换为PyTorch张量,并自动归一化到[0,1]范围
        transforms.ToTensor(),

        # 标准化:使用ImageNet数据集的均值和标准差进行标准化
        transforms.Normalize(
            [0.485, 0.456, 0.406],  # 均值(R, G, B通道)
            [0.229, 0.224, 0.225]   # 标准差(R, G, B通道)
        )
    ]),

    # 验证/测试数据的预处理(通常不需要数据增强)
    'test': transforms.Compose([
        transforms.Resize([256, 256]),
        # transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ])
}

这里用一个表格来展示作用

变换名称 (Transform)主要作用常见参数及说明引用来源
transforms.Resize([256, 256])将输入图像缩放至指定尺寸size: 目标尺寸。可以是 (h, w) 元组,也可以是单个整数(将图像短边缩放到该值,长边按比例缩放)。 interpolation: 插值方法,如 BILINEAR(默认)。
transforms.RandomRotation(45)随机旋转图像,增加模型对物体角度的鲁棒性degrees: 旋转角度范围。可以是 (-deg, +deg),也可以是单个数字(表示±角度)。
transforms.CenterCrop([256, 256])从图像中心裁剪出指定大小的区域。通常在随机旋转等可能改变图像边界的操作后,用于得到固定大小的输入。size: 裁剪的目标尺寸。
transforms.RandomHorizontalFlip(p=0.5)以给定概率随机水平翻转图像。这是非常常用且有效的增强方式,能提供图像的镜像视角。p: 翻转概率,默认为0.5。
transforms.RandomVerticalFlip(p=0.5)以给定概率随机垂直翻转图像。适用于上下对称的物体或场景。p: 翻转概率,默认为0.5。
transforms.ColorJitter(...)随机改变图像的亮度、对比度、饱和度和色调。模拟不同光照、摄像头等造成的颜色差异。brightnesscontrastsaturationhue: 调整的幅度范围。
transforms.RandomGrayscale(p=0.1)以一定概率将图像转换为灰度图。迫使模型不过度依赖颜色信息,关注形状和纹理特征。p: 转换概率。
transforms.ToTensor()转换格式。将PIL图像或NumPy数组转换为PyTorch张量(Tensor),并将像素值从[0, 255]归一化到[0, 1]。这是后续操作(如Normalize)的基础。
transforms.Normalize(...)标准化。用均值和标准差对每个通道进行标准化,使数据分布更稳定,加速模型收敛。

在训练上,如果我们们每次进行一轮数据进行训练,数据都是不一样,所以这里我们的训练准确率会一直增加,但是一开始我们的准确率比较低,但是这个准确率比我们不增强数据的上限要高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值