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

卷积的数学原理与作用

一、一维卷积

(一)定义

  1. 数学定义
    • 给定一个输入序列 x = [ x 1 , x 2 , ⋯ , x n ] x = [x_1,x_2,\cdots,x_n] x=[x1,x2,,xn] 和一个卷积核(滤波器) k = [ k 1 , k 2 , ⋯ , k m ] k = [k_1,k_2,\cdots,k_m] k=[k1,k2,,km],其中 m ≤ n m\leq n mn。一维卷积的计算过程是通过将卷积核在输入序列上滑动,在每个位置计算它们的点积。
    • 设输出序列为 y = [ y 1 , y 2 , ⋯ , y n − m + 1 ] y = [y_1,y_2,\cdots,y_{n - m+1}] y=[y1,y2,,ynm+1],则 y i = ∑ j = 0 m − 1 k j x i + j y_i=\sum_{j = 0}^{m - 1}k_jx_{i + j} yi=j=0m1kjxi+j。例如,当 n = 5 n = 5 n=5 m = 3 m = 3 m=3 x = [ 1 , 2 , 3 , 4 , 5 ] x=[1,2,3,4,5] x=[1,2,3,4,5] k = [ 1 , 2 , 3 ] k = [1,2,3] k=[1,2,3]时, y 1 = 1 × 1 + 2 × 2 + 3 × 3 = 14 y_1=1\times1 + 2\times2+3\times3 = 14 y1=1×1+2×2+3×3=14
  2. 在深度学习中的表示
    • 在深度学习框架(如PyTorch或TensorFlow)中,一维卷积层通常表示为Conv1d。它接受一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ i n , s e q u e n c e _ l e n g t h ) (batch\_size, channels\_in, sequence\_length) (batch_size,channels_in,sequence_length)的输入张量,并输出一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ o u t , o u t p u t _ s e q u e n c e _ l e n g t h ) (batch\_size, channels\_out, output\_sequence\_length) (batch_size,channels_out,output_sequence_length)的张量。其中channels_in是输入通道数,channels_out是输出通道数,output_sequenc_length取决于输入序列长度、卷积核大小和步长等参数。

(二)作用

  1. 信号处理
    • 滤波:可以用于去除信号中的噪声。例如,在音频信号处理中,低通滤波器卷积核可以通过卷积操作滤除高频噪声。假设音频信号的采样点序列为输入,通过设计一个合适的低通滤波器卷积核,让其在信号序列上滑动进行卷积,高频部分对应的系数会被削弱,从而达到滤波的效果。
    • 特征提取:从时间序列数据中提取特征。以股票价格数据为例,将一段时间内的股票价格序列作为输入,一维卷积可以提取价格波动的模式,如短期的上涨或下跌趋势等特征。这些特征对于预测股票价格走势等后续任务非常有帮助。
  2. 自然语言处理(NLP)
    • 词向量处理:在处理文本的词向量序列时,一维卷积可以捕捉局部的语义信息。例如,对于一个句子的词向量序列,卷积核可以提取出如名词短语、动词短语等局部语义单元的特征。
    • 文本分类:通过对文本经过词嵌入后的序列进行一维卷积操作,提取文本的特征,然后将这些特征输入到分类器中,用于判断文本的类别,如情感分类(积极、消极或中性)等任务。

二、二维卷积

(一)定义

  1. 数学定义
    • 对于一个二维输入矩阵 X ∈ R H × W X\in R^{H\times W} XRH×W H H H表示高度, W W W表示宽度)和一个二维卷积核(滤波器) K ∈ R h × w K\in R^{h\times w} KRh×w h h h w w w分别是卷积核的高度和宽度)。二维卷积的计算是将卷积核在输入矩阵上滑动,在每个位置计算它们的对应元素乘积之和。
    • 设输出矩阵为 Y ∈ R H − h + 1 × W − w + 1 Y\in R^{H - h+1\times W - w + 1} YRHh+1×Ww+1,对于输出矩阵中的元素 y i j y_{ij} yij,其计算公式为 y i j = ∑ m = 0 h − 1 ∑ n = 0 w − 1 k m n x i + m , j + n y_{ij}=\sum_{m = 0}^{h - 1}\sum_{n = 0}^{w - 1}k_{mn}x_{i + m,j + n} yij=m=0h1n=0w1kmnxi+m,j+n。例如,当 X = [ 1 2 3 4 5 6 7 8 9 ] X=\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix} X= 147258369 K = [ 1 1 1 1 ] K=\begin{bmatrix}1&1\\1&1\end{bmatrix} K=[1111],计算 y 11 y_{11} y11时, y 11 = 1 × 1 + 2 × 1 + 4 × 1 + 5 × 1 = 12 y_{11}=1\times1+2\times1+4\times1+5\times1 = 12 y11=1×1+2×1+4×1+5×1=12
  2. 在深度学习中的表示
    • 在深度学习框架中,二维卷积层通常表示为Conv2d。它接受一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ i n , h e i g h t , w i d t h ) (batch\_size, channels\_in, height, width) (batch_size,channels_in,height,width)的输入张量,并输出一个形状为 ( b a t c h _ s i z e , c h a n n e l s _ o u t , o u t p u t _ h e i g h t , o u t p u t _ w i d t h ) (batch\_size, channels\_out, output\_height, output\_width) (batch_size,channels_out,output_height,output_width)的张量。其中channels_in是输入通道数(例如彩色图像的RGB通道数为3),channels_out是输出通道数,output_heightoutput_width取决于输入图像的高度、宽度、卷积核大小和步长等参数。

(二)作用

  1. 图像处理
    • 边缘检测:通过特定的卷积核可以检测图像的边缘。例如,Sobel算子是一种常用的边缘检测卷积核。它可以计算图像中像素灰度值的变化率,从而确定边缘的位置。对于一幅图像,使用Sobel卷积核进行二维卷积操作后,边缘部分会在输出图像中显示出较高的像素值,而非边缘部分像素值较低。
    • 图像滤波:类似于一维卷积在信号处理中的滤波作用,二维卷积可以在图像中去除噪声或模糊图像。例如,均值滤波卷积核可以通过计算像素周围邻域的平均值来模糊图像,减少图像中的细节噪声。
    • 特征提取:从图像中提取各种特征,如纹理、形状等。在人脸识别中,二维卷积可以提取面部的关键特征,如眼睛、鼻子、嘴巴等部位的形状和位置特征,这些特征对于后续的人脸识别任务至关重要。
  2. 计算机视觉中的其他应用
    • 目标检测:在目标检测算法中,二维卷积用于提取图像中可能包含目标的区域特征。例如,在基于深度学习的目标检测模型(如Faster R - CNN)中,卷积层用于从输入图像中提取丰富的特征图,然后通过后续的区域提议网络(RPN)和分类回归头来确定目标的位置和类别。
    • 图像分割:用于将图像划分为不同的语义区域。通过二维卷积提取图像的特征,然后根据这些特征将像素分类到不同的类别,例如在医学图像分割中,将医学图像中的器官、组织等不同部分分割出来,为疾病诊断等任务提供帮助。
http://www.lryc.cn/news/502186.html

相关文章:

  • 路由介绍.
  • CTFshow-命令执行(Web29-40)
  • MySQL锁的类型有哪些
  • 基于 JNI + Rust 实现一种高性能 Excel 导出方案(下篇)
  • 关于Python程序消费Kafka消息不稳定问题的处理方法
  • 【OpenCV】Canny边缘检测
  • 算法-二进制和位运算
  • OpenAI Chatgpt 大语言模型
  • SpringBoot【九】mybatis-plus之自定义sql零基础教学!
  • C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码
  • 调度系统:Luigi 的主要特性和功能
  • C# 探险之旅:第二节 - 定义变量与变量赋值
  • AUTOSAR:SOME/IP 概念
  • 循序渐进kubenetes Service(Cluster ip、Nodeport、Loadbalancer)
  • 深入理解 Apache Shiro:安全框架全解析
  • mac 安装CosyVoice (cpu版本)
  • 币安移除铭文市场的深度解读:背后原因及其对区块链行业的影响
  • 深度学习实战野生动物识别
  • windows安装使用conda
  • 手机租赁系统开发全流程解析与实用指南
  • SpringBoot 开发—— YAML文件深度分析
  • 复合机器人整体解决方案
  • 【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等
  • VSCode设置字体
  • shell编程入门之提取字符并设置rtc时间
  • react 不可变数据更新(Immutable Update)合并对象 类似与Java 的BeanUtils.copyProperties‌
  • Linux GCC基础用法⑦
  • PyTorch 切片运算 (Slice Operator)
  • SpringSecurity Oauth2 -账号密码实现多因子身份认证
  • 【CSS in Depth 2 精译_071】11.4 思考字体颜色的对比效果 + 11.5 本章小结