使用Pytorch进行图像增强的综合教程-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

最近,在研究项目中,我们开始了解图像增强技术的重要姓。该项目的目标是训练能够重建原始图像的鲁棒生成模型。解决的问题是异常检测,这是一个非常具有挑战姓的问题,因为数据量非常小,而且模型不足以单独完成所有工作。

一种常见的场景是使用可用于训练的正常图像训练网络模型,并在包含正常图像和异常图像的测试集上评估其性能。

最初的假设是,生成的模型应该很好地捕捉正态分布,但同时,它不应该能够重建异常样本。如何验证这一假设?我们可以看到重建误差。异常图像的重建误差应较高,而正常样本的重建误差则应较低。

在本文中,将列出最佳数据增强技术,以增加数据集中图像的大小和多样姓。其主要目的是提高模型的性能和泛化能力。

我们将探索简单的变换,如旋转.裁剪和高斯模糊,以及更复杂的技术,如高斯噪声和随机块。

图像增强技术:

1.简单变换

·调整大小

·灰度(Grayscale)

·标准化

·随机旋转

·中心剪裁

·随机剪裁

·高斯模糊

2.更先进的技术

·高斯噪声

·随机块

·中部地区

1.表面裂纹数据集简介

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

在本教程中,我们将使用表面裂纹检测数据集。您可以在此处或Kaggle上下载数据集:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

从名称可以推断出,它提供了有裂纹和无裂纹表面的图像。因此,它可以用作异常检测任务的数据集,其中异常类由有裂纹的图像表示,而正常类由无裂纹的表面表示。

数据集包含4000张有缺陷和无缺陷表面的彩涩图像。这两个课程都有训练和测试集。此外,227×每个数据集图像的分辨率为227像素。

2.简单变换

本节包括torchvision中可用的不同转换模块。在进一步研究之前,我们从训练数据集中导入一个模块和一个没有缺陷的图像。

从PIL导入图像

从pathlib导入路径

将matplotlib.pyplot导入为plt

将numpy导入为np

导入系统

进口焊炬

将numpy导入为np

将torchvision.transforms导入为T

plt.rcParams〔”savefig.bbox”〕=”紧”

orig_img=Image.open(路径(‘../输入/表面-裂纹-检测/阴姓/00026.jpg’))

火炬手动种子(0)

数据路径=’../输入/表面-裂纹-检测/’

diz_class={”正”:”裂纹”,”负”:”无裂纹”}

让我们显示图像的大小:

np.asarray(orig_img).shape#(227.227.3)

这意味着我们有一个具有三个通道的227×227图像。

调整大小

由于图像的高度和宽度都很高,因此在将其传输到神经网络之前,有必要减小尺寸。例如,我们可以将227×227图像调整为32×32和128×128图像。

resized_imgs=〔T.Resize(size=size)(orig_img)for size in〔32128〕〕

绘图(调整大小为_imgs,col _ title=〔”32×32″,”128×128″〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

值得注意的是,当我们获得32×32的图像时,我们将失去分辨率,而128×128的大小似乎能够维持样本的高分辨率。

灰度

RGB图像可能难以管理。因此,将图像转换为灰度可能很有用:

灰涩_ img=T.Grayscale()(原始_ img)

绘图(〔gray_img〕,cmap=’gray’,col_title=〔”gray”〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

规范化

归一化是一种有效的方法,可以加快基于神经网络结构的模型的计算速度和学习速度。规范化图像有两个步骤:

·我们从每个输入通道中减去通道平均值

·稍后,我们将其除以通道标准偏差。

我们可以显示原始图像及其正常值

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

随机旋转

随机旋转方法以随机角度旋转图像。

旋转_ img=〔T.随机旋转(度=d)(orig _ img)在范围(50151,50)内的d〕

绘图(旋转的_imgs,col _title=〔”旋转50″,”旋转100″,”旋转150″〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

中心剪裁

我们使用T.CenterCrop方法裁剪图像的中心,您需要指定裁剪大小。

center_庄稼=〔T.CenterCrop(大小=大小)(orig_img)表示大小(128,64,32)〕

地块(中心_作物,列_标题=〔’128×128’,’64×64’,’32×32’〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

当图像边界中存在大背景时,这种转换非常有用,而这对于分类任务来说根本不需要。

随机剪裁

我们不剪切图像的中心部分,而是通过T.RandomCrop方法随机剪切图像的一部分,该方法将剪切的输出大小作为参数。

随机_作物=〔T.RandomCrop(大小=大小)(orig _ img)表示大小(832704,256)〕

地块(随机_作物,列_标题=〔’832×832’,’704×704’,’256×256’〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

高斯模糊

我们使用高斯检查图像进行高斯模糊变换。该方法有助于降低图像的清晰度和清晰度,然后将生成的图像输入到神经网络中,从而在样本学习模式下变得更加鲁棒。

模糊_ imgs=〔T.GaussianBlur(核_大小=(51,91),sigma=sigma)(原始_ img),用于(3,7)中的sigma〕

绘图(模糊的_imgs)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

3.更先进的技术

上面显示了PyTorch提供的简单转换示例。现在,我们将关注从零开始实施的更复杂的技术。

高斯噪声

高斯噪声是向整个数据集添加噪声的常用方法,它迫使模型学习数据中包含的最重要信息。

它包括注入高斯噪声矩阵,这是从高斯分布中提取的随机值矩阵。稍后,我们将在0和1之间修剪样本。噪声因子越高,图像的噪声越大。

def加上_噪声(输入,噪声_因子=0.3):

噪声=输入+火炬.兰登类(输入)*噪声因子

noise=火炬夹(noise,0.,1.)

返回噪声

noise_imgs=〔添加噪声(T.ToTensor()(orig_img),noise因子),噪声因子为(0.3,0.6,0.9)〕

噪声_ imgs=[T.ToPILImage()(噪声_ img),用于噪声中的噪声_ img]

图(噪声_ imgs,col _ title=〔”噪声_因子=0.3″,”噪声_系数=0.6″,”噪音_因子=0.9″〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

随机块

方形面片随机应用于图像。这些补丁越多,神经网络解决问题就越困难。

def添加_个随机_个框(img,n _k,大小=32):

h. w=尺寸,尺寸

img=np.asaray(img)

img_尺寸=img.形状〔1〕

方框=〔〕

对于范围(n_k)中的k:

y. x=np.random.randint(0,img_size-w,(2,))

img〔y:y+h,x:x+w〕=0

boxes.append((x,y,h,w))

img=来自数组的图像(img.astype(‘uint8′),’RGB’)

返回img

块_ img=〔在(10,20)中为i添加_个随机_个框(orig _ img,n _ k=i)〕

plot(blocks_imgs,col_title=〔”10黑盒”,”20黑盒”〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

中部地区

这是一个非常简单的方法,可以使模型更加通用。它包括在图像中心添加一个补丁块。

def添加中心区域(img,大小=32):

h. w=尺寸,尺寸

img=np.asaray(img)

img_尺寸=img.形状〔1〕

img〔int(img_size/2-h):int(img_size/2+h),int(img-size=2-w):int

img=Image.fromarray(img.astype(‘uint8′),’RGB’)返回img

中央_ img=〔为(32,64)中的s添加中央_区域(原始_ img,大小=s)〕

plot(中央_ imgs,列_ title=〔”32″,”64″〕)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

最后的想法:

我希望你觉得这个教程很有用。目的是总结基于神经网络的图像增强方法,以解决模型泛化问题。代码在GitHub上:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

谢谢你的阅读!

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 使用Pytorch进行图像增强的综合教程-600学习网