多尺度卷积神经网络(多尺度卷积神经网络分类)
本篇文章给大家谈谈多尺度卷积神经网络,以及多尺度卷积神经网络分类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
卷积神经网络的基本原理
卷积神经网络的基本原理如脊州下:
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一
卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”。
对卷积神经网络的研究始于粗猛二十世纪80至90年代,时间延迟网络和LeNet-5是最早出现的卷积神经网络;在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域。
卷积神经网络仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,岩野桥其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程要求。
人群密度识别系统能实现那些功能?
人群密度计数是指估计图像或视频中人群的数量、密度或分布,它是智能视频监控分析领域的关键问题和研究热点,也是后续行为分析、拥塞分析、异常检测和事件检测等高级视频处理任务的基础。随着城市化进程的快速推进,城市人口数量急剧增长,导致各种人员高度聚集的社会活动频繁发生,如果管控不当,极易发生拥挤踩踏事故。
例如上海“12.31”外滩踩踏事故中,由于现场管理和应对措施不当,引发了人群拥挤和摔倒,最终造成了重大人员伤亡的严重后果。如果有精度良好的人群计数系统实时统计相关场所的人群数量、分布或密度等信息,及时发现人群拥挤和异常行为并进行预警,以便采取措施进行疏导,就可以避免悲剧的发生。性能昌迅良好的人群计数算法也可以迁移到其他目标计数领域,如显微图片中的细菌与细胞计数、拥挤道路上的汽车计数等,拓展人群计数算法的应用范围.因此,人群计数方法的研究有着重要的现实意义和应用价值。
显然的是传统的人群计数方法具有一定局限性,无法从图像中提取更抽象的有助于完成人群计数任务的语义特征,使得面对背景复杂、耐液此人群密集、遮挡严重的场景时,计数精度无法满足实际需求。近年来,深度学习技术发展迅猛,在许多计算机视觉任务中得到成功应用,促使研究人员开始探索基于卷积神经网络的人群计数办法.相比于传统方法,基于CNN的人群计数方法在处理场景适应性、尺度多样性等问题时表现更优。而且由于特征是自学习的,不需要人工选取,可以显著提升计数效果,因此已经成为当前人群计数领域的研究热点。使用CNN的人群计数方法主要分为直接回归计数法和密度图估计法2类。直接回归法只需向CNN送入人群图片,就可以直接输出人群数量,适用于人群稀疏场景。在密度图法中,CNN输出的是人群密度图,再以数学积分求和的方式计算出人数.这类方法性能的好坏一定程度上依赖于密度图的质量。为了提升密度图质量,会引入新的损失函数来提高密度图的清晰度和准确度。
故本项目通过采用深度学习方法获取人群密度图已估计人群数量,使用python语言搭建MSCNN网络实现实时生成人群密度图以达到估计人群数量的目的。其最终实现效果如下图可见:
基本介绍
1.1 环境要求
本次环境使用的是python3.6.5+windows平台。主要用的库有:
opencv模块。在计算机视觉项目的开发中,opencv作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。
numpy模块。numpy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效得多(该结构也可以用来表示矩阵。
pillow模块。PIL是理想的图像存档和批处理应用程序。您可以使用库创建缩略图,在文件格式、打印图像等之间进行转换。它提供了广泛的文件格式支持、高效的内部表示和相当强大的图像处理功能。核心图像库是为快速访问以几种基本像素格式存储的数据而设计的。为通用图像处理工具提供了坚实的基础。
keras模块。Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
1.2 MSCNN网络介绍
MSCNN作为多尺度卷积神经网络与传统机器学习算法相比,深度学习模型能更有效地从高维复杂埋谈输入中自动提取特征。卷积神经网络是应用最广泛的深度学习模型之一,通过卷积、池化等操作提取原始数据的特征,并通过权连接层输出模型的计算结果。其中,卷积核的大小在一定程度上影响着特征提取的效果和模型的故障识别能力。MSCNN是一种改进的卷积神经网络,通过不同大小的卷积核从多尺度挖掘特征信息,有效解决了传统CNN模型卷积核的自适应选择问题。
深度卷积网络
LeNet网络的结构如下图所示,可以看出,LeNet网络并没有使用padding,每进行一次卷积,图像的高度和宽度都会缩小,而通道数会一直增加。在全连接层中有400个节点,每个极点都有120个神经元,有时还会从这400个节点抽取一部分节点构建一个全连接层,即有两个全连接层。在该网络中,最后一步就是利用84个特征得到最后的输出,该网络刚开始使用的是 sigmoid 函数 tanh 函数,而现在常常倾向于使用 softmax 函数。需要注意的是,LeNet-5网络进行图像分类时,输入的图像是单通道的灰度图像。
AlexNet是以论文第一作者的名字命名的,该网络的结构丛伏,如下图所示,该网络的输出层使用了 softmax 函数。AlexNet网络比LeNet网络规模更大,大约有6000万个参数,用于训练图像和数据集时,能够处理非常相似的基本构造模块,这些模块中包含着大量的隐藏单元,并且与LeNet网络不同的是,该网络使用了ReLu的激活函数。
VGG-16网络没有太多的超参数,这是一种专注于构建卷积层的简单网络。如下图所示,该网络首先利用64个过滤器进行了两次卷积,接着在池化层将输入图像压缩,接着又是128个过滤器进行两次卷积,接着载池化。继续用256个过滤器进行3次卷积,再池化,接着再利用512个过滤器卷积3次,再池化,将稍后得到的特征图进行全连接操作,再进 softmax 激活。
由于存在梯度消失和梯度爆炸的原因,深层次的神经网络是很难训练的,如果采用一种跳跃连接的方式,即从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。这种利用跳跃连接构建的深度神经网络ResNets,深度能够超过100层
一个简单的两层神经网络示例,如下图所示:
常规的输出和输出之间的关系渗衡携可以用如下的公式表示:
如上公式所述,这是一条神经网络的主路径。如果将 的输入直接到深层的激活函数之前,此时,神经网络有了一条副路径,其对应输出将有公式(5)变成如下所示的公式(6)
此时的输入除了原先的输入 外,多了一个 项,即由于 产生了一个残差块。
构建一个ResNet网络就是将很多这样的残差块堆积在一起,形成一个深度神经网络,如下所示:
使用传统的标准优化算法训练一个网络,随着网络深度的增加,训练误差会先减小再增加,随着网络层数的增加,优化算法会越难以训练,训练误差也会越来越多。但是,使用ResNet网络,能够有效地避免这种情况。
如上所述,加入残差网络之后,其输出计算公式如公式(6)所示,展开这个公式,则有:
如果使用L2正则化或者权重衰减,则会压缩权重参数 的值,如果参数 和参数 等于0,其输出将由公式(7)变成 ,假定使用ReLU激活函数,则有:
由于残差网络存在的这种跳跃连接,很容易得出以上等式,这意味着,即使给神经网络增加两层,但是其效率并不逊色与更简单的神经网络。并且由于存在以上恒等式,使得网络学习隐藏层的单元的信息更加容易。而普通网络,随着网络层数的增加,学习参数会变得很困难。
此外,关于残差网络,如公式(6)所示,假设 与 具有相同的维度,由于ResNets使用了许多same卷积, 的维度等于输出层的维度。如果输入和输出具有不同的维度,可以再增加一个矩阵 ,使得 和 具有相同的维度。而 的维度可以通过0值填充调节。
在卷积网络的架构设计中,一种有趣的想法是会使用到1×1的过滤矩阵,实际上,对于单通道的图像而言,1×1的过滤矩阵,意义不大,拦猛但是,对于多通道的图像而言,1×1的过滤矩阵能够有效减少图像卷积之后的通道数量。
根据卷积和池化的基本知识,随着神经网络层数的增加,图像的通道数量会逐渐增加,采用1×1的过滤矩阵卷积之后,可以有效减少图像的通道数量,一个简单的示例,如下所示:
假设有一个6×6×32的图片,使用1×1×32的过滤矩阵进行卷积运算,整个运算过程将会遍历36个单元格,并计算过滤矩阵所覆盖区域的元素积之和,将其应用到ReLu非线性函数,会得到一个输出值。此计算过程中,可能会用到多个1×1×32的过滤器,那么,通过以上计算会得到一个 6×6×过滤器数量 的矩阵。
构建卷积神经网络时,有时会很难决定过滤器的大小,而Inception网络的引入,却能很好的解决这个问题。
Inception网络的作用就是代替人工确定选择卷积层的过滤器类型。如下图所示,对于一个多通道图像,可以使用不同的过滤矩阵或者池化层,得到不同的输出,将这些输出堆积起来。
有了如上图所示的Inception块,最终输出为32+32+64+128=256,而Inception模块的输入为28×28×192,其整个计算成本,以5×5的过滤矩阵为例,其乘法的计算次数为:28×28×32×5×5×192,整个计算次数超过了1.2亿次。而如果使用如下所示的优化计算方法,则可以有效减少计算量。
如果利用1×1的过滤器,将输入矩阵的通道减少至16,则可以有效减少计算量,如下所示:
如上图所示的价格中,整个网络的运算次数为:28×28×192×16+28×28×32×5×5×16=1240万,整个计算成本降低至原来的十分之一。而,通过1×1×192过滤器卷积得到的这个网络层被称之为瓶颈层。
如上,所示,可以给每一个非1×1的卷积层之前,加入一个1×1的瓶颈层,就可以构建一个基本的inception模块了,如下图所示:
而一个inception网络就是多个Inception模块连接起来,如下图所示:
事实上,以上网络中,还存在一些分支,如编号1所示,这些分支就是全连接层,而全连接层之后就是一个softmax层用于预测。又如分支2所示,包含一些隐藏层(编号3),通过全连接层和softmax进行预测。这些分支结构能够确保,即使是隐藏层和中间层也参与了特征计算,并且也能够预测图片的分类。这种做法能够有效避免网络过拟合。
对于计算机视觉领域而言,神经网络的训练可能需要大量的数据,但是当数据量有限时,可以通过数据增强来实现数据量的扩充,以提高系统的鲁棒性,具体的数据增强方法如下所示:
除了以上三种数据增强的方法外,更多的数据增强方法和实现可以参考 图像数据增强
数据增强可以利用计算机多线程实现,一个线程用来实现加载数据,实现数据增强,其他线程可以训练这些数据以加快整体的运算速度。
[img]神经网络(深度学习)的几个基础概念
从广义上说深度学习的网络结构也是多层神经网络的一种。传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。而深度学习中最著名的卷积神经网络CNN,在原来多层神经网络的基础上,加入了特征学习部分,这部分是模仿人脑对信号处理上的分级的。具体操作就是在好如做原来的全连接的层前面加入了部分连接的卷积层与降维层,而且加入的是一个层级。输入层 - 卷积层 -降维层 -卷积层 - 降维层 -- .... -- 隐藏层 -输出友衡层简单来说,原来多层神经网络做的步骤是:特征映射到值。特征是人工挑选。深度学习做的步骤是 信号-特征-值。 特征是由网络自己选择橡雀。
关于多尺度卷积神经网络和多尺度卷积神经网络分类的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。