导航:首页 > 网络安全 > 如何给视觉应用中的神经网络加速

如何给视觉应用中的神经网络加速

发布时间:2022-12-09 20:34:51

A. 针对移动端与嵌入式视觉应用的卷积神经网络MobileNet系列解析

MobileNet V1 (2017)

(1)MobileNets基于一种流线型结构使用深度可分离卷积来构造轻型权重深度神经网络,核心部件就是 深度可分离卷积

(2)MobileNet是一种基于深度可分离卷积的模型,深度可分离卷积是一种将标准卷积分解成深度卷积以及一个1x1的卷积即逐点卷积

(3)深度卷积针对每个单个输入通道应用单个滤波器进行滤波,然后逐点卷积应用1x1的卷积操作来结合所有深度卷积得到的输出

(4)对深度卷积,它的卷积核厚度不是输入张量的通道数,而是1,输出通道就是卷积核数目。经典卷积的卷积核厚度默认是图片的通道数

(5)可分离卷积tf内置函数: tf.layers.separable_conv2d

公式计算:

MobileNet V2 (2018)

(1)Mobilenet V2实在Mobilenet V1的基础上发展而来,V2 主要引入了两个改动:Linear Bottleneck 和 Inverted Resial Blocks。两个改动分别对应V1和Resnet

(2)MobileNetV1遗留的问题

(3) 对比 MobileNet V1 与 V2 的微结构

(4) 对比 ResNet 与 MobileNet V2 的微结构

MobileNet V3 (2019)

论文地址:https://arxiv.org/pdf/1905.02244.pdf

(1)具体的内容可以看论文,这里我只是重点说明其中的激活函数改进(swish/h-swish)和网络结构改进(bneck)

(2)激活函数:作者发现一种新出的激活函数swish x 能有效改进网络精度

但就是计算量太大了,于是作者对这个函数进行了数值近似:

近似结果:

(3)网络结构:在大体思路上引用mobilenet v2的结构pw-dw-pw,其中激活函数添加了h-swish,同时在v2基础上添加了Squeeze excitation layer,具体的设置可查阅论文中的网络参数图对照,

其中Squeeze excitation layer

Squeeze excitation layer是引入基于squeeze and excitation结构的轻量级注意力模型SENet

论文:《Squeeze-and-Excitation Networks》

论文链接:https://arxiv.org/abs/1709.01507

B. 中科院提出图神经网络加速芯片设计,这是一种怎样的芯片呢

随着技术发展,人工智能技术也在不断的发展。现有的芯片已经难以满足一些神经网络的计算了,中科院提出了图神经网络加速芯片,这种芯片专用于图神经网络的运算。让我们一起来了解一下什么是图神经网络,这种芯片有什么重大的突破。

图神经网络的应用前景非常广泛,不仅用在日常交通预测、网约车调度、运动检测等民用领域,还可以助力科研的知识推理、化学研究以及在知识图谱、视觉推理等学科发展方向上。

C. 卷积神经网络CNN在图像识别问题应用综述(20191219)

   这两天在公司做PM实习,主要是自学一些CV的知识,以了解产品在解决一些在图像识别、图像搜索方面的问题,学习的主要方式是在知网检索了6.7篇国内近3年计算机视觉和物体识别的硕博士论文。由于时间关系,后面还会继续更新图片相似度计算(以图搜图)等方面的学习成果
   将这两天的学习成果在这里总结一下。你将会看到计算机视觉在解决特定物体识别问题(主要是卷积神经网络CNNs)的基础过程和原理,但这里不会深入到技术的实现层面。

  计算机视觉(Computer vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理成为更适合人眼观察或传送给仪器检测的图像。
                                         ————维基网络
  通常而言,计算机视觉的研究包括三个层次:
(1)底层特征的研究:
  这一层次的研究主要聚焦如何高效提取出图像对象具有判别性能的特征,具体的研究内容通常包括:物体识别、字符识别等
(2)中层语义特征的研究:
   该层次的研究在于在识别出对象的基础上,对其位置、边缘等信息能够准确区分。现在比较热门的:图像分割;语义分割;场景标注等,都属于该领域的范畴
(3)高层语义理解:
  这一层次建立在前两层的基础上,其核心在于“理解”一词。 目标在于对复杂图像中的各个对象完成语义级别的理解。这一层次的研究常常应用于:场景识别、图像摘要生成及图像语义回答等。
  而我研究的问题主要隶属于底层特征和中层语义特征研究中的物体识别和场景标注问题。

人类的视觉工作模式是这样的:
   首先,我们大脑中的神经元接收到大量的信息微粒,但我们的大脑还并不能处理它们。
   于是接着神经元与神经元之间交互将大量的微粒信息整合成一条又一条的线。
   接着,无数条线又整合成一个个轮廓。
   最后多个轮廓累加终于聚合我们现在眼前看到的样子。
  计算机科学受到神经科学的启发,也采用了类似的工作方式。具体而言,图像识别问题一般都遵循下面几个流程

  (1)获取底层信息。获取充分且清洁的高质量数据往往是图像识别工作能否成功的关键所在
  (2)数据预处理工作,在图像识别领域主要包括四个方面的技术:去噪处理(提升信噪比)、图像增强和图像修复(主要针对不够清晰或有破损缺失的图像);归一化处理(一方面是为了减少开销、提高算法的性能,另一方面则是为了能成功使用深度学习等算法,这类算法必须使用归一化数据)。
  (3)特征提取,这一点是该领域的核心,也是本文的核心。图像识别的基础是能够提取出足够高质量,能体现图像独特性和区分度的特征。
  过去在10年代之前我们主要还是更多的使用传统的人工特征提取方法,如PCALCA等来提取一些人工设计的特征,主要的方法有(HOG、LBP以及十分着名的SIFT算法)。但是这些方法普遍存在(a)一般基于图像的一些提层特征信息(如色彩、纹理等)难以表达复杂的图像高层语义,故泛化能力普遍比较弱。(b)这些方法一般都针对特定领域的特定应用设计,泛化能力和迁移的能力大多比较弱。
  另外一种思路是使用BP方法,但是毕竟BP方法是一个全连接的神经网络。这以为这我们非常容易发生过拟合问题(每个元素都要负责底层的所有参数),另外也不能根据样本对训练过程进行优化,实在是费时又费力。
  因此,一些研究者开始尝试把诸如神经网络、深度学习等方法运用到特征提取的过程中,以十几年前深度学习方法在业界最重要的比赛ImageNet中第一次战胜了SIFT算法为分界线,由于其使用权重共享和特征降采样,充分利用了数据的特征。几乎每次比赛的冠军和主流都被深度学习算法及其各自改进型所占领。其中,目前使用较多又最为主流的是CNN算法,在第四部分主要也研究CNN方法的机理。

  上图是一个简易的神经网络,只有一层隐含层,而且是全连接的(如图,上一层的每个节点都要对下一层的每个节点负责。)具体神经元与神经元的作用过程可见下图。

  在诸多传统的神经网络中,BP算法可能是性能最好、应用最广泛的算法之一了。其核心思想是:导入训练样本、计算期望值和实际值之间的差值,不断地调整权重,使得误差减少的规定值的范围内。其具体过程如下图:

  一般来说,机器学习又分成浅层学习和深度学习。传统的机器学习算法,如SVM、贝叶斯、神经网络等都属于浅层模型,其特点是只有一个隐含层。逻辑简单易懂、但是其存在理论上缺乏深度、训练时间较长、参数很大程度上依赖经验和运气等问题。
  如果是有多个隐含层的多层神经网络(一般定义为大于5层),那么我们将把这个模型称为深度学习,其往往也和分层训练配套使用。这也是目前AI最火的领域之一了。如果是浅层模型的问题在于对一个复杂函数的表示能力不够,特别是在复杂问题分类情况上容易出现分类不足的弊端,深度网络的优势则在于其多层的架构可以分层表示逻辑,这样就可以用简单的方法表示出复杂的问题,一个简单的例子是:
  如果我们想计算sin(cos(log(exp(x)))),
  那么深度学习则可分层表示为exp(x)—>log(x)—>cos(x)—>sin(x)

  图像识别问题是物体识别的一个子问题,其鲁棒性往往是解决该类问题一个非常重要的指标,该指标是指分类结果对于传入数据中的一些转化和扭曲具有保持不变的特性。这些转化和扭曲具体主要包括了:
(1)噪音(2)尺度变化(3)旋转(4)光线变化(5)位移

  该部分具体的内容,想要快速理解原理的话推荐看[知乎相关文章] ( https://www.hu.com/search?type=content&q=CNN ),
  特别是其中有些高赞回答中都有很多动图和动画,非常有助于理解。
  但核心而言,CNN的核心优势在于 共享权重 以及 感受野 ,减少了网络的参数,实现了更快的训练速度和同样预测结果下更少的训练样本,而且相对于人工方法,一般使用深度学习实现的CNN算法使用无监督学习,其也不需要手工提取特征。

CNN算法的过程给我的感觉,个人很像一个“擦玻璃”的过程。其技术主要包括了三个特性:局部感知、权重共享和池化。

  CNN中的神经元主要分成了两种:
(a)用于特征提取的S元,它们一起组成了卷积层,用于对于图片中的每一个特征首先局部感知。其又包含很关键的阈值参数(控制输出对输入的反映敏感度)和感受野参数(决定了从输入层中提取多大的空间进行输入,可以简单理解为擦玻璃的抹布有多大)
(b)抗形变的C元,它们一起组成了池化层,也被称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。
(c*)激活函数,及卷积层输出的结果要经过一次激励函数才会映射到池化层中,主要的激活函数有Sigmoid函数、Tanh函数、ReLU、Leaky ReLU、ELU、Maxout等。

  也许你会抱有疑问,CNN算法和传统的BP算法等究竟有什么区别呢。这就会引出区域感受野的概念。在前面我们提到,一个全连接中,较高一层的每个神经元要对低层的每一个神经元负责,从而导致了过拟合和维度灾难的问题。但是有了区域感受野和,每个神经元只需要记录一个小区域,而高层会把这些信息综合起来,从而解决了全连接的问题。

  了解区域感受野后,你也许会想,区域感受野的底层神经元具体是怎么聚合信息映射到上一层的神经元呢,这就要提到重要的卷积核的概念。这个过程非常像上面曾提到的“神经元与神经元的联系”一图,下面给大家一个很直观的理解。

  上面的这个过程就被称为一个卷积核。在实际应用中,单特征不足以被系统学习分类,因此我们往往会使用多个滤波器,每个滤波器对应1个卷积核,也对应了一个不同的特征。比如:我们现在有一个人脸识别应用,我们使用一个卷积核提取出眼睛的特征,然后使用另一个卷积核提取出鼻子的特征,再用一个卷积核提取出嘴巴的特征,最后高层把这些信息聚合起来,就形成了分辨一个人与另一个人不同的判断特征。

  现在我们已经有了区域感受野,也已经了解了卷积核的概念。但你会发现在实际应用中还是有问题:
  给一个100 100的参数空间,假设我们的感受野大小是10 10,那么一共有squar(1000-10+1)个,即10的六次方个感受野。每个感受野中就有100个参数特征,及时每个感受野只对应一个卷积核,那么空间内也会有10的八次方个次数,,更何况我们常常使用很多个卷积核。巨大的参数要求我们还需要进一步减少权重参数,这就引出了权重共享的概念。
   用一句话概括就是,对同一个特征图,每个感受野的卷积核是一样的,如这样操作后上例只需要100个参数。

  池化是CNN技术的最后一个特性,其基本思想是: 一块区域有用的图像特征,在另一块相似的区域中很可能仍然有用。即我们通过卷积得到了大量的边缘EDGE数据,但往往相邻的边缘具有相似的特性,就好像我们已经得到了一个强边缘,再拥有大量相似的次边缘特征其实是没有太大增量价值的,因为这样会使得系统里充斥大量冗余信息消耗计算资源。 具体而言,池化层把语义上相似的特征合并起来,通过池化操作减少卷积层输出的特征向量,减少了参数,缓解了过拟合问题。常见的池化操作主要包括3种:
分别是最大值池化(保留了图像的纹理特征)、均值池化(保留了图像的整体特征)和随机值池化。该技术的弊端是容易过快减小数据尺寸,目前趋势是用其他方法代替池化的作用,比如胶囊网络推荐采用动态路由来代替传统池化方法,原因是池化会带来一定程度上表征的位移不变性,传统观点认为这是一个优势,但是胶囊网络的作者Hinton et al.认为图像中位置信息是应该保留的有价值信息,利用特别的聚类评分算法和动态路由的方式可以学习到更高级且灵活的表征,有望冲破目前卷积网络构架的瓶颈。

  CNN总体来说是一种结构,其包含了多种网络模型结构,数目繁多的的网络模型结构决定了数据拟合能力和泛化能力的差异。其中的复杂性对用户的技术能力有较高的要求。此外,CNN仍然没有很好的解决过拟合问题和计算速度较慢的问题。

   该部分的核心参考文献:
《深度学习在图像识别中的应用研究综述》郑远攀,李广阳,李晔.[J].计算机工程与应用,2019,55(12):20-36.

  深度学习技术在计算机图像识别方面的领域应用研究是目前以及可预见的未来的主流趋势,在这里首先对深度学习的基本概念作一简介,其次对深度学习常用的结构模型进行概述说明,主要简述了深度信念网络(DBN)、卷积神经网络(CNN)、循环神经网络(RNN)、生成式对抗网络(GAN)、胶囊网络(CapsNet)以及对各个深度模型的改进模型做一对比分析。

  深度学习按照学习架构可分为生成架构、判别架构及混合架构。
其生成架构模型主要包括:
  受限波尔兹曼机、自编码器、深层信念网络等。判别架构模型主要包括:深层前馈网络、卷积神经网络等。混合架构模型则是这两种架构的集合。深度学习按数据是否具有标签可分为非监督学习与监督学习。非监督学习方法主要包括:受限玻尔兹曼机、自动编码器、深层信念网络、深层玻尔兹曼机等。
  监督学习方法主要包括:深层感知器、深层前馈网络、卷积神经网络、深层堆叠网络、循环神经网络等。大量实验研究表明,监督学习与非监督学习之间无明确的界限,如:深度信念网络在训练过程中既用到监督学习方法又涉及非监督学习方法。

[1]周彬. 多视图视觉检测关键技术及其应用研究[D].浙江大学,2019.
[2]郑远攀,李广阳,李晔.深度学习在图像识别中的应用研究综述[J].计算机工程与应用,2019,55(12):20-36.
[3]逄淑超. 深度学习在计算机视觉领域的若干关键技术研究[D].吉林大学,2017.
[4]段萌. 基于卷积神经网络的图像识别方法研究[D].郑州大学,2017.
[5]李彦冬. 基于卷积神经网络的计算机视觉关键技术研究[D].电子科技大学,2017.
[6]李卫. 深度学习在图像识别中的研究及应用[D].武汉理工大学,2014.
[7]许可. 卷积神经网络在图像识别上的应用的研究[D].浙江大学,2012.
[8]CSDN、知乎、机器之心、维基网络

D. 吴恩达 卷积神经网络 CNN

应用计算机视觉时要面临的一个挑战是数据的输入可能会非常大。例如一张 1000x1000x3 的图片,神经网络输入层的维度将高达三百万,使得网络权重 W 非常庞大。这样会造成两个后果:

神经网络结构复杂,数据量相对较少,容易出现过拟合;
所需内存和计算量巨大。
因此,一般的神经网络很难处理蕴含着大量数据的图像。解决这一问题的方法就是使用卷积神经网络

我们之前提到过,神经网络由浅层到深层,分别可以检测出图片的边缘特征、局部特征(例如眼睛、鼻子等),到最后面的一层就可以根据前面检测的特征来识别整体面部轮廓。这些工作都是依托卷积神经网络来实现的。

卷积运算(Convolutional Operation)是卷积神经网络最基本的组成部分。我们以边缘检测为例,来解释卷积是怎样运算的。

图片最常做的边缘检测有两类:垂直边缘(Vertical Edges)检测和水平边缘(Horizontal Edges)检测。

比如检测一张6x6像素的灰度图片的vertical edge,设计一个3x3的矩阵(称之为filter或kernel),让原始图片和filter矩阵做卷积运算(convolution),得到一个4x4的图片。 具体的做法是,将filter矩阵贴到原始矩阵上(从左到右从上到下),依次可以贴出4x4种情况。 让原始矩阵与filter重合的部分做element wise的乘积运算再求和 ,所得的值作为4x4矩阵对应元素的值。如下图是第一个元素的计算方法,以此类推。

可以看到,卷积运算的求解过程是从左到右,由上到下,每次在原始图片矩阵中取与滤波器同等大小的一部分,每一部分中的值与滤波器中的值对应相乘后求和,将结果组成一个矩阵。

下图对应一个垂直边缘检测的例子:

如果将最右边的矩阵当作图像,那么中间一段亮一些的区域对应最左边的图像中间的垂直边缘。

下图3x3滤波器,通常称为垂直 索伯滤波器 (Sobel filter):

看看用它来处理知名的Lena照片会得到什么:

现在可以解释卷积操作的用处了:用输出图像中更亮的像素表示原始图像中存在的边缘。

你能看出为什么边缘检测图像可能比原始图像更有用吗?

回想一下MNIST手写数字分类问题。在MNIST上训练的CNN可以找到某个特定的数字。比如发现数字1,可以通过使用边缘检测发现图像上两个突出的垂直边缘。

通常,卷积有助于我们找到特定的局部图像特征(如边缘),用在后面的网络中。

假设输入图片的大小为 n×n,而滤波器的大小为 f×f,则卷积后的输出图片大小为 (n−f+1)×(n−f+1)。

这样就有两个问题:

为了解决这些问题,可以在进行卷积操作前,对原始图片在边界上进行填充(Padding),以增加矩阵的大小。通常将 0 作为填充值。

设每个方向扩展像素点数量为 p,则填充后原始图片的大小为 (n+2p)×(n+2p),滤波器大小保持 f×f不变,则输出图片大小为 (n+2p−f+1)×(n+2p−f+1)。

因此,在进行卷积运算时,我们有两种选择:

在计算机视觉领域,f通常为奇数。原因包括 Same 卷积中 p=(f−1)/ 2 能得到自然数结果,并且滤波器有一个便于表示其所在位置的中心点。

卷积过程中,有时需要通过填充来避免信息损失,有时也需要通过设置 步长(Stride) 来压缩一部分信息。

步长表示滤波器在原始图片的水平方向和垂直方向上每次移动的距离。之前,步长被默认为 1。而如果我们设置步长为 2,则卷积过程如下图所示:

设步长为 s,填充长度为p, 输入图片大小为n x n, 滤波器大小为f x f, 则卷积后图片的尺寸为:

注意公式中有一个向下取整的符号,用于处理商不为整数的情况。向下取整反映着当取原始矩阵的图示蓝框完全包括在图像内部时,才对它进行运算。

如果我们想要对三通道的 RGB 图片进行卷积运算,那么其对应的滤波器组也同样是三通道的。过程是将每个单通道(R,G,B)与对应的滤波器进行卷积运算求和,然后再将三个通道的和相加,将 27 个乘积的和作为输出图片的一个像素值。

如果想同时检测垂直和水平边缘,或者更多的边缘检测,可以增加更多的滤波器组。例如设置第一个滤波器组实现垂直边缘检测,第二个滤波器组实现水平边缘检测。设输入图片的尺寸为 n×n×nc(nc为通道数),滤波器尺寸为 f×f×nc,则卷积后的输出图片尺寸为 (n−f+1)×(n−f+1)×n′c,n′c为滤波器组的个数。

与之前的卷积过程相比较,卷积神经网络的单层结构多了激活函数和偏移量;而与标准神经网络相比,滤波器的数值对应着权重 W[l],卷积运算对应着 W[l]与 A[l−1]的乘积运算,所选的激活函数变为 ReLU。

对于一个 3x3x3 的滤波器,包括偏移量 b(27+1)在内共有 28 个参数。不论输入的图片有多大,用这一个滤波器来提取特征时,参数始终都是 28 个,固定不变。即选定滤波器组后,参数的数目与输入图片的尺寸无关。因此,卷积神经网络的参数相较于标准神经网络来说要少得多。这是 CNN 的优点之一。

图像中的相邻像素倾向于具有相似的值,因此通常卷积层相邻的输出像素也具有相似的值。这意味着,卷积层输出中包含的大部分信息都是冗余的。如果我们使用边缘检测滤波器并在某个位置找到强边缘,那么我们也可能会在距离这个像素1个偏移的位置找到相对较强的边缘。但是它们都一样是边缘,我们并没有找到任何新东西。池化层解决了这个问题。这个网络层所做的就是通过减小输入的大小降低输出值的数量。池化一般通过简单的最大值、最小值或平均值操作完成。以下是池大小为2的最大池层的示例:

在计算神经网络的层数时,通常只统计具有权重和参数的层,因此池化层通常和之前的卷积层共同计为一层。

图中的 FC3 和 FC4 为全连接层,与标准的神经网络结构一致。

个人推荐 一个直观感受卷积神经网络的网站 。

相比标准神经网络,对于大量的输入数据,卷积过程有效地减少了 CNN 的参数数量,原因有以下两点:

-参数共享(Parameter sharing):特征检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域。即在卷积过程中,不管输入有多大,一个特征探测器(滤波器)就能对整个输入的某一特征进行探测。

-稀疏连接(Sparsity of connections):在每一层中,由于滤波器的尺寸限制,输入和输出之间的连接是稀疏的,每个输出值只取决于输入在局部的一小部分值。

池化过程则在卷积后很好地聚合了特征,通过降维来减少运算量。

由于 CNN 参数数量较小,所需的训练样本就相对较少,因此在一定程度上不容易发生过拟合现象。并且 CNN 比较擅长捕捉区域位置偏移。即进行物体检测时,不太受物体在图片中位置的影响,增加检测的准确性和系统的健壮性。

在神经网络可以收敛的前提下,随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降

需要注意,网络退化问题不是过拟合导致的,即便在模型训练过程中,同样的训练轮次下,退化的网络也比稍浅层的网络的训练错误更高,如下图所示。

这一点并不符合常理:如果存在某个 K层网络是当前F的最优的网络,我们构造更深的网络。那么K之后的层数可以拟合成恒等映射,就可以取得和F一直的结果。如果K不是最佳层数,那么我们比K深,可以训练出的一定会不差于K的。总而言之,与浅层网络相比,更深的网络的表现不应该更差。因此,一个合理的猜测就是, 对神经网络来说,恒等映射并不容易拟合。

也许我们可以对网络单元进行一定的改造,来改善退化问题?这也就引出了残差网络的基本思路

既然神经网络不容易拟合一个恒等映射,那么一种思路就是构造天然的恒等映射。

实验表明,残差网络 很好地解决了深度神经网络的退化问题 ,并在ImageNet和CIFAR-10等图像任务上取得了非常好的结果,同等层数的前提下残差网络也 收敛得更快 。这使得前馈神经网络可以采用更深的设计。除此之外, 去除个别神经网络层,残差网络的表现不会受到显着影响 ,这与传统的前馈神经网络大相径庭。

2018年的一篇论文,The Shattered Gradients Problem: If resnets are the answer, then what is the question,指出了一个新的观点,尽管残差网络提出是为了解决梯度弥散和网络退化的问题, 它解决的实际上是梯度破碎问题

作者通过可视化的小型实验(构建和训练一个神经网络发现,在浅层神经网络中,梯度呈现为棕色噪声(brown noise),深层神经网络的梯度呈现为白噪声。在标准前馈神经网络中,随着深度增加, 神经元梯度的相关性(corelation)按指数级减少 (1 / 2^L) ;同时, 梯度的空间结构也随着深度增加被逐渐消除 。这也就是梯度破碎现象。

梯度破碎为什么是一个问题呢?这是因为许多优化方法假设梯度在相邻点上是相似的,破碎的梯度会大大减小这类优化方法的有效性。另外,如果梯度表现得像白噪声,那么某个神经元对网络输出的影响将会很不稳定。

相较标准前馈网络, 残差网络中梯度相关性减少的速度从指数级下降到亚线性级 ) (1 / sqrt(L)) ,深度残差网络中,神经元梯度介于棕色噪声与白噪声之间(参见上图中的c,d,e);残差连接可以 极大地保留梯度的空间结构 。残差结构缓解了梯度破碎问题。

1x1 卷积指滤波器的尺寸为 1。当通道数为 1 时,1x1 卷积意味着卷积操作等同于乘积操作。
而当通道数更多时,1x1 卷积的作用实际上类似全连接层的神经网络结构,从而降低(或升高,取决于滤波器组数)数据的维度。

池化能压缩数据的高度(nH)及宽度(nW),而 1×1 卷积能压缩数据的通道数(nC)。在如下图所示的例子中,用 filters个大小为 1×1×32 的滤波器进行卷积,就能使原先数据包含的 32个通道压缩为 filters 个。

在这之前,网络大都是这样子的:

也就是卷积层和池化层的顺序连接。这样的话,要想提高精度,增加网络深度和宽度是一个有效途径,但也面临着参数量过多、过拟合等问题。(当然,改改超参数也可以提高性能)

有没有可能在同一层就可以提取不同(稀疏或不稀疏)的特征呢(使用不同尺寸的卷积核)?于是,2014年,在其他人都还在一味的增加网络深度时(比如vgg),GoogleNet就率先提出了卷积核的并行合并(也称Bottleneck Layer),如下图。

和卷积层、池化层顺序连接的结构(如VGG网络)相比,这样的结构主要有以下改进:

按照这样的结构来增加网络的深度,虽然可以提升性能,但是还面临计算量大(参数多)的问题。为改善这种现象,GooLeNet借鉴Network-in-Network的思想,使用1x1的卷积核实现降维操作(也间接增加了网络的深度),以此来减小网络的参数量(这里就不对两种结构的参数量进行定量比较了),如图所示。

最后实现的inception v1网络是上图结构的顺序连接

由于卷积这门课的其他内容和计算机视觉关系比较密切。对我理解推荐系统帮助不大。所以这个系列就到这里。吴恩达的课还是很好的,作业和课和测验我都认真做啦。

E. 有视觉障碍如何给电脑加速

视觉障碍如果想电脑加速的话可以期待一下腾讯电脑管家的新功能啊,前俩天管家的公益活动不是炒的挺火么,就是专门关爱视觉障碍人群的,大明星乔振宇还参加了,而且管家还表明会推出视觉障碍人群也能使用的新型功能,不妨保持关注

F. 深度神经网络dnn怎么调节参数

深度神经网络(DNN)目前是许多现代AI应用的基础。
自从DNN在语音识别和图像识别任务中展现出突破性的成果,使用DNN的应用数量呈爆炸式增加。这些DNN方法被大量应用在无人驾驶汽车,癌症检测,游戏AI等方面。
在许多领域中,DNN目前的准确性已经超过人类。与早期的专家手动提取特征或制定规则不同,DNN的优越性能来自于在大量数据上使用统计学习方法,从原始数据中提取高级特征的能力,从而对输入空间进行有效的表示。

然而,DNN超高的准确性是以超高的计算复杂度为代价的。
通常意义下的计算引擎,尤其是GPU,是DNN的基础。因此,能够在不牺牲准确性和增加硬件成本的前提下,提高深度神经网络的能量效率和吞吐量的方法,对于DNN在AI系统中更广泛的应用是至关重要的。研究人员目前已经更多的将关注点放在针对DNN计算开发专用的加速方法。
鉴于篇幅,本文主要针对论文中的如下几部分详细介绍:
DNN的背景,历史和应用
DNN的组成部分,以及常见的DNN模型
简介如何使用硬件加速DNN运算
DNN的背景
人工智能与深度神经网络

深度神经网络,也被称为深度学习,是人工智能领域的重要分支,根据麦卡锡(人工智能之父)的定义,人工智能是创造像人一样的智能机械的科学工程。深度学习与人工智能的关系如图1所示:

图1:深度神经网络与人工智能的关系
人工智能领域内,一个大的子领域是机器学习,由Arthur Samuel在1959年定义为:让计算机拥有不需要明确编程即可学习的能力。
这意味着创建一个程序,这个程序可以被训练去学习如何去做一些智能的行为,然后这个程序就可以自己完成任务。而传统的人工启发式方法,需要对每个新问题重新设计程序。
高效的机器学习算法的优点是显而易见的。一个机器学习算法,只需通过训练,就可以解决某一领域中每一个新问题,而不是对每个新问题特定地进行编程。
在机器学习领域,有一个部分被称作brain-inspired computation。因为人类大脑是目前学习和解决问题最好的“机器”,很自然的,人们会从中寻找机器学习的方法。
尽管科学家们仍在探索大脑工作的细节,但是有一点被公认的是:神经元是大脑的主要计算单元。
人类大脑平均有860亿个神经元。神经元相互连接,通过树突接受其他神经元的信号,对这些信号进行计算之后,通过轴突将信号传递给下一个神经元。一个神经元的轴突分支出来并连接到许多其他神经元的树突上,轴突分支和树突之间的连接被称为突触。据估计,人类大脑平均有1014-1015个突触。
突触的一个关键特性是它可以缩放通过它的信号大小。这个比例因子可以被称为权重(weight),普遍认为,大脑学习的方式是通过改变突触的权重实现的。因此,不同的权重导致对输入产生不同的响应。注意,学习过程是学习刺激导致的权重调整,而大脑组织(可以被认为是程序)并不改变。
大脑的这个特征对机器学习算法有很好的启示。
神经网络与深度神经网络

神经元的计算是输入值的加权和这个概念启发了神经网络的研究。这些加权和对应于突触的缩放值以及神经元所接收的值的组合。此外,神经元并不仅仅是输入信号的加权和,如果是这样的话,级联的神经元的计算将是一种简单的线性代数运算。
相反的是,神经元组合输入的操作似乎是一种非线性函数,只有输入达到某个阈值的时候,神经元才会生成输出。因此,通过类比,我们可以知道神经网络在输入值的加权和的基础上应用了非线性函数。
图2(a)展示了计算神经网络的示意图,图的最左边是接受数值的“输入层”。这些值被传播到中间层神经元,通常也叫做网络的“隐藏层”。通过一个或更多隐藏层的加权和最终被传播到“输出层”,将神经网络的最终结果输出给用户。

图2:神经网络示意图

在神经网络领域,一个子领域被称为深度学习。最初的神经网络通常只有几层的网络。而深度网络通常有更多的层数,今天的网络一般在五层以上,甚至达到一千多层。
目前在视觉应用中使用深度神经网络的解释是:将图像所有像素输入到网络的第一层之后,该层的加权和可以被解释为表示图像不同的低阶特征。随着层数的加深,这些特征被组合,从而代表更高阶的图像特征。
例如,线可以被组合成形状,再进一步,可以被组合成一系列形状的集合。最后,再训练好这些信息之后,针对各个图像类别,网络给出由这些高阶特征组成各个对象的概率,即分类结果。
推理(Inference)与训练(Training)
既然DNN是机器学习算法中的一员,那么它的基本编程思想仍然是学习。DNN的学习即确定网络的权重值。通常,学习过程被称为训练网络(training)。一旦训练完成,程序可以使用由训练确定的权值进行计算,这个使用网络完成任务的操作被被称为推断(inference)。
接下来,如图3所示,我们用图像分类作为例子来展示如何训练一个深度神经网络。当我们使用一个DNN的时候,我们输入一幅图片,DNN输出一个得分向量,每一个分数对应一个物体分类;得到最高分数的分类意味着这幅图片最有可能属于这个分类。
训练DNN的首要目标就是确定如何设置权重,使得正确分类的得分最高(图片所对应的正确分类在训练数据集中标出),而使其他不正确分类的得分尽可能低。理想的正确分类得分与目前的权重所计算出的得分之间的差距被称为损失函数(loss)。
因此训练DNN的目标即找到一组权重,使得对一个较大规模数据集的loss最小。

图3:图像分类

权重(weight)的优化过程类似爬山的过程,这种方法被称为梯度下降(gradient decent)。损失函数对每个权值的梯度,即损失函数对每个权值求偏导数,被用来更新权值(例:第t到t+1次迭代:,其中α被称为学习率(Learning rate)。梯度值表明权值应该如何变化以减小loss。这个减小loss值的过程是重复迭代进行的。
梯度可以通过反向传播(Back-Propagation)过程很高效地进行计算,loss的影响反向通过网络来计算loss是如何被每个权重影响的。
训练权重有很多种方法。前面提到的是最常见的方法,被称为监督学习,其中所有的训练样本是有标签的。
无监督学习是另一种方法,其中所有训练样本都没有标签,最终目标是在数据中查找结构或聚类。半监督学习结合了两种方法,只有训练数据的一小部分被标记(例如,使用未标记的数据来定义集群边界,并使用少量的标记数据来标记集群)。
最后,强化学习可以用来训练一个DNN作为一个策略网络,对策略网络给出一个输入,它可以做出一个决定,使得下一步的行动得到相应的奖励;训练这个网络的过程是使网络能够做出使奖励(即奖励函数)最大化的决策,并且训练过程必须平衡尝试新行为(Exploration)和使用已知能给予高回报的行为(Exploitation)两种方法。

用于确定权重的另一种常用方法是fine-tune,使用预先训练好的模型的权重用作初始化,然后针对新的数据集(例如,传递学习)或新的约束(例如,降低的精度)调整权重。与从随机初始化开始相比,能够更快的训练,并且有时会有更好的准确性。

G. 机器学习之人工神经网络算法

机器学习中有一个重要的算法,那就是人工神经网络算法,听到这个名称相信大家能够想到人体中的神经。其实这种算法和人工神经有一点点相似。当然,这种算法能够解决很多的问题,因此在机器学习中有着很高的地位。下面我们就给大家介绍一下关于人工神经网络算法的知识。
1.神经网络的来源
我们听到神经网络的时候也时候近一段时间,其实神经网络出现有了一段时间了。神经网络的诞生起源于对大脑工作机理的研究。早期生物界学者们使用神经网络来模拟大脑。机器学习的学者们使用神经网络进行机器学习的实验,发现在视觉与语音的识别上效果都相当好。在BP算法诞生以后,神经网络的发展进入了一个热潮。
2.神经网络的原理
那么神经网络的学习机理是什么?简单来说,就是分解与整合。一个复杂的图像变成了大量的细节进入神经元,神经元处理以后再进行整合,最后得出了看到的是正确的结论。这就是大脑视觉识别的机理,也是神经网络工作的机理。所以可以看出神经网络有很明显的优点。
3.神经网络的逻辑架构
让我们看一个简单的神经网络的逻辑架构。在这个网络中,分成输入层,隐藏层,和输出层。输入层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被整合到输出层。每层中的一个圆代表一个处理单元,可以认为是模拟了一个神经元,若干个处理单元组成了一个层,若干个层再组成了一个网络,也就是”神经网络”。在神经网络中,每个处理单元事实上就是一个逻辑回归模型,逻辑回归模型接收上层的输入,把模型的预测结果作为输出传输到下一个层次。通过这样的过程,神经网络可以完成非常复杂的非线性分类。
4.神经网络的应用。
图像识别领域是神经网络中的一个着名应用,这个程序是一个基于多个隐层构建的神经网络。通过这个程序可以识别多种手写数字,并且达到很高的识别精度与拥有较好的鲁棒性。可以看出,随着层次的不断深入,越深的层次处理的细节越低。但是进入90年代,神经网络的发展进入了一个瓶颈期。其主要原因是尽管有BP算法的加速,神经网络的训练过程仍然很困难。因此90年代后期支持向量机算法取代了神经网络的地位。
在这篇文章中我们大家介绍了关于神经网络的相关知识,具体的内容就是神经网络的起源、神经网络的原理、神经网络的逻辑架构和神经网络的应用,相信大家看到这里对神经网络知识有了一定的了解,希望这篇文章能够帮助到大家。

阅读全文

与如何给视觉应用中的神经网络加速相关的资料

热点内容
无法连接网络的短视频 浏览:12
安装网络布线方案多少钱 浏览:810
手机视频通话网络总是卡 浏览:70
电脑连上wifi一直显示获取网络地址 浏览:960
江苏省公安局网络安全监督局 浏览:425
移动4g如何升级5g网络 浏览:122
网络共享文件cmd命令 浏览:78
屋里网络路由器安装 浏览:223
wifi和网络分开 浏览:79
网络机顶盒干什么用的 浏览:946
无线网络连接金蝶服务器 浏览:972
为什么自己家光猫网络慢 浏览:749
铜仁网络安全系统排行榜 浏览:579
网络营销是自学好还是培训好 浏览:78
电脑要怎么才有网络 浏览:741
网络密码显示器是什么软件 浏览:493
网络安全和前端开发哪个难学一些 浏览:598
共享网络哪一个更稳定 浏览:515
计算机网络规划与设计读书报告 浏览:579
WiFi满格为什么网络不稳定 浏览:516

友情链接