【深度学习】卷积神经网络之图像分类|CNN、AlexNet、VGG、GoogLeNet、ResNet

2023-11-07

一、CNN

卷积神经网络分为卷积层、池化层、全连接层、softmax层。
卷积层:卷积核与输入层中的一个区域相连,计算内积后加上权重。
激活函数层:激活函数层包括在卷积层中,将相连的神经元进行激活,通常使用ReLu激活函数 m a x ( 0 , x ) max(0,x) max(0,x)
池化层:又称为下采样层,通常包括max pooling和average pooling,不会改变通道数量。
全连接层:将特征图拉直,转化为1 × \times × 1 × \times × 4096的向量。
softmax层:将全连接层4096个神经元转化为1000个类别,通过计算交叉熵使得每个类别对应一个概率值,最后通过将概率值排序,得到结论

1. 卷积层

卷积层有两个特点:局部感知权值共享

局部感知: 在提取图片特征时,只需得到图片的某一些特征,而一些模式化特征比整张图片小很多,并且一个神经元不需要看到整个图片发现模式。所以,让每个卷积核只与输入图片的一个局部区域连接,该连接空间的大小叫做神经元的感受野(receptive field),它的尺寸是一个超参数。其通道数量总与输入的通道数相同即在空间维度(宽高)上是局部的,而在深度上总是和输入数据的深度一致。
权值共享: 由于同样的模式可能出现在不同的区域,所有采用权值共享的方法,该方法对不同的感受野使用的卷积核参数相同,当权值共享时就相当于卷积核扫过了一整张图片。在卷积层中使用权值共享是用来控制参数的数量。
激活函数层: 通常使用非线性激活函数 m a x ( 0 , x ) max(0,x) max(0,x)

2. 池化层

它的作用是组建降低特征图的维度,减少参数数量,也能有效控制过拟合和进行特征的融合。池化层包含最大值池化和平均池化。无需参数需要学习。

3. 全连接层

全连接层就是普通的神经网络,具有全局感受野可去除空间信息,换句话说全连接层和卷积层之间的唯一不同就是卷积层中的卷积核只与输入图片的一个局部区域连接,并且在卷积列中的卷积核共享参数,类比到全连接层则是全局感受野,等效于全局卷积。

4. softmax层

softmax层是以交叉熵损失函数为基础的一层,对应最后一个全连接输出的1000个类别,根据交叉损失函数计算出1000类标签的概率值。
特点:将实数值压缩到(0,1);所有元素和为1。

5. CNN设计准则

  1. 避免瓶颈信息:数据量 H , W , C H,W,C H,W,C要缓慢变小
  2. 通道数量保存在可控范围
  3. 感受野要足够大
  4. 分组计算降低计算量
  5. 低秩分解降低计算量

二、AlexNet

AlexNet由5个卷积层和3个全连接层组成,其中卷积层中使一些最大池化层以及3个全连接层后的1000个softmax输出。为加快训练速度采用非饱和线性函数和能进行高效卷积运算的GPU实现。为减少全连接层中的过拟合,采用了数据增强、dropout正则化两种防止过拟合的方法。

1. LRN

局部响应归一实现了一种模仿真实神经元的横向抑制,从而在使用不同内核计算的神经元输出之间产生较大的竞争。它是指在某个batch中某个位置(x,y)上跨通道方向上的归一化。

2. Data Augmentation

数据增强有两种方式:数据增强 × \times × 10、图像像素去中心化

  1. 从256 × \times × 256的图像中提取5个224 × \times × 224的图像(四角+中心),对五个图像做翻转,得到10个图像
  2. RGB减去各自通道的均值

3. Dropout

Dropout会以50%的概率将隐藏层的神经元输出置为0,以这种方法被置0的神经元不参与网络的前馈和反向传播。因此,每次给网络提供了输入后,神经网络都会采用一个不同的结构,但这些结构都权重共享。这种技术减少了神经元的复杂适应性,因为神经元无法依赖于其他特定的神经元而存在。它被迫学习更强大更鲁棒的功能。测试时,我们试着使用了所有的神经元,并将它们的输出乘以0.5。最后使用Dropout的网络可以更好地解决过拟合现象。


三、VGG

VGG-16的核心思想就是将大卷积核转化多个小卷积核替代:5 × \times × 5卷积用2个3 × \times × 3卷积代替;7 × \times × 7卷积用3个3 × \times × 3卷积代替。


四、GoogLeNet

1. Inception-V1

为什么提出Inception?
在提出GoogLeNet之前,为提高网络性能只能提高网络的深度和宽度(增加隐藏层和各层神经元的数量),但这种方法存在问题:

  • 导致更大的参数空间、更容易过拟合
  • 需要更多的计算资源
  • 网络越深,梯度容易消失
    为解决上述问题,GoogLeNet作者提出把全连接改成稀疏连接,卷积层也是稀疏连接,但是不对称的稀疏数据数值计算效率低下,因为硬件全是针对密集矩阵优化的,所以,我们要找到卷积网络可以近似的最优局部稀疏结构,并且该结构下可以用现有的密度矩阵计算硬件实现,产生的结果就是Inception。

1.1. Inception

将本来一个串行的网络结构替换为四个分支并行,分别为1$\times$ 1卷积、3$\times$ 3卷积、5$\times$ 5卷积和一个max pooling层。采用大小不同的卷积核意味着感受野的大小不同,可得到不同的尺寸,再再此的基础上增加了3个1$\times$ 1卷积,避免了5$\times$ 5卷积计算量太大的问题。

Inception的作用: 替代了人工确定卷积层中过滤器的类型或者是否创建卷积层和池化层,让网络自己学习它具体需要什么参数。

1.2. 取消全连接层

替代了人工确定卷积层中过滤器的类型或者是否创建卷积层和池化层,让网络自己学习它具体需要什么参数。

1.3. 辅助分类器

有一个深层分类器和浅层分类器,为防止梯度消失。

2. Inception-V2

Inception-V2的主要贡献是提出Batch Normalization,其次改进了部分v1。

Batch Normalization
在训练深度网络时作者提出一个问题“Internal Covariate Shift”。这是由于在训练过程中,网络参数变化所致。具体来说,对于一个神经网络,第n层的输入就是第n-1层的输出,在训练过程中每训练一轮参数就会发送变化,对于一个网络相同的输入,但n-1层的输出却不一样,这导致了第n层的输入也不一样,为解决这个问题提出了Batch Normalization。

Batch Normalization层是一个可学习、有参数的网络层,其本质是在网络的每一层输入的时候,又插入了一个归一化层先做一个归一化处理,用于重新调整数据的分布,然后再进入网络的下一层。使用了近似白化的预处理对数据进行规范化到(0,1)的操作。

Batch Normalization同时解决Internal Covariate Shift问题(内部neuron的数据分布发 生变化),允许较高学习率,取代部分Dropout。

3. Inception-V3

Inception-V3的主要贡献是进一步改进Inception模块。

分解卷积核尺寸:

  • 将卷积核分解为对称的小卷积核
  • 将卷积核分解为不对称的卷积核

取消辅助分类器: 只留下深层分类器,取消浅层辅助分类器。

改变降低特征图尺寸的方式: 有两个通道,一个是卷积层,一个是pooling层,两个通道生成的特征图大小一样,concat在一起即可。

4. Inception-V4

Inception-V4就是将Inception-V2和Res Net结合。


五、ResNet

ResNet的主要贡献就是增加了一个skip connection将残差和恒等映射结合。

为什么引入ResNet? 这是由于网络的加深会造成梯度爆炸和梯度消失的问题。


参考文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【深度学习】卷积神经网络之图像分类|CNN、AlexNet、VGG、GoogLeNet、ResNet 的相关文章

  • 从windows下切换到Linux

    想从windows下切换到Linux 感觉好难 虽然早有这个想法 但是真正做起来后感觉还是有点难度 主要是命令行的界面感觉不习惯 感觉没有了鼠标就什么都不会干了 尤其是在vi下的时候 连上下左右都不会了 但是换了vim tiny后感觉我又会
  • ML算法基础——分类模型评估与调参

    文章目录 一 分类模型评估 1 准确率 2 精确率和召回率 2 1 混淆矩阵 2 2 精确率 Precision 与召回率 Recall 2 3 分类模型评估API 2 4 贝叶斯模型评估实例 二 模型的选择与调优 1 交叉验证 2 网格搜
  • SLVS-EC接口学习

    SLVS summarize 一 概述 SLVS EC高速串行接口技术 在CIS和DSP 数字信号处理器 之间实现了高帧率的宽带像素数据传输 SLVS EC引入了一个优化的数据包格式和控制协议 几乎没有冗余 而且结构简单 仅由两层组成 LI
  • Windows下部署Appium教程(Android App自动化测试框架搭建)

    摘要 1 appium是开源的移动端自动化测试框架 2 appium可以测试原生的 混合的 以及移动端的web项目 3 appium可以测试ios android firefox os 4 appium是跨平台的 可以用在osx windo

随机推荐

  • 【SpringCloudAlibaba学习 01】创建父工程项目

    文章目录 SpringBoot SpringCloud SpringCloudAlibaba版本对应关系 第一步 创建父工程 第二步 配置父工程Maven依赖 第三步 本地项目上传Git仓库 这一步可不做 1 登录自己的Git 2 进入个人
  • 详解深度语义匹配模型DSSM

    所谓语义匹配 就是在语义上衡量文本的相似度 在产业界有很多的应用需求 例如 在FAQ场景中需要计算用户输入与标问之间的相似度来寻找合适的答案 本文介绍一种经典的语义匹配技术 DSSM 主要用于语料的召回和粗排 作者 编辑 小Dream哥 1
  • ZooKeeper-Curator-InterProcessMutex分布式锁源码

    这里写自定义目录标题 InterProcessMutex 可重入互斥锁 ConnectionStateListener 注意 临时节点下不能创建临时子节点 InterProcessMutex 可重入互斥锁 具体流程图 入口1 Overrid
  • 在vue3中如何使用百度地图API(详细步骤+demo示例)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 注册账号 申请成为开发者 二 申请密钥AK 三 在vue3 0中使用百度地图API 提示 以下是本篇文章正文内容 下面案例可供参考 一 注册账号 申请成为开发者
  • linux VM与容器的存储IO性能测试

    linux VM与容器的存储IO测试 测试由KVM vmwarm virtualbox生产的VM和docker容器的存储IO性能 测试过程 1 分别在同一台物理机安装kvm和virtualbox的hypervisor 生产kvm virtu
  • 网络网段分类

    A类网段 0 0 0 0 127 255 255 255 B类网段 128 0 0 0 191 255 255 255 C类网段 192 0 0 0 223 255 255 255 D类网段 224 0 0 0 239 255 255 25
  • python多变量赋值和三元表达式出错(求解答)

    直接给出问题吧 以后只在定义是进行多变量同时赋值算了 希望有大神能够解答 定义变量 minL 0 a 0 b 1 subL 2 print minL a b subL 0 0 1 2 方法一 minL a subL b if subL lt
  • STM32双串口

    STM32双串口的使用 最近老是需要stm32通过串口去跟WiFi模块 蓝牙模块 openmv进行数据交互 然后需要用到stm32的串口调试 就把这个程序整理成一个工程 方便调试 实验目的 外设模块 WiFi模块 蓝牙模块 openmv 发
  • 神经网络调参:loss 问题汇总(震荡/剧烈抖动,loss不收敛/不下降)

    目录 1 模型不收敛主要原因 1 1 learning rate设大了会带来跑飞 loss突然一直很大 的问题 1 2 数据库太小一般不会带来不收敛的问题 1 3 尽量用小模型 2 模型loss 不下降 2 Loss 函数不收敛 2 1 l
  • electron 应用优雅的配置 about 信息

    使用 electron 的 dialog tray 托盘栏菜单优雅简单的配置 about 关于本应用的信息 效果下图所示 项目依赖 electron 24 4 1 electron builder 23 6 0 electron build
  • 库默尔定理学习小记

    A组又出现了逆天的数竞定理 随便口胡一下 定理 有两个正整数n m p是质数 Cnn m C n m n含 的幂次等于 在 进制下的进位数 简略证明 Cnn m C n m n含 的幂次 i 1 n mpi i 1 npi i 1 mpi
  • Oracle入门笔记(九)——视图、序列、索引、同义词和权限等

    视图和索引 1 视图 2 序列 3 索引 4 同义词 5 数据控制语言 DCL 6 执行计划 1 视图 视图是 基于数据表或者另外一个视图的逻辑表 类似于一个数据表或者数据表间组合之后得到的数据窗口 通过窗口能够查看数据表或者表间组合时候得
  • ELK 企业级日志分析系统(理论加实战部署详解)

    ELK 企业级日志分析系统 理论加实战部署详解 文章目录 一 ELK 概述 1 1 ELK 的工作原理 二 部署详解 一 ELK Elasticsearch 集群部署 在Node1 Node2节点上操作 二 ELK Logstash 部署
  • 【搜索引擎Solr】配置 Solr 以获得最佳性能

    Apache Solr 是广泛使用的搜索引擎 有几个著名的平台使用 Solr Netflix 和 Instagram 是其中的一些名称 我们在 tajawal 的应用程序中一直使用 Solr 和 ElasticSearch 在这篇文章中 我
  • 手撕代码:统计1到n二进制数中1出现的总次数

    题目描述 互娱手撕代码题 统计从1到n这n个数的二进制表示中1出现的次数 思路分析 思路一 直接的做法是从1遍历到n 对于每个数和1做与操作 之后 对于这个数不断做右移操作 不断和1做与操作 直到当前数为0 这样的算法复杂度为O nlogn
  • C++ 播放音频流(PCM裸流)

    直接上代码 如果有需要可以直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用了 注意将声道和频率与你自己的文件对应 当然我自己也用VS2008写了个例子上传了 如果有需要下载地址如下 点击打开链接 这份代码是打开文件截取一段数
  • vue-amap 高德地图定位 点击获取经纬度和具体地址的使用

    官方文档地址 点这里 经纬度获取只要通过点击事件就可以通过e lnglat来获取 然后就是插件Geocoder使用了 在main js中initAMapApiLoader中写入 AMap Geocoder 注意 官方文档中有提示 所以插件中
  • webpack5 (三)

    webpack 高级配置 其实就是对 webpack 进行优化 让代码在编译 运行时性能更好 1 提升开发体验 2 提升打包构建速度 3 减少代码体积 4 优化代码运行性能 一 提升开发体验 sourcemap 在编译打包后所有的 css
  • 图片无损放大软件Topaz Gigapixel AI 5.5.2 win mac 汉化 mac只有英文版

    Topaz Gigapixel AI 5 5 2 win mac 汉化版 mac只有英文版 今天给大家带来一款超级强大的无损放大图片软件 在放大的同时还能够为你优化图片 真的不要太棒 这个软件的名字叫 Topaz Gigapixel AI
  • 【深度学习】卷积神经网络之图像分类|CNN、AlexNet、VGG、GoogLeNet、ResNet

    一 CNN 卷积神经网络分为卷积层 池化层 全连接层 softmax层 卷积层 卷积核与输入层中的一个区域相连 计算内积后加上权重 激活函数层 激活函数层包括在卷积层中 将相连的神经元进行激活 通常使用ReLu激活函数 m a x 0