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

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

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

图像旋转

通过以度为单位定义旋转,我们可以旋转图像。​​​​​​​

rot1 = iaa.Affine(rotate=(-50,20)) input_rot1 = rot1.augment_image(input_img) images_list=[input_img, input_rot1] labels = ['Original', 'Rotated Image'] ipyplot.plot_images(images_list,labels=标签,img_width=180)

图像裁剪

裁剪图像包括从图像的侧面移除像素的列或行。该增强器可以从全尺寸输入图像中提取较小尺寸的子图像。要删除的像素数可以以绝对数或图像大小的一部分指定。

在这种情况下,我们使用从连续间隔 [0.0, 0.3] 中均匀获取的随机分数裁剪图像的每一侧,并在每个图像和每侧采样一次。在这里,我们为顶部取 0.3 的采样分数,这会将图像裁剪 0.3*H,其中 H 是输入图像的高度。​​​​​​​

crop1 = iaa.Crop(percent=(0, 0.3)) input_crop1 = crop1.augment_image(input_img) images_list=[input_img, input_crop1] labels = ['Original', '裁剪图像'] ipyplot.plot_images(images_list,labels=labels ,img_width=180)

为图像添加噪点

该增强器将高斯噪声添加到输入图像。尺度值是产生噪声的正态分布的标准偏差。​​​​​​​

noise=iaa.AdditiveGaussianNoise(10,40)input_noise=noise.augment_image(input_img)images_list=[input_img, input_noise]labels = ['Original', 'Gaussian Noise Image']ipyplot.plot_images(images_list,labels=labels,img_width=180)

图像剪切

该增强器以 -40 到 40 度范围内的随机量剪切图像。​​​​​​​

shear = iaa.Affine(shear=(-40,40))input_shear=shear.augment_image(input_img)images_list=[input_img, input_shear]labels = ['Original', 'Image Shearing']ipyplot.plot_images(images_list,labels=labels,img_width=180)

图像对比度

该增强器通过缩放像素值来调整图像对比度。​​​​​​​

contrast=iaa.GammaContrast((0.5, 2.0))contrast_sig = iaa.SigmoidContrast(gain=(5, 10), cutoff=(0.4, 0.6))contrast_lin = iaa.LinearContrast((0.6, 0.4))input_contrast = contrast.augment_image(input_img)sigmoid_contrast = contrast_sig.augment_image(input_img)linear_contrast = contrast_lin.augment_image(input_img)images_list=[input_img, input_contrast,sigmoid_contrast,linear_contrast]labels = ['Original', 'Gamma Contrast','SigmoidContrast','LinearContrast']ipyplot.plot_images(images_list,labels=labels,img_width=180)

这里的 GammaContrast 函数使用公式 255*((v/255)**gamma 调整图像对比度,其中 v 是像素值,gamma 从范围 [0.5, 2.0] 中均匀采样。SigmoidContrast 使用公式 255 调整图像对比度*1/(1+exp(gain*(cutoff-v/255)) (其中v为像素值,增益从区间[3, 10]开始均匀采样(每张图像一次),截断采样与区间 [0.4, 0.6] 一致。另一方面,LinearContrast 使用公式 127 + alpha*(v-127)’ 改变图像对比度,其中 v 是像素值,alpha 从 [0.4] 范围内均匀采样, 0.6]。

图像转换

“弹性变换”增强器通过使用位移场在局部移动像素来变换图像。增强器的参数是 alpha 和 sigma。位移的强度由 alpha 控制,其中较大的值表示像素移动得更远。位移的平滑度由 sigma 控制,其中较大的值会导致更平滑的图案。​​​​​​​

elastic = iaa.ElasticTransformation(alpha=60.0, sigma=4.0)polar = iaa.WithPolarWarping(iaa.CropAndPad(percent=(-0.2, 0.7)))jigsaw = iaa.Jigsaw(nb_rows=20, nb_cols=15, max_steps=(3, 7))input_elastic = elastic.augment_image(input_img)input_polar = polar.augment_image(input_img)input_jigsaw = jigsaw.augment_image(input_img)images_list=[input_img, input_elastic,input_polar,input_jigsaw]labels = ['Original', 'elastic','polar','jigsaw']ipyplot.plot_images(images_list,labels=labels,img_width=180)

在使用“Polar Warping”增强器时,首先在极坐标表示中应用裁剪和填充,然后再将其扭曲回笛卡尔表示。这个增强器可以为图像添加额外的像素。这些将被黑色像素填充。此外,“拼图”增强以类似于拼图模式的方式移动图片内的单元格。

图像上的边界框

imgaug 还为图像提供边界框支持。如果在增强期间旋转,该库可以旋转图像上的所有边界框。​​​​​​​

from imgaug.augmentables.bbs import BoundingBox, BoundingBoxesOnImage bbs = BoundingBoxesOnImage([  BoundingBox(x1=40, x2=550, y1=40, y2=780) ], shape=input_img.shape) ia.imshow(bbs.draw_on_image(input_img ))

‍Albumentations

Albumentations 是一个快速且知名的库,它与流行的深度学习框架(如 PyTorch 和 TensorFlow)集成。它也是 PyTorch 生态系统的一部分。

Albumentations 可以执行所有典型的计算机视觉任务,包括分类、语义分割、实例分割、对象识别和姿势估计。该库包含 70 多种不同的增强功能,用于从现有数据创建新的训练样本。它通常用于工业、深度学习研究、机器学习竞赛和开源项目。

让我们首先使用 pip 命令安装库:

pip install Albumentations

我们将导入使用 Albumentations 扩充数据所需的所有必要包:​​​​​​​

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 开始:

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

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

👉Python必备开发工具👈

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

👉Python全套学习视频👈

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

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值