【数据增强】

【数据增强】

  • [1 数据增强的情形](#1 数据增强的情形)
  • [2 数据增强的方法](#2 数据增强的方法)

1 数据增强的情形

当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样性提高,数据集本身大小未变,只是做了微小调整送入网络。

数据增强数据有限的情况下,可以增加样本的多样性、抑制过拟合,提高正确率。

2 数据增强的方法

torchvision提供了诸多随机改变图片的方法:

复制代码
transforms.RandomCrop    # 随机位置裁剪  transforms.CenterCrop
transforms.RandomHorizontalFlip(p=1)   # 随机水平翻转
transforms.RandomVerticalFlip(p=1)     # 随机上下翻转
transforms.RandomRotation
transforms.ColorJitter(brightness=1)
transforms.ColorJitter(contrast=1)
transforms.ColorJitter(saturation=0.5)
transforms.ColorJitter(hue=0.5)
tansforms.RandomGrayscale(p=0.5)     # 随机灰度化

如随机裁剪图片:

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import torchvision
import glob
from torchvision import transforms
from torch.utils import data
from PIL import Image

pil_img = Image.open('dataset2/cloudy134.jpg')	#自定义路径
transform = transforms.Compose([
        transforms.Resize((256, 256)),
        transforms.RandomCrop((224, 224))
])


plt.figure(figsize=(12, 8))
for i in range(6):
    img = transform(pil_img)
    plt.subplot(2, 3, i+1)
    plt.imshow(img)
plt.subplots_adjust(wspace=0.15, hspace=0.15)
plt.savefig('pics/5_0.jpg') #自定义路径

随机水平翻转:

python 复制代码
pil_img = Image.open('dataset2/cloudy134.jpg')
trans_img = transforms.RandomHorizontalFlip(p=1)(pil_img) 
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(pil_img)
plt.subplot(1, 2, 2)
plt.imshow(trans_img)
plt.show()
plt.savefig('pics/5_1.jpg')

随机亮度调整:
注意:这里的区间设置不宜过大,否则图片容易变化过大,导致失真

python 复制代码
pil_img = Image.open('dataset2/cloudy134.jpg')
transform = transforms.Compose([
        transforms.Resize((256, 256)),
        transforms.ColorJitter(brightness=(0.7, 1.3), contrast=(0.7, 1.3), saturation=(0.7, 1.3), hue=(-0.05, 0.05))
])
plt.figure(figsize=(12, 8))
for i in range(6):
    img = transform(pil_img)
    plt.subplot(2, 3, i+1)
    plt.imshow(img)
plt.subplots_adjust(wspace=0.15, hspace=0.15)
plt.savefig('pics/5_2.jpg')
相关推荐
deephub3 分钟前
机器学习超参数调优:十个实用的贝叶斯优化(Bayesian Optimization)进阶技巧
人工智能·python·深度学习·机器学习·贝叶斯优化
非著名架构师8 分钟前
嵌入业务的“气象智能芯片”:能源与金融企业如何将AI气象组件化为运营核心?
人工智能·深度学习·风光功率预测·高精度光伏功率预测模型·高精度气象数据
MicroTech20259 分钟前
微算法科技(NASDAQ MLGO)采用混合深度学习赋能区块链:打造智慧城市安全新范式
科技·深度学习·算法
一瞬祈望11 分钟前
⭐ 深度学习入门体系(第 2 篇): 为什么神经网络一定需要激活函数?
人工智能·深度学习·神经网络
Drise_13 分钟前
解码器详解(训练过程)
深度学习
瀚岳-诸葛弩22 分钟前
对比tensorflow,从0开始学pytorch(二)--多尺度实现
人工智能·pytorch·tensorflow
OpenBayes23 分钟前
VibeVoice-Realtime TTS重构实时语音体验;覆盖9大真实场景,WenetSpeech-Chuan让模型听懂川话
人工智能·深度学习·数据集·图像识别·语音合成·图像生成·视频生成
LDG_AGI30 分钟前
【推荐系统】深度学习训练框架(十六):模型并行——推荐系统的TorchRec和大语言模型的FSDP(Fully Sharded Data Parallel)
人工智能·pytorch·分布式·深度学习·语言模型·自然语言处理·推荐算法
盼小辉丶34 分钟前
PyTorch实战(16)——基于LSTM实现音乐生成
pytorch·深度学习·lstm·生成模型
Blossom.1189 小时前
基于Embedding+图神经网络的开源软件供应链漏洞检测:从SBOM到自动修复的完整实践
人工智能·分布式·深度学习·神经网络·copilot·开源软件·embedding