深度学习必备 3个非常实用的Python图像增强库(使用步骤 + 演示效果)_深度学习图像增强python

import albumentations as Aimport cv2

除了 Albumentations 包之外,我们还使用 OpenCV 包,这是一个支持多种图像格式的开源计算机视觉库。专辑依赖于 OpenCV;因此,您已经安装了它。

图像翻转

‘A.HorizontalFlip’ 和 ‘A.VerticalFlip’ 函数用于水平和垂直翻转图像。p 是一个独特的参数,几乎所有的扩充都支持。它控制使用增强的概率。​​​​​​​

#HorizontalFliptransform = A.HorizontalFlip(p=0.5)augmented_image = transform(image=input_img)[‘image’]plt.figure(figsize=(4, 4))plt.axis(‘off’)plt.imshow(augmented_image)
#VerticalFliptransform = A.VerticalFlip(p=1)augmented_image = transform(image=input_img)[‘image’]plt.figure(figsize=(4, 4))plt.axis(‘off’)plt.imshow(augmented_image)

图像缩放和旋转

该增强器随机使用仿射变换来平移、缩放和旋转输入图像。​​​​​​​

transform = A.ShiftScaleRotate(p=0.5)random.seed(7) augmented_image = transform(image=input_img)[‘image’]plt.figure(figsize=(4, 4))plt.axis(‘off’)plt.imshow(augmented_image)

图像通道随机重组

该增强器随机重新排列输入图像的 RGB 通道​​​​​​​

from albumentations.augmentations.transforms import ChannelShuffle transform = ChannelShuffle(p=1.0) random.seed(7) augmented_image = transform(image=input_img)[‘image’] plt.figure(figsize=(4, 4)) plt.axis (‘off’) plt.imshow(augmented_image)

图像曝光

该增强器反转输入图像中大于某个阈值的所有像素值。​​​​​​​

from albumentations.augmentations.transforms import Solarizetransform = Solarize(threshold=200, p=1.0)augmented_image = transform(image=input_img)[‘image’]plt.figure(figsize=(4, 4))plt.axis(‘off’)plt.imshow(augmented_image)

反转图像

通过从 255 中减去像素值,此增强器反转输入图像。​​​​​​​

from albumentations.augmentations.transforms import InvertImgtransform = InvertImg(p=1.0)augmented_image = transform(image=input_img)[‘image’]plt.figure(figsize=(4, 4))plt.axis(‘off’)plt.imshow(augmented_image)

使用 Compose 增强管道

要定义扩充管道,首先,创建一个 Compose 实例。您必须提供扩充列表作为 Compose 类的参数。在此示例中,我们将使用各种增强功能,例如转置、模糊、失真等。

Compose 调用将导致返回将执行图像增强的变换函数。​​​​​​​

transform = A.Compose([ A.RandomRotate90(), A.Transpose(), A.ShiftScaleRotate(shift_limit=0.08, scale_limit=0.5, rotate_limit=5, p=.8), A.Blur(blur_limit=7), A.GridDistortion(),])random.seed(2) augmented_image = transform(image=input_img)[‘image’]plt.figure(figsize=(4, 4))plt.axis(‘off’)plt.imshow(augmented_image)

SOLT

SOLT 是一个深度学习数据增强库,支持图像、分割掩码、标签和关键点。SOLT 也很快,并且在其后端有 OpenCV。完整的自动生成的文档和示例可以在这里找到:https 😕/mipt-oulu.github.io/solt/.

我们将从使用 pip 命令安装 SOLT 开始:

pip install solt

然后我们将导入增强图像数据所需的所有必要的 SOLT 包:​​​​​​​

import soltimport solt.transforms as slth, w, c = input_img.shapeimg = input_img[:w]

在这里,我们将为扩充管道创建一个 Stream 实例。您必须提供扩充列表作为流类的参数:​​​​​​​

stream = solt.Stream([ slt.Rotate(angle_range=(-90, 90), p=1, padding=‘r’), slt.Flip(axis=1, p=0.5), slt.Flip(axis=0, p=0.5), slt.Shear(range_x=0.3, range_y=0.8, p=0.5, padding=‘r’), slt.Scale(range_x=(0.8, 1.3), padding=‘r’, range_y=(0.8, 1.3), same=False, p=0.5), slt.Pad((w, h), ‘r’), slt.Crop((w, w), ‘r’), slt.Blur(k_size=7, blur_type=‘m’), solt.SelectiveStream([ slt.CutOut(40, p=1), slt.CutOut(50, p=1), slt.CutOut(10, p=1), solt.Stream(), solt.Stream(), ], n=3),], ignore_fast_mode=True)fig = plt.figure(figsize=(17,17))n_augs = 10random.seed(2)for i in range(n_augs): img_aug = stream({‘image’: img}, return_torch=False, ).data[0].squeeze() ax = fig.add_subplot(1,n_augs,i+1) if i == 0: ax.imshow(img) else: ax.imshow(img_aug) ax.set_xticks([]) ax.set_yticks([])plt.show()

总结

图像增强可以帮助增加现有数据集。目前有几个 Python 库可用于图像增强。在本文中,我们使用三个 Python 库——Imgaug、Albalentations和Solt探索了不同的图像增强技术。

希望你喜欢阅读这篇文章!下次训练机器学习或深度学习模型时,请尝试使用这三个库中的一个以及本文中分享的技术,以快速生成额外的图像数据。

下载1:Pytoch常用函数手册

在「OpenCV与AI深度」号后台回复:Pytorch函数手册**,能够学习下载全网第一份Pytorch函数常用手册,包括Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多处理**等十四章内容。

下载2:145个OpenCV实例应用代码

在「OpenCV与AI深入」公众号后台回复:OpenCV145**,**能够学习下载145个OpenCV实例应用代码(Python和C++双语言实现)。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

6eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-uTaKXnb4-1712550352250)]

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值