训练机器学习或深度学习模型的目标是成为“通用”模型。这要求模型不要过度拟合训练数据集,或者换句话说,我们的模型对看不见的数据有很好的理解。数据增强也是避免过度拟合的众多方法之一。扩展用于训练模型的数据量的过程称为数据扩充。通过训练具有多种数据类型的模型,我们可以获得更“泛化”的模型。“多种数据类型”是什么意思?本文只讨论“图像”数据增强技术,只详细介绍各种图像数据增强策略。我们还将使用PyTorch动手实践并实施主要用于计算机视觉的图像数据或数据增强技术。因为引入的是数据增强技术。所以只用一张图片。看一下可视化代码importPIL.ImageasImageimporttorchfromtorchvisionimporttransformsimportmatplotlib.pyplotaspltimportnumpyasnpimportwarningsdefimshow(img_path,transform):Resize/Rescale这个函数用来调整图片的大小图像的高度和宽度到我们想要的特定尺寸。下面的代码演示了我们要将图像从其原始大小调整为224x224。path='./kitten.jpeg'transform=transforms.Resize((224,224))imshow(path,transform)将要选择的图像的一部分应用于新图像。例如,使用CenterCrop返回中心裁剪图像。transform=transforms.CenterCrop((224,224))imshow(path,transform)RandomResizedCrop该方法同时结合了裁剪和调整大小。transform=transforms.RandomResizedCrop((100,300))imshow(path,transform)水平或垂直翻转图像,下面的代码将尝试对我们的图像应用水平翻转。transform=transforms.RandomHorizo??ntalFlip()imshow(path,transform)填充包括在图像的所有边缘上按指定量填充。我们将每边填充50像素。transform=transforms.Pad((50,50,50,50))imshow(path,transform)Rotation对图像应用随机旋转。让我们把这个角度设为15度。transform=transforms.RandomRotation(15)imshow(path,transform)随机仿射这种技术是一种保持中心不变的变换。这个技巧有一些参数:degrees:旋转角度translate:水平和垂直转换scale:缩放参数share:图像裁剪参数fillcolor:图像外填充的颜色transform=transforms.RandomAffine(1,translate=(0.5,0.5),scale=(1,1),shear=(1,1),fillcolor=(256,256,256))imshow(path,transform)高斯模糊图像将使用高斯模糊进行模糊处理。transform=transforms.GaussianBlur(7,3)imshow(path,transform)灰度将彩色图像转换为灰度。transform=transforms.Grayscale(num_output_channels=3)imshow(path,transform)颜色增强,也称为颜色抖动,是通过改变图像的像素值来修改图像颜色属性的过程。以下方法都是与颜色相关的操作。与原始图像相比,亮度会改变图像的亮度,使生成的图像变暗或变亮。transform=transforms.ColorJitter(brightness=2)imshow(path,transform)Contrast图像最暗和最亮部分之间的差异程度称为对比度。图像的对比度也可以作为增强进行调整。transform=transforms.ColorJitter(cnotallow=2)imshow(path,transform)饱和度图像中颜色的分离定义为饱和度。transform=transforms.ColorJitter(saturatinotallow=20)imshow(path,transform)色调定义为图像中颜色的深浅。transform=transforms.ColorJitter(hue=2)imshow(path,transform)总结图像本身的变化将有助于模型泛化到看不见的数据,这样它就不会过度拟合数据。以上就是我们常用的数据增强技术。Torchvision也包含了很多方法,可以在他的文档中找到:https://pytorch.org/vision/stable/transforms.html
