详解卷积神经网络结构
前言
卷积神经网络是以卷积层为主的深度网路结构,网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积(元素相乘再求和)的操作。
1. 卷积层
常见的卷积操作如下:
| 卷积操作 | 解释 | 图解 |
| 标准卷积 | 一般采用3x3、5x5、7x7的卷积核进行卷积操作。 |
|
| 分组卷积 | 将输入特征图按通道均分为 x 组,然后对每一组进行常规卷积,最后再进行合并。 |
|
| 空洞卷积 | 为扩大感受野,在卷积核里面的元素之间插入空格来“膨胀”内核,形成“空洞卷积”(或称膨胀卷积),并用膨胀率参数L表示要扩大内核的范围,即在内核元素之间插入L-1个空格。当L=1时,则内核元素之间没有插入空格,变为标准卷积。 |
|
| 深度可分离卷积 | 深度可分离卷积包括为逐通道卷积和逐点卷积两个过程。 |
(通道卷积,2D标准卷积)
|
| 反卷积 | 属于上采样过程,“反卷积”是将卷积核转换为稀疏矩阵后进行转置计算。 |
|
| 可变形卷积 | 指标准卷积操作中采样位置增加了一个偏移量offset,如此卷积核在训练过程中能扩展到很大的范围。 |
|
补充:
1 x 1卷积即用1 x 1的卷积核进行卷积操作,其作用在于升维与降维。升维操作常用于chennel为1(即是通道数为1)的情况下,降维操作常用于chennel为n(即是通道数为n)的情况下。
降维:通道数不变,数值改变。

升维:通道数改变为kernel的数量(即为filters),运算本质可以看为全连接。

卷积计算在深度神经网络中的量是极大的,压缩卷积计算量的主要方法如下:
| 序号 | 方法 |
| 1 | 采用多个3x3卷积核代替大卷积核(如用两个3 x 3的卷积核代替5 x 5的卷积核) |
| 2 | 采用深度可分离卷积(分组卷积) |
| 3 | 通道Shuffle |
| 4 | Pooling层 |
| 5 | Stride = 2 |
| 6 | 等等 |
2. 激活层
介绍:为了提升网络的非线性能力,以提高网络的表达能力。每个卷积层后都会跟一个激活层。激活函数主要分为饱和激活函数(sigmoid、tanh)与非饱和激活函数(ReLU、Leakly ReLU、ELU、PReLU、RReLU)。非饱和激活函数能够解决梯度消失的问题,能够加快收敛速度。
常用函数:ReLU函数、Leakly ReLU函数、ELU函数等

ReLU函数

Leakly ReLU函数

ELU函数
3. BN层(BatchNorm)
介绍:通过一定的规范化手段,把每层神经网络任意神经元的输入值的分布强行拉回到均值为0,方差为1的标准正态分布。BatchNorm是归一化的一种手段,会减小图像之间的绝对差异,突出相对差异,加快训练速度。但不适用于image-to-image以及对噪声明感的任务中。
常用函数:BatchNorm2d
pytorch用法:nn.BatchNorm2d(num_features, eps, momentum, affine)
num_features:一般输入参数为batch_sizenum_featuresheight*width,即为其中特征的数量。
eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5。momentum:一个用于运行过程中均值和方差的一个估计参数(我的理解是一个稳定系数,类似于SGD中的momentum的系数)。
affine:当设为true时,会给定可以学习的系数矩阵gamma和beta。
4. 池化层(pooling)
介绍:pooling一方面使特征图变小,简化网络计算复杂度。一方面通过多次池化压缩特征,提取主要特征。属于下采样过程。
常用函数:Max Pooling(最大池化)、Average Pooling(平均池化)等。
MaxPooling 与 AvgPooling用法:1. 当需综合特征图上的所有信息做相应决策时,通常使用AvgPooling,例如在图像分割领域中用Global AvgPooling来获取全局上下文信息;在图像分类中在最后几层中会使用AvgPooling。2. 在图像分割/目标检测/图像分类前面几层,由于图像包含较多的噪声和目标处理无关的信息,因此在前几层会使用MaxPooling去除无效信息。

补充:上采样层重置图像大小为上采样过程,如Resize,双线性插值直接缩放,类似于图像缩放,概念可见最邻近插值算法和双线性插值算法。实现函数有nn.functional.interpolate(input, size = None, scale_factor = None, mode = 'nearest', align_corners = None)和nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride = 1, padding = 0, output_padding = 0, bias = True)
5. FC层(全连接层)
介绍:连接所有的特征,将输出值送给分类器。主要是对前层的特征进行一个加权和(卷积层是将数据输入映射到隐层特征空间),将特征空间通过线性变换映射到样本标记空间(label)。全连接层可以通过1 x 1卷机+global average pooling代替。可以通过全连接层参数冗余,全连接层参数和尺寸相关。
常用函数:nn.Linear(in_features, out_features, bias)

补充:分类器包括线性分类器与非线性分类器。
| 分类器 | 介绍 | 常见种类 | 优缺点 |
| 线性分类器 | 线性分类器就是用一个“超平面”将正、负样本隔离开 | LR、Softmax、贝叶斯分类、单层感知机、线性回归、SVM(线性核)等 | 线性分类器速度快、编程方便且便于理解,但是拟合能力低 |
| 非线性分类器 | 非线性分类器就是用一个“超曲面”或者多个超平(曲)面的组合将正、负样本隔离开(即,不属于线性的分类器) | 决策树、RF、GBDT、多层感知机、SVM(高斯核)等 | 非线性分类器拟合能力强但是编程实现较复杂,理解难度大 |
6. 损失层
介绍:设置一个损失函数用来比较网络的输出和目标值,通过最小化损失来驱动网络的训练。网络的损失通过前向操作计算,网络参数相对于损失函数的梯度则通过反向操作计算。
常用函数:分类问题损失(离散值:分类问题、分割问题):nn.BCELoss、nn.CrossEntropyLoss等。回归问题损失(连续值:推测问题、回归分类问题):nn.L1Loss、nn.MSELoss、nn.SmoothL1Loss等。
7. Dropout层
介绍:在不同的训练过程中随机扔掉一部分神经元,以防止过拟合,一般用在全连接层。在测试过程中不使用随机失活,所有的神经元都激活。
常用函数:nn.dropout
8. 优化器
介绍:为了更高效的优化网络结构(损失函数最小),即是网络的优化策略,主要方法如下:
| 解释 | 优化器种类 | 特点 |
| 基于梯度下降原则(均使用梯度下降算法对网络权重进行更新,区别在于使用的样本数量不同) | GD(梯度下降); SGD(随机梯度下降,面向一个样本); BGD(批量梯度下降,面向全部样本); MBGD(小批量梯度下降,面向小批量样本) | 引入随机性和噪声 |
| 基于动量原则(根据局部历史梯度对当前梯度进行平滑) | Momentum(动量法); NAG(Nesterov Accelerated Gradient) | 加入动量原则,具有加速梯度下降的作用 |
| 自适应学习率(对于不同参数使用不同的自适应学习率;Adagrad使用梯度平方和、Adadelta和RMSprop使用梯度一阶指数平滑,RMSprop是Adadelta的一种特殊形式、Adam吸收了Momentum和RMSprop的优点改进了梯度计算方式和学习率) | Adagrad; Adadelta; RMSprop; Adam | 自适应学习 |
常用优化器为Adam,用法为:torch.optim.Adam。
补充:卷积神经网络正则化是为减小方差,减轻过拟合的策略,方法有:L1正则(参数绝对值的和); L2正则(参数的平方和,weight_decay:权重衰退)。
9. 学习率
介绍:学习率作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及合适收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。
常用函数:torch.optim.lr_scheduler; ExponentialLR; ReduceLROnplateau; CyclicLR等。
卷积神经网络的常见结构
常见结构有:跳连结构(ResNet)、并行结构(Inception V1-V4即GoogLeNet)、轻量型结构(MobileNetV1)、多分支结构(SiameseNet; TripletNet; QuadrupletNet; 多任务网络等)、Attention结构(ResNet+Attention)
| 结构 | 介绍与特点 | 图示 |
| 跳连结构(代表:ResNet) | 2015年何恺明团队提出。引入跳连的结构来防止梯度消失问题,今儿可以进一步加大网络深度。扩展结构有:ResNeXt、DenseNet、WideResNet、ResNet In ResNet、Inception-ResNet等 |
|
| 并行结构(代表:Inception V1-V4) | 2014年Google团队提出。不仅强调网络的深度,还考虑网络的宽度。其使用1×1的卷积来进行升降维,在多个尺寸上同时进行卷积再聚合。其次利用稀疏矩阵分解成密集矩阵计算的原理加快收敛速度。 |
|
| 轻量型结构(代表:MobileNetV1) | 2017年Google团队提出。为了设计能够用于移动端的网络结构,使用Depth-wise Separable Convolution的卷积方式代替传统卷积方式,以达到减少网络权值参数的目的。扩展结构有:MobileNetV2、MobileNetV3、SqueezeNet、ShuffleNet V1、ShuffleNet V2等 |
|
| 多分支结构(代表:TripletNet) | 基于多个特征提取方法提出,通过比较距离来学习有用的变量。该网络由3个具有相同前馈网络(共享参数)组成的,需要输入是3个样本,一个正样本和两个负样本,或者一个负样本和两个正样本。训练的目标是让相同类别之间的距离竟可能的小,让不同的类别之间距离竟可能的大。常用于人脸识别。 |
|
| Attention结构(代表:ResNet+Attention) | 对于全局信息,注意力机制会重点关注一些特殊的目标区域,也就是注意力焦点,进而利用有限的注意力资源对信息进行筛选,提高信息处理的准确性和效率。注意力机制有Soft-Attention和Hard-Attention区分,可以作用在特征图上、尺度空间上、channel尺度上和不同时刻历史特征上等。 |
|
相关文章:
详解卷积神经网络结构
前言 卷积神经网络是以卷积层为主的深度网路结构,网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积(元素相乘再求和)的操作。 1. 卷积层 常见的卷积操作如下: 卷积操作解释图解…...
java读取pdf数据
目录 读取方式有两种: 方式一: 方式一所需要的maven依赖如下: 方式一读取的Java代码如下:<...
arcmap / arcgis 安装教程
ArcGIS 10.8 for Desktop 完整安装教程(含win7/8/10 32/64位下载地址亲测可用汉化) | 麻辣GIS (malagis.com) 关于GIS语言汉化包(中文)安装失败的解决办法_arcgis中文语言包_miumiuniya的博客-CSDN博客 检查安装路径:…...
CMake中的变量: 改变构建行为的变量
文章目录 变量名称描述BUILD_SHARED_LIBS全局标志,用于在启用时使add_library()创建共享库。 如果存在并且为true,则这将导致所有库被构建为共享库,除非该库被明确添加为静态库。这个变量通常作为option()添加到项目中,这样项目的…...
台式电脑怎么无损备份迁移系统到新硬盘(使用傲梅,免费的就可以)
文章目录 前言一、想要将源硬盘上的系统原封不动地迁移到新硬盘上二、准备工作2.具体步骤 总结 前言 半路接手公司一台台式电脑,C盘(120g)爆红,仅剩几个G,优化了几次,无果后。准备换一个大一点的增到500g。…...
【紫光同创国产FPGA教程】【PGC1/2KG第七章】7.数字钟实验例程
本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 适用于板卡型号: 紫光同创PGC1/2KG开发平台(盘古1K/2K) 一:盘古1K/2K开发板(紫光同创PGC…...
【星海随笔】git的使用
1.在终端,检查git是否安装 git --version 2.没有安装的话去,官网,下载git 3.一直点下一步即可 4.安装后在终端检查git是否安装好 5.设置用户名和邮件地址(最好和GitHub的用户名/邮箱保持一致) git config --global user.name “自己的用户名”…...
安卓常见设计模式------装饰器模式(Kotlin版)
1. W1 是什么,什么是装饰器模式? 思想:动态地给对象添加额外的功能,通过将对象包装在一个装饰器类中,使装饰器类在不改变原始对象结构的情况下,扩展其功能。 2. W2 为什么,为什么需要使用装饰…...
将网站上的点击作为转化操作进行跟踪-官方指导文档
您可以使用转化跟踪功能,在用户点击您网站上的某个按钮或链接时进行跟踪。例如,您可以在用户点击“立即购买”按钮或点击您移动网站上的电话号码时进行跟踪。 本文介绍如何添加和修改转化跟踪代码,以便跟踪客户在您网站上的点击操作。如果希…...
Go相关命令说明
目录 Go相关命令说明go mod tidy :清理未使用依赖项,并更新模块文件主要功能好处 go clean -modcache :清除模块缓存go clean -testcache :清除测试缓存go test -v ./client :测试当前目录下client目录中的所有测试函数…...
3D全景技术,为我们打开全新宣传领域
随着科技的发展,3D全景技术正在融入我们的生活,这种全新视觉体验方式为我们打开了一扇全新的宣传领域,可以让我们多方位、多视角地探索各个行业,无论是对教育、商业、还是其他领域,都产生了深远的影响。 3D全景技术结合…...
【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割10(测试推理篇)
对于直接将裁剪的patch,一个个的放到训练好的模型中进行预测,这部分代码可以直接参考前面的训练部分就行了。其实说白了,就是验证部分。不使用dataloader的方法,也只需要修改少部分代码即可。 但是,这种方法是不end to end的。我们接下来要做的,就是将一个CT数组作为输入…...
PyCharm+Miniconda3安装配置教程
PyCharm是Python著名的Python集成开发环境(IDE) conda有Miniconda和Anaconda,前者应该是类似最小化版本,后者可能是功能更为强大的版本,我们这里安装Miniconda 按官方文档的说法conda相当于pip与virtualenv的结合&am…...
【慢SQL性能优化】 一条SQL的生命周期 | 京东物流技术团队
一、 一条简单SQL在MySQL执行过程 一张简单的图说明下,MySQL架构有哪些组件和组建间关系,接下来给大家用SQL语句分析 例如如下SQL语句 SELECT department_id FROM employee WHERE name Lucy AND age > 18 GROUP BY department_id其中name为索引&a…...
小程序day05
使用npm包 Vant Weapp 类似于前端boostrap和element ui那些的样式框架。 安装过程 注意:这里建议直接去看官网的安装过程。 vant-weapp版本最好也不要指定 在项目目录里面先输入npm init -y 初始化一个包管理配置文件: package.json 使用css变量定制vant主题样式࿰…...
Docker两个容器互相请求接口
BEGIN 环境:Docker-Windows-Hyperf 1. 过以下命令查看Docker中的所有网络 docker network ls这个命令会列出所有的Docker网络,包括其ID、名称、驱动以及作用范围 在 Docker 中,容器通过 Docker 网络进行相互通信;在 Docker 中有…...
UML与PlantUML简介
UML与PlantUML 1、UML与PlantUML概述2、PlantUML使用 1、UML与PlantUML概述 UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言,独立于任何具体程序设计语言…...
面试--springboot基础
1、约定优于配置,理解 是一种软件设计的范式,减少开发人员对于配置项的维护,更加聚焦在业务逻辑上 基于spring框架开发web项目,只需要做一次配置 springboot starter启动依赖,帮我们管理jar包版本 当前应用依赖spring…...
“高端化”围城中,方太集团茅忠群的理想与现实
撰稿|行星 来源|贝多财经 “成为一家伟大的企业”,这是深耕厨电领域27年的方太集团(下称“方太”)矢志不渝的宏伟愿景。 在历经厨电行业十余年的高速发展期后,面临市场热度渐退、赛道高手林立的局面,在行业逆流中坚…...
Linux文件管理知识:文本处理
上篇文章详细介绍了Linux系统中查找文件的工具或者命令程序的相关操作内容介绍。那么,今天呢,这篇文章围绕Linux系统中文本处理来阐述。 众所周知,所有Linux操作系统都离不开一个核心原则,那就是它是由很多种文件组成的࿰…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...
python数据结构和算法(1)
数据结构和算法简介 数据结构:存储和组织数据的方式,决定了数据的存储方式和访问方式。 算法:解决问题的思维、步骤和方法。 程序 数据结构 算法 算法 算法的独立性 算法是独立存在的一种解决问题的方法和思想,对于算法而言&a…...











