当前位置: 首页 > news >正文

图像数据增强方法概述

图像数据增强方法概述

  • 1. 什么是图像数据增强技术?
  • 2. 图像数据增强技术分类
    • 2.1 几何变换
          • Python 示例代码
    • 2.2 颜色变换
    • 2.3 噪声添加
  • 3. 参考文献

1. 什么是图像数据增强技术?

  • 基础概念:图像增强技术是计算机视觉和图像处理领域中的一个关键技术,主要用于改善图像的质量或者使其更适合后续的图像分析任务。通过对原始图像进行一系列变换,生成新的图像样本,从而增加训练数据集的多样性和丰富性,最终提升机器学习模型的性能和鲁棒性。
  • 相关应用:帮助模型学习到更广泛的数据特征,有效避免过拟合问题,使模型在面对未见过的数据时表现得更加稳健。在深度学习领域,特别是在卷积神经网络(CNN)的应用中,图像增强已经成为了一个标准的预处理步骤,极大地促进了模型的泛化能力和准确性。

对于图片数据集数量和种类较少的应用场景更加有效

2. 图像数据增强技术分类

2.1 几何变换

定义:几何变换是图像数据增强中最基本且常用的方法。其主要目的是通过修改图像的空间结构,来生成新的样本。这类方法可以使模型更加鲁棒,适应不同的物体位置和方向。

  • 旋转:旋转是指将图像围绕其中心点进行旋转,可以模拟不同角度的视图,从而使模型对物体在不同方向上的表现更加稳定。

  • 平移:平移是将图像在水平方向或垂直方向上移动一定的像素。平移操作可以帮助模型学习到物体在不同位置的特征。

  • 缩放:缩放是指改变图像的大小。缩放可以使模型适应不同尺寸的物体,增强其对比例变化的鲁棒性。

  • 翻转:翻转是将图像进行水平或垂直翻转。翻转操作可以帮助模型学习到镜像对称的特征。

在这里插入图片描述

Python 示例代码
import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('img.png')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 定义几何变换
def augment_geometric(image):# 旋转rows, cols, _ = image.shapeangle = 30  # 旋转角度M_rotate = cv2.getRotationMatrix2D((cols / 2, rows / 2), angle, 1)rotated = cv2.warpAffine(image, M_rotate, (cols, rows))# 平移M_translate = np.float32([[1, 0, 50], [0, 1, 50]])  # 水平和垂直平移50像素translated = cv2.warpAffine(image, M_translate, (cols, rows))# 翻转flipped = cv2.flip(image, 1)  # 水平翻转return rotated, translated, flipped# 进行增强
rotated_image, translated_image, flipped_image = augment_geometric(image)# 可视化
plt.figure(figsize=(12, 8))plt.subplot(2, 2, 1)
plt.title('Original Image')
plt.imshow(image)
plt.axis('off')plt.subplot(2, 2, 2)
plt.title('Rotated Image (30 degrees)')
plt.imshow(rotated_image)
plt.axis('off')plt.subplot(2, 2, 3)
plt.title('Translated Image')
plt.imshow(translated_image)
plt.axis('off')plt.subplot(2, 2, 4)
plt.title('Flipped Image')
plt.imshow(flipped_image)
plt.axis('off')plt.tight_layout()
plt.show()

2.2 颜色变换

定义:颜色变换是通过改变图像的颜色特性来增强图像数据。这类方法主要包括亮度调整、对比度调整、饱和度调整和色相调整等。颜色变换能够帮助模型适应不同光照条件和色彩变化。

  • 亮度调整:亮度调整是通过增加或减少图像的亮度值来改变图像的整体亮度。此方法可以模拟不同的光照条件。

  • 对比度调整:对比度调整是通过改变图像中亮度值的分布来增强图像的对比度。提高对比度可以使得图像中的细节更加清晰。

  • 饱和度调整:饱和度调整是通过改变颜色的饱和程度来影响图像的色彩表现。增加饱和度可以使颜色更加鲜艳,而降低饱和度则会使颜色趋向灰色。

  • 色相调整:色相调整是通过改变颜色的色相值来改变图像的整体色调。此方法可以用来生成不同色彩风格的图像。
    在这里插入图片描述

Python 示例代码

import cv2
import numpy as np
import matplotlib.pyplot as plt# 读取图像
image = cv2.imread('image.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 定义颜色变换
def augment_color(image):# 亮度调整bright = cv2.convertScaleAbs(image, alpha=1, beta=50)  # alpha=1保持亮度,beta增加亮度# 对比度调整contrast = cv2.convertScaleAbs(image, alpha=2, beta=0)  # alpha>1增加对比度# 饱和度调整hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)  # 转换到HSV颜色空间hsv[..., 1] = hsv[..., 1] * 1.5  # 增加饱和度saturated = cv2.cvtColor(hsv, cv2.COLOR_HSV2RGB)  # 转回RGB颜色空间return bright, contrast, saturated# 进行增强
bright_image, contrast_image, saturated_image = augment_color(image)# 可视化
plt.figure(figsize=(12, 8))plt.subplot(2, 2, 1)
plt.title('Original Image')
plt.imshow(image)
plt.axis('off')plt.subplot(2, 2, 2)
plt.title('Brightness Adjusted')
plt.imshow(bright_image)
plt.axis('off')plt.subplot(2, 2, 3)
plt.title('Contrast Adjusted')
plt.imshow(contrast_image)
plt.axis('off')plt.subplot(2, 2, 4)
plt.title('Saturation Adjusted')
plt.imshow(saturated_image)
plt.axis('off')plt.tight_layout()
plt.show()

2.3 噪声添加

噪声添加是通过在图像中引入随机噪声来增强数据。这种方法可以帮助模型提高对噪声干扰的鲁棒性,模拟真实场景中可能出现的干扰。

  • 高斯噪声:高斯噪声是常见的噪声类型,其分布服从高斯分布。添加高斯噪声可以模拟传感器噪声。

  • 椒盐噪声:椒盐噪声是指图像中随机出现的亮点(盐)和暗点(胡椒),这种噪声可以模拟图像传输中的干扰。

  • 泊松噪声:泊松噪声通常用于模拟光子计数过程中的噪声,特别是在低光照条件下。

还可以是图像压缩噪声等等,这里不再一一介绍
在这里插入图片描述

Python 示例代码

def augment_noise(image):# 添加高斯噪声gauss = np.random.normal(0, 25, image.shape).astype(np.uint8)noisy_gauss = cv2.add(image, gauss)# 添加盐和胡椒噪声s_vs_p = 0.5amount = 0.04out = np.copy(image)# Salt noisenum_salt = np.ceil(amount * image.size * s_vs_p)coords = [np.random.randint(0, i - 1, int(num_salt))for i in image.shape]out[coords] = 1# Pepper noisenum_pepper = np.ceil(amount* image.size * (1. - s_vs_p))coords = [np.random.randint(0, i - 1, int(num_pepper))for i in image.shape]out[coords] = 0return noisy_gauss, out# 进行增强
noisy_gauss, noisy_sp = augment_noise(image)# 可视化
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.title('Gaussian Noise Added')
plt.imshow(noisy_gauss)
plt.axis('off')plt.subplot(1, 2, 2)
plt.title('Salt and Pepper Noise Added')
plt.imshow(noisy_sp)
plt.axis('off')plt.show()

3. 参考文献

[1] J. Liu, et al. "Image Data Augmentation for Deep Learning: A Review." IEEE Access, 2020.[2] S. Perez and W. Wang. "The Effectiveness of Data Augmentation in Image Classification using Deep Learning." 2017.[3] A. Shorten and T. Khoshgoftaar. "A survey on Image Data Augmentation for Deep Learning." Journal of Big Data, 2019.[4] A. Ge, et al. "Data augmentation for deep learning: A review." Computer Science Review, 2021.[5] F. Zhang, et al. "Noise Robust Image Classification using Deep Learning." IEEE Transactions on Image Processing, 2018.[6] Y. Liu, et al. "Image Classification with Noise Robustness via Data Augmentation." International Journal of Computer Vision, 2020.

创作不易,烦请各位观众老爷给个三连,小编在这里跪谢了!
在这里插入图片描述

http://www.lryc.cn/news/406020.html

相关文章:

  • 【学习笔记】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪
  • 分享从零开始学习网络设备配置--任务6.1 实现计算机的安全接入
  • 双向链表(C语言版)
  • 【算法/学习】前缀和差分
  • idea Project 不显示文件和目录
  • Linux--Socket编程预备
  • 100个python的基本语法知识【下】
  • Git如何将一个分支上的修改转移到另一个分支
  • jvm-证明cpu指令是乱序执行的案例
  • 《流程引擎原理与实践》开源电子书
  • 谷粒商城实战笔记-52~53-商品服务-API-三级分类-新增-修改
  • uni-app 影视类小程序开发从零到一 | 开源项目分享
  • Python使用正则替换字符串
  • 每日一练,java03
  • 【机器学习】深入理解损失函数(Loss Functions)
  • python实现特征检测算法3
  • 软件更新的双刃剑:从”微软蓝屏”事件看网络安全的挑战与对策
  • Redis 主从搭建
  • LeetCode 129, 133, 136
  • macOS 环境Qt Creator 快捷键
  • 【C# WInForm】将TextBox从输入框设置为文本框
  • minio 服务docker配置
  • 开源模型应用落地-LangChain高阶-智能体探究-自定义agent(五)
  • 16_网络IPC4-数据传输
  • 怎样做好仓库管理工作?如何利用仓库管理系统进行有效管理?
  • PHP-显示所有错误信息
  • js修改hash的方法
  • 机械学习—零基础学习日志(高数10——函数图形)
  • Godot游戏制作 03世界构建1.0版
  • MySql性能调优05-[sql实战演练]