找回密码
 立即注册
搜索

如何在机器学习中运用图像处理以及运用相对于的技术

Processing可以用来提高图像质量,或协助你从图像中提取有用的信息。它在医学成像等范畴很有用,甚至可以用于隐藏图像中的数据。
在本文中,我将告诉你有关如何在机器学习中运用图像处理以及可以运用的技术。首先,让我们探求更多理想生活中的图像处理示例。
理想生活中的图像处理

医学影像

在医学上,迷信家研讨生物的外部结构和组织,以协助更快地辨认异常。医学成像中运用的图像处理可以协助产生高质量,明晰的图像,以用于迷信和医学研讨,最终协助医生诊断疾病。

摄像头监控

汽车经销公司或商店能够会安装安全摄像头,以监视该区域并记录小偷(假如他们出现的话)。但是有时分,需求对安全摄像机生成的图像停止处理,方法是将大小添加一倍,或者添加亮度和对比度,以使细节足够可见以捕获其中的重要细节。

军事与国防

图像处理技术在国防范畴的一个风趣运用是隐写术。专家可以将音讯或图像隐藏在另一个图像中,然后来回发送信息,而无需任何第三方检测到该音讯。

常规图像锐化和还原

这能够是最广泛运用的图像处理运用程序。运用Photoshop之类的工具来加强和处理图像,或者运用Snapchat或Instagram上的滤镜来使我们的照片更酷。

假如您需求自动化和处理大量图像,那么手动停止操作将是一个痛苦而乏味的工作。这是机器学习算法可以提高图像处理速度而又不损失我们所需的最终质量的地方。

机器学习行业中运用的图像处理技术

在继续之前,重要的是要提到图像处理与计算机视觉有所不同,但是人们常常将两者混为一谈。

图像处理只是Computer Vision的一个方面,它们并不相反。图像处理系统专注于将图像从一种方式转换为另一种方式,而Computer Vision系统可协助计算机了解图像并从图像中获取含义。

许多计算机视觉系统采用图像处理算法。例如,面部加强运用程序可以运用计算机视觉算法来检测照片中的面部,然后将图像处理技术(如平滑或灰度滤镜)运用到其中。

许多先进的图像处理方法都应用诸如深度神经网络之类的机器学习模型来转换各种义务上的图像,例如运用艺术滤镜,调整图像以获得最佳质量或加强特定图像细节以最大程度地提高计算机视觉义务的质量。

卷积神经网络(CNN)接受输入图像并在其上运用过滤器,从而学习诸如对象检测,图像分割和分类之类的事情。

除了停止图像处理外,最新的机器学习技术还使工程师可以扩大图像数据。机器学习模型仅与数据集一样好,但是当您没有必要的训练数据量时,您会怎样做?

无需尝试查找和标记更多的数据集,我们可以从已有数据中构建全新的数据集。我们可以经过运用简单的图像转换技术(程度翻转,颜色空间加强,缩放,随机裁剪)或运用深度学习算法(例如功能空间加强和自动编码器,生成对抗网络(GAN)和元学习)来做到这一点。

运用Keras的示例图像处理义务(带有代码示例)

让我们学习如何运用数据加强来生成图像数据集。我们将拍摄一条狗的单个图像,对其停止像向右移动,向左移动和缩放一样的转换,以创建图像的全新版本,随后可以将其用作计算机视觉义务(如物体检测或目的)的训练数据集。分类。

初始设置

在整个教程中,我们将严重依赖四个Python包:

  • Keras:Keras具有图像数据预处理类,该类使我们可以无缝执行数据加强。
  • Matplotlib:Python中最受欢迎的数据可视化库之一。它使我们可以创建图和图,并非常容易地生成静态栅格或矢量文件,而无需任何GUI。
  • Numpy:一个非常有用的库,用于在数组上执行数学和逻辑运算。在本教程中,我们将运用其expand_dim类扩展数组的外形。
  • Pillow:一个Python影像库,在本教程中,我们将运用它来打开和处理我们的图像文件。
让我们继续安装这些库。
在终端/命令提示符下,键入:
pip3 list 查看你曾经在电脑上安装的python软件包。然后安装短少的软件包:
pip3 install numpy matplotlib keras numpy pillow如今我们曾经安装了必要的软件包,让我们继续执行步骤1。
步骤1
创建一个名为的文件夹data-aug-sample。在其中,创建一个名为sample.py的python文件,然后从互联网下载示例狗照片,并将其另存为dog.jpg在此文件夹中。然后像这样导入库:

import matplotlib.pyplot as plt #绘制可视化from keras.preprocessing.image import ImageDataGenerator #硬数据集生成器类。from numpy import expand_dimsfrom keras.preprocessing.image import load_imgfrom keras.preprocessing.image import img_to_arrayimport cv2from PIL import Image# %matplotlib inline  image = Image.open('dog.jpg')plt.imshow(image)plt.show()如今,我们的文件夹结构应该如下所示:


保存此文件,然后在您的终端中运转它,如下所示:python3 sample.py

您应该会看到相似以下内容的内容:



第2步

如今末尾在图像上运用变换操作。

旋转变换将图像从1到359°之间的轴从右向左旋转。在下面的示例中,我们将狗图像旋转90°。KerasImageDataGenerator类允许我们rotation_range 为此目的是传递一个参数:
import matplotlib.pyplot as plt #用于绘图from keras.preprocessing.image import ImageDataGenerator #图像数据生成器。from numpy import expand_dimsfrom keras.preprocessing.image import load_imgfrom keras.preprocessing.image import img_to_arrayimport cv2from PIL import Imageimage = Image.open('dog.jpg')#回转data = img_to_array(image)samples = expand_dims(data, 0)data_generated = ImageDataGenerator(rotation_range=90)  #在这里,我们指定旋转角度为90it = data_generated.flow(samples, batch_size=1)for i in range(9):    plt.subplot(330 + 1 + i)    batch = it.next()    result = batch[0].astype('uint8')    plt.imshow(result)plt.show()运转下面的代码为我们提供了一个新的数据集:


我们可以程度,垂直,向左或向右对图像运用平移变换。这种转换对于避免数据中的地位偏向非常有用。例如,在人脸在图像中居中的数据集上训练人脸辨认模型会导致地位偏向,从而使得该模型在位于左侧或右侧的新人脸上的表现非常差。我们将运用height_shift_rangewidth_shift_range parameters该的ImageDataGenerator类此目的。
对我们的图像运用垂直移位变换:
from numpy import expand_dimsfrom keras.preprocessing.image import load_imgfrom keras.preprocessing.image import img_to_arrayimport cv2from PIL import Imageimage = Image.open('dog.jpg')data = img_to_array(image)samples = expand_dims(data, 0)data_generator = ImageDataGenerator(height_shift_range=0.5)it = data_generator.flow(samples, batch_size=1)for i in range(9):    plt.subplot(330 + 1 + i)    batch = it.next()    result = batch[0].astype('uint8')    plt.imshow(result)plt.show()我们的结果如下所示:


对我们的图像运用程度停止移位变换:
from numpy import expand_dimsfrom keras.preprocessing.image import load_imgfrom keras.preprocessing.image import img_to_arrayimport cv2from PIL import Imageimage = Image.open('dog.jpg')data = img_to_array(image)samples = expand_dims(data, 0)# data_generator = ImageDataGenerator(width_shift_range=[-100,100])it = data_generator.flow(samples, batch_size=1)for i in range(9):    plt.subplot(330 + 1 + i)    batch = it.next()    result = batch[0].astype('uint8')    plt.imshow(result)plt.show()我们的结果如下所示:


颜色空间

在这里,我们将对狗图像的颜色通道空间停止变换。此处发生的是,它隔离了单个颜色通道(R,G或B),结果是图像变亮或变暗。经过在类中简单指定brightness_range值(通常是一个元组或两个浮点数的列表)ImageDataGenerator,我们可以设置要从中选择的亮度偏移值。

from numpy import expand_dimsfrom keras.preprocessing.image import load_imgfrom keras.preprocessing.image import img_to_arrayimport cv2from PIL import Imageimage = Image.open('dog.jpg')data = img_to_array(image)samples = expand_dims(data, 0)datagen = ImageDataGenerator(brightness_range=[0.2,1.0])it = datagen.flow(samples, batch_size=1)for i in range(9):    plt.subplot(330 + 1 + i)    batch = it.next()    result = batch[0].astype('uint8')    plt.imshow(result)plt.show()效果如下


缩放

顾名思义,我们可以经过简单地传入类的zoom_range属性,对我们的狗图像停止变换,以放大/减少图像ImageDataGenerator

from numpy import expand_dimsfrom keras.preprocessing.image import load_imgfrom keras.preprocessing.image import img_to_arrayimport cv2from PIL import Imageimage = Image.open('dog.jpg')data = img_to_array(image)samples = expand_dims(data, 0)datagen = ImageDataGenerator(zoom_range=[0.2,1.0])it = datagen.flow(samples, batch_size=1)for i in range(9):    plt.subplot(330 + 1 + i)    batch = it.next()    result = batch[0].astype('uint8')    plt.imshow(result)plt.show()我们得出的结果是:


运用我们生成的这个新数据集,我们可以对其停止清算,并消弭倾斜的图像或具有有意义信息的图像。然后可以将其用于训练对象检测模型或狗分类器。

结论

机器学习算法使您可以停止大规模,详尽的图像处理。希望您学到了一两个关于如何在机器学习中运用图像处理的知识,并且不要遗忘图像处理与计算机视觉是不同的!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

21CN 2021-4-10 07:11:20 来自手机 显示全部楼层
赞赞赞赞赞赞赞赞
回复

使用道具 举报

支持,赞一个
回复

使用道具 举报

v7270 2021-4-11 16:32:35 显示全部楼层
前排顶,很好!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies