方法汇总 | Pytorch实现常见数据增强(Data Augmentation)【附源码】

news2024/9/24 3:26:51

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】48.【车辆检测追踪与流量计数系统】
49.【行人检测追踪与双向流量计数系统】50.【基于YOLOv8深度学习的反光衣检测与预警系统】
51.【危险区域人员闯入检测与报警系统】52.【高密度人脸智能检测与统计系统】
53.【CT扫描图像肾结石智能检测系统】54.【水果智能检测系统】
55.【水果质量好坏智能检测系统】56.【蔬菜目标检测与识别系统】
57.【非机动车驾驶员头盔检测系统】58.【太阳能电池板检测与分析系统】
59.【工业螺栓螺母检测】60.【金属焊缝缺陷检测系统】
61.【链条缺陷检测与识别系统】62.【交通信号灯检测识别】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

引言

数据增强是深度学习中提高模型泛化能力的重要手段之一。其核心思想是通过扩展训练数据集的多样性,使模型能够更好地学习数据中的规律,从而避免过度拟合训练数据,并对未见过的数据保持良好的泛化能力。

数据增强作用

提高模型泛化能力: 通过增加训练数据集的多样性,使模型能够学习到更多数据特征,从而提高对未见过的数据的泛化能力。
减少过拟合: 过度拟合是指模型在训练数据上表现良好,但在测试数据上表现不佳。数据增强可以减少模型对训练数据的依赖,降低过拟合风险。
降低训练成本: 数据增强可以通过对现有数据进行变换,而不需要额外采集数据,从而降低训练成本。
提高模型鲁棒性: 数据增强可以使模型对光照、角度、遮挡等变化更加鲁棒。

图像数据增强技术

图像数据增强技术主要通过对图像进行各种变换来增加训练数据的多样性。常见的图像数据增强技术包括:

  • 旋转、翻转、裁剪: 改变图像的方向和位置。
  • 缩放、变形: 改变图像的大小和形状。
  • 颜色变换: 改变图像的亮度、对比度、饱和度等。
  • 添加噪声: 在图像中添加随机噪声。
  • 混合图像: 将两张图像混合在一起。

PyTorch实现数据增强

PyTorch 提供了丰富的数据增强工具,我们可以直接使用torchvision中的transforms 模块实现。
以下是一些使用 PyTorch 实现图像数据增强的示例:

 import PIL.Image as Image
 import torch
 from torchvision import transforms
 import matplotlib.pyplot as plt
 import numpy as np
 import warnings
 
 def imshow(img_path, transform):
     """
     Function to show data augmentation
     Param img_path: path of the image
     Param transform: data augmentation technique to apply
     """
     img = Image.open(img_path)
     fig, ax = plt.subplots(1, 2, figsize=(15, 4))
     ax[0].set_title(f'Original image {img.size}')
     ax[0].imshow(img)
     img = transform(img)
     ax[1].set_title(f'Transformed image {img.size}')
     ax[1].imshow(img)

改变大小Resize/Rescale

此函数用于将图像的高度和宽度调整为我们想要的特定大小。下面的代码演示了我们想要将图像从其原始大小调整为 224 x 224。

path = './kitten.jpeg'
transform = transforms.Resize((224, 224))
imshow(path, transform)

裁剪Cropping

该技术将要选择的图像的一部分应用于新图像。例如,使用 CenterCrop 来返回一个中心裁剪的图像。

 transform = transforms.CenterCrop((224, 224))
 imshow(path, transform)

随机裁剪/大小RandomResizedCrop

这种方法同时结合了裁剪和调整大小。

 transform = transforms.RandomResizedCrop((100, 300))
 imshow(path, transform)

翻转Flipping

水平或垂直翻转图像,下面代码将尝试应用水平翻转到我们的图像

 transform = transforms.RandomHorizontalFlip()
 imshow(path, transform)

填充Padding

填充包括在图像的所有边缘上按指定的数量填充。我们将每条边填充50像素。

     transform = transforms.Pad((50,50,50,50))
     imshow(path, transform)

旋转Rotation

对图像随机施加旋转角度。我们将这个角设为15度。

 transform = transforms.RandomRotation(15)
 imshow(path, transform)

随机仿射变换Random Affine

这种技术是一种保持中心不变的变换。这种技术有一些参数:

  • 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)

高斯模糊Gaussian Blur

图像将使用高斯模糊进行模糊处理。

 transform = transforms.GaussianBlur(7, 3)
 imshow(path, transform)

变为灰度Grayscale

将彩色图像转换为灰度。

transform = transforms.Grayscale(num_output_channels=3)
imshow(path, transform)

颜色增强,也称为颜色抖动,是通过改变图像的像素值来修改图像的颜色属性的过程。下面的方法都是颜色相关的操作。

亮度Brightness

改变图像的亮度当与原始图像对比时,生成的图像变暗或变亮。

transform = transforms.ColorJitter(brightness=2)
imshow(path, transform)

对比度Contrast

图像最暗和最亮部分之间的区别程度被称为对比度。图像的对比度也可以作为增强进行调整。

transform = transforms.ColorJitter(contrast=2)
imshow(path, transform)

饱和度Saturation

图片中颜色的分离被定义为饱和度。

transform = transforms.ColorJitter(saturation=20)
imshow(path, transform)

色调Hue

色调被定义为图片中颜色的深浅。

transform = transforms.ColorJitter(hue=2) 
imshow(path, transform)


关注文末名片G-Z-H:【阿旭算法与机器学习】,发送【开源】可获取更多学习资源

在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测 | yolov10 原理和介绍

相关系列: 目标检测 | yolov1 原理和介绍 目标检测 | yolov2/yolo9000 原理和介绍 目标检测 | yolov3 原理和介绍 目标检测 | yolov4 原理和介绍 目标检测 | yolov5 原理和介绍 目标检测 | yolov6 原理和介绍 目标检测 | yolov7 原理和介绍 目标检测 | yolov8 原理和…

JS TypeError: Cannot read properties of null (reading ‘getAttribute’) 解决

JS TypeError: Cannot read properties of null (reading ‘getAttribute’) 解决 在JavaScript开发中,TypeError: Cannot read properties of null (reading getAttribute) 是一个常见的错误,它表明你尝试从一个值为null的对象上调用getAttribute方法。…

【AI学习】人工智能的几种主义

无意翻开了杨立昆的《科学之路》,书前有好多人作序,数了一下,八个人的序言,说明,至少有八个人读过这本书。其中黄铁军教授讲到了机器学习的发展历程。 人工智能发展历程中的各种主义,对于外行人大概都是如我…

微信好友恢复,分享4大技巧,快速恢复微信好友

在微信的社交网络中,好友关系的维护至关重要。但有时候,由于误操作或其他原因,我们可能会不小心删除了某些重要联系人。那么,如果想再度找回这些好友,我们应该使用什么方法呢? 别担心,本文将分…

4-1-4 步进电机原理1(电机专项教程)

4-1-4 步进电机原理1(电机专项教程) 4-1-4 步进电机原理1步进基本工作原理步进电机优点步进电机主要部件步进电机基本原理步进电机分类双极性单极性步进电机 4-1-4 步进电机原理1 如何使用arduino控制步进电机 步进电机从原理和工作方法上都更加复杂一些…

打靶记录13——doubletrouble

靶机: https://www.vulnhub.com/entry/doubletrouble-1,743/ 难度: 中 目标: 取得两台靶机 root 权限 涉及攻击方法: 主机发现端口扫描Web信息收集开源CMS漏洞利用隐写术密码爆破GTFObins提权SQL盲注脏牛提权 学习记录&am…

CSP-CCF 202305-1 重复局面

一、问题描述 【题目背景】 国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。 【问题描述】 国际象棋每一个局面可以用大小为 88 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、…

STL六大组件

STL(Standard Template Library,标准模板库)是C标准库的一部分,提供了丰富且高效的数据结构和算法。STL主要由6大组件构成,分别是容器、算法、迭代器、适配器、仿函数和空间配置器。 容器(Containers&#…

Midjourney进阶-反推与优化提示词(案例实操)

​ Midjourney中提示词是关键,掌握提示词的技巧直接决定了生成作品的质量。 当你看到一张不错的图片,想要让Midjourney生成类似的图片,却不知道如何描述画面撰写提示词,这时候Midjourney的/describe指令,正是帮助你推…

AIoTedge边缘计算平台V1.0版本发布

AIoTedge边缘计算平台V1.0,一款创新的AIoT解决方案,现已正式发布。该产品集成了NodeRED软网关、边缘物联网平台和边缘AI能力,为企业提供强大的边云协同能力。它支持设备管理和泛协议接入,确保不同设备间的无缝连接。AIoTedgeV1.0还…

SQL-事务与并发问题

在数据库管理系统中,事务是一个重要的概念,它确保了一组数据库操作要么全部成功,要么全部失败,从而维护数据的完整性和一致性。随着多个用户同时访问数据库,事务的并发处理变得尤为重要。 1. 事务的定义 事务是指一组…

一文读懂推荐系统

随着互联网的飞速发展,信息过载已经成为了一个普遍的问题。我们每天都要面对大量的内容,却很难找到真正符合自己兴趣和需求的信息。这时,推荐系统应运而生,它能够根据用户的兴趣和行为,智能地推荐相关内容,…

​与辉同行2日破亿,打工就是在浪费生命,真让罗永浩说对了!​

去年东方甄选的小作文事件发生之后 罗永浩就鼓励董宇辉出来单干还发表了惊天言论,“打工就是在浪费生命” 董宇辉接手“与辉同行”公司后,两天直播总销售额就已经超过了1亿元 难道真让罗永浩说对了,打工就是在浪费生命吗? 打工…

20240819解决飞凌的OK3588-C的核心板的适配以太网卡RTL8211F-CG在百兆模式下通过交换机上外网

20240819解决飞凌的OK3588-C的核心板的适配以太网卡RTL8211F-CG在百兆模式下通过交换机上外网 2024/8/19 18:00 缘由:由于自制的飞凌的OK3588-C的核心板的底板对空间要求高/敏感,并且对网速要求不高,百兆即可满足要求。 也就直接使用千兆网卡…

质量体系 | 这些医疗器械质量管理标准/法规有什么区别?

在医疗器械行业中,确保产品质量和安全至关重要,而ISO 9001、ISO 13485、GMP、中国《医疗器械生产质量管理规范》和QS820等标准/法规为行业提供了明确的指导。 ISO9001 ISO9001:2015 Quality management systems-Requirements(质量管理体系要…

通过ros2服务来控制程序的启动和关闭

运行handle.py程序,启动服务节点,调用服务节点控制程序的启动和关闭,本例为启动和关闭一个python程序(每隔一秒打印hello,world),运行截图如下: 一、创建服务节点 handle.py import rclpy from rclpy.no…

无人机之航拍挑选注意事项

航拍无人机的挑选,主要从安全稳定、航拍画质、云台防抖、图传距离、续航时间等因素来考虑。 一、安全稳定 安全稳定性,是我们选择航拍无人机的首要参考标准。毕竟再好的镜头、再好的外形设计、再好的航拍功能,如果没有安全稳定的飞行&#x…

【若依 - 前后端不分离版】SysCaptchaController 详解:生成与处理验证码

文章目录 一、SysCaptchaController 类概述1. 类的功能2. 主要功能 二、验证码生成流程1. 接口定义2. 代码流程解析2.1. 设置响应头2.2. 生成验证码2.3. 存储验证码2.4. 返回验证码图片 三、处理异常和流关闭1. 异常处理2. 流关闭 四、实际应用中的验证码处理1. 验证码生成和展…

【数模修炼之旅】05 拟合模型 深度解析(教程+代码)

【数模修炼之旅】05 拟合模型 深度解析(教程代码) 接下来 C君将会用至少30个小节来为大家深度解析数模领域常用的算法,大家可以关注这个专栏,持续学习哦,对于大家的能力提高会有极大的帮助。 1 拟合模型介绍及应用 …

无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案

无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案 大语言模型的训练数据一般基于公开的数据,且每一次训练需要消耗大量算力,这意味着模型的知识一般不会包含私有领域的知识,同时在公开知识领域存在一定的滞后性。为了解决这一…