在走进深度学习的过程中,最吸引作者的是一些用于给对象分类的模型。最新的科研结果表示,这类模型已经可以在实时视频中对多个对象进行检测。而这就要归功于计算机视觉领域最新的技术革新。

众所周知,在过去的几年里,卷积神经网络(CNN或ConvNet)在深度学习领域取得了许多重大突破,但对于大多数人而言,这个描述是相当不直观的。因此,要了解模型取得了怎样大的突破,我们应该先了解卷积神经网络是怎样工作的。

卷积神经网络可以做些什么?

卷积神经网络用于在图像中寻找特征。在CNN的前几层中,神经网络可以进行简单的“线条”和“角”的识别。我们也可以通过神经网络向下传递进而识别更复杂的特征。这个属性使得CNN能够很好地识别图像中的对象。

卷积神经网络

CNN是一个包含各种层的神经网络,其中一些层是卷积层、池化层、激活函数。

卷积层是如何工作的?

要了解CNN如何工作,你需要了解卷积。卷积涉及浏览图像和应用滤波器等具体内容。

上图是一个5x5的矩阵。现在,你另外选取一个3x3矩阵,然后移动到图像上,将3x3矩阵与被覆盖的图像部分相乘以生成单个值。紧接着,3x3矩阵向右和向下移动以“覆盖”整个图像。最后,我们将获得如上所示的内容。

卷积层的目标是过滤。滤波器是由矢量的权重堆叠乘以卷积输出的值来表示的。当训练图像时,这些权重会发生变化,也就是说当进行图像评估时,它会通过它捕捉到的一些特征来预测出图像的内容。

池化层

卷积层之后的层主要是CNN架构中的池化层。它将输入的图像分割为一组不重叠的矩形,并且对于每个子区域都输出一个值。

两个主要的池化层是最大池和平均池。

最大池 - 输出子区域的最大值。

平均池 - 输出子区域的平均值。

池化层用于减少空间维度而不是深度。

减少空间维度的主要优点是:

• 通过减少空间信息,可以优化计算性能。

• 通过减少空间信息意味着你可以使用较少的参数来训练模型,从而减少过度拟合的可能性。

• 获得一些固定的值。

激活函数

激活函数的工作方式与其他神经网络完全相同,该函数的主要左右是将值压缩到一个特定的范围内。一些常用的激活函数是:

最常用的激活函数是ReLu激活函数。它需要输入‘x’并判断‘x’是否为正,如果不为正则返回0。使用ReLu函数的原因是因为它的执行成本很低。

上图是卷积层的一般表示。我们通过池化层进行了卷积和ReLu函数。这些层彼此堆叠。

虽然定义和训练深度神经网络(DNN)比以往任何时候都容易,但大多数人还是会陷入误区。

为此目的,我们使用可视化来理解CNN模型中的各种层。

使用Keras实现可视化

在这部分我们将尝试使用Keras实现可视化。我们将使用Keras可视化输入,最大限度地激活VGG16体系结构的不同层中的滤波器,并对ImageNet进行训练。

首先,让我们从在Keras中定义VGG16模型开始:

请注意,我们只进入最后一个卷积层。原因是添加完全连接的层会强制你使用模型的固定输入大小(224x224,原始ImageNet格式)。 通过保留卷积模块,我们的模型可以适应任意输入大小。

该模型加载了一组预先在ImageNet上训练过的权重。

现在让我们定义一个损失函数,它将促进特定层(layer_name)中的特定滤波器(filter_index)的激活。我们通过Keras后端函数执行此操作,该函数支持我们的代码在TensorFlow和Theano之上运行。

一切都很简单。这里唯一的技巧是规范输入图像的像素梯度,以确保梯度上升足够平滑。

现在我们可以使用我们定义的Keras函数在输入空间中进行梯度上升:

使用TensorFlow在CPU上执行此操作需要几秒钟。

然后我们可以提取并显示生成的输入:

结果:

第一层基本上只是编码方向和颜色。然后将这些方向和滤波器组合成基本网格和斑点纹理。这些纹理逐渐组合成越来越复杂的图案。

你可以将每层中的滤波器视为矢量的基础,它通常是完整的,可用于以紧凑的方式将输入层进行编码。当滤波器开始整合来自越来越大的空间范围的信息时,滤波器会变得更加复杂。

以下是从不同层生成的要素图的图片:

第1层主要生成水平、垂直和对角线。主要用于检测图像中的边缘。 第2层将尝试提供更多的信息。它主要检测角落。第3层我们开始可以检测到一些复杂的图案,如眼睛、脸等。我们可以假设这个特征图是从训练过的人脸检测模型中获得的。在第4层,它可以在面部的更复杂部分(例如眼睛)。

在第5层中,你可以使用要素图生成人的具体面孔、汽车轮胎、动物的面孔等。此要素图包含有关图像中的大多数信息。

神经网络能用来干什么_知识普及:卷积神经网络模型是怎样工作的?可以做些什么?...相关推荐

  1. 卷积神经网络发展历史及各种卷积神经网络模型简介

    1.前言 我的毕设做的是基于opencv和卷积神经网络的人脸识别项目.在做完这个项目之后,我一直想好好总结一下所学到的关于卷积神经网络的知识.现在趁着有点空闲,随手记录一点以前学过的,或者正在学习的知 ...

  2. 卷积神经网络数学建模,常见卷积神经网络模型

    卷积神经网络cnn究竟是怎样一步一步工作的 用一个卷积核滑动图片来提取某种特征(比如某个方向的边),然后激活函数用ReLU来压制梯度弥散. 对得到的结果用另一个卷积核继续提取+reLU,然后池化(保留 ...

  3. 卷积神经网络模型结构,卷积神经网络结构设计

    卷积神经网络cnn究竟是怎样一步一步工作的 用一个卷积核滑动图片来提取某种特征(比如某个方向的边),然后激活函数用ReLU来压制梯度弥散. 对得到的结果用另一个卷积核继续提取+reLU,然后池化(保留 ...

  4. 【Pytorch神经网络实战案例】13 构建变分自编码神经网络模型生成Fashon-MNST模拟数据

    1 变分自编码神经网络生成模拟数据案例说明 变分自编码里面真正的公式只有一个KL散度. 1.1 变分自编码神经网络模型介绍 主要由以下三个部分构成: 1.1.1 编码器 由两层全连接神经网络组成,第一 ...

  5. 图神经网络(一)DGL框架搭建GCN图卷积神经网络模型

    一.DGL DGL是基于pytorch开发的一个专门用于图神经网络模型搭建的框架,到现在为止,DGL已经高度封装了如GCN.GraphSage.GAT等常见的图神经网络模型,可以直接调用,比较方便,当 ...

  6. 卷积神经网络人脸特征提取,cnn卷积神经网络模型

    1.卷积神经网络 有哪些改进的地方 卷积神经网络的研究的最新进展引发了人们完善立体匹配重建热情.从概念看,基于学习算法能够捕获全局的语义信息,比如基于高光和反射的先验条件,便于得到更加稳健的匹配.目前 ...

  7. 【Pytorch学习笔记三】Pytorch神经网络包nn和优化器optm(一个简单的卷积神经网络模型的搭建)

    文章目录 一, 神经网络包nn 1.1定义一个网络 1.2 损失函数 二.优化器 nn构建于 Autograd之上,可用来定义和运行神经网络, PyTorch Autograd 让我们定义计算图和计算 ...

  8. unet是残差网络吗_深度学习系列(三)卷积神经网络模型(ResNet、ResNeXt、DenseNet、DenceUnet)...

    深度学习系列(三)卷积神经网络模型(ResNet.ResNeXt.DenseNet.Dence Unet) 内容目录 1.ResNet2.ResNeXt3.DenseNet4.Dence Unet 1 ...

  9. python搭建神经网络模型,python实现神经网络算法

    如何用 Python 构建神经网络择时模型 . importmathimportrandom(0)defrand(a,b):#随机函数return(b-a)*random.random()+adefm ...

最新文章

  1. 软件工程师必备的24个软技能
  2. [CodeForces1110C]Meaningless Operations
  3. 【Leetcode | easy】有效的括号
  4. C# Linq to SQL — Group by
  5. 【转】CSS样式覆盖规则
  6. jquery中$each()
  7. 云桌面 瘦终端_小米盒子连接Citrix云桌面
  8. c语言上机报告之水仙花数,C语言上机报告之水仙花数..doc
  9. qt制作位图led点阵_LED显示屏知识详细讲解
  10. HTML 上标题栏把右标题栏遮挡,如何编辑组件的样式(编辑样式)?
  11. 后端自我介绍_新人入职自我介绍
  12. smart link和聚合链路综合实验
  13. JAVA毕设项目vue架构云餐厅美食订餐系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  14. 问道法宝升级经验统计
  15. 国产MCU替代STM8S003方案汇总
  16. gpio上拉下拉区别
  17. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、绘制分面生存曲线(facet_grid)
  18. 百度大脑人体分析服务3月上新盘点
  19. 如何使用 JavaScript 创建水平和垂直标签?
  20. 【成长访谈】李钊:学技术于无形,论大道于无声

热门文章

  1. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day19】—— 集合框架3
  2. 沐曦加入龙蜥社区,聚焦技术创新,繁荣开源生态
  3. 快讯 | 加密猫日活用户流失95%,已不足1000人
  4. 以太坊区块链入门之实现简单DApp开发
  5. VSCode 配置Java环境
  6. 算法第四题:学生出勤记录情况统计 2021-08-19
  7. AutoJs Pro 7.0.4-1 实战教程---史上最全快手极速版
  8. CTF --《亲爱的,热爱的》网络安全大赛 介绍
  9. Patchwork++:基于点云的快速、稳健的地面分割方法
  10. ElasticSearch的安装以及与springboot的集成