数据增强

简介: 【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

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

目录
相关文章
|
5月前
|
编解码 算法 计算机视觉
YOLOv8数据增强预处理方式详解:包括数据增强的作用,数据增强方式与方法
YOLOv8数据增强预处理方式详解:包括数据增强的作用,数据增强方式与方法
|
5月前
|
jenkins 测试技术 持续交付
利用C++增强框架的可测试性(Testability)
**C++框架可测试性提升策略**:通过模块化设计、依赖注入、使用Mock对象和Stub、编写清晰接口及文档、断言与异常处理、分离测试代码与生产代码、自动化测试,可以有效增强C++框架的可测试性。这些方法有助于确保代码正确性、健壮性,提高可维护性和可扩展性。示例包括使用类和接口实现模块化,通过构造函数进行依赖注入,以及利用Google Test和Google Mock进行断言和模拟测试。
82 1
|
6月前
|
机器学习/深度学习 算法 atlas
RAG 2.0架构详解:构建端到端检索增强生成系统
RAG(检索增强生成)旨在通过提供额外上下文帮助大型语言模型(LLM)生成更精准的回答。现有的RAG系统由独立组件构成,效率不高。RAG 2.0提出了一种预训练、微调和对齐所有组件的集成方法,通过双重反向传播最大化性能。文章探讨了不同的检索策略,如TF-IDF、BM25和密集检索,并介绍了如SPLADE、DRAGON等先进算法。目前的挑战包括创建可训练的检索器和优化检索-生成流程。研究表明,端到端训练的RAG可能提供最佳性能,但资源需求高。未来研究需关注检索器的上下文化和与LLM的协同优化。
880 1
EMQ
|
6月前
|
数据采集 消息中间件 并行计算
NeuronEX 3.2.0 发布:增强数据采集、分析计算和管理功能
工业边缘网关软件 NeuronEX 3.2.0 版本现已正式发布,本次发布带来了一系列的增强功能和新特性,旨在为用户提供更多数据采集、分析计算以及管理的能力。
EMQ
107 2
NeuronEX 3.2.0 发布:增强数据采集、分析计算和管理功能
|
6月前
|
机器学习/深度学习 算法 定位技术
医学图像增强系统的设计_kaic
医学图像增强系统的设计_kaic
|
机器学习/深度学习 算法框架/工具 Python
pyton数据增强
pyton数据增强
81 0
|
人工智能 程序员 C#
通过简单原理增强软件可靠性
通过简单原理增强软件可靠性
|
PyTorch 算法框架/工具
语义分割数据增强——图像和标注同步增强
其中常见的数据增强方式包括:旋转、垂直翻转、水平翻转、放缩、剪裁、归一化等。
702 0
|
机器学习/深度学习 人工智能 算法
数据增强方法汇总
数据增强方法汇总
257 0
|
机器学习/深度学习 存储 计算机视觉
【目标检测】常用数据增强从原理到实现
【目标检测】常用数据增强从原理到实现
295 0
下一篇
无影云桌面