百面算法工程师 | 分类网络总结

 欢迎大家订阅我的专栏一起学习共同进步,主要针对25届应届毕业生

祝大家早日拿到offer! let's go

http://t.csdnimg.cn/dfcH3

目录

4. 经典分类网络与发展

4.1 AlexNet

4.2 VGGNet

4.3 GoogLeNet

Inception

4.4 ResNet

4.5 DenseNet

4.6 MobileNet

4.7 ShuffleNet

4.8 SENet(ImageNet最后一届竞赛的冠军,提出了SE结构)


经典分类网络与发展

pipeline:LeNet->AlexNet->Network in Network->VGGNet->GoogLeNet->ResNet->Inception->DenseNet->Xception->MobileNet->ShffleNet->SENet

每个标题上的超链接都是对应的论文,详细了解可以阅读论文

4.1 AlexNet

AlexNet模型有以下特点:

  1. 所有卷积层都使用ReLU作为非线性映射函数,使模型收敛速度更快
  2. 在多个GPU上进行模型训练,不但可以提高模型的训练速度,还能提升数据的使用规模
  3. 使用LRN对局部特征进行归一化,结果作为ReLU激活函数的输入能有效降低错误率
  4. 重叠最大池化(Overlapping max pooling),即池化范围z与步长s存在关系z > s ,避免平均池化(Average pooling)的平均效应
  5. 使用随机丢弃技术(Dropout)选择性地忽略训练中的单个神经元,避免模型的过拟合
4.2 VGGNet

VGGNet有以下特点:

  1. 整个网络使用同样大小的卷积核尺寸3 ×3和最大池化尺寸2 × 2 。
  2. 1 × 1卷积的意义主要在于线性变换,没有发生降维。
  3. 两个3 × 3 的卷积层串联相当于15 × 5 的卷积层。同样地,3个3 × 3 的卷积层串联效果相当于1个7 × 7 的卷积层。使得网络参数量更小,而且多层的激活函数使网络对特征学习能力更强。
  4. VGGNet先训练浅层的的简单网络,再复用该权重来初始化更深层网络,如此反复训练并初始化VGG,能够使训练时收敛的速度更快。
  5. 使用多尺度的变换对原始数据做数据增强,使得模型不易过拟合
4.3 GoogLeNet

GoogLeNet与VGG不同,该网络主要工作是探索了增加网络的宽度。论文提出了名为Inception 的结构来实现既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。

GoogLeNet有以下特点:

  1. 提出了Inception 结构
  2. 任意nxn的卷积都可以通过1xn卷积后接nx1卷积来替代。实际上,作者发现在网络的前期使用这种分解效果并不好,还有在中度大小的feature map上使用效果才会更好。
  3. 挖掘了网络宽度可以降低网络计算量同时表现优异。GoogLeNet的计算效率明显高于VGGNet,大约只有500万参数,只相当于Alexnet的1/12(GoogLeNet的caffe model大约50M,VGGNet的caffe model则要超过600M)。
  4. Average pooling代替全连接层,有效减少参数
  5. 探索了1x1卷积的作用,用于升维和降维信息。
Inception

Inception_v1

输入被拷贝四份,在四条路径上进行传递。特点如下:

 采用大小不同的三种卷积核使得感受野大小不同,得到不同尺度的特征。

 使用1*1卷积核降低维度,减少计算瓶颈,增加网络层数,提高非线性。

 视觉信息在不同尺度上进行处理聚合,这样下一步可以从不同尺度提取特征。

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

Inception_v2特点如下:

 把Inception-v1中5 ∗ 5 的卷积用2个3 ∗ 3的卷积替换,保持相同感受野的同时减少参数,加强非线性的表达能力。

 提出了Batch Normalization,如果激活函数是sigmoid,对于每个神经元,可以把逐渐向非线性映射的两端饱和区靠拢的输入分布,强行拉回到0均值单位方差的标准正态分布,即激活函数的兴奋区,在sigmoid兴奋区梯度大,即加速网络训练,还防止了梯度消失。

Inception_v3 特点如下:

 分解卷积核尺寸。一个是分解为对称的小的卷积核,即5 ∗ 5 的卷积核替换成2个3 ∗ 3 的卷积核。另一个是分解为不对称的卷积核,即将n ∗ n 的卷积核替换成1 ∗ n 和 n ∗ 1 的卷积核堆叠。

 上述结构使得:1. 降低计算量,2. 增加一层非线性,3. 可以处理更丰富的空间特征,增加特征的多样性。

 改变降低特征图尺寸的方式。分卷积通道与池化通道。

Inception-v4
 最大特点是与Resnet进行结合。

4.4 ResNet

 从VGG与GoogLeNet诞生后,实验研究发现深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,分类准确率也变得更差。排除数据集过小带来的模型过拟合等问题后,发现过深的网络仍然还会使分类准确度下降。
 ResNet作者提出可能是因为更深的网络会伴随梯度消失/爆炸问题,从而阻碍网络的收敛。这种加深网络深度但网络性能却下降的现象被称为退化问题。于是ResNet提出了res-block结构,对于更深层次的模型:添加恒等映射(identity mapping)(就是跳跃结构,直接把信息恒等传递到下一层)。在这种情况下,更深的模型不应该产生比其对应的较浅的网络更高的训练误差。

原先网络输入x,希望输出H(x)。令H(x)=F(x)+x,网络只需学习输出一个残差F(x)=H(x)-x。当残差为0时,此时堆积层仅仅做了恒等映射,实际上残差不会为0,使得堆积层在输入特征基础上学习新的特征从而拥有更好性能。简化了学习过程,增强了梯度传播。

4.5 DenseNet

论文中提出的架构为了确保网络层之间的最大信息流,将所有层直接彼此连接。为了保持前馈特性,每个层从前面的所有层获得额外的输入,并将自己的特征映射传递到后面的所有层。该论文基于这个观察提出了以前馈的方式将每个层与其他层连接的密集卷积网络(DenseNet)
 
 DenseNet 是一种具有密集连接的卷积神经网络。在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有层输出的并集,而该层所学习的特征图也会被直接传给其后面所有层作为输入。

DenseNet有以下特点:

 1.相比ResNet 拥有更少的参数数量

 2.旁路加强了特征的重用

 3.网络更易于训练,并具有一定的正则效果

 4.缓解了梯度消失(gradient vanishing)和模型退化(model degradation)的问题

4.6 MobileNet

MobileNet V1

 谷歌在2017年提出,专注于移动端或者嵌入式设备中的轻量级CNN网络。
 该论文最大的创新点是,提出了深度可分离卷积(depthwise separable convolution)。【DW卷积】
 使用RELU6作为激活函数,这个激活函数在float16/int8的嵌入式设备中效果很好,能较好地保持网络的鲁棒性。

MobileNet V2

在2018年,谷歌的又一力作。V2在V1的基础上,主要解决了V1在训练过程中非常容易特征退化的问题,引入了Inverted Residuals和Linear Bottlenecks。
所谓倒置残差块,如图所示,与残差块做对比。

残差块是先降维再升维,两头胖,中间瘦。倒残差结构就是 两头瘦,中间胖;
Linear Bottlenecks:在V1中 depthwise 中有0卷积的原因就是 Relu 造成的,换成 Linear 解决了这个问题;

MobileNet V3

v3版本结合了v1的深度可分离卷积、v2的Inverted Residuals和Linear Bottleneck、SE模块,提出了h-switch作为激活函数,利用NA(神经结构搜索)来搜索网络的配置和参数(NAS就是不需要人工调参,自动搜索,要先给出搜索空间和搜索方式)。

4.7 ShuffleNet

ShuffleNet是Face++提出的一种轻量化网络结构,主要思路是使用Group convolution和Channel shuffle改进ResNet,可以看作是ResNet的压缩版本。

Channel Shuffle
 
ShuffleNet的本质是将卷积运算限制在每个Group内,这样模型的计算量取得了显著的下降。然而导致模型的信息流限制在各个Group内,组与组之间没有信息交换,如图下图,这会影响模型的表示能力。因此,需要引入组间信息交换的机制,即Channel Shuffle操作。同时Channel Shuffle是可导的,可以实现end-to-end一次性训练网络。

4.8 SENet(ImageNet最后一届竞赛的冠军,提出了SE结构)

对于CNN网络来说,核心计算是卷积算子,通过卷积核从输入特征图学习到新特征图。从本质上讲,卷积是对一个局部区域进行特征融合,这包括空间上(H和W维度)以及通道间(C维度)的特征融合。

对于卷积操作,很大一部分改进工作是提高感受野,即空间上融合更多特征,或者是提取多尺度空间信息,如Inception网络的多分支结构。对于channel维度的特征融合,卷积操作基本上默认对输入特征图的所有channel进行融合。而MobileNet网络中的组卷积(Group Convolution)和深度可分离卷积(Depthwise Separable Convolution)对channel进行分组也主要是为了使模型更加轻量级,减少计算量。
SENet网络的创新点在于关注channel之间的关系,希望模型可以自动学习到不同channel特征的重要程度。为此,SENet提出了Squeeze-and-Excitation (SE)模块,如下图所示

SE模块首先对卷积得到的特征图进行Squeeze操作,得到channel级的全局特征(SENet提出Squeeze操作,将一个channel上整个空间特征编码为一个全局特征,采用global average pooling来实现),然后对全局特征进行Excitation操作(这里采用sigmoid形式的gating机制),学习各channel间的关系,得到不同channel的权重,最后乘以原来的特征图得到最终特征。本质上,SE模块是在channel维度上做attention或者gating操作,这种注意力机制让模型可以更加关注信息量最大的channel特征,而抑制不重要的channel特征。另外一点是SE模块是通用的,意味着其可以嵌入到现有的网络架构中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的浅拷贝(Shallow Copy)和深拷贝(Deep Copy),深拷贝的集中实现方式,浅拷贝深拷贝的案例

C#中的浅拷贝(Shallow Copy)和深拷贝(Deep Copy) 拷贝就是创建一个对象,这个对象有着原始对象数据(属性和字段)的一份精确拷贝(只针对Object和Array这样的引用数据类型)…

截断堆积柱状图

本教程原文链接:截断堆积柱状图绘制教程 欢迎大家转载!!!! 本期教程 写在前面 堆积柱状图是柱状图的常见类型之一,也是平时使用概率较高的图形之一。我们前期发布了很多个柱状图的绘制教程,若你…

【工厂模式】简单工厂模式-简单例子

目录 一、简单介绍 二、未使用工厂模式之前 三、简单工厂模式 初始 优化 总结 一、简单介绍 工厂模式是一种软件设计模式,用于创建对象的方法。在工厂模式中,创建对象的逻辑被封装在一个单独的类中,该类负责根据特定条件或参数创建合适…

windows下使用命令uvicorn启动fastapi程序有乱码,方框形状奇怪字符

问题简述 执行命令uvicorn main:app --reload后出现的问题如图所示 这个问题非常容易解决! 原因是windows控制台 默认未开启 ANSI颜色的支持 那么我们只需要开启就可以了 轻松解决 1 按下winR 打开运行 2 输入regedit 点击确定编辑注册表 3 新建值 值的名称为…

vue3组件封装系列-表单请求

我们在开发一些后台管理系统时,总是会写很多的列表查询页面,如果不封装组件,就会无限的复制粘贴,而且页面很冗余,正常情况下,我们都是要把组件进行二次封装,来达到我们想要效果。这里我分享一下…

《中学科技》是什么级别的刊物?如何投稿?

《中学科技》是什么级别的刊物?如何投稿? 《中学科技》创刊于1976年,由上海世纪出版(集团)有限公司主管,上海科技教育出版社有限公司主办的省级学术期刊,《中学科技》以传播科技知识、启迪智慧…

Centos安装软件失败There are no enabled repos.

这个错出现的原因可能是:没有先安装wget源,就把源给备份了 解决方案: 下载对应版本repo文件, 放入/etc/yum.repos.d/里,下载地址:CentOS镜像使用帮助 查看自己CentOS的版本,下载对应的repo文件&#xff…

spring boot中的标注@Component、@Service等

让我告诉你什么叫水货。 一、水货横行 一直以来,我对Spring Boot项目中的标注,像Component啦、Service啦、Configuration啦,甚至Autowired啦,等等,都似懂非懂。Autowired与Resource有什么区别也不清楚。 个中原因&a…

LearnOpenGL(三)之GLSL

一、GLSL 着色器是使用一种叫GLSL的类C语言写成的。 着色器的开头总是要声明版本,接着是输入和输出变量、uniform 和main函数。每个着色器的入口点都是main函数,在这个函数中 我们处理所有的输入变量,并将结果输出到输出变量中。 二、数据…

2-Embedding例子:简单NN网络、迁移学习例子(glove语料预训练)

一、简单例子:构造简单NN网络生成Embedding 1、pytorch例子 2、tensorflow例子 # 1导入模块 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding import numpy as np# 2构建语料库 corpus[[…

Linux命令接着学习

which命令,找到各种命令程序所处在的位置 语法:which查找的命令 那么对于我们想查找其他类型文件所在的位置,我们可以用到find命令 find命令 选项为-name,表示按照文件名进行查找 find命令中通配符 find命令和前面rm命令一样&…

MT3023 歌词中找单词

1.暴力 10/12 #include <bits/stdc.h> using namespace std; int n; string a[10005]; int main() {cin >> n;for (int i 0; i < n; i)cin >> a[i];string ll;cin >> ll;for (int i 0; i < n; i){string u a[i];int num 0;int j 0;for (in…

解线性方程组——追赶法解三对角方程组 | 北太天元

一、问题描述 对于线性方程组 A x b , A ( b 1 c 1 a 2 b 2 c 2 ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ a n − 1 b n − 1 c n − 1 a n b n ) , b ( f 1 f 2 ⋮ f n ) Axb,\quad A\begin{pmatrix}b_1&c_1&&&&\\a_2&b_2&c_2&&&\\&\ddots&\d…

CentOS 7安装、卸载MySQL数据库(一)

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用yum方式安装MySQL数据库&#xff0c;及卸载&#xff1b; 安装 Step1&#xff1a;卸载mariadb 敲下面的命令&#xff0c;查看系统mariadb软件包 rpm -qa|grep mariadb跳出mariadb软件包信息后&#xff0c;敲下面的命令…

mysql基础14——视图

视图 视图是一种虚拟表 可以把一段查询语句作为视图存储在数据库中 需要的时候把视图看作一个表&#xff0c;对里面的数据进行查询 视图并没有真正存储数据 避免了数据存储过程中可能产生的冗余 提高了存储的效率 子查询 嵌套在另一个查询中的查询 派生表 如果在查询中…

六、项目发布 -- 4. 电子书详情页API开发、电子书列表API开发

电子书详情页API的编写 同理如下app.get中路由、回调&#xff1b;回调中要连接数据库、接收前端传过来的值、到数据库中做查询&#xff0c;然后回调&#xff08;如果回调失败返回什么JSON&#xff0c;如果回调成功返回什么JSON&#xff09;&#xff1b;最后千万别忘记了关闭数…

怎样快速打造二级分销小程序

乔拓云是一个专门开发小程序模板的平台&#xff0c;致力于帮助商家快速上线自己的小程序。通过套用乔拓云提供的精美模板&#xff0c;商家无需具备专业的技术背景&#xff0c;也能轻松打造出功能齐全、美观大方的小程序。 在乔拓云的官网&#xff0c;商家可以免费注册账号并登录…

全科都收!1区毕业水刊,影响因子狂涨至9.8,无预警记录!国人评价高!

本期&#xff0c;小编给大家解析的是一本创刊于2014年&#xff0c;且于同年被WOS数据库收录的毕业“水刊”——SCIENTIFIC DATA。 截图来源&#xff1a;期刊官网 SCIENTIFIC DATA&#xff08;ISSN&#xff1a;2052-4463&#xff09;是一本致力于数据的开放获取期刊&#xff0c…

可视化大屏在政务领域应用非常普遍,带你看看

可视化大屏在政务领域的应用非常普遍&#xff0c;政务领域需要处理大量的数据和信息&#xff0c;通过可视化大屏可以将这些数据以直观、易懂的方式展示出来&#xff0c;帮助政府决策者和工作人员更好地了解和分析数据&#xff0c;从而做出更准确、科学的决策。 在政务领域&…

xhEditor实现WORD粘贴图片自动上传

1.下载示例&#xff1a; 从官网下载 http://www.ncmem.com/webapp/wordpaster/versions.aspx 从gitee中下载 https://gitee.com/xproer/wordpaster-php-xheditor1x 2.将插件目录复制到项目中 3.引入插件文件 定义插件图标 初始化插件&#xff0c;在工具栏中添加插件按钮 效果…