当前位置: 首页 > news >正文

一、CNNs网络架构-基础网络架构

目录

1.LeNet

2.AlexNet

2.1 激活函数:ReLU

2.2  随机失活:Droupout

2.3 数据扩充:Data augmentation

2.4 局部响应归一化:LRN

2.5 多GPU训练

2.6 论文

3.ZFNet

3.1 网络架构 

3.2 反卷积

3.3 卷积可视化

3.4 ZFNet改进点

3.5 其他发现

3.6 论文

4.LeNet、AlexNet、ZfNet对比

5.参考文章


1.LeNet

LeNet5诞生于1998年,是最早的卷积神经网络之一, 由Yann LeCun完成,被认为是CNN的雏形。在那时候,没有GPU帮助训练模型,甚至CPU的速度也很慢,因此,神经网络模型处理图像时的大量参数并不能通过计算机得到很好的计算,LeNet5通过巧妙的设计,利用卷积、参数共享、池化等操作提取特征,避免了大量的计算成本,最后再使用全连接神经网络进行分类识别,从此卷积成为图像处理的之中可行方式。

Le Net - 5架构为例,卷积神经网络架构由输入层、卷积层、池化层、FC层和输出层4部分组成。

其中,卷积层和池化层负责对原始图像进行特征提取,全连接层负责对卷积池化提取到的特征进行学习,进一步根据这些特征来判断该输入图片属于哪一个类别。

论文:《Gradient-Based Learning Applied to Document Recognition》

https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=4cccb7c5b2d59bc0b86914340c81b26dd4835140

贡献:第一个CNNs架构;

缺陷:性能和效率较低;

2.AlexNet

2012-ILSVRC冠军,CNNs的一个重大转折点,在此之前,深度学习已经沉寂了将近20年。

AlexNet是第一个深度卷积神经网络架构,通过加深深度和应用众多参数优化策略来增强卷积神经网络的学习能力,在论文中,主要有以下几点贡献:

1)使用了非线性激活函数:ReLU;

2)引入了随机失活:Droupout;

3)使用了数据扩充:Data augmentation;

4)多GPU实现,LRN归一化层的使用;

如下图所示,为AlexNet网络结构:

2.1 激活函数:ReLU

传统的神经网络普遍使用Sigmoid或者tanh等非线性函数作为激活函数,然而它们容易出现梯度弥散或梯度饱和的情况。

在Sigmoid激活函数中,当输入值非常大或非常小的时候,会使值域范围的变化非常小,relu不存在这个缺陷,它在第一象限近似函数:y=x,不会出现值域变化小的问题。relu函数直到现在也是学术界和工业界公认的最好用的激活函数之一,在各个不同领域不同模型下的使用非常之多。如下表所示各类激活函数的表达式:

2.2  随机失活:Droupout

引入Dropout主要是为了防止网络在训练过程中出现的过拟合现象,主要原因包括两个方面:1.数据集太小;2.模型过于复杂,过拟合的本质原因就是数据集与模型在复杂度上不匹配。

在神经网络中Dropout是通过降低模型复杂度来防止过拟合现象的。对于某一层的神经元,通过一定的概率将某些神经元的计算结果乘0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为0),直至训练结束。

Droupout原理可参考以下博文:

深度学习中Dropout原理解析_Microstrong0305的博客-CSDN博客

2.3 数据扩充:Data augmentation

神经网络需要数据驱动,增加数据量不仅可以防止过拟合现象,也可以使网络结构进一步增大、加深。因此,当训练数据有限时,便可以使用一些变换方法将已有的训练数据进行扩充,例如随机裁剪、平移变化、改变颜色、图像反转等。

2.4 局部响应归一化:LRN

Local Response Normalization(LRN)技术主要是深度学习训练时的一种提高准确度的技术方法。LRN一般是在激活、池化后进行的一种处理方法。LRN归一化技术首次在AlexNet模型中提出这个概念。通过实验确实证明它可以提高模型的泛化能力,但是提升的很少,以至于后面不再使用,甚至有人觉得它是一个“伪命题”,因而它饱受争议。现在基本上已经被Batch Normalization代替。

2.5 多GPU训练

由于当时的GPU性能及运算量有限,限制了在其上训练的网络的最大规模。因此作者将模型拆成两部分,分别在两个GPU上进行训练,训练过程中会通过交换feature maps进行两个硬件中子网络的信息交流,大大加快了AlexNet的训练速度。

2.6 论文

论文:《Imagenet classification with deep convolutional neural networks》

https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

贡献:引入了ReLU、Dropout、overlap、Data augmentation、LRN、多GPU计算;

缺陷:卷积核尺寸较大;

3.ZFNet

Zeiler和Fergus提出了一种反卷积神经网络,并在2013年 ILSVRC 图像分类竞赛获得冠军。ZFNet可以看作是在 AlexNet 基础上提出的大型卷积网络。论文中通过可视化的技术解释了为什么卷积神经网络可以在图像分类上表现的如此出色,以及研究了如何优化卷积神经网络。

3.1 网络架构 

如下图所示为ZFNet结构示意图,将一幅(具有3个颜色平面)图像的224 × 224裁剪结果作为输入。这与96个不同的第1层滤波器(红色)进行卷积,每个滤波器大小为7 × 7,在x和y方向上的步长均为2。得到的特征图如下:( i )通过一个修正的线性函数(未显示),( ii )池化的( max在3x3区域内,使用步幅2)和( iii )跨特征图归一化的对比度得到96个不同的55 × 55元素特征图。类似的操作在第2、3、4、5层重复。最后两层全连接,将来自顶层卷积层的特征以向量形式( 6 · 6 · 256 = 9216维)作为输入。最后一层是C - way softmax函数,C为类的个数。所有的滤波器和特征图都是方形的。 

 从上图可以看出,ZFNet改变了 AlexNet 的第一层,即将卷积核的尺寸大小 11x11 变成 7x7,并且将步长 4 变成了 2。

 3.2 反卷积

如下图所示,描绘了内部运行机制,其中左半部分显示反卷积层,右半部分显示卷积层。

反卷积层从下一层重建一个近似版本的卷积特征。对于网络性能的量化可视化,反卷积采用反卷积和去池化操作。值得注意的是,去池化在理论上是无法实现的。作者通过变量开关转换记录每个池化区域中最大值的位置来近似实现去池化。这样的反向映射将卷积层的输出投影回视觉可感知的图像模式,从而在神经元层面解释每一层学习到的内部特征。

3.3 卷积可视化

 作者将卷积核的计算结果(feature maps)映射回原始的像素空间(映射的方法为反卷积,反池化)并进行可视化。并根据可视化结果得出以下结论:

1)CNN输出的特征图有明显的层级区分

2)越靠近输入端,提取的特征所蕴含的语义信息比较少,例如颜色特征,边缘特征,角点特征等等;

3)越靠近输出端,提取的特征所蕴含的语义信息越丰富,例如狗脸,鸟腿等,都属于目标级别的特征。

3.4 ZFNet改进点

ZFNet通过对AelxNet可视化发现,由于第一层的卷积核尺寸过大导致某些特征图失效(失效指的是一些值太大或太小的情况,容易引起网络的数值不稳定性,进而导致梯度消失或爆炸。图中的体现是(a)中的黑白像素块)。

此外,由于第一层的步长过大,导致第二层卷积结果出现棋盘状的伪影(例如(b)中第二小图和倒数第三小图)。因此ZFNet做了对应的改进。即将第一层 11X11步长为4的卷积操作变成 7X7步长为2的卷积。

3.5 其他发现

通过对卷积结果的可视化,论文中还指出了以下几点:

1.网络中对不同特征的学习速度:

low-level的特征(颜色,纹理等)在网络训练的训练前期就可以学习到, 即更容易收敛;high-level的语义特征在网络训练的后期才会逐渐学到。(高级的语义特征,要在低级特征的基础上学习提取才能得到。)

2. 图片平移,缩放,旋转对CNN的影响:

卷积拥有良好的平移不变性、缩放不变性,但不具有良好的旋转不变性。卷积本身计算方法带来的平移不变性和缩放不变性也是脆弱的,大部分也是从数据集中学习到的。因此,深度学习是一种基于数据驱动的算法。

3.遮挡对卷积模型的影响:

模型确实可以理解图片,找到语义信息最丰富,对识别最关键的特征;而不是仅仅依靠一些颜色,纹理特征去做识别。并且CNN在处理图像的时候是关注局部的高级语义特征,而不是根据图像的全部信息来处理。随着网络层数的深入,遮挡的影响结果也明显减低,这说明深层的网络提取的是语义信息,而不是low-level的空间特征。因此对随机遮挡可以不敏感。

4. ZFNet的调参实验:

ZFNet对AelxNet进行了针对调参的消融实验,发现减少全连接层的参数反而可以提升一点准确率,一定程度证明了全连接层的参数还是太冗余了,即使有dropout。

3.6 论文

论文:《Visualizing and Understanding Convolutional Networks

https://arxiv.org/pdf/1311.2901

贡献:架构可视化;

缺陷:可视化处理会额外消耗性能;

4.LeNet、AlexNet、ZfNet对比

5.参考文章

1.深度学习之图像分类基础:卷积神经网络 - 魔法学院小学弟

2.经典CNN之:LeNet介绍_Sheldon_King的博客-CSDN博客

3. 深度学习之图像分类(二):AlexNet - 魔法学院小学弟

4. 深度学习之图像分类(三):ZFNet - 魔法学院小学弟

5. ZFNet 详细解读_Crayon小鱼干的博客-CSDN博客 

6.论文: A review of convolutional neural network architectures and their optimizations | SpringerLink

相关文章:

一、CNNs网络架构-基础网络架构

目录 1.LeNet 2.AlexNet 2.1 激活函数:ReLU 2.2 随机失活:Droupout 2.3 数据扩充:Data augmentation 2.4 局部响应归一化:LRN 2.5 多GPU训练 2.6 论文 3.ZFNet 3.1 网络架构 3.2 反卷积 3.3 卷积可视化 3.4 ZFNet改…...

[开发|C++] C++的基本运算符说明笔记

基本运算符说明 C是一种功能强大的编程语言,提供了多种运算符来执行各种基本操作。下面是一些常见的C基本运算符及其说明: 算术运算符: :加法运算符,用于执行两个操作数的相加操作。 -:减法运算符&#xf…...

抖音定位功能的作用

随着智能手机和社交网络的普及,人们日常生活中对于位置信息的需求也越来越高。而抖音作为一款以短视频为主的社交应用,其定位技术也备受关注。本文将就抖音的定位功能进行探究,介绍抖音如何获取、处理和利用用户的位置信息,并探讨…...

阿里 P9 推荐的 Spring 领域巅峰之作,直接颠覆了我对 Spring 的认知

写在前面 你第一次接触 spring 框架是在什么时候?相信很多人和我一样,第一次了解 spring 都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做 spring 的框架,这个框架号称完爆之前的 structs 和 structs2,吸…...

R语言结构方程模型(SEM)在生态学领域中的实践应用

结构方程模型(Sructural Equation Model)是一种建立、估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归、因子分析、协方差分析等方法,利用图形化模型方式清晰展示研究系统中变量间的因果网络关系,…...

Java设计模式-模板方法模式

简介 在软件开发中,设计模式是一种被广泛采用的方法,用于解决常见的设计问题。模板方法模式是其中一种重要的设计模式之一,它提供了一种将算法的结构骨架固定,但允许子类实现具体步骤的机制。 模板方法模式是一种行为型设计模式…...

Start JDKFlightRecorder--人工翻译

可以同时运行多个JFR记录,并且每个JFR记录都可以使用不同的配置,你可以使用不同的JFR记录去捕获不同的事件集。但是,为了使JFR内部逻辑更加精简,生成的记录始终包含当时活动的所有记录的所有事件的并集。这意味着,运行…...

Python3安装pyhanlp最佳解决方法

1、Hanlp介绍 Hanlp是一款中文自然语言处理工具。Hanlp支持多种自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析、文本分类等。其主要优点包括: 高准确率:Hanlp采用了基于神经网络的分词方法,有效提…...

漏洞管理基础知识

漏洞管理对于端点安全至关重要,是在安全漏洞导致漏洞之前清除安全漏洞的最主动方法之一。 什么是漏洞 漏洞是软件中的错误代码段,会导致软件崩溃或以程序员从未预料到的方式做出响应。黑客可以利用漏洞对计算机系统进行未经授权的访问或对计算机系统执行…...

WBS项目分解的7大基本原则

制定和分解WBS,需要遵循的基本原则: 1、唯一性 每一项工作任务在WBS中是唯一的。 WBS项目分解的7大基本原则 2、负责制 每一项任务都需要明确责任人,一人负责,其他人参与。 3、可测量性 每一项任务都应该是可以量化和测量的&#…...

PoseiSwap IDO在Bounce上启动在即,如何参与?

目前,Nautilus Chain 生态基本完成测试,并即将在不久上线主网。PoseiSwap 作为 Nautilus Chain 上的首个 DEX,也即将面向市场并上线正式版本。我们看到, PoseiSwap 也正式发布了新的市场进程,基于其治理代币 POSE 的 I…...

Linux基本指令介绍

目录 前言 指令操作与图形化界面的对比 adduser passwd whoami ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm 指令 man指令 cp指令 mv指令 cat(显示文件内容(全部),且不可修改的)…...

C++服务器框架开发1——项目介绍/分布式/#ifndef与#pragma once

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) C服务器开发1——项目介绍/分布式/#ifndef与#pragma once 项目介绍分布式#ifndef与#pragma once 最近开始学习下C的项目开发,找了很多…...

Tensorflow2基础代码实战系列之双层RNN文本分类任务

深度学习框架Tensorflow2系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark …...

Python爬虫-快手photoId

前言 本文是该专栏的第49篇,后面会持续分享python爬虫干货知识,记得关注。 笔者在本专栏的上一篇,有详细介绍平台视频播放量的爬取方法。与该平台相关联的文章,笔者已整理在下方,感兴趣的同学可查看翻阅。 1. Python如何解决“快手滑块验证码”(4) 2. 快手pcursor 3. …...

软件测试人员如何为项目的质量保障兜底?看完你就明白了...

上线前层层保障 01文档管理 关键词:需求文档、设计文档、测试文档 1.需求和设计产出方为产品、开发,测试需要做好流程监督,这里重点说下测试文档。 2.测试文档,从业务领域来说,一般有测试计划、测试用例、业务总结文…...

《幸福关系的7段旅程》

关于作者 本书作者安德鲁∙马歇尔,英国顶尖婚姻咨询机构RELATE的资深专家,拥有 30年丰富的咨询经验,并为《泰晤士报》《观察家》和《星期日快报》撰写专栏文章。已出版19部作品,并被翻译成20种语言。 关于本书 《幸福关系的7段…...

使用Python中PDB模块中的命令来调试Python代码的教程

这篇文章主要介绍了使用Python中PDB模块中的命令来调试Python代码的教程,包括设置断点来修改代码等、对于Python团队项目工作有一定帮助,需要的朋友可以参考下 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇…...

Codeforces Round 764 (Div. 3)

比赛链接 Codeforces Round 764 A. Plus One on the SubsetB. Make APC. Division by Two and PermutationD. Palindromes ColoringE. Masha-forgetful A. Plus One on the Subset Example input 3 6 3 4 2 4 1 2 3 1000 1002 998 2 12 11output 3 4 1题意: 你可…...

四月,收割12家offer,面试也太容易了吧....

前言 下面是我根据工作这几年来的面试经验,加上之前收集的资料,整理出来350道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有 提到。 虽然这篇文章很长,但是绝对值得你…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

Git 命令全流程总结

以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结&#xff0c;按操作场景分类整理&#xff1a; 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...

Vue3 hooks

export default function(){ let name; function getName(){ return name; } return {name,getName} } use it ----------------------------------------------- import useName from hooks/useName const {name,getName} useName(); 这段代码展示了一个自定义 Vue3钩…...