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具有以下优势:
- 功能更丰富:imgaug提供了更多样化的增强方法,如加雨、加雾等天气效果模拟
- 灵活性更高:imgaug支持更复杂的增强序列组合,可以轻松实现自定义的增强策略
- 关键点支持:imgaug可以同时处理图像和关键点,保持它们之间的对应关系
- 性能优化: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都能轻松应对,为你的项目带来意想不到的效果。
热门推荐
夜间护肤全攻略:正确步骤、产品选择与常见问题解答
汽车报废前,一定要把这几样东西拆下来!不然损失好几万
微信公众号视频怎么下载?五个方法快速下载公众号视频
北京南海子麋鹿苑:林间鹿影绰 “海”中百鸟鸣
如何提高驾照考试的通过率?
数据质量指标:如何衡量数据的准确性
基尼系数的含义和用途是什么
探寻海南传统节日:海岛风情与民俗的绚丽华章
矮生小番茄种植方法
《掌控习惯》读书笔记:习惯养成的四大定律与实用策略
“年轻人大玩具”卖不动了?2024春天,摩托车打响“价格战”
十三本剧情设定亮眼的热血爽文,情节构思巧妙,可以连刷多遍!
房屋中介如何管理好客户:15个实用策略
如何区分主动轮和从动轮?
梦到去世的亲人、朋友,多半是这三种暗示
工程设计变更管理办法中的合规性要求包括哪些方面?
304不锈钢的缺点解析:使用前必读
企业净资产的定义是什么?企业净资产的计算方法是怎样的?
1995年11月出生属猪人的山头火命运势解析
赶黄草的功效与作用
残差神经网络(ResNet)的介绍
如何在手机上设置禁止安装应用程序?
端到端、世界模型、车路云……谁将成为2025年“AI+交通”最热词?
RAG还是微调?微软出了一份特定领域大模型应用建设流程指南
成都天府国际金融中心双塔:建筑设计与技术创新
中国美术学院就业率及就业前景怎么样
在太空建成“信息高速路” 我国卫星互联网进入产业化阶段
安全管理事故照片怎么拍
如何正确计算显示器带宽需求
心悸失眠怎么回事怎么治疗