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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
6eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-uTaKXnb4-1712550352250)]