现代卷积神经网络

经典的CNN架构

一、早期的CNN架构

LeNet

LeNet,(也称为LeNet-5,5代表使用了2个卷积层和3个全连接层)是一个经典的卷积神经网络架构,最初由Yann LeCun等人开发用于MNIST数据集手写数字(灰度图像 输入通道数为1,尺寸为28x28)识别。
在这里插入图片描述

二、现代的CNN架构

2.1 AlexNet

深度卷积神经网络 使用了8层(5个卷积层和3个全连接层)卷积神经网络,第一个在ImageNet 2012图像识别挑战赛中击败传统计算机视觉模型的大型神经网络。它首次证明了学习到的特征可以超越手工设计的特征。
在这里插入图片描述
在这里插入图片描述

深度网络设计思路——规则

2.2 VGG

使用重复块的网络,利用许多重复的神经网络块。
对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核优于采用大的卷积核,因为可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。
在这里插入图片描述
原始VGG网络,称为VGG-11(11代表使用了8个卷积层和3个全连接层),有5个卷积块,其中前两个块各有一个卷积层,后三个块各包含两个卷积层。
VGGNet使用的全部都是3x3的小卷积核和2x2的池化核,通过重复使用简单的基础块来构建深度模型,达到不断加深网络以提升性能的效果。
在这里插入图片描述

2.3 NIN

网络中的网络,重复使用由卷积层和1 × 1卷积层(用来代替全连接层)来构建深层网络。
在这里插入图片描述
上图是NIN的网络结构图,可以明显的发现每个卷积层之间的多了一些全连接层操作。同时,在NiN最后的分类部分,作者还摒弃了传统的通过多次全连接来进行分类的处理,采用的是将最后输出的特征图以全局平均池化的方式来获得样本属于每个类别的置信度值,接着通过softmax层完成分类。
通过在原始CNN的网络层之间,再插入一些浅层的全连接网络。先利用这个浅层的网络来对各个阶段里所形成的非线性特征元素进行特征表示,然后再通过卷积层来完成分类类别间线性不可分的抽象表示,以此来提高模型最后的任务精度。

①MLP Convolution Layers
在每个像素的通道上分别使用多层感知机MLP。
NiN的想法是在每个像素位置(针对每个高度和宽度)应用一个全连接层,可以将其视为1 × 1卷积层。从另一个角度看,即将空间维度中的每个像素视为单个样本,将通道维度视为不同特征(feature)。

②Global Average Pooling
NiN和AlexNet之间的一个显著区别是NiN完全取消了 全连接层【这样做的弊端在于最后这部分的全连接网络极其容易过拟合(因为最后一个卷积层reshape后的向量可能高达数十万维),进而限制了模型的整体泛化能力。】。相反,NiN使用一个NiN块,其输出通道数等于标签类别的数量。最后放一个全局平均池化层,生成一个对数几率(logits)。全局平均池化的具体做法是取最后卷积输出的特征图中每一个特征图的均值来作为其中一个类别的logit值,然后再将其输入到softmax分类层进行分类。因此,这也就意味着如果你需要完成的是一个k分类的任务,那么模型最后的卷积输出一定得含有k个通道数。

NiN设计的一个优点是,它显著减少了模型所需参数的数量,从而缓解过拟合。
在这里插入图片描述
在这里插入图片描述

2.4 GoogLeNet

含并行连结的网络,使用并行连结的网络,通过不同窗口大小的卷积层和最大池化层来并行抽取信息。
GoogLeNet吸收了NiN模型中串联网络的思想,并在此基础上做了改进——提出了一个名为Inception的模块。最后,通过多个相互堆叠的Inception模块构成了最后的GoogLeNet网络。

在深度学习中,两个最直接的提高模型精度的方法就是加深模型的深度(如网络的层数)和宽度(如每一层卷积核的个数),但是这些做法就带来了两个弊端:①更大的尺度意味着模型将拥有海量的参数,在标注数据不够的情况下及其容易产生过拟合;②仅仅只是匀速的增加网络的深度都会带来巨大的计算开销。
一个解决上述问题的基本方法就是引入稀疏性(sparsity)。卷积网络既能够使得模型更加稀疏,同时在现有的计算设备上还能高效的进行运算。能够在卷积的层面(filter-level)实现模型的稀疏性,同时还能通过密集矩阵计算来充分的利用现有的设备。
通过多个基于密集矩阵计算的组件(component)来构造一个稀疏的组件。
Inception块基于卷积操作的最优局部稀疏结构:核心思想就是去考虑如何得到一个基于卷积网络的最优局部稀疏结构(optimal local sparse structure),并且这一稀疏结构还能简单的通过现有的密集组件(实际上指的就是密集矩阵乘法)来实现。
其本质上就是采用了 不同尺度的卷积核(不同大小的滤波器可以有效地识别不同范围的图像细节) 对输入进行特征提取,然后再将各个部分得到的结果进行组合,最后在输入到下一层的网络中。
在对原始的输入进行[3,3]或[5,5]的卷积之前,先 用[1,1]的卷积进行降维处理来降低Inception中的计算量
在这里插入图片描述
GoogLeNet一共使用9个Inception块和全局平均池化层的堆叠来生成其估计值。Inception块之间的最大池化层可降低维度。

在这里插入图片描述

2.5 ResNet

残差网络,通过残差块构建跨层的数据通道,是计算机视觉中最流行的体系架构。何恺明团队提出了残差网络(ResNet),它在2015年的ImageNet图像识别挑战赛夺魁。ResNet是解决了深度CNN模型难训练的问题。
ResNet详细介绍
ResNet理解

深度网络的退化问题
从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果。实验(如下图示)发现深度网络出现了退化问题(Degradation problem):网络深度增加时,网络准确度出现饱和,甚至出现下降。
ResNet采用模块化的集合模式替代整体的卷积层,通过一个个的堆叠来替代不断增加的卷积层。ResNet在图像分类任务、对象检测和人脸识别取得了巨大的性能提升。借鉴了NIN(network in network,网络中的网络)模型思想,引入NIN块的概念。
在这里插入图片描述
残差块Residual Block——ResNet的基础架构
残差块是通过学习 残差H(x) - x 而不是直接学习完整的映射函数H(x)来工作的。引入Shortcut直连(Identity Shortcut Connection身份捷径连接)将输入数据x直接传递给输出F(x)。图中 F ( x ) F(x) F(x)表示残差, F ( x ) + x F(x)+x F(x)+x是最终的映射输出,网络的最终输出为 H ( x ) = F ( x ) + x H(x)=F(x)+x H(x)=F(x)+x

举个例子,当输入x=5时,我们希望找到理想目标函数H(X),将其映射为5.1。即H(x)=5.1=F(x)+x,x=5,此时残差F(x)=0.1;进一步将5→5.2,残差F(x)=0.2。相比于H(x)的变化5.1→5.2,F(x)变化0.1→0.2,增加的百分比大大提高。因此后者输出变化对权重的调整作用更大,所以效果更好。残差的思想都是去掉相同的主体部分,从而突出微小的变化。
在这里插入图片描述
左边两层的残差块是Basic Block基本残差块用于浅层网络,主要用来构建ResNet18和ResNet34网络;右边三层的是Bottleneck瓶颈残差块用于深层网络。
在这里插入图片描述
经典的ResNet网络
(1) 浅层网络ResNet18, 34,基于BasicBlock块搭成;
(2) 深层网络ResNet50, 101, 152,基于Bottleneck块搭成
在这里插入图片描述

2.6 DenseNet

稠密连接网络,计算成本很高,但带来了更好的效果。
DenseNet详细介绍
DenseNet作者提出了这种新的网络结构,利用当前层与后面层的连结(Concatenate)使得每一层的信息得到充分的利用,缓解了梯度消失的同时,极大地减少了参数。
稠密网络主要由2部分构成:稠密块(dense block)和过渡层(transition layer)。前者定义如何连接输入和输出,而后者则控制通道数量,使其不会太复杂。

稠密块Dense Block
网络中的每一层都直接与其前面层相连,实现特征的重复利用。
在这里插入图片描述

含有三个Dense Blocks的DenseNet示意图。

在这里插入图片描述

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

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

相关文章

nuPlan环境配置和开环及闭环评测

环境配置 下载nuplan mini 数据集 nuPlan Maps nuPlan Mini Split 解压并按照制定目录结构存储 ./nuplan/ |-- maps -- nuplan-v1.1-- splits-- mini为了不修改代码, 需软链目录 ln -s ./nuplan /data/sets/ 下载nuplan镜像 docker pull horizonrobotics/nuplan:cuda11.8.0…

Golang | Leetcode Golang题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; func countRangeSum(nums []int, lower, upper int) int {var mergeCount func([]int) intmergeCount func(arr []int) int {n : len(arr)if n < 1 {return 0}n1 : append([]int(nil), arr[:n/2]...)n2 : append([]int(nil), arr[n/2:]…

Flink 实时数仓(八)【DWS 层搭建(二)流量域、用户域、交易域搭建】

前言 今天的任务是完成流量域最后一个需求、用户域的两个需求以及交易域的部分需求&#xff1b; 1、流量域页面浏览各窗口汇总表 任务&#xff1a;从 Kafka 页面日志主题读取数据&#xff0c;统计当日的首页和商品详情页独立访客数。 注意&#xff1a;一般我们谈到访客&…

H264基本原理

文章目录 引子 - 为什么要视频压缩I、 P、 B帧GOP图像序列H264编码介绍其它为什么视频格式一般为YUVH264 画质级别 参考资料 引子 - 为什么要视频压缩 一张为720x480的图像&#xff0c;用YUV420P的格式来表示&#xff0c; 其大小为&#xff1a; 720 * 480 * 1.5 约等于0.5MB。…

【深度学习与NLP】——注意力机制

1 注意力机制 1.1 学习目标 了解什么是注意力计算规则以及常见的计算规则.了解什么是注意力机制及其作用.掌握注意力机制的实现步骤. 什么是注意力: 我们观察事物时&#xff0c;之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物最具…

使用Python和Flask构建简单的RESTful API

目录 环境准备 创建Flask应用 运行Flask应用 扩展功能&#xff1a;处理POST请求 注意事项 在Web开发中&#xff0c;RESTful API是一种广泛使用的架构风格&#xff0c;它允许客户端和服务器之间通过HTTP请求进行通信。Python的Flask框架以其轻量级和易于上手的特点&#xf…

XML动态sql查询当前时间之前的信息报错

如图&#xff0c;sql语句在数据库里可以正常运行但是再XML文件不可以正常运行&#xff0c;报错。 原因&#xff1a;在XML中小于号"<"是会被默认认定成文一个标签的开始&#xff0c;所以用小于号就会报错。 解决办法&#xff1a; 1.把表达式反过来改成大于号 2…

linux 源码部署polardb-x 错误汇总

前言 在linux 源码部署polardb-x 遇到不少错误&#xff0c;特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…

MySQL的字符集配置

MySQL的字符集配置 创建database创建表插入数据查看字符集配置查看字符集的比较规则关于字符集的配置总结 创建database create database dbtest1; show databases;use dbtest1;创建表 create table employees(id int,name varchar(15));插入数据 insert into employees valu…

PDF转换器推荐:轻松将图片批量转为PDF

高质量的图片与文档管理已经逐渐成为了我们日常工作中不可或缺的一部分。为了防止图片在传输的过程中被压缩&#xff0c;我经常将他们转换为PDF格式。这次我给你推荐几个我常用的图片转PDF的小工具吧。 1.福昕PDF转换大师 链接一下>>https://www.pdf365.cn/pdf2word/ …

牛客JS题(三十二)Proxy计数器

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; Proxy的基础使用set、deleteProperty及deleteProperty用法 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><script type"t…

【C++】类和对象 ——中

1. 赋值运算符重载 1.1 运算符重载 • 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 •…

clion开发stm32f4系列(2)————使用rt-thread提供的libc库时遇到的问题

CMakeList文件配置 问题1 解决方式 问题2&#xff08;在链接过程中&#xff0c;出现重复定义&#xff09; 解决 编译结果(解决ok)

android10 系统定制:增加应用锁功能

实现效果如下,上锁应用在桌面或最近任务打开弹出解锁界面,需要解锁成功才能打开应用。解锁界面可点击返回或Home键关闭,非上锁应用可直接打开。 基本思路:拦截系统应用启动,判断应用是否在锁住状态,弹出解锁Window。解锁完成后再正常启动应用。分为从桌面启动和最近任务…

量化投资策略与技术学习PART2:量化选股之风格轮动

市场上的投资者是有偏好的&#xff0c;有时候偏好于价值股&#xff0c;有时候偏好于成长股&#xff0c;有时偏于大盘&#xff0c;有时又偏于小盘&#xff0c;由于投资者的这种不同的交易行为&#xff0c;形成了市场风格&#xff0c;本节主要研究如何判断市场风格&#xff0c;以…

【C语言】预处理详解(下)

文章目录 前言6. 宏和函数的对比7. #和##7.1 #运算符7.2 ##运算符&#xff08;运用较少&#xff0c;了解即可&#xff09; 8. 命名的约定9. #undef &#xff08;了解即可&#xff09;10. 条件编译&#xff08;重点&#xff09;11. 头文件的包含11.1 头文件被包含的方式&#xf…

House of Rabbit

House of Rabbit 介绍&#xff1a; House of rabbit 是一种伪造堆块的技术&#xff0c;早在 2017 年已经提出&#xff0c;但在最近两个月才在 CTF 比赛中出现。我们一般运用在 fastbin attack 中&#xff0c;因为 unsorted bin 等其它的 bin 有更好的利用手段。 原理&#x…

接口基础知识6:详解http request body(一篇讲完常见请求体)

课程大纲 一、定义 HTTP请求体&#xff08;HTTP Request body&#xff09;&#xff1a;HTTP请求消息的可选部分&#xff0c;仅在请求方法支持且需要发送数据时使用。 POST方法、PUT方法有请求体&#xff0c;GET和HEAD方法没有请求体。 请求头和请求体之间会有一个空行&#…

【C++】面向对象三大特性之—— 继承 | 详解

目录 继承的概念 继承语法格式 继承方式 隐藏 继承下来的成员和父类是不是同一份 隐藏 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 构造 拷贝构造 赋值重载 析构 继承与友元 继承与静态成员 菱形继承及菱形虚拟继承 多继承 菱形继承 菱形…

探索Linux -- 冯诺依曼体系、初始操作系统、初始进程、fork函数

一、冯诺依曼体系结构 1、概念 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 最早的计算机器仅内含固定用途的程序。若想要改变此机器的程序&#xff0c;就必须更改线路、更改结构甚至重新设计此机器。当然最早的计…