制作网站需要多少费用,自己建设网站怎么挣钱,seo先上排名后收费,大气的网站源码深度学习pytorch之简单方法自定义9类卷积即插即用
数据增强通过对训练数据进行多种变换#xff0c;增加数据的多样性#xff0c;它帮助我们提高模型的鲁棒性#xff0c;并减少过拟合的风险。PyTorch 提供torchvision.transforms 模块丰富的数据增强操作#xff0c;我们可以…深度学习pytorch之简单方法自定义9类卷积即插即用
数据增强通过对训练数据进行多种变换增加数据的多样性它帮助我们提高模型的鲁棒性并减少过拟合的风险。PyTorch 提供torchvision.transforms 模块丰富的数据增强操作我们可以通过组合多种策略来实现复杂的增强效果。本文将介绍 18 种常用的图像数据增强策略并展示如何使用 PyTorch 中的 torchvision.transforms 来实现这些策略。 文章目录 综合应用创建一个数据增强流程1. 随机水平翻转Random Horizontal Flip2. 随机垂直翻转Random Vertical Flip3. 随机旋转Random Rotation4. 随机裁剪Random Crop5. 随机缩放Random Resized Crop6. 颜色抖动Color Jitter7. 亮度调整Brightness Adjust8. 对比度调整Contrast Adjust9. 饱和度调整Saturation Adjust10. 色相调整Hue Adjust11. 随机灰度转换Random Grayscale12. 高斯模糊Gaussian Blur13. 切变变换Shear Transform14. 仿射变换Affine Transform15. 随机噪声添加Random Noise16. 随机剪切Random Erasing17. 图像平移Translation18. 图像归一化Normalization 综合应用创建一个数据增强流程
我们可以将下述增强策略结合起来创建一个数据增强流程transform。以下是流程示例
transform transforms.Compose([transforms.RandomHorizontalFlip(p0.5),transforms.RandomRotation(30),transforms.RandomResizedCrop(224, scale(0.8, 1.0)),transforms.ColorJitter(brightness0.5, contrast0.5, saturation0.5, hue0.5),transforms.RandomGrayscale(p0.2),transforms.ToTensor(),transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]),
])1. 随机水平翻转Random Horizontal Flip
水平翻转是最常见的图像数据增强技术之一。它通过以一定的概率通常是 50%对图像进行水平翻转增加图像的多样性尤其在对称性较强的物体如人脸、动物等中效果显著。
transform transforms.RandomHorizontalFlip(p0.5)2. 随机垂直翻转Random Vertical Flip
垂直翻转与水平翻转类似但适用于那些具有垂直对称性的图像。
transform transforms.RandomVerticalFlip(p0.5)3. 随机旋转Random Rotation
随机旋转可以使模型适应不同的物体方向。旋转角度通常在一定范围内随机选择。
transform transforms.RandomRotation(degrees30)4. 随机裁剪Random Crop
裁剪操作通过从图像中裁剪出一个随机区域可以改变图像的视角模拟拍摄角度的变化。
transform transforms.RandomCrop(size(224, 224))5. 随机缩放Random Resized Crop
随机缩放操作首先从图像中随机裁剪出一部分然后将其缩放到指定的大小。这有助于增强图像的尺度变化。
transform transforms.RandomResizedCrop(224, scale(0.8, 1.0))6. 颜色抖动Color Jitter
颜色抖动是通过随机改变图像的亮度、对比度、饱和度和色相来增加图像的多样性。它特别适用于颜色变化较大的场景。
transform transforms.ColorJitter(brightness0.5, contrast0.5, saturation0.5, hue0.5)7. 亮度调整Brightness Adjust
通过改变图像的亮度来模拟不同的光照条件使模型在低光或强光环境下具有更好的鲁棒性。
transform transforms.ColorJitter(brightness0.5)8. 对比度调整Contrast Adjust
通过随机调整图像的对比度帮助模型适应高对比和低对比的图像。
transform transforms.ColorJitter(contrast0.5)9. 饱和度调整Saturation Adjust
通过随机调整图像的饱和度模拟不同的颜色鲜艳度可以帮助模型适应不同的色彩环境。
transform transforms.ColorJitter(saturation0.5)10. 色相调整Hue Adjust
色相调整改变图像的整体色调通过随机变化色相值来模拟不同的环境色彩。
transform transforms.ColorJitter(hue0.5)11. 随机灰度转换Random Grayscale
随机将图像转换为灰度图像通常通过一定的概率来进行。它有助于减少颜色信息对模型的影响。
transform transforms.RandomGrayscale(p0.2)12. 高斯模糊Gaussian Blur
高斯模糊是一种图像模糊技术可以模拟图像在不同焦距下的效果增加数据集的多样性。
transform transforms.GaussianBlur(kernel_size(5, 5), sigma(0.1, 2.0))13. 切变变换Shear Transform
切变变换可以对图像进行倾斜增加图像的几何形状变化模拟视角变化。
transform transforms.RandomAffine(degrees0, shear20)14. 仿射变换Affine Transform
仿射变换可以通过平移、旋转、缩放等方式对图像进行变换保持图像的几何形状不变。
transform transforms.RandomAffine(degrees0, translate(0.1, 0.1), scale(0.8, 1.2))15. 随机噪声添加Random Noise
在图像中添加随机噪声可以帮助模型更好地适应低质量的输入。虽然 PyTorch 中没有内置的噪声添加操作但可以通过自定义变换来实现。
import numpy as np
import torchclass AddNoise(object):def __init__(self, mean0., std1.):self.mean meanself.std stddef __call__(self, img):img np.array(img)noise np.random.normal(self.mean, self.std, img.shape)img img noiseimg np.clip(img, 0, 255)return Image.fromarray(img.astype(np.uint8))transform AddNoise(mean0., std25.)16. 随机剪切Random Erasing
随机剪切是通过随机选择图像中的一部分并将其替换为随机颜色增强模型对遮挡和噪声的鲁棒性。
transform transforms.RandomErasing(p0.5)17. 图像平移Translation
平移操作对图像进行平移模拟物体在图像中的移动。可以帮助模型适应不同的定位变化。
transform transforms.RandomAffine(degrees0, translate(0.1, 0.1))18. 图像归一化Normalization
归一化操作将图像的像素值调整到一定范围内通常是 [0, 1] 或 [-1, 1]通过减去均值并除以标准差来实现。
transform transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225])