深度学习之卷积

2023-05-16

01 卷积

卷积是指在滑动中提取特征的过程,可以形象地理解为用放大镜把每步都放大并且拍下来,再把拍下来的图片拼接成一个新的大图片的过程。

2D卷积是一个相当简单的操作:
我们先从一个小小的权重矩阵,也就是 卷积核(kernel) 开始,让它逐步在二维输入数据上“扫描”。卷积核“滑动”的同时,计算权重矩阵和扫描所得的数据矩阵的乘积,然后把结果汇总成一个输出像素。

也就是说,【卷积操作后得到的矩阵中的每个元素】都是由两个矩阵乘积得来的
——这两个矩阵分别是【原矩阵在滑动过中分割出来的“大小等同于卷积核”的矩阵】和【卷积核(卷积核一般是一个3×3或者5×5的矩阵)】

在这里插入图片描述

卷积核会在其经过的所有位置上都重复以上操作,直到把输入特征矩阵转换为另一个二维的特征矩阵。
简而言之,输出的特征基本上就是原输入特征的加权和(权重是卷积核自带的值),而从像素位置上看,它们所处的地方大致相同。

那么为什么输出特征的会落入这个“大致区域”呢?这取决于卷积核的大小。卷积核的大小直接决定了在生成输出特征时,它合并了多少输入特征,也就是说:卷积核越小,输入输出的位置越接近;卷积核越大,距离就越远


卷积的计算过程可以参考下面这张图:

在这里插入图片描述

02 填充Padding

边缘上的像素永远不会位于卷积核中心,而卷积核也没法扩展到边缘区域以外,所以输入图像的边缘被“修剪”掉了
这是不理想的,通常我们都希望输入和输出的大小应该保持一致。

Padding就是针对这个问题提出的一个解决方案:它会用额外的“假”像素填充边缘(值一般为0),这样,当卷积核扫描输入数据时,它能延伸到边缘以外的伪像素,从而使输出和输入大小相同

如下图为一个卷积核为3×3、有padding、Stride为1时的卷积过程:
在这里插入图片描述

03 步幅Stride

如果说Padding的作用是使输出与输入同高宽,那么在卷积层中,有时我们会需要一个尺寸小于输入的输出。那这该怎么办呢?这其实是卷积神经网络中的一种常见应用,当通道数量增加时,我们需要降低特征空间维度。实现这一目标有两种方法,一是使用池化层,二是使用Stride(步幅)


如下图为一个卷积核为3×3、有padding、Stride为2时的卷积过程:
在这里插入图片描述


Stride为2的卷积计算过程可以参考下面这张图:

在这里插入图片描述


滑动卷积核时,我们会先从输入的左上角开始,每次往左滑动一列或者往下滑动一行逐一计算输出,我们将每次滑动的行数和列数称为Stride。

Stride的作用是成倍缩小尺寸,而这个参数的值就是缩小的具体倍数,比如步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3。以此类推。

在一些目前比较先进的网络架构中,如ResNet,它们都选择使用较少的池化层,在有缩小输出需要时选择步幅卷积。

04 卷积核的选择

卷积是为了提取特征,选择不同的卷积核将会提取到不同的特征。

举几个例子(参考链接):

卷积核名称卷积核形式效果
原图在这里插入图片描述
0,1,2
2,2,0
0,1,2
在这里插入图片描述
垂直边缘检测1,0,-1
1,0,-1
1,0,-1
在这里插入图片描述
水平边缘检测1,1,1
0,0,0
-1,-1,-1
在这里插入图片描述

05 多通道卷积

上述例子都只包含一个输入通道。实际上,大多数输入图像都有3个RGB通道,而通道数的增加意味着网络深度的增加。

这里就要涉及到“卷积核”和“filter”这两个术语的区别。在只有一个通道的情况下,“卷积核”就相当于“filter”,这两个概念是可以互换的;但在一般情况下,它们是两个完全不同的概念。每个“filter”实际上恰好是“卷积核”的一个集合,在当前层,每个通道都对应一个卷积核,且这个卷积核是独一无二的。
在这里插入图片描述

参考

  • 绝妙可视化:什么是深度学习的卷积?https://zhuanlan.zhihu.com/p/42090228

  • 手写代码实现卷积操作(Python):https://blog.csdn.net/qq_41398808/article/details/97925070

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习之卷积 的相关文章

  • ROS实验笔记之——基于ArUco Marker来估算camera的位姿

    最近在做课程的project的时候 xff0c 实现了基于Marker的3D 2D的相机位姿估计算法 写下本博文作为学习记录用 xff5e 先看看整体的实现效果 基于ArUco Marker来估算camera的位姿 目录 安装ArUco A
  • ROS实验笔记之——基于Prometheus自主无人机开源项目的学习与仿真

    最近在公众号上看到Prometheus无人机的资料 xff0c 发现里面开源了很好的无人机的仿真环境 xff0c 并且有很好的教程 而本人正好在上 Introduction to Aerial Robotics 的课程 xff0c 正好搭建
  • ROS实验笔记之——基于Prometheus的控制模块

    之前博客 ROS实验笔记之 基于Prometheus自主无人机开源项目的学习与仿真 已经介绍过Prometheus项目 本博文继续学习其中的控制模块 xff5e ROS无人机仿真之轨迹跟踪 ROS无人机仿真之航点跟踪 目录 仿真功能启动脚本
  • 学习笔记之——VIO与VINS-Mono

    本博文为本人学习VIO与VINS的学习笔记 xff0c 部分内容来源于网上的资料 xff0c 文末给出参考 本博文仅仅为本人学习记录用 xff0c 不作任何商业用途 先给出复现的demo 视觉惯导紧融合VINS Mono的复现 目录 VIO
  • ROS学习笔记之——PX4开发初入门

    PX4 是一款专业级飞控 它由来自业界和学术界的世界级开发商开发 xff0c 并得到活跃的全球社区的支持 xff0c 为从竞速和物流无人机到地面车辆和潜水艇的各种载具提供动力 目录 基本概念 QGroundControl xff08 QGC
  • ROS实验笔记之——PX4仿真

    之前博文 ROS学习笔记之 PX4开发初入门 ROS学习笔记之 PX4生态系统 已经对PX4做了一些基本的学习 xff0c 并且在mac上搭建了px4开发环境 本博文在ubuntu下对PX4进行一些基本的仿真学习 xff5e 之前在做无人机
  • ROS学习笔记之——基于QGC的PX4在线仿真调PID

    之前博客 ROS实验笔记之 PX4仿真 已经介绍了PX4编译及QGC的安装 xff0c 本博文进一步的基于QGC进行仿真控制 基于QGC的PX4在线仿真 首先运行基于px4的gazebo仿真 make px4 sitl default ga
  • ROS学习笔记之——PX4位置环PID控制

    之前博客 ROS学习笔记之 基于QGC的PX4在线仿真调PID 已经学习了如何在仿真环境下 xff0c 调节PID位置环与姿态环 本博文细细的看一下PX4位置环PID调节 如下图所示 输入的是期望的位置 xff0c 然后外环是P控制 而内环
  • ROS实验笔记之——JCV-450无人机初入门

    最近测试了阿木实验室的JCV 450无人机 本博文记录本人使用及实验的过程 目录 基本设置 注意点 飞行前调试 一 加载固件 二 加载参数 三 校准传感器 四 遥控器校准 五 飞行模式 六 电调校准 七 检查参数 QGC的使用 首先看一下飞
  • ROS学习笔记之——MSCKF

    原理 精度方面 xff0c MSCKF应该与graph optimazation差不多 xff0c 但是其对算力要求没有那么高 xff5e http www xinliang zhong vip msckf notes header n13
  • FreeRTOS调试神器分享

    在B站看到的大神的分享 xff0c 记录一下 xff1a FreeRTOS调试神器 xff01
  • ROS实验笔记之——Intel Realsense l515激光相机的使用

    最近实验室购买了Intel Realsense l515相机 本博文记录使用过程 驱动安装 先到官网安装驱动 xff1a https github com IntelRealSense realsense ros https github
  • ROS实验笔记之——VINS-Mono在l515上的实现

    之前博客 ROS实验笔记之 Intel Realsense l515激光相机的使用 实现了用l515运行RTABmap xff0c 本博文试试在l515上实现vins mono 首先需要将vins mono配置成功 xff0c 如果出现像之
  • ROS学习笔记之——EVO工具的使用

    之前博客 ROS学习笔记之 VICON的使用 用vincon获得了机器人的真实轨迹 xff0c 并且通过amcl可以获得了机器人的定位结果 xff0c 下面通过EVO包来表征performance xff08 本文不像网上大部分博客复制粘贴
  • ROS实验笔记之——无人机在VICION下试飞

    之前博 ROS实验笔记之 自主搭建四旋翼无人机 ROS实验笔记之 JCV 450无人机初入门 ROS实验笔记之 基于Prometheus自主无人机开源项目的学习与仿真 已经介绍过一些无人机的仿真 xff0c 试飞 本博文基于vicion实现
  • ROS学习笔记之——无人机PID调参过程记录

    问题描述 最近搭建了一架无人机如下 飞行demo self design Quadrotor flighting test2 但是在手飞过程 xff0c 发现陀机很烫 应该是由于pid没调 xff0c 然后机臂抖动导致的发热 接下来 xff
  • 基于可见光通信的室内定位与导航及物联网应用

    本人从2014年起从事可见光通信 xff08 Visible Light Communication VLC xff09 相关研究 xff0c 主要包括 xff1a 基于光电二极管 xff08 PD xff09 图像传感器 xff08 ca
  • ROS实验笔记之——FAST-LIVO

    最近IROS22的FAST LVIO源码开源了 xff0c 笔者赶紧测试一下 源码链接 xff1a GitHub hku mars FAST LIVO A Fast and Tightly coupled Sparse Direct LiD
  • 算法学习笔记

    最近无意中看到一个算法的网站 xff0c 看着感觉介绍得挺系统的 xff0c 虽然做算法以及指导学生开发各种算法这么些年了 xff0c 却没有真正系统的学习过 xff08 几年前啃过算法导论 xff0c 但是苦于那蹩脚的中文翻译 xff0c

随机推荐

  • 2023年可见光通信(LiFi)研究新进展

    可见光无线通信Light Fidelity xff08 LiFi xff09 又称 光保真技术 xff0c 是一种利用可见光进行数据传输的全新无线传输技术 LiFi是一种以半导体光源作为信号发射源 xff0c 利用无需授权的自由光谱实现无线
  • 论文阅读笔记之——《Toward Convolutional Blind Denoising of Real Photographs》及基于pytorch的CBDNet的复现

    本文是CBDNet xff08 convolutional blind denoising network xff09 的阅读笔记 本博文分为两块 xff0c 一块是阅读笔记 xff0c 一块是本人对CBDNet的实验记录 论文链接 xff
  • C++和Windows平台的一些书籍

    从2010年学习编程以来 xff0c 到现在有差不多3年时间了 xff0c 过的真快啊 目前在深圳工作 xff0c 主要使用的是C 43 43 语言 xff0c 那么我就说说C 43 43 和Windows平台的书籍吧 1 C primer
  • 程序员提升之排查bug的能力

    不知不觉工作已经快一年了 xff0c 从开始工作以后 xff0c 跟着大神们学习了很多 xff0c 从一个小白慢慢的成长起来 xff0c 从我目前的经验来看 xff0c 我要感谢bug xff0c 这里的bug并不单单是指bug xff0c
  • CMakeList编译报错ninja: error: missing and no known rule to make it解决方法

    Android NDK开发引用第三方库CMakeList txt编译报错 xff1a ninja error 39 XXX NDKApplication app src main cpp src main cpp armeabi v7a l
  • 关于Java学习的心得体会

    大一的第二学期 xff0c 满心欢喜的期待着自己的专业课 xff0c 上个学期C语言老师和我们说C语言只是入门 xff0c 我们还学得如此吃力 心中已经能够想到本学期的心酸了 xff0c 果不其然 xff0c 老师说本学期不学C 43 43
  • 项目管理第十三章项目相关方管理

    项目管理第十三章项目相关方管理 项目相关方管理 xff1a 包括识别能够影响项目或会受项目影响的人员 团体或组织 xff0c 分析相关方对项目的期望和影响 xff0c 制定合适的管理策略来有效调动相关方参与项目决策和执行 其过程包括 xff
  • Git3.创建版本库(Git仓库)&提交更新到仓库

    创建版本库 Git仓库 什么是版本库呢 xff1f 版本库又名仓库 xff0c 英文名repository xff0c 你可以简单理解成一个目录 xff0c 这个目录里面的所有文件都可以被Git管理起来 xff0c 每个文件的修改 删除 x
  • ssh 登录时常出现的几种错误以及解决方法(Linux)

    前言 ssh是Linux系统中常用的远程登陆的命令 xff0c 有的时候我们通过xshell等远程连接软件使用ssh去登陆远程的服务器的时候 xff0c 会遇到一些问题 下面是关于ssh 远程登陆的问题解决方法的总结 xff08 更新中 x
  • vins-mono(4)重定位以及全局优化

    vins的重定位模块主要包含回环检测 回环候选帧之间的特征匹配 紧耦合重定位三个部分 a 回环检测 采用BRIEF描述子的DBOW2词袋进行闭环检测 对新来的关键帧重新检测500个角点进行闭环检测同时对所有角点进行BRIEF描述 然后计算当
  • STM32CubeMX的下载以及安装

    第一步 xff1a 安装应用软件 下载STM32CubeMX软件并安装 xff1b 第二步 xff1a 安装MCU固件包 在线安装用户所选的STM32微控制器对应的MCU固件包 具体操作步骤如下 xff1a 软件的下载地址 xff1a ht
  • MDK-ARM软件的下载以及资源分享

    1 软件的基本特点 xff1a 支持源代码的编辑 编译 程序的下载和调试等多种功能 编译器和器件支持包分离 xff0c 可根据需求安装 xff0c 减少软件的大小 提供多种中间件 xff0c 如RTOS和GUI等 xff0c 提高开发效率
  • 关于Win10家庭版修改用户名的问题

    之前电脑注册的时候命名为中文 xff0c 但在装很多软件时就会出现很多奇奇怪怪的问题 xff0c 查了之后发现可能是因为系统的中文名造成的 xff0c 因此在之后可能就需要修改 之前在网上找到比较常见的两种方法都不适用于Win10家庭版 方
  • ROS 开源智能小车 TurtleBot3 Waffle pi 深度视觉版简介 (可实现地图搭建、自主导航、自主避障、深度视觉算法研究)

    ROS机器人操作系统为什么现在火爆全球 xff1f ROS xff08 Robot Operating System xff0c 机器人操作系统 xff09 是目前世界上更主流更多人使用的机器人开源操作系统 它可以提供操作系统应有的服务 x
  • c/c++输出保留指定位小数(输出精度控制)

    c 43 43 C 43 43 的精度控制需要头文件 span class token macro property span class token directive keyword include span span class to
  • 以连接mysql为例:六种流行的语言比较——C、C++、python、Java、php、C#

    本文是六种语言连接mysql数据库的代码展示 xff0c 在LZ尝试的过程中 xff0c 无论是语言环境搭建 mysql依赖库的导入还是代码的风格 xff0c 各种语言都各有千秋 接下来 xff0c 我们就让这些语言一一登场吧 Java x
  • 熊迈摄像头SDK二次开发:登录、截屏、录像等功能

    对雄迈摄像头二次开发 xff0c 因为雄迈给的资料比较混乱 xff0c 没有找到可用的sdk手册 xff0c 所以一开始想用OpenCV 43 qt 但是在Windows环境下 xff0c opencv摄像头读取卡顿严重 xff0c 而且o
  • ros学习(2-2):ros节点创建(python)

    参考 Python创建简单的ROS节点 xff1a 用Python实现ROS节点 xff08 这里也说明了用Python写ROS功能包也是需要CMakelists txt的 xff09 https blog csdn net sinat 1
  • Ubuntu下使用眼动仪Tobii Eye Tracker 4C

    01 安装 amp 使用 安装 使用过程参考 xff1a https github com Eitol tobii eye tracker linux installer 下面过程主要是github中自述文件的翻译 下载 在新终端 xff0
  • 深度学习之卷积

    01 卷积 卷积是指在滑动中提取特征的过程 xff0c 可以形象地理解为用放大镜把每步都放大并且拍下来 xff0c 再把拍下来的图片拼接成一个新的大图片的过程 2D卷积是一个相当简单的操作 xff1a 我们先从一个小小的权重矩阵 xff0c