什么是卷积神经网络 完整的卷积神经网络 CNNS解析
来源:
在当今时代,机器在理解和识别图像中的特征和目标方面已经成功实现了99%的准确率。我们每天都看到这一点——智能手机可以识别相机中的人脸;能够使用谷歌图片搜索特定的照片;扫描条形码或书籍中的文本。这一切都有可能借助于卷积神经网络(CNN),这是一种特定类型的神经网络,也称为卷积网络。
如果你是一个深度学习爱好者,你可能听说过卷积神经网络,你甚至可能自己开发了一些图像分类器。Tensorflow和PyTorch等现代深度学习框架使得从机器学习图像变得很容易。但是还存在一些问题:数据如何通过神经网络的人工层?计算机如何从中学习?更好地解释卷积神经网络的一种方法是使用PyTorch。所以,让我们通过可视化每一层的图像来深入研究CNN。
卷积神经网络的解释什么是卷积神经网络?
卷积神经网络(CNN)是一种特殊类型的神经网络,它在图像中的表现尤其出色。卷积神经网络是由严乐存在1998年提出的,可以识别给定输入图像中的数字。
在使用卷积神经网络之前,了解神经网络的工作原理很重要。神经网络模拟人脑如何解决复杂问题,并在给定的数据集中找到模式。在过去的几年里,神经网络已经席卷了许多机器学习和计算机视觉算法。
神经网络的基本模型由组织在不同层中的神经元组成。每个神经网络都有一个输入层和一个输出层,根据问题的复杂程度增加了许多隐含层。一旦数据通过这些层,神经元将学习和识别模式。神经网络的这种表示称为模型。训练完模型后,我们要求网络根据测试数据进行预测。如果您不熟悉神经网络,这篇关于使用Python进行深度学习的文章是一个很好的起点。另一方面,CNN是一种特殊的神经网络,它在图像中的表现特别好。卷积神经网络是由严乐存在1998年提出的,可以识别给定输入图像中的数字。使用CNN的其他应用包括语音识别、图像分割和文本处理。在卷积神经网络之前,用多层感知器(MLP)构造图像分类器。
图像分类是指从多波段栅格图像中提取信息类别的任务。多层感知器需要更多的时间和空间来寻找图片中的信息,因为每个输入函数都需要与下一层的每个神经元相连。CNN通过使用一种称为局部连接的概念取代了MLP,这种概念涉及到将每个神经元仅连接到输入量的局部区域。通过允许网络的不同部分专门处理高级功能,如纹理或重复图案,可以最大限度地减少参数的数量。迷茫?别担心。为了更好的理解,我们来比较一下图像是如何通过多层感知器和卷积神经网络传输的。
考虑到MNIST数据集,比较MLPS和CNN,由于输入图像的大小是2828=784,多层感知器的输入层总数将是784。网络应该能够预测给定输入图像中的数字,这意味着输出可能落入以下范围中的任何一个,范围从0到9(1、2、3、4、5、6、:010)。在输出层,我们返回类别分数。例如,如果给定的输入是数字为“3”的图像,则在输出层中,对应的神经元“3”具有比其他神经元更高的类别分数。我们需要包含多少隐层,每一层要包含多少神经元?这是一个编码MLP的例子:
上面的代码片段是用一个叫Keras的框架实现的(暂时忽略语法)。它告诉我们第一个隐层有512个神经元,以784的形状连接到输入层。这个隐藏层之后是一个随机的失活层,它克服了过拟合的问题。0.2表示第一个隐层后不考虑神经元的可能性为20%。第三,我们在第二个隐藏层中添加了与第一个隐藏层中相同数量的神经元(512),然后添加了另一个随机失活。最后,我们以包含10个类的输出层结束这组层。具有最高值的类将是模型预测结果。
这是定义了所有层后网络的多层外观。这种多层感知器的一个缺点是全连接进行网络学习,需要更多的时间和空间。MLP只接受向量作为输入。
卷积层不使用全连通层,而是使用稀疏连通层,即它们接受矩阵作为输入,这比MLP更有优势。输入要素连接到本地编码节点。在MLP,每个节点负责获得对全局的理解。在CNN中,我们将图像分解成区域(像素的局部区域)。每个隐藏节点必须输出一个层报告,其中输出层组合接收到的数据以找到模式。下图显示了这些层是如何在本地连接的。
在我们知道CNN如何在图片中寻找信息之前,我们需要知道如何提取特征。卷积神经网络使用不同的层,每一层都会保存图像中的特征。例如,考虑一张狗的图片。每当网络需要对狗进行分类时,它都要识别所有的特征——眼睛、耳朵、舌头、腿等等。使用过滤器和核心,这些特征在网络的本地层被分解和识别。
电脑是怎么看图像的?
与人类用眼睛认识图像的计算机不同,计算机使用一组0到255之间的像素值来理解图像。计算机查看这些像素值并理解它们。乍一看,它不知道物体或颜色,只识别像素值,这就是图像在计算机中使用的全部。
在分析完像素值后,计算机会慢慢开始理解图像是灰色还是彩色。它知道区别,因为灰色图像只有一个通道,因为每个像素代表一种颜色的强度。零代表黑色,255代表白色,还有其他黑白的变体,也就是介于两者之间的灰色。另一方面,彩色图像有三个通道——红色、绿色和蓝色。它们代表三种颜色(3D矩阵)的强度,当数值同时变化时,就会产生很多颜色!在确定颜色属性后,计算机将识别图像中物体的曲线和轮廓。
您可以使用PyTorch在卷积神经网络中探索这一过程,以加载数据集并对图像应用过滤器。下面是一段代码。(你可以在GitHub上找到这段代码。)
现在,让我们看看如何将单个图像输入到神经网络中。
(你可以在GitHub上找到这段代码。)
img=NP . squeeze(images[7])fig=PLT . figure(fig size=(12,12))ax=fig . add _ subplot(111)ax . im show(img,cmap='gray')width,height=img . shape thresh=img . max()/2.5 for x in range(width):for y in range(height):val=round(img[x][y],2) if img[x][y]!=0 else 0 ax。Annotate (str (val),xy=(y,x),color=' white' if img [x] [y]这是将数字“3”分解成像素的方式。从一组手写数字中,随机选择“3”,其中显示像素值。这里,ToTensor()将实际像素值(0255)归一化,并将其限制在0到1之间。为什么?因为,这使得后面部分的计算更容易,无论是在解读图像,还是在图像中寻找共同的模式。
在卷积神经网络中构建自己的过滤器,对图像中的像素信息进行过滤。为什么我们完全需要过滤器?就像孩子一样,计算机也需要经历理解图像的学习过程。还好不用几年!计算机通过从开始学习,然后一步一步地进步到整体来完成这项任务。因此,网络必须首先知道图像的所有原始部分,如边缘、轮廓和其他低级特征。一旦检测到这些,计算机就可以处理更复杂的功能。总之要先提取低级函数,再提取中级函数,再提取高级函数。过滤器提供了一种提取信息的方式。低级特征可以使用特定的过滤器来提取,该过滤器也是类似于图像的一组像素值。可以理解为CNN中连接各层的权重。将这些权重或滤波器与输入相乘,得到一个中间图像,它代表计算机对图像的部分理解。然后,这些副产品乘以更多的过滤器来扩展视图。这个过程和对函数的检测一直持续到计算机知道它的出现。您可以根据需要使用任意数量的过滤器。你可能需要模糊,锐化,加深,边缘检测等。-所有过滤器。让我们看一些代码片段来理解过滤器的功能。
这是应用滤镜后图像的外观。在这种情况下,我们使用Sobel滤波器。
完全卷积神经网络
我们已经知道滤波器如何从图像中提取特征,但为了完成整个卷积神经网络,我们需要了解用于设计CNN的层。
卷积神经网络中的每一层称为:
卷积层
游泳池层
全连接层
使用这三层,可以构建这样的图像分类器:
CNN层的作用
现在让我们来看看每一层是用来做什么的。
卷积层——的卷积层(conv)在扫描输入图像的尺寸时使用滤波器执行卷积运算。其超参数包括滤波器尺寸,通常设置为2x2,3x3,4x4,5x5(但不限于这些尺寸)和步长。输出结果(O)称为特性图或激活图,它包含输入层和过滤器计算的所有特性。下图描述了应用卷积时生成的特征图:
卷积运算
池图层——池图层用于对要素进行下采样,通常在卷积图层之后应用。常见的两种池化操作是最大池化和平均池化,分别得到特征的最大值和平均值。下图描述了池化的基本原理:
最大池化
平均池
全连接层——全连接层(FC)作用于平面输入,其中每个输入都连接到所有神经元。全连接层通常用在网络的末端,隐藏层连接到输出层,有助于优化类得分。
全连接层
在Pytorch中可视化CNN
现在我们对CNN的功能有了更好的理解,让我们使用脸书的PyTorch框架来实现它。
步骤1:加载输入图像。我们将使用Numpy和OpenCV。(代码可以在GitHub上找到)
第2步:可视化过滤器,以更好地理解我们将使用的过滤器。(代码可以在GitHub上找到)
第三步:定义卷积神经网络。CNN有一个卷积层和一个最大池层,权重使用上面的过滤器初始化:(代码可以在GitHub上找到)
步骤4:可视化过滤器。快速查看一下正在使用的过滤器。(代码可以在GitHub上找到)
def viz_layer(layer,n_filters=4):fig=PLT . figure(fig size=(20,20))for I in range(n _ filters):ax=fig . add _ subplot(1,n _ filters,I 1)ax . im show(NP . squeeze(layer[0,i].data.numpy()),cmap=' gray ')ax . set _ title(' Output % s ' % str(I 1))fig=PLT . fig(fig size=(12,6))fig . subplot _ adjust(leftFrom _ numpy (gray _ img)。Unsqueeze(。
步骤5:跨层滤波器输出。在卷积神经和泳池层中输出的图像如下所示。
viz _层(激活层)卷积层
池化层
参考:cs 230 CNN(https://斯坦福。edu/~谢尔文/教学/cs-230/小抄-卷积神经网络)。
可以在这里查看代码:https://github。com/VI har/visualizing-CNN
标签:图像卷积层
-
无相关信息
- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)