问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

imgaug库:图像增强的新宠儿

创作时间:
作者:
@小白创作中心

imgaug库:图像增强的新宠儿

引用
CSDN
9
来源
1.
https://blog.csdn.net/zong596568821xp/article/details/83105700
2.
https://blog.csdn.net/ViatorSun/article/details/129553505
3.
https://wenku.csdn.net/column/2bwebh7o8j
4.
https://blog.csdn.net/LuohenYJ/article/details/109254943
5.
https://imgaug.readthedocs.io/en/latest/
6.
https://imgaug.readthedocs.io/en/latest/source/api_augmenters_convolutional.html
7.
https://imgaug.readthedocs.io/en/latest/source/api_random.html
8.
https://datawhalechina.github.io/thorough-pytorch/%E7%AC%AC%E5%85%AD%E7%AB%A0/6.5%20%E6%95%B0%E6%8D%AE%E5%A2%9E%E5%BC%BA-imgaug.html
9.
https://www.cnblogs.com/xxmmqg/p/13062556.html

在深度学习项目中,数据增强是提升模型性能的关键步骤之一。而imgaug作为一款功能强大的图像增强库,以其丰富的功能和灵活的配置,成为了数据科学家和机器学习工程师的得力助手。本文将详细介绍imgaug库的使用方法和应用场景,帮助读者快速掌握这一强大的工具。

01

imgaug库简介

imgaug是一个用于机器学习实验中图像增强的Python库,支持Python 2.7和3.4以上版本。它具有以下特点:

  • 功能全面:支持多种图像增强技术,包括几何变换、颜色空间变换、模糊、锐化等
  • 组合灵活:允许用户轻松组合不同的增强技术,创建复杂的增强序列
  • 随机性支持:提供简单但功能强大的随机接口,可以为每次增强生成不同的参数
  • 关键点支持:可以同时处理图像和关键点(如人脸关键点、物体边界框等),保持它们之间的对应关系
  • 性能优化:支持在后台进程中进行增强,提高处理速度

02

安装方法

imgaug的安装非常简单,可以通过pip直接安装:

pip install imgaug

如果需要安装最新版本,可以从GitHub上直接安装:

pip install git+https://github.com/aleju/imgaug

或者克隆仓库后手动安装:

git clone https://github.com/aleju/imgaug
cd imgaug
python setup.py install
03

基本使用示例

imgaug的基本使用流程包括定义增强序列、读取图像、执行增强和保存结果。以下是一个简单的示例:

import cv2
from imgaug import augmenters as iaa

# 定义增强序列
seq = iaa.Sequential([
    iaa.Crop(px=(0, 16)),  # 随机裁剪0到16像素
    iaa.Fliplr(0.5),       # 50%概率水平翻转
    iaa.GaussianBlur(sigma=(0, 3.0))  # 高斯模糊,sigma范围0到3.0
])

# 读取图像
img = cv2.imread('kobe.jpg')
imglist = [img]

# 执行增强
images_aug = seq.augment_images(imglist)

# 保存结果
cv2.imwrite("imgaug.jpg", images_aug[0])
04

主要功能与API

imgaug提供了丰富的图像增强功能,以下是一些常用的增强方法:

几何变换

  • 仿射变换:支持缩放、平移、旋转和剪切

    iaa.Affine(
        scale={"x": (0.6, 1.4), "y": (0.6, 1.4)},
        translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)},
        rotate=(-20, 20),
        shear=(-16, 16)
    )
    
  • 裁剪和填充

    iaa.CropAndPad(px=(0, 150))
    

模糊与锐化

  • 高斯模糊

    iaa.GaussianBlur((2, 11))
    
  • 均值模糊

    iaa.AverageBlur(k=(2, 11))
    
  • 中值模糊

    iaa.MedianBlur(k=(11, 11))
    
  • 锐化

    iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5))
    

颜色空间变换

  • 改变亮度

    iaa.AddToBrightness((-100, 100))
    
  • 调整对比度

    iaa.contrast.LinearContrast((0.5, 3.0))
    
  • 颜色空间转换

    iaa.WithColorspace(
        to_colorspace="HSV",
        from_colorspace="RGB",
        children=iaa.WithChannels(0, iaa.Add((30, 100)))
    )
    

其他增强方法

  • 添加噪声

    iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255))
    
  • 剪切

    iaa.Crop(px=(0, 150))
    
  • 生成遮挡

    iaa.Cutout(nb_iterations=(1, 11), size=0.1, squared=False)
    
05

与torchvision的比较

相比torchvision,imgaug具有以下优势:

  1. 功能更丰富:imgaug提供了更多样化的增强方法,如加雨、加雾等天气效果模拟
  2. 灵活性更高:imgaug支持更复杂的增强序列组合,可以轻松实现自定义的增强策略
  3. 关键点支持:imgaug可以同时处理图像和关键点,保持它们之间的对应关系
  4. 性能优化:imgaug支持多进程处理,可以显著提高数据增强的效率
06

实际应用案例

imgaug在实际项目中有着广泛的应用,特别是在图像分类和目标检测任务中。以下是一个使用imgaug进行数据增强的示例:

import imgaug.augmenters as iaa

# 定义增强序列
aug = iaa.Sequential([
    iaa.Fliplr(0.5),  # 水平翻转
    iaa.Affine(rotate=(-20, 20)),  # 随机旋转
    iaa.AdditiveGaussianNoise(scale=(0, 0.1*255)),  # 添加高斯噪声
    iaa.Multiply((0.8, 1.2)),  # 随机改变亮度
    iaa.ContrastNormalization((0.75, 1.5))  # 调整对比度
])

# 读取图像和标签
images = [cv2.imread('image1.jpg'), cv2.imread('image2.jpg')]
bbs = [ia.BoundingBoxesOnImage([
    ia.BoundingBox(x1=10, y1=20, x2=100, y2=200),
    ia.BoundingBox(x1=50, y1=60, x2=150, y2=160)
], shape=image.shape) for image in images]

# 执行增强
images_aug, bbs_aug = aug(images=images, bounding_boxes=bbs)

# 保存结果
for i, (img, bb) in enumerate(zip(images_aug, bbs_aug)):
    cv2.imwrite(f"augmented_{i}.jpg", img)
    with open(f"augmented_{i}.txt", "w") as f:
        for bbox in bb.bounding_boxes:
            f.write(f"{bbox.x1} {bbox.y1} {bbox.x2} {bbox.y2}\n")

通过上述代码,我们可以同时对图像和边界框进行增强,保持它们之间的对应关系,这对于目标检测任务尤为重要。

imgaug作为一个功能强大且灵活的图像增强库,能够显著提升模型训练数据的质量和多样性,从而加速机器学习模型的性能。无论是模拟相机角度变化还是增加数据对称性,imgaug都能轻松应对,为你的项目带来意想不到的效果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号