精华内容
下载资源
问答
  • matlab卷积翻转移位GUI

    2010-05-06 19:32:21
    matlab计算卷积翻转移位的过程.冲击序列,指数序列,翻转、移位
  • 卷积不变性证明

    千次阅读 2020-10-28 19:27:03
    卷积不变性证明 如题。 证明: 首先定义卷积操作 Convi,j=∑p,qIi−p,j−1Kp,qConv_{i, j} = \sum_{p, q}I_{i-p, j-1}K_{p, q}Convi,j​=p,q∑​Ii−p,j−1​Kp,q​ 定义平操作 Tr(i,j)→(i+k,j+l)Tr(i, j)\to...

    卷积平移不变性证明

    如题。

    证明:
    首先定义卷积操作
    C o n v i , j = ∑ p , q I i − p , j − 1 K p , q Conv_{i, j} = \sum_{p, q}I_{i-p, j-1}K_{p, q} Convi,j=p,qIip,j1Kp,q
    定义平移操作
    T r ( i , j ) → ( i + k , j + l ) Tr(i, j)\to (i+k, j+l) Tr(i,j)(i+k,j+l)
    综合以上两式
    C o n v T r ( i , j ) = C o n v i + k , j + l = ∑ p , q I i + k − p , j + l − q K p , q = T r ( ∑ p , q I i − p , j − q K p , q ) = T r ( C o n v i , j ) Conv_{Tr(i, j)} = Conv_{i+k, j+l}\\ = \sum_{p, q}I_{i+k-p, j+l-q}K_{p, q}\\ = Tr(\sum_{p, q}I_{i-p, j-q}K_{p, q})\\ = Tr(Conv_{i, j}) ConvTr(i,j)=Convi+k,j+l=p,qIi+kp,j+lqKp,q=Tr(p,qIip,jqKp,q)=Tr(Convi,j)

    Q . E . D Q.E.D Q.E.D

    展开全文
  • 学会用MATLAB实现傅里叶变换的时移,频移,卷积特性
  • 卷积

    2020-11-22 18:45:32
    文章目录卷积的定义 以下回答摘自知乎回答“如何通俗易懂地理解卷积”。 卷积的定义 连续形式的卷积: 离散形式的卷积: 它们都有一个共同的特征: 直观上来看,函数g(n−τ)g(n-\tau)g(n−τ)的含义是将...

    文章目录


    以下回答摘自知乎回答“ 如何通俗易懂地理解卷积”。

    卷积的定义

    1. 连续形式的卷积:
      在这里插入图片描述

    2. 离散形式的卷积:
      在这里插入图片描述
      它们都有一个共同的特征:
      在这里插入图片描述

    直观上来看,函数 g ( n − τ ) g(n-\tau) g(nτ)的含义是将函数 g ( τ ) g(\tau) g(τ)首先进行沿y轴翻转得到 g ( − τ ) g(-\tau) g(τ),然后向左平移n个单位得到 g ( n − τ ) g(n-\tau) g(nτ)。即先对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“”的由来。然后再把g函数平移n个单位,在这个位置对两个函数的对应点相乘,然后相加,这个过程就是卷积的“”的过程。
    但是,为什么这么做呢?
    可以从现实生活中各个场景来进行解释:
    (1)离散情况下

    例1.掷骰子问题:掷两个骰子,问两个骰子点数加起来等于4的概率是多少?
    在这里插入图片描述那么,两枚骰子点数加起来为4的情况有:
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述因此,两枚骰子点数加起来为4的概率为:
    在这里插入图片描述
    写成卷积定义的形式为:
    在这里插入图片描述

    例2. 图像卷积
    有这么一副图像,可以看到,图像上有很多噪点:
    在这里插入图片描述高频信号,就好像平地耸立的山峰:
    在这里插入图片描述看起来很显眼。平滑这座山峰的办法之一就是,把山峰刨掉一些土,填到山峰周围去。用数学的话来说,就是把山峰周围的高度平均一下。平滑后得到:
    在这里插入图片描述卷积可以帮助实现这个平滑算法。有噪点的原图,可以把它转为一个矩阵:
    在这里插入图片描述然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)来平滑图像:
    在这里插入图片描述
    记得刚才说过的算法,把高频信号与周围的数值平均一下就可以平滑山峰。
    比如我要平滑 a 1 , 1 a_{1,1} a1,1点,就在矩阵中,取出 a 1 , 1 a_{1,1} a1,1点附近的点组成矩阵 f f f,和 g g g进行卷积计算后,再填回去:
    在这里插入图片描述要注意一点,为了运用卷积, g g g虽然和 f f f 同维度,但下标有点不一样:
    在这里插入图片描述
    用动图来表示计算过程:
    在这里插入图片描述
    写成卷积公式就是:
    在这里插入图片描述
    要求 c i , j c_{i,j} ci,j ,一样可以套用上面的卷积公式。依次使用如上原理的离散卷积公式,得到卷积后的表示(这里计算结果不太对,把卷积核翻转180度就对了):

    在这里插入图片描述

    (2)连续情况下(信号处理)
    如下图所示,输入信号是 f ( t ) f(t) f(t) ,是随时间变化的。系统响应函数是 g ( t ) g(t) g(t) ,图中的响应函数是随时间指数下降的,它的物理意义是说:如果在 t = 0 t=0 t=0 的时刻有一个输入,那么随着时间的流逝,这个输入将不断衰减。换言之,到了 t = T t=T t=T时刻,原来在 t = 0 t=0 t=0 时刻的输入f(0)的值将衰减为 f ( 0 ) g ( T ) f(0)g(T) f(0)g(T)
    在这里插入图片描述考虑到信号是连续输入的,也就是说,每个时刻都有新的信号进来,所以,最终输出的是所有之前输入信号的累积效果。如下图所示,在 T = 10 T=10 T=10时刻,输出结果跟图中带标记的区域整体有关。其中, f ( 10 ) f(10) f(10)因为是刚输入的,所以其输出结果应该是 f ( 10 ) g ( 0 ) f(10)g(0) f(10)g(0),而时刻 t = 9 t=9 t=9的输入 f ( 9 ) f(9) f(9),只经过了1个时间单位的衰减,所以产生的输出应该是 f ( 9 ) g ( 1 ) f(9)g(1) f(9)g(1),如此类推,即图中虚线所描述的关系。这些对应点相乘然后累加,就是 T = 10 T=10 T=10时刻的输出信号值,这个结果也是 f f f g g g两个函数在 T = 10 T=10 T=10时刻的卷积值。
    在这里插入图片描述​​显然,上面的对应关系看上去比较难看,是拧着的,所以,我们把 g g g函数对折一下,变成了 g ( − t ) g(-t) g(t),这样就好看一些了。看到了吗?这就是为什么卷积要“卷”,要翻转的原因,这是从它的物理意义中给出的。
    在这里插入图片描述上图虽然没有拧着,已经顺过来了,但看上去还有点错位,所以再进一步平移T个单位,就是下图。它就是本文开始给出的卷积定义的一种图形的表述:
    在这里插入图片描述​​所以,在以上计算T时刻的卷积时,要维持的约束就是: t + ( T − t ) = T t+ (T-t) = T t+(Tt)=T 。这种约束的意义,大家可以自己体会。

    展开全文
  • 数据不匹配与卷积“平不变”

    千次阅读 2019-03-22 23:06:25
    最近为了做人脸属性转换,训练了一个人脸性别识别的分类器,在这个过程中,对...但使用CelebA之外的人脸图片测试则表现很差,比如对下面图片(都是从互联网上手动收集,希望没有触犯什么版权。。。)判别男女几...

    1. 数据不匹配问题

    吴恩达深度学习课程中有几个小节谈到了训练数据集和测试数据集分布不匹配的问题,这种不匹配可能经常发生,因为对于特定问题领域我们可能无法获得充足的数据,而在深度学习中我们又总是尽量去收集更多的数据来训练网络,即使这些数据与目标分布不同,由此导致的结果是训练出的模型在实际应用中也许不能很好的工作。

    吴恩达的课里讲到,这种问题没有什么系统性的解决办法。一般就是通过人工分析来找出数据不匹配的地方,然后想办法收集或者生成能弥补这种差距的数据。

    2. 人脸性别分类器面对的数据不匹配挑战

    最近为了做人脸属性转换,训练了一个人脸性别识别的分类器,就碰到了这种数据不匹配的问题。

    因为人脸转换使用CelebA作为数据集,所以分类器当然也在CelebA上进行训练,使用的是剪裁对齐后的图片。一开始只使用随机左右翻转的数据增强,训练以及降低方差都没什么难度。但当我使用CelebA之外的人脸图片测试时则表现很差,比如下面图片中前5张,男女的判别全是反的:
    在这里插入图片描述
    我首先注意到小李和凯特的人脸有一定的倾斜,把图片旋正后,认出小李是男人了,可凯特还是汉子。实话说凯特的照片除了肤色有点红以外,我一开始实在看不出有什么特别之处。下面是几张CelebA的图片,看上去和凯特的图差不多。

    在这里插入图片描述
    当然,蒙娜丽莎确实和CelebA的不同,第一张图片的饱和度和色调可能和CelebA的也有点区别,并且是一个长相普通的中国女性,和CelebA不太一样,但我确实想象不出范冰冰和凯特有什么问题,尤其是凯特!于是我找了另一张凯特的图片就是上面图片中的最后一张,还好这张图分类器认出是女人了。

    在看不出明显问题的情况下,我只能猜测某些方面存在着人类感知不到的区别。于是为了解决数据分布不匹配的问题,我一方面在模型中加入了正则化,参见gender_classifier.py,另一方面增加了数据增强,加入了随机旋转,剪裁,亮度,对比度,色度,饱和度的随机变化等等,参见dataset.py的augmentate函数(不过github上的这个程序版本并没有使用这些数据增强,后面会提到原因),希望分类器对未知的数据分布能有一定的泛化能力。

    通过上述手段,分类器在CelebA开发集上的错误率进一步降低了,对CelebA之外的图片表现也有所提高,但凯特,蒙娜丽莎以及第一张女性照片仍旧识别不出来。

    必须要说清楚的是,这里的情况和吴恩达深度学习课程中谈到的并不一样:

    • 一是,这不是一个商业应用,没有明确的目标数据集,因而开发集和测试集也都是CelebA的一部分,只是希望训练后得到的系统在广泛随机的图片上也表现良好。因为CelebA的数据均从Internet上收集得到,从人类的角度看,样本非常多样化,所以一开始我以为这是一个合理的期望。
    • 二是,收集和处理数据的成本对个人开发者而言非常高,所以这里只是随机从互联网上手工收集一点图片进行评估测试。由于实际上这个项目没有明确的目标和范围,所以就把这些个位数量的图片作为目标。

    3. 迁移学习

    上述数据不匹配的问题始终得不到解决,最后,使用了迁移学习。facenet_gender_classifier.py在Facenet网络的末段输出后面接两个Dense,在CelebA上只使用随机左右翻转数据增强,训练10轮,不但在CelebA上可以取得接近百分之百的准确率,在测试图片上的表现也非常完美。

    使用Facenet做迁移学习是一个非常合理的选择,但这里有一个和普通迁移学习完全不同的地方是:普通的迁移学习是使用已训练的模型和已习得的特征提取能力在一个新的数据集上进行拟合,目标是拟合这个新数据集的分布;而在这个例子中,使用已训练模型的输出特征作为输入,训练一个小网络拟合一个数据集,最终这个小网络不但拟合了这个数据集,而且在不同分布的数据上也能够很好的拟合!这只能说明一点:那就是不同分布的数据输入Facenet,到最后输出时,那些和人脸特征无关的分布特性已经不存在了!对于那个小网络来说,无论输入数据分布是否相同,Facenet输出给它的都是同一个分布,所以无论什么照片它都能很好的识别。

    为什么Facenet能处理不同分布的数据呢?我曾有不少猜想:比如数据,网络,任务。。。也进行了一些验证,不过在我找到数据哪里不匹配后,真相水落石出了。

    4a. 数据不匹配的真相

    前面说过,我使用的是剪裁对齐的图片,当我快速的一张一张过这些图片时,发现CelebA的人脸照片里,双眼都在同一个位置,甚至嘴的位置也大致相同,不管人脸的姿态和大小怎么变化。稍微想一下就明白了,CelebA数据集是自动化处理得到的,所以一定是使用人脸检测软件识别出人脸,然后校正到图像中央(所以即使左右翻转双眼和嘴位置也不变)。而我手工下载的照片则没有注意这一点!

    把我自己收集的照片也做相同的位置校正后,之前训练的网络认出凯特和蒙娜丽莎是女人了!第一张人脸确实比较难识别,所以分类器仍旧认成是男人,但也更接近正确了。

    那么Facenet为什么能处理位置分布的不同也就明朗了,阅读它的文档和代码后发现:它使用CASIA数据集训练时,用MTCNN做人脸检测对齐,然后做随机剪裁,这就相当于把位置变化了;而使用VGGFace2数据集时除了翻转不需要做数据增强,因为VGGFace2数据集中的图片是这样的:
    在这里插入图片描述
    所以归根结底,还在于训练数据。

    等等,卷积的平移不变性(translation invariant)呢?

    到这可能就有读者有疑问了,不是说好的卷积具有平移不变性吗?!为啥你这眼睛的位置一变,人脸就识别不出来了呢?!

    为此,我重新查阅了《深度学习》第九章 卷积网络 9.2 动机,这一节写道:

    对于卷积,参数共享的特殊形式使得神经网络层具有对平移等变(equivariance)的性质。如果一个函数满足输入改变,输出也以同样的方式改变这一性质,我们就说它是等变(equivariant)的。

    就是说输入数据的位置变了,输出数值不变但是输出相应的也会做相同的位移。

    9.3 池化,写道:

    当输入作出少量平移时,池化能够帮助输入的表示近似不变(invariant)。对于平移的不变性是指当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。

    “等变”!“少量”!“近似”!“大多数”!可见教科书说的就是严谨!不知道谁那么缺德脑补成“平移不变性”,把我都带歪了。。。。

    澄清卷积“平移不变性”的误解,已经有人做研究了:《Why do deep convolutional networks generalize so poorly to small image transformations?》《证伪:CNN中的图片平移不变性》和《既然cnn对图像具有平移不变性,那么利用 图像平移(shift)进行数据增强来训练cnn会有效果吗?》的首位回答对这个问题也都说得非常清楚,他俩都提到了前述论文。不过即使这样,在他们文章的评论里和别人的回答里还有不少不同声音,比如有人猜测全卷积网络/全局池化就能平移不变了,读者们不要被误导。

    作为结论,大致上是这样:卷积和池化有能力允许网络具有某些不变性,但需要用变化的数据来训练网络,使之学到期望的不变性。

    4b. 数据不匹配的真相

    正是由于对CNN的“平移不变”理解不透,导致我之前分析数据不匹配时一直存在盲区,没往人脸位置那方面考虑。但是我一开始也使用了随机剪裁的数据增强呀,为什么不起作用呢?

    仔细看一下代码会发现,每个样本只有十分之一的概率会随机剪裁,因为当初做数据增强时并不知道哪里不匹配,就只是打散弹枪式的做各种增强,样本中十分之一的随机剪裁不足以影响网络最终的参数。输入网络的图片都是从178x218剪裁到160x160,凯特那张照片这么处理后眼睛偏离中心确实就很多了。。。Facenet训练时是每个样本都做随机剪裁的,所以它能够应付这种位置变化。

    因此,在性别分类器这个例子里,每张图片都做随机剪裁就可以解决数据不匹配的问题。不过对于这个应用,端到端的解决方案并不是必需的,人脸检测+人脸识别组成pipeline是这类应用的普遍解决方式,Facenet之所以要训练变化的位置可能也只是为了提高模型的性能和鲁棒性。

    另外,
    Understanding Black-box Predictions via Influence Functions提到使用影响函数来帮助解决数据不匹配问题,但两年过去也没听到进一步的成果,所以我猜测可能在实际中并没有取得太大的成效。

    展开全文
  • 卷积中反转平的理解

    千次阅读 2019-08-03 23:02:14
    卷积的定义中为什么函数g(τ)要先翻转为g(-τ)再平为g(x-τ)而不是直接记作g(τ-x)这样做有什么好处么? 说点我的理解,希望有所帮助。(楼上也有类似观点,不过按照我的理解再解释一下) 教程中卷积运算的...

    在卷积的定义中为什么函数g(τ)要先翻转为g(-τ)再平移为g(x-τ)而不是直接记作g(τ-x)这样做有什么好处么?

    说点我的理解,希望有所帮助。(楼上也有类似观点,不过按照我的理解再解释一下)

    教程中卷积运算的解释是反褶g(-τ)、移位g(x-τ)、加权f(τ) *g(x-τ)、叠加(积分)。这一解释是符合实际系统响应的过程的。

    关键就是时间线,输入信号和系统响应是在同一个时空,同一时间线上发生的。
    在这里插入图片描述
    我们记录信号如上图中第一行f(t)是输入信号,g(t)是系统响应,两者都是在同一个坐标系中按照时间流逝方向描述的,这个描述没有问题。但是如果两个信号在同一时空相互作用时,就不能直接移位积分(这样操作是求互相关)。

    实际中输入信号是从0时刻开始进入系统,而系统的响应也是从0时刻开始产生作用的。看第三行,系统响应经过反褶再平移,即输入信号的零时刻进入系统的零时刻,随着时间推移,两者逐步交叠,仔细想想,这样才是和实际情况是一致的。反褶再移位、加权、叠加(积分)只是模拟了现实中一个信号进入一个系统并输出结果的实际过程。

    另外

    对于卷积还有另外一种解释,将卷积理解为对系统响应移位g(t-τ)、加权(权值为某时刻输入信号f(τ))再叠加的过程。(参见https://www.zhihu.com/question/22298352… 不推荐用“反转/翻转/反褶/对称”等解释卷积。好好的信号为什么要翻转?导致学生难以理解卷积的物理意义。)

    这种解释看似相对反褶、移位、加权、叠加的方式更好理解一些,但它只是卷积一个数学计算方法,没有以时间和发生过程为标尺,和实际过程是不相符的。反褶后移位、加权、叠加输出的结果就是输入信号进入系统后按照时间推移得到的系统响应y(t)。参见https://en.wikipedia.org/wiki/Convolution…中的两幅动画很生动。
    在这里插入图片描述
    在这里插入图片描述
    而移位、加权、叠加的方式只存在于数学计算中,即卷积可以一次算出一个信号在所有时间的响应值,再把各个信号相加,这在实际中是不可能发生的。

    最后再上一张wiki中的图片,直观的比较出了卷积、互相关和自相关计算的差别
    在这里插入图片描述

    展开全文
  • 为什么卷积网络具有平不变性 简单地说,卷积+最大池化约等于平不变性。 卷积:简单地说,图像经过平,相应的特征图上的表达也是平的。 下图只是一个为了说明这个问题的例子。输入图像的左下角有一个人脸,...
  • 卷积/圆周卷积

    千次阅读 2018-10-29 23:18:40
    卷积/圆周卷积 圆周卷积 线性卷积的延拓 若x1(n)和x2(n)分别为N1与N2的有限长序列,则它们的线性卷积y1(n)的长度为N1+N2-1的有限长序列。而它们以N点做圆周卷积y2(n)则... N1+N2-1,圆周卷积等同于线性卷积,即y...
  • 为什么卷积神经网络具有平不变性 简单地说,卷积+最大池化约等于平不变性。 卷积:简单地说,图像经过平,相应的特征图上的表达也是平的。 下图只是一个为了说明这个问题的例子。输入图像的左下角有一个...
  • 线性卷积、周期卷积和循环卷积

    千次阅读 多人点赞 2020-07-22 12:59:44
    线性卷积、周期卷积和循环卷积 例题:已知序列x1(n)=[0,2,2,1] (n=0,1,2,3); x2(n)=[1,2,-1,1] (n=0,1,2,3).求解 (1)计算线性卷积y1(n)=x1(n)✳x2(n); (2)计算周期卷积y2(n)=x1(n)⊛x2(n);(N=5) (3)计算循环卷积y3(n...
  • CNN笔记:通俗理解卷积神经网络

    万次阅读 多人点赞 2016-07-02 22:14:50
    通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012年我在北京组织过8期machine learning读书会,那时“机器学习”非常火,很多人都对其抱有巨大的热情。当我2013年再次来到北京,有...
  • 最容易理解的对卷积(convolution)的解释

    万次阅读 多人点赞 2017-01-25 15:14:49
    啰嗦开场白读本科期间,信号与系统里面经常讲到卷积(convolution),自动控制原理里面也会经常有提到卷积。硕士期间又学了线性系统理论与数字信号处理,里面也是各种大把大把卷积的概念。至于最近大火的深度学习,更...
  • 卷积笔记

    2020-12-11 15:27:15
    文章目录卷积神经网络CNN零、简单的说明一、卷积运算1.1 卷积操作1.2 特点二、池化2.1 池化的目的2.2 池化运算2.3 局部平不变性2.4 卷积与池化作为一种无限强的先验三、其他参数3.1 并行卷积3.2 输入值与核3.3 ...
  • 这种咬尾卷积编码器的结构如 ETSI TS 136 212 V13.0.0 中所述。 对于LTE信道编码仿真,您必须使用trellStr = poly2trellis(7,[133 171 165])。 编码器移位寄存器的初始值应设置为输入流中最后6个信息位对应的值。...
  • 线性卷积与圆周卷积

    2013-01-05 23:26:38
    动态演示两个序列进行圆周卷积x1(n)⊙x2 (n)的过程,要求动态演示翻转、移位、乘积、求和的过程;圆周卷积默认使用两个序列中的最大长度,但卷积前可以指定卷积长度N用以进行混叠分析;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,129
精华内容 9,251
关键字:

卷积的时移