百面算法工程师 | 卷积基础知识——Convolution

目录

8.1 图像卷积过程

8.2 卷积层基本参数

8.3 卷积后图像的长和宽大小的计算方式

8.4 卷积神经网络中的权重共享

8.5 上采样中的反卷积

8.6 空洞卷积

8.7 深度可分离卷积

8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积

8.9 分组卷积 Group Conv

8.10 1x1卷积作用

8.11 卷积的底层实现/加速技巧

8.12 卷积神经网络的特点

8.13 卷积的memory,params,GFLOPs计算方法


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

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

🚀🚀🚀http://t.csdnimg.cn/dfcH3🚀🚀🚀

卷积(Convolution)是一种数学运算,常见于信号处理、图像处理和机器学习等领域。在深度学习中,卷积神经网络(Convolutional Neural Network,CNN)是一种常用的模型结构,其中的卷积操作是其核心组成部分之一。

卷积操作的基本思想是通过滑动一个滤波器(也称为卷积核或者特征检测器)在输入数据上进行局部加权求和。这个滤波器可以捕捉到输入数据的局部特征,例如在图像中可以捕捉到边缘、纹理等。在二维图像处理中,卷积操作通常是对图像的二维矩阵进行处理,而在文本处理中,可以是对文本序列的一维向量进行处理。

通过不同的滤波器和多个卷积层的组合,卷积神经网络能够逐层提取输入数据的抽象特征,从而实现对复杂数据的高效建模和处理。

8.1 图像卷积过程

8.2 卷积层基本参数

参数名

作用

常见设置

卷积核大小 (Kernel Size)

卷积核大小定义了卷积的感受野

在过去常设为5,如LeNet-5;现在多设为3,通过堆叠3 × 3 3\times33×3的卷积核来达到更大的感受域【两个3*3的卷积核相当于1个5 *5的卷积核】

卷积核步长 (Stride)

定义了卷积核在卷积过程中的每一步长度

常见设置为1,表示滑窗距离为1,可以覆盖所有相邻位置特征的组合;当设置为更大值时相当于对特征组合降采样

填充方式 (Padding)

在卷积核尺寸不能完美匹配输入的图像矩阵时需要进行一定的填充策略

设置为’SAME’表示对不足卷积核大小的边界位置进行某种填充(通常零填充)以保证卷积输出维度与与输入维度一致;当设置为’VALID’时则对不足卷积尺寸的部分进行舍弃,输出维度就无法保证与输入维度一致

输入通道数 (In Channels)

指定卷积操作时卷积核的深度

默认与输入的特征矩阵通道数(深度)一致;在某些压缩模型中会采用通道分离的卷积方式

输出通道数 (Out Channels)

指定卷积核的个数

若设置为与输入通道数一样的大小,可以保持输入输出维度的一致性;若采用比输入通道数更小的值,则可以减少整体网络的参数量

8.3 卷积后图像的长和宽大小的计算方式

Output = ((Input - k + 2p) / s) + 1 【向下取整】

8.4 卷积神经网络中的权重共享

权重共享即输入一张图片,这张图片用一个卷积核进行卷积操作的时候,图片中的每一个位置都被同一个卷积核进行卷积,所以权重是一样的,也就是共享

8.5 上采样中的反卷积

扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。常见的方法:双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)。

反卷积(Deconvolution)通常是用于图像的上采样和特征图的反卷积操作,而不是简单的卷积核的转置。在深度学习中,通常使用转置卷积(Transpose Convolution)来实现反卷积操作,而不是直接将卷积核进行转置。转置卷积是一种通过卷积核的扩展和补零来实现上采样的操作。

反卷积的实现过程通常涉及以下步骤:

1. 输入图像的尺寸扩大:首先,通过在输入图像的周围补零的方式来扩大图像的尺寸。这样可以使得图像的尺寸变大,从而实现上采样操作。

2. 卷积核的转置:将原始的卷积核进行转置操作。转置操作将卷积核的行和列进行交换,使得卷积核从一个大小为 \(m \times n\) 的核变为一个大小为 \(n \times m\) 的核。

3. 进行转置卷积:使用转置后的卷积核对扩大后的图像进行卷积操作。这个操作会使得输出的特征图的尺寸变为原始图像的尺寸。

4. 可能的激活函数处理:根据需要,可能会对输出进行激活函数处理,如ReLU等。

转置卷积操作不仅仅是简单地对卷积核进行转置,还包括对输入进行补零扩大和通过卷积操作实现的上采样过程。因此,转置卷积能够更好地恢复原始图像的信息,而不仅仅是尺寸大小。

8.6 空洞卷积

Dilated/Atrous Convolution(空洞卷积或者膨胀卷积) 或者是 Convolution with holes。即在标准的卷积核里注入空洞,以此来增加感受野。相比原来的常规卷积,Dilated convolution 多了一个超参数称之为 Dilation rate(空洞率) 指的是kernel的间隔数量(e.g. 标准卷积的空洞率是1)。下图为空洞卷积示意图。

与标准卷积相比,在保持同等计算量的情况下,可以扩大感受野。对于检测与分割任务,扩大感受野可以提升精度; 缺点是会出现网格效应(gridding effect),丢失局部像素信息。

8.7 深度可分离卷积

Depthwise卷积与Pointwise卷积,合起来被称作 Depthwise Separable Convolution(深度可分离卷积), 相比于常规卷积,其参数量和运算成本比较低,在一些轻量级网络中时常出现。

1.首先看看分组卷积,对于一张5x5像素,三通道RGB输入图片,经过3x3x4卷积核的卷积层,最终会输出4个feature map。卷积层共4个Filter,每个Filter包含了3个Kernel,每个Kernel的大小为3×3。

图源水印,侵删

2.深度可分离卷积,深度可分离卷积是将一个完整的卷积运算分解为两步运行,即Depthwise卷积 与 Pointwise卷积。

Depthwise convolution的一个卷积核只负责一个通道,即一个通道只被一个卷积核卷积。同样是对一张5x5像素,3通道彩色输入图片,Depthwise卷积的一个卷积核只负责一个通道,即一个通道只被一个卷积核卷积,卷积核的数量与上一层的通道数相同。所以一个三通道的图像经过运算后生成了3个Feature map。这里其实最终的维数应该是3x3,因为每一个卷积都会作用一次,所以最终是3x3维度。

Depthwise Convolution完成后的Feature map数量与输入层的depth相同,但是这种运算对输入层的每个通道独立进行卷积运算后就结束了,没有有效利用不同map在相同空间位置上的信息。因此需要增加另外一步操作来将这些map进行组合生成新的Feature map,即接下来的Pointwise Convolution。

Pointwise 卷积运算则是常规的运算,它的卷积核的尺寸为1x1xM,M为需要得到的最终feature map数量,所以这里的卷积运算会将上一步的map在深度方向上进行加权组合,生成新的feature map,总共为M维度,操作方法就是Concate,然后再用1x1的卷积。经过Pointwise Convolution之后,同样输出了4张Feature map,与常规卷积的输出维度相同。

深度可分离卷积计算量

图源水印,侵删

 同样以一张5x5像素,三通道RGB输入图片为例:
 普通卷积:3x3x3x4=108
 3x3是卷积核尺寸,3是输入图片通道数目,4是输出卷积核的个数。
 深度可分离卷积:
 DW:3x3x3x1=27
 卷积核个数仅会设置1,也是DW的性质,最终形成3张feature map
 PW:1x1x3x4=12
 1x1为卷积核的尺寸,3为上一层feature map的数量,4为最终需要的维度。其实这里我们也得到了4维的feature map。
 total: 27+12=39
 明显深度可分离卷积计算量比普通卷积小很多,只有其近三分之一的计算量。

8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积

Depthwise Convolution完成后的Feature map数量与输入层的depth相同,但这种运算对输入层的每个channel独立进行卷积运算后就结束了,没有利用不同map在相同空间位置上的信息。因此需要增加另外一步操作来将这些map进行组合生成新的Feature map,即接下来的Pointwise Convolution。

8.9 分组卷积 Group Conv

Group convolution 分组卷积,由于当时的硬件资源有限,训练模型时卷积操作不能全部放在同一个GPU处理,因此把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。下图就是将特征图分成两半,卷积后再组合。

8.10 1x1卷积作用

1.实现跨通道的交互和信息整合

2.进行卷积核通道数的降维和升维

3.对于单通道feature map 用单核卷积即为乘以一个参数,而一般情况都是多核卷积多通道,实现多个feature map的线性组合

4.可以实现与全连接层等价的效果。如用1x1xm的卷积核卷积n(如512)个特征图的每一个位置(像素点),其实对于每一个位置的1x1卷积本质上都是对该位置上n个通道组成的n维vector的全连接操作。

8.11 卷积的底层实现/加速技巧

卷积在图像处理中,可通过矩阵相乘来实现。所以可以从矩阵运算入手来加速。主要方式是低秩近似算法。
 
 (1)使用结构化矩阵近似重构原矩阵。
 
 (2)使用SVD矩阵分解方法来重构矩阵。

8.12 卷积神经网络的特点

局部连接(稀疏连接)。提取局部特征
 
权值共享。减少参数量,降低训练难度,避免过拟合,提升模型“平移不变性”
 
降维。通过池化或卷积实现
 
多层次结构。将低层次的局部特征组合成较高层次的特征,不同层级的特征可以对应不同任务

8.13 卷积的memory,params,GFLOPs计算方法
  • memory

  • params

  • FLOPs 10^9 FLOPS = 1 GFLOPS

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端导入的方便方法

直接上代码: 利用input的导入功能 这是相应的处理方法 是不是很简单呢

《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-01-软件架构演化概述

文章目录 1. 演化的重要性2. 架构演化示例 教材中,本节名为:“软件架构演化和定义的关系” 1. 演化的重要性 演化目的:维持软件架构自身的有用性 为什么说,软件架构是演化来的,而不是设计来的? 软件架构的…

【Shell】循环结构——for和while循环实例

Shell可以重复地执行特定的指令,直到特定的条件被满足为止。这重复执行的一组指令就叫做循环 特点: 首先,循环条件中使用的变量必须是已初始化的,然后在循环中开始执行每次在循环开始时进行一次测试重复地执行一个代码块 循环实例…

SD-WAN怎样提高企业网络体验

随着数字化转型的加速,传统基于MPLS的专用网络因其高度的结构化和僵化性,已无法满足现代企业对于灵活性和成本效益的日益增长的需求。相比之下,SD-WAN作为一种创新的网络架构,正以其卓越的性能和灵活的管理方式,成为企…

服务于金融新核心系统 星辰天合与中电金信完成产品兼容认证

近日,北京星辰天合科技股份有限公司(简称:XSKY星辰天合)与中电金信软件有限公司(简称:中电金信)完成产品兼容性认证,星辰天合的企业级分布式统一数据平台 XEDP 符合金融级数字底座&q…

ECG-Emotion Recognition(情绪识别)-- 数据集介绍WESADDREAMER

1、WESAD数据集 下载链接:WESAD: Multimodal Dataset for Wearable Stress and Affect Detection | Ubiquitous Computing (1)基本介绍 WESAD是一个用于可穿戴压力和影响检测的新的公开数据集。该多模式数据集以实验室研究期间15名受试者的生…

学习JFinal

1.五个配置类 configConstants(配置): configRoute(路由): 2.Controller层(控制器) 访问流程: Action: getPara: 参数说明:第一个参…

13.Blender 界面介绍(下) 雕刻、纹理绘制及属性

界面介绍 1. 布局 物体的移动旋转和缩放等操作 2. 建模 里面就是有一些建模常用的功能 里面的功能对于做MMD来说不是必备的操作 3. 雕刻 使用里面的工具可以对物体本身进行修改 4. UV编辑 如果想要编辑UV贴图 将编辑模式改为纹理绘制 再点击右边的工具 如果进行编…

MySQL-----多表查询(一)

目录 一.多表关系: 1.1 一对多(多对一): 1.2 多对多: 1.3 一对一: 二.多表查询概述: 三.连接查询: 3.1内连接: 3.2外连接: 3.3自连接查询: 3.4联合查询: 一.多表关系&…

告别单一密码,多因素身份认证带你进入安全新纪元!

文章目录 前言一、你知道什么?二、你拥有什么1.智能卡2.令牌 三、你是什么四、其他因素身份认证 前言 当我们探讨多因子/多因素身份认证时,我们可能会好奇这里的“因素”具体指的是什么?显然,用户名和密码是一种因素,…

iclientOpenlayer用uniapp开发移动端GIS应用设计及实现

GIS移动端应用是将地理信息系统(GIS)技术应用于移动设备(如智能手机、平板电脑)上,使用户能在户外或移动场景下访问、收集、分析和展示地理信息。以下是GIS移动端应用的一些关键特性和应用场景: 关键特性&…

淘宝新店没有流量和访客怎么办

淘宝新店没有流量和访客时,可以采取以下措施来提升店铺的流量和吸引更多的访客: 3an推客是给商家提供的营销工具,3an推客CPS推广模式由商家自主设置佣金比例,以及设置商品优惠券,激励推广者去帮助商家推广商品链接&…

c++初阶——类和对象(中)

大家好,我是小锋,我们今天继续来学习类和对象。 类的6个默认成员函数 我们想一想如果一个类什么都没有那它就是一个空类,但是空类真的什么都没有吗? 其实并不是,任何类在什么都不写时,编译器会自动生成以…

C++ | Leetcode C++题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; class Solution { public:string multiply(string num1, string num2) {if (num1 "0" || num2 "0") {return "0";}int m num1.size(), n num2.size();auto ansArr vector<int>(m n);for (int i …

比亚迪海洋网再添实力爆款,海豹06DM-i、OCEAN-M、海狮07EV登陆北京车展

4月25日&#xff0c;比亚迪海洋网携海豹06DM-i、OCEAN-M、海狮07EV一齐亮相北京车展&#xff0c;引发关注热潮。其中&#xff0c;海洋网全新中型轿车海豹06DM-i价格区间12万-15万元&#xff0c;将于今年二季度上市&#xff1b;行业首款两厢后驱纯电钢炮OCEAN-M价格区间15万-20万…

重发布的原理及其应用

重发布的作用&#xff1a; 在一个网络中&#xff0c;若运行多种路由协议或者相同协议的不同进程&#xff1b;因为协议之间不能直接沟通计算&#xff0c;进程之间也是独立进行转发和运算的&#xff0c;所以&#xff0c;需要使用重发布来实现路由的共享。 条件 &#xff1a; 1&am…

RH850F1KM 搭建MCAL配置环境

1 搭建环境所需的安装包 安装以下软件安装包 1&#xff09;MCAL下载&#xff1a;AUTOSAR RH850/F1KM MCAL v42.11.00 Software 2&#xff09;Davinci工具 SIP包&#xff1a;DaVinci Configurator Pro 3&#xff09;下载网址&#xff1a;https://www.renesas.cn/cn/zh/product…

美团面试题-Nacos配置中心动态刷新原理

①&#xff1a;pull模式&#xff1a;主动拉去配置&#xff0c;通过固定的时间间隔。缺点&#xff1a;频繁请求&#xff0c;时效性不高&#xff0c;时间间隔不好设置。 ②&#xff1a;push模式&#xff1a;服务端检测到变化&#xff0c;主动将新配置推送给客户端&#xff0c;时效…

python的列表生成式

什么是列表生成式&#xff1f; 列表生成式&#xff0c;顾名思义&#xff0c;是生成列表的一个简单又直接的方法。它使用了一种紧凑的语法来构造列表&#xff0c;能够以一种更清晰、更简洁的方式来表达循环和过滤逻辑。 基础示例让我们先从一些简单的例子开始&#xff1a; 「生…

echarts 基础入门

前言&#xff1a;本文档主要讲解 echarts 在 vue3 中的用法&#xff0c;及其 echarts 的一些配置参数含义及用法。示例参考 echarts 示例 一&#xff1a;快速开始 1. 安装 echarts npm install echarts # or pnpm add echarts # or yarn add echarts 2. 使用 echarts <…
最新文章