前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >数据处理(四)| 数据增强全解析:从基础概念到实战代码,掌握核心技巧!

数据处理(四)| 数据增强全解析:从基础概念到实战代码,掌握核心技巧!

原创
作者头像
CoovallyAIHub
发布2025-03-03 17:11:17
发布2025-03-03 17:11:17
16000
代码可运行
举报
运行总次数:0
代码可运行

一、引言

前面已经对数据清洗、数据质量评估、数据预处理进行了详细的分析和介绍,今天就要介绍最后一步——数据增强,数据增强是计算机视觉领域中一项重要的数据预处理技术,旨在通过对原始数据进行变换和扩展,生成多样化的训练样本,从而提高模型的泛化能力和鲁棒性。随着深度学习技术的快速发展,数据增强已成为解决数据稀缺、过拟合等问题的关键手段。本文将从数据增强的基本概念、数据增强意义、常见方法、代码事例、无代码数据增强工具及未来发展方向等方面进行详细探讨。

小贴士:数据清洗、质量评估和预处理的详细操作,可以回顾我们之前的文章哦~


二、数据增强的基本概念

数据增强是指通过对原始数据进行一系列变换或处理,生成新的数据样本,以扩充数据集的方法。其核心目标是通过增加数据的多样性和数量,帮助模型更好地学习和理解数据的真实分布,从而提升模型在新数据上的表现。

其实,“质量优先、多样性优先”通常是AI数据策略中更为实际的考量,也解释了为什么许多团队选择在已有数据的基础上,通过各种增强⼿段来挖掘潜能,⽽不是⼀味地追求数据规模的扩张。


三、数据增强的意义与优势

从⼯程⻆度看,数据增强的优势可以归纳为以下⼏点:

提升模型的泛化能⼒

根据Shorten和Khoshgoftaar的综述研究,数据增强能显著提升深度学习模型的泛化能⼒。

通过添加旋转、缩放、翻转、亮度调整等变化,让模型在训练阶段就⻅识到“同⼀对象的多种可能观测⻆度或不同光照条件”。这样当模型在推断环节遇到类似变形的真实场景时,就不容易“束⼿⽆策”,从⽽提⾼了泛化性能。

缓解过拟合

在深度学习中,过拟合通常表现为模型记住了训练集的细节,⽽没能学到真正具有普适性的特征。数据增强可以使模型“见到”更多变异版本的同⼀类别,迫使模型学习到更具鲁棒性的特征,⽽不单单依赖于某些固定像素或纹理。

平衡类间或场景间分布

对于⽬标检测或图像分类任务,若某些类别数据本就稀少,可以额外针对这些类别做更多增强,如随机裁剪、增加噪声、形变等,以提⾼该类别在训练中的权重。对于⽆⼈机影像⽽⾔,若夜晚数据严重短缺,就可以在已有部分夜晚数据上进⾏风格迁移或光照变换,模拟更多夜间场景,从⽽平衡整体的场景分布。

低成本⾼收益

相对于再次组织⼤规模采集,数据增强只需在已有数据集上离线处理即可。算法⼯程师和数据⼯程师只需要编写或调⽤⼀些数据增强脚本,就能“批量”⽣成新样本。虽然这些增强样本并⾮“真的不同”——它们的核⼼语义与原图⼀致,但对模型⽽⾔却起到了“丰富多样性”的作⽤。


四、为什么增强数据,⽽不是增加数据?

从表⾯看,这是⼀道关于数据规模与多样性平衡的选择题,⽽更深层的原因在于:数据增强既能快速扩⼤样本多样性,⼜能显著降低采集和标注成本。对于许多AI项⽬——尤其是⽆⼈机影像、医疗影像、⼯业检测等数据获取难度较⾼的场景,数据增强是实现快速迭代、丰富场景覆盖的关键技术路径。

对于⽬标检测或图像分类任务,若某些类别数据本就稀少,可以额外针对这些类别做更多增强,如随机裁剪、增加噪声、形变等,以提⾼该类别在训练中的权重。正如Russakovsky等⼈在ImageNet挑战赛中所发现,数据分布的不平衡是影响模型性能的关键因素之⼀。对于无人机影像⽽⾔,若夜晚数据严重短缺,就可以在已有部分夜晚数据上进行风格迁移或光照变换,模拟更多夜间场景,从⽽平衡整体的场景分布。


五、常见的数据增强方法

在计算机视觉领域,数据增强⽅法⼤致可以分为以下⼏类:

⼏何变换类

这类⽅法在保持图像语义不变的前提下,改变图像的⼏何属性。

旋转(Rotation):在⼀定⻆度范围内随机旋转图像

翻转(Flip):⽔平或垂直翻转

缩放(Scale):放⼤或缩⼩图像

裁剪(Crop):随机裁剪图像的⼀部分区域

光照和颜⾊变换类

亮度调整(Brightness):随机增加或减少图像亮度

对⽐度调整(Contrast):改变图像的对⽐度

⾊调变换(Hue):调整图像的⾊调

饱和度调整(Saturation):改变图像的颜⾊饱和度

噪声和模糊

⾼斯噪声(Gaussian Noise):添加随机噪声

运动模糊(Motion Blur):模拟相机运动产⽣的模糊效果

⾼斯模糊(Gaussian Blur):模拟失焦效果

⾼级增强⽅法

风格迁移(Style Transfer):将⼀种图像风格转换为另⼀种

Mixup:将两张图⽚按⽐例混合

CutMix:将⼀张图⽚的⼀部分替换为另⼀张图⽚的对应部分,这种⽅法不仅能提升分类性能,还能帮助模型学习到更好的特征定位能⼒

⾃动增强(AutoAugment):使⽤强化学习⾃动搜索最优的增强策略


六、数据增强代码示例

Albumentations是一个Python库,用于快速灵活的图像增强。Albumentations 有效地实现了丰富多样的图像变换操作,这些操作针对性能进行了优化,同时为不同的计算机视觉任务提供了简洁而强大的图像增强界面,包括对象分类、分割和检测。

几何变换类代码示例

代码语言:javascript
代码运行次数:0
复制
import cv2
import albumentations as A
from show_images import show_images
 
# 读取图像
image = cv2.imread("../images/example.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
 
# 定义几何变换
transform = A.Compose([
    A.HorizontalFlip(p=0.5),  # 水平翻转
    A.VerticalFlip(p=0.5),    # 垂直翻转
    A.Rotate(limit=90, p=0.5),  # 随机旋转
    A.RandomCrop(256, 256, p=0.5),  # 随机裁剪
    A.Resize(300, 300, p=1)  # 调整图像大小
])
 
# 应用变换
augmented = transform(image=image)
augmented_image = augmented['image']
 
show_images(image,augmented_image)

颜⾊变换类代码示例

代码语言:javascript
代码运行次数:0
复制
import cv2
import albumentations as A
from show_images import show_images

# 读取图像
image = cv2.imread("../images/example.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 定义颜色变换
transform = A.Compose([
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),  # 随机调整亮度和对比度
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),  # 调整色调、饱和度和亮度
    A.RGBShift(r_shift_limit=20, g_shift_limit=20, b_shift_limit=20, p=0.5)  # 随机偏移 RGB 通道
])

# 应用变换
augmented = transform(image=image)
augmented_image = augmented['image']
show_images(image,augmented_image)

七、Coovally平台无代码数据增强

在Coovally平台上,提供了可视化、无代码的数据增强工具,其中包含了几何变换、颜色变换、模糊变换、裁剪变换等50多种不同数据增强方法。

在Coovally平台上创建好数据集后,点击新增数据集版本,这个操作过程中可进行用户所需的数据增强。全程可视化查看与参数设置,丝滑操作!

与此同时,Coovally还整合了各类公开可识别数据集,进一步节省了用户的时间和精力,让模型训练变得更加高效和便捷。

在Coovally平台上,无需配置环境、修改配置文件等繁琐操作,可一键另存为我的模型,上传数据集,即可使用YOLO、Faster RCNN等热门模型进行训练与结果预测,全程高速零代码!而且模型还可分享与下载,满足你的实验研究与产业应用。


总结

数据增强是计算机视觉中不可或缺的技术,能够有效提升模型的性能和鲁棒性。随着自动化增强技术和生成模型的发展,数据增强的应用范围和效果将进一步扩大。在实际应用中,用户需要根据任务需求选择合适的增强方法,并平衡增强效果与计算成本。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言
  • 二、数据增强的基本概念
  • 三、数据增强的意义与优势
    • 提升模型的泛化能⼒
    • 缓解过拟合
    • 平衡类间或场景间分布
    • 低成本⾼收益
  • 四、为什么增强数据,⽽不是增加数据?
  • 五、常见的数据增强方法
    • ⼏何变换类
    • 光照和颜⾊变换类
    • 噪声和模糊
    • ⾼级增强⽅法
  • 六、数据增强代码示例
    • 几何变换类代码示例
    • 颜⾊变换类代码示例
  • 七、Coovally平台无代码数据增强
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档