数据增强

简介: 【7月更文挑战第29天】
# 数据增强
def augment_data(images, labels, n_augmentations=5):
    aug = iaa.Sequential([
        # iaa.Fliplr(0.5), # 水平翻转
        # iaa.Affine(rotate=(-20, 20)), # 随机旋转
        iaa.Multiply((0.8, 1.0)), # 随机亮度
        iaa.Affine(scale=(0.9, 1.1)) # 随机缩放
    ])
    augmented_images = []
    augmented_labels = []
    for img, label in zip(images, labels):
        img = img.reshape((50, 50, -1))  # 恢复图像形状
        for _ in range(n_augmentations):
            augmented_img = aug(image=img)
            augmented_images.append(augmented_img.flatten())  # 展平图像
            augmented_labels.append(label)
    return augmented_images, augmented_labels

代码的目的是增强图像数据,这有助于提高机器学习模型的泛化能力。增强数据通常涉及对图像进行一些随机变换,使模型在训练时能够看到更多的变化。

import imgaug.augmenters as iaa  # 导入imgaug库中的增强函数

这是导入imgaug库中的增强函数模块,imgaug是一个Python库,用于图像增强。

def augment_data(images, labels, n_augmentations=5):

定义了一个函数augment_data,它接收三个参数:

  • images:原始图像数据列表。
  • labels:与图像对应的标签列表。
  • n_augmentations:每个图像要生成的增强图像数量,默认为5。
    aug = iaa.Sequential([

创建一个iaa.Sequential对象,它将按顺序应用多个增强器。

        # iaa.Fliplr(0.5), # 水平翻转

这行代码被注释掉了,但它的作用是水平翻转图像,参数0.5表示每个图像有50%的概率被翻转。

        # iaa.Affine(rotate=(-20, 20)), # 随机旋转

这行代码也被注释掉了,它的作用是随机旋转图像,参数(-20, 20)表示旋转角度在-20到20度之间。

        iaa.Multiply((0.8, 1.0)), # 随机亮度

这行代码将图像的亮度调整为原始亮度的0.8到1.0倍。这可以模拟不同的光照条件。

        iaa.Affine(scale=(0.9, 1.1)) # 随机缩放

这行代码将图像随机缩放,参数(0.9, 1.1)表示缩放比例在0.9到1.1倍之间。这可以模拟图像在不同距离下的观察效果。

    ])
    augmented_images = []
    augmented_labels = []

初始化两个空列表,用于存储增强后的图像和相应的标签。

    for img, label in zip(images, labels):

遍历原始图像和标签。

        img = img.reshape((50, 50, -1))  # 恢复图像形状

将图像数据重新塑形为三维数组,其中50x50是图像的尺寸,-1会自动计算第三个维度的大小,通常是3(因为图像是彩色的)。

        for _ in range(n_augmentations):

对于每个图像,生成指定数量的增强图像。

            augmented_img = aug(image=img)

应用定义好的增强器序列aug到图像上。

            augmented_images.append(augmented_img.flatten())  # 展平图像

将增强后的图像展平为一维数组,并添加到augmented_images列表中。

            augmented_labels.append(label)

将原始标签添加到augmented_labels列表中,因为增强后的图像与原始图像具有相同的标签。

    return augmented_images, augmented_labels

函数返回增强后的图像列表和标签列表。

目录
相关文章
|
2月前
|
存储 自然语言处理 开发者
通用性与灵活性对大模型的影响
通用性与灵活性对大模型的影响
|
3月前
|
编解码 算法 计算机视觉
YOLOv8数据增强预处理方式详解:包括数据增强的作用,数据增强方式与方法
YOLOv8数据增强预处理方式详解:包括数据增强的作用,数据增强方式与方法
|
3月前
|
jenkins 测试技术 持续交付
利用C++增强框架的可测试性(Testability)
**C++框架可测试性提升策略**:通过模块化设计、依赖注入、使用Mock对象和Stub、编写清晰接口及文档、断言与异常处理、分离测试代码与生产代码、自动化测试,可以有效增强C++框架的可测试性。这些方法有助于确保代码正确性、健壮性,提高可维护性和可扩展性。示例包括使用类和接口实现模块化,通过构造函数进行依赖注入,以及利用Google Test和Google Mock进行断言和模拟测试。
58 1
|
4月前
|
机器学习/深度学习 算法 定位技术
医学图像增强系统的设计_kaic
医学图像增强系统的设计_kaic
|
10月前
|
机器学习/深度学习 算法框架/工具 Python
pyton数据增强
pyton数据增强
65 0
|
11月前
|
人工智能 程序员 C#
通过简单原理增强软件可靠性
通过简单原理增强软件可靠性
|
PyTorch 算法框架/工具
语义分割数据增强——图像和标注同步增强
其中常见的数据增强方式包括:旋转、垂直翻转、水平翻转、放缩、剪裁、归一化等。
604 0
|
机器学习/深度学习 人工智能 算法
数据增强方法汇总
数据增强方法汇总
236 0
|
机器学习/深度学习 存储 计算机视觉
【目标检测】常用数据增强从原理到实现
【目标检测】常用数据增强从原理到实现
272 0
|
数据可视化 异构计算
【视觉基础篇】17 # 如何使用后期处理通道增强图像效果?
【视觉基础篇】17 # 如何使用后期处理通道增强图像效果?
93 0
【视觉基础篇】17 # 如何使用后期处理通道增强图像效果?