卷积运算例题(遥感卷积运算的例题及答案)
卷积运算(卷积运算和图像处理)
最近对图像核和卷积运算在图像处理中的应用比较感兴趣。诚然,这是因为它在Snapchat和Instagram等社交媒体网站和应用程序上很受欢迎。一些应用程序中的许多照片使用特殊效果,通过改变图片像素的值和操作来修改图像。
图像处理有很多不同的应用,包括增强现实、文本分类、目标检测等等。图像处理应用激增的原因与深度学习领域的研究人员最近的发展有关。神经网络可以处理各种输入,并基于一系列计算进行预测。
什么是卷积运算?
图二。卷积运算的一个例子
在讨论卷积运算之前,必须提到仿射变换,因为它们为卷积运算提供了基础(Dumoulin,2018)。仿射变换用于通过称为核的矩阵来改变向量的值,核的值集可以是预先确定的或导出的。当改变向量的方向或位置时,这些变换很有用。然而,仿射变换的限制是它们不利用输入中内核可用的一些属性,例如颜色或方向通道。通过使用上述功能,操作可以减少必要的处理量,从而有助于更有效地解决任务。
这就是卷积运算发挥作用的地方。卷积运算使用仿射变换,允许它们有效地应用于具有高维数或大可变性的输入(例如图像、视频和声音字节)。如图2所示,为了简化大型数据集,使用卷积运算,通过一系列运算(一系列乘法和加法)对输入进行压缩。像仿射变换一样,卷积运算使用核函数来改变输入。这是通过将输入值乘以内核值实现的。在运算的第一步中,通过将一系列相乘的值相加来获得总数。在一系列过程中,这些计算结果是一组小值,存储在一组压缩的输入值中。
卷积神经网络(CNN)和卷积运算有关系吗?
图3。3的卷积神经网络。约尔·范维恩
讨论卷积运算,就不得不提到CNN。CNN在20世纪90年代初被用于识别手写字符。一组研究人员训练神经网络识别手写字符,首先将它们分开,然后标记它们(Le Cun,1995)。当CNN在比赛中击败ImageNet分类系统时,神经网络的潜力急剧膨胀(Krizhevzky,2014)。CNN之所以是机器学习从业者最想用的网络之一,是因为它的压缩是通过一系列卷积运算来完成的。这允许模型基于压缩的输入进行预测。由于输入已被简化或压缩,因此花在训练模型上的时间更少。
图3显示了CNN背后的典型设计。首先,您可以使用具有多个维度的图像或音频文件作为输入(黄色圆圈)。然后将执行一系列卷积运算,以简化或“卷积”多个层(粉红色圆圈)上的输入,并将该系列卷积运算的输出馈入神经网络。根据范维恩(绿色圆圈),分析卷积输出的神经网络通常是前馈神经网络。
如何评价CNN的表现?
神经网络模型建立后,利用大量数据集进行前向和后向传播,改变网络节点之间的连接,以达到尽可能高的精度。如何评价模型预测的准确程度,是通过一种叫做混淆矩阵的方法。
混淆矩阵的四个部分:
混淆矩阵是一个2×2矩阵,用于计算模型的预测精度。矩阵的四个部分是真阳性、假阳性和真阴性、假阴性。从这四个值;可以返回准确性,精确度和正面和负面情况的覆盖范围。从矩阵中获取值,并使用公式获取它们。
如何训练模型:
输入数据分为两组,即测试组和训练组。可以使用任何比例来训练模型,但使用80%的数据集作为训练集是最常用的方法。这可以通过调用Python的sklearn库中的train_test_split()API来实现。通过分割数据集,这允许网络使用以前未见过的数据来提高其预测的准确性并防止过度拟合。过拟合是由于神经网络中的训练节点具有相同的数据而导致的问题。一旦出现不熟悉的问题,就会导致准确性的丧失。
如何进一步提高网络的精度;
这可以通过交叉验证来实现,交叉验证是一种在整个数据集内拆分用于训练和测试的数据集的方法。这种方法允许将所有数据用作训练集和测试集,这将提高模型对未知或看不见的数据的预测的准确性。交叉验证的两种方法是去掉p标签和k倍检验。
省去p标签:
为了达到更高的准确率,可以利用测试通过“过度训练”来遗忘P的首选标签中的标签数进行测试。在测试过程中,“丢失”标签被带回并使用。
k倍检验:
这是最常见的交叉验证。这包括获得一个测试集,并在整个数据集中“移动”该区域,以确保所有数据都已用于测试。
关于内核
图4。这个图像核心包含模糊值。
上图是一个3 x 3的矩阵,内核可以是任意大小。内核的大小由输入大小决定。考虑到这一点,内核大小应该足够大,以便在其计算中包含足够的数据,但也应该足够小,以防止处理的信息重叠。此外,内核保存常数,然后在一系列卷积运算中使用它们。有许多不同类型的自定义效果可以通过操作保存在内核中的值来实现。例如,identity内核通过将nxn内核的中心设置为1并将周围的单元设置为0来保持图像不变。这将保留所需的像素,同时在卷积运算的乘法中“忘记”其他不需要的值。用这种方法,很容易假设内核中以0为值的网格在卷积运算中会被“遗忘”或不被计算,而1则保持像素不变。通过增加输入尺寸(内核值大于1),可以执行模糊操作,通过减小尺寸,可以执行相反的效果(锐化)。
图像处理还有其他部分吗?
图像核不是图像处理的唯一关键部分。如果我们参考图2,核心似乎在输入中移动。移动的程度称为步幅,可以定制步幅来增加内核跳过的像素数。步长的增加保证了图像核心所研究的区域不会重叠。
当内核开始沿着输入边缘移动时,填充是图像处理的另一个重要部分。根据输入和芯的大小,可以定制N层。图4显示了卷积运算。
不同类型的衬垫
图5。输入周围的零有助于内核更准确地处理图像
虽然上图中显示的值是0,但是使用的值可以是任何数字。也可以使用其他类型的填充,例如反射填充,但是为了简单起见,图4中所示的零填充将是讨论的焦点。
无填充:
这就需要内核在没有零层输入的情况下处理每个像素。这将导致输入边缘没有被整个内核完全处理,如图1所示。
半填充:
半填充用于保持输入大小。当网络中涉及多层填充时,这可能是期望的。卷积降低了输入的大小,如图4所示。半填充的名称来自用于执行它的公式。将内核大小减半,然后将除法的下半部分加倍,再加上一个小于内核大小的值。
全填充:
这允许输入的大小增加,这对于具有大量卷积的神经网络可能是有用的。这可以恢复被卷积操作删除的层。
卷积运算有哪几种?
在输入处理中可以使用两种主要的卷积运算。通过更改上述属性,您可以根据自己的偏好定制操作的细节,以增加每个卷积操作中表示的信息量。通过更改填充,您可以使内核能够处理输入的边缘,并保持或增加大小。
不同类型的卷积运算
非单位步幅不补零:
这将产生一个输出,等于步数加1,包括核心的初始位置,这是核心采取的。非单位跨度可用于限制分析区域的重叠。
非单位步长的零填充:
通过填充输入并将核设置为非单位步长,可以完成另一个卷积运算来处理输入,并且可以包括输入的边缘条件。
卷积运算
反卷积运算就是切换卷积的方向。这意味着当内核被用来改变值和处理输入时,前向和后向交换将被交换。和填充用于实现类似的目标,即允许更好的数据处理。然而,由于上述操作现在以相反的方向工作,跨距和填充的结果与在标准卷积操作中如何使用它们并不完全相同。
图5显示了转置卷积运算。通过向输入添加填充,可以考虑每个感兴趣的区域,并且输出可以包含比核研究仅允许的四个阴影区域更完整的数据。反卷积运算通常用于提高图像分辨率。这方面的应用是无止境的,包括改进从商家处获得的颗粒状CCTV镜头或者完成可能会模糊或被遮挡的人脸或镜头。
图6。使用单位步幅和零填充的转置卷积
自定义图像效果
如前所述,当使用图像来检查图像(如模糊、旋转和裁剪)以执行某些效果时,我们可以使用许多不同的设置来定制它们。因此,通过使用http://setosa.io/ev/image-kernels/,上提供的图像自定义程序,我们可以创建一个自定义内核(如图7所示),并且我们可以将内核应用到图像上。
7.这是我们将用来应用模糊性的内核。
(上)图8。应用变换之前的图像(下图)图9。应用自定义内核模糊后的图像
自定义过滤器的实现
在GitHub和GitLab等网站上可以在线找到自定义过滤器的实现,Python是最流行的语言之一。我并不是说Python将为您的任务提供最佳性能,但是该语言中有许多库可以用于此目的,还有文档可供参考。
更早的时候,在2004年,苹果就提供了这段代码,可以用来定制图像效果。您可以更改向量和浮点数的值来获得任何想要的效果。
图10。苹果定制核心实现
以上代码可以作为Java、Python、c++ /C甚至Matlab实现的起点!
卷积已经成为一种非常有用的工具,目前有许多不同的应用。您可以更改图像,简化图像以解决图像分类中的问题,并自定义效果以上传到任何社交媒体网站。
扫描二维码推送至手机访问。
版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!