卷积

【68】一维和三维卷积

荒凉一梦 提交于 2020-03-01 19:38:02
1. 2维数据 从卷积神经网络框架,到如何使用它进行图像识别、对象检测、人脸识别与神经网络转换 即使大部分讨论的图像数据,某种意义上而言都是2D数据,考虑到图像如此普遍 许多所掌握的思想不仅局限于2D图像,甚至可以延伸至1D,乃至3D数据 关于2D卷积,可能会输入一个14×14的图像,并使用一个5×5的过滤器进行卷积 接下来看到了14×14图像是如何与5×5的过滤器进行卷积的 通过这个操作会得到10×10的输出 如果使用了多通道,比如14×14×3,那么相匹配的过滤器可能是5×5×3 如果使用了多重过滤,比如16,最终你得到的是10×10×16 2. 1维数据 事实证明早期想法也同样可以用于1维数据 举个例子,左边是一个EKG信号,或者说是心电图(electrocardiogram) 当在胸部放置一个电极,电极透过胸部测量心跳带来的微弱电流 正因为心脏跳动,产生的微弱电波能被一组电极测量 这就是人心跳产生的EKG,每一个峰值都对应着一次心跳 如果想使用EKG信号,比如医学诊断 那么将处理1维数据,因为EKG数据是由时间序列对应的每个瞬间的电压组成 这次不是一个14×14的尺寸输入,可能只有一个14尺寸输入 在这种情况下可能需要使用一个1维过滤进行卷积 只需要一个1×5的过滤器,而不是一个5×5的 当对这个1维信号使用卷积,将发现一个14维的数据与5维数据进行卷积

(附代码)一看就会!详解卷积后的图片size、卷积核大小、channel深度计算公式

大城市里の小女人 提交于 2020-03-01 16:37:26
本文参考资料 Stanford CS231n AlexNet VGG ResNet DenseNet 卷积神经网络 随着CV的发展,卷积神经网络有越来越多的应用,但是在写代码的时候,size、channel匹配常常是我们关心的问题。 图片大小计算公式 卷积示意图: 两个 Filter(卷积核) ,输出两个矩阵,深度也就是2 初始图片+pad1是周围加了1圈0,从5x5x3( 3代表RGB三个颜色 )变为7x7x3, 但笔者下文给出的计算公式是根据原图片大小给出的,因Pytorch默认pad层为1,若考虑容易导致重复。 因为图片有 三个颜色通道,深度是3,因此filter的深度也是3 ,再加上大小为3x3,故filter矩阵是3x3x3矩阵 图片中最右侧的绿色框为输出,相当于对三个颜色通道进行了加权平均 输出矩阵的大小计算为(5( 原图 )+1( pad层 )-3( 卷积核大小 ))=3( 输出大小 ),因此输出3x3矩阵,加上两个filter,为3x3x3 看不太懂?下面还有例子。 Conv2d代码详解 笔者将使用Pytorch的Conv2d搭建一个简单的卷积神经网络例子,并将卷积核大小设置为5x5。 Conv2d参数: 下面是使用 28*28的MNIST数据集 的模型初始化, 备注里包含了卷积核的大小、模型传递方式。 conv net的结构设计比较复杂,一般是: input->[

图像分类经典论文阅读笔记3:GoogLeNet-Going deeper with convolutions

醉酒当歌 提交于 2020-03-01 15:29:28
1.概述 GoogLeNet(Inception V1)采用 模块化 结构,包括500万个参数(AlexNet参数量的十二分之一),网络包括5层卷积层(每层由卷积层或Inception结构堆叠构成)和一个全连接层,共计 22 层。因此,在计算资源或内存有限时,GoogLeNet是比较好的选择。 论文研究目标:利用 赫布(Hebbian)定理 和 多尺度处理 直觉设计增加深度和宽度并提高计算资源利用率的稀疏网络结构; 赫布定理:神经元一起激发,一起连接(即视觉信息在不同尺度上处理然后聚合); 评价准则:top-1错误率和top-5错误率:6.67%(取得ILSVRC2014比赛分类项目冠军); 数据库:ILSVRC2014,预处理操作: 零均值化 。 2.网络结构 一般来说, 提升网络性能最直接的办法就是增加网络的深度和宽度,深度是指网络层次数量、宽度是指神经元数量 。但是这种方法存在以下问题: (1)参数太多,如果训练数据集有限,容易产生过拟合; (2)网络越大,参数越多,计算复杂度越大; (3)网络越深,容易出现梯度消失问题,难易优化模型。 解决上述问题的方法自然就是在增加网络深度和宽度的同时减少网络参数,那么如何 减少参数 ? (1)使用2个3X3卷积代替1个5X5卷积,使用3个3X3卷积代替1个7X7卷积(感受野相同); (2)通过1X1卷积降维; (3

反卷积与棋盘效应(Checkerboard Artifacts)

蹲街弑〆低调 提交于 2020-03-01 10:58:31
当我们仔细观察由神经网络生成的图像时,我们经常会看到一种奇怪的棋盘图案。在某些情况下,它比其他情况更明显,但最近的大部分模型都表现出这种行为。 当我们要用到深度学习来生成图像的时候,往往是基于一个低分辨率且具有高维的特征图。我们通常使用 反卷积 操作来完成此操作,但不幸的是,当卷积核大小不能被步长整除的时候,会出现棋盘现象 并且在二维图片上,情况会更加严重: 方法尝试1:现在,神经网络在创建图像时通常使用多层反卷积,从一系列较低分辨率的描述中迭代地构建较大的图像。虽然这些堆叠的去卷积可能会消除伪影,但它们通常会复合,从而在各种尺度上产生伪影。 方法尝试2:在反卷积后面,再接一个步长为1的卷积,效果有限 方法尝试3:调整卷积核的权重,适当加大重叠部分少的权重,虽然理论有效,但在实际操作中,不仅有困难也会减弱模型的表达力 方法尝试4:使得卷积核大小不能被步长整除,但卷积核权重的学习不均匀也会导致伪影现象(下图为步长为2,核大小为4所产生的现象) 正确的方法尝试5:调整图像大小(使用 最近邻插值 或 双线性插值 ),然后执行卷积操作。这似乎是一种自然的方法,大致相似的方法在图像超分辨率方面表现良好 方法对比实验,效果最好的是方法5 参考资料: https://distill.pub/2016/deconv-checkerboard/ 当我们仔细观察由神经网络生成的图像时

卷积 & 杜教筛

泪湿孤枕 提交于 2020-03-01 08:44:39
目录 卷积 杜教筛 前言:发现最近都没怎么写博客,,,赶紧发篇以前记的笔记 凑凑数 卷积 卷积定义:   如果有数论函数 \(f, g\) , 那么它们卷积的第 \(n\) 项为 \((f * g) (n)\) ,设这个卷出来的新函数为h,那么有    \[h(n) = \sum_{k | n} f(k) g(n / k) = \sum_{ij = n}f(i) g(j)\]    一些性质:   1,积性函数的卷积还是积性函数   证明: 现有 \(f, g\) 为积性函数,且 \(gcd(p, q) == 1\) ,求证 \(h(p) \cdot h(q) = h(qp).\)    \[h(p) \cdot h(q) = \sum_{ab = p}f(a) g(b) \cdot \sum_{cd = q}f(c) g(d)\]    \[= \sum_{a} f(a) g(\frac{p}{a}) \sum_{c} f(c) g(\frac{q}{c})\]    \[= \sum_{a} \sum_{c} f(a) f(c) g(\frac{p}{a}) g(\frac{q}{c})\]    \[= \sum_{a} \sum_{c} f(ac) g(\frac{pq}{ac})\]   因为 \(ac \cdot \frac{pq}{ac} = pq\) ,所以   

杜教筛——省选前的学习1

空扰寡人 提交于 2020-03-01 08:34:04
BZOJ 3944 ——Sum 题目要求给定一个数$N$,$N \leq 2^{32} - 1$,求 $$ans1 = \sum_{i = 1}^N \phi (i), ans2 = \sum_{i = 1}^N \mu (i) $$ ——蛤?这个怎么做?我只知道线性筛。。。 先介绍$O(N)$的算法——线性筛。 由于Euler函数和Mobius函数都是积性函数(即对于$(a, b) = 1$, $f(ab) = f(a)f(b)$),可以利用类似贾志鹏线性筛的方法$O(n)$筛出1到$N$所有数的函数值。 1 #include<cstdio> 2 #include<cstring> 3 typedef long long LL; 4 const int N = 1000050; 5 LL phi[N], mobius[N]; 6 int pr[300000]; 7 void calc(int n) { //计算[1, n]的phi值及mobius值 8 memset(phi, -1, sizeof phi); 9 memset(mobius, -1, sizeof mobius); 10 int prnum = 0, i, j; 11 phi[1] = mobius[1] = 1; 12 for (i = 2; i < n; ++i) { 13 if (phi[i] < 0) {

【算法】莫比乌斯反演

旧城冷巷雨未停 提交于 2020-03-01 06:53:15
  在正文开始之前感谢一下几篇论文 & 博客以及一位大佬 remoon_OFN 。   1. 2016国家集训队论文任之洲《积性函数求和的几种方法》   2. PoPoQQQ 的相关题解(%%%)。   3. 当然除此之外还有很多……   其实两三个月之前我就已经接触过反演了,但在那个时候对反演完全是一种懵逼的状态。重点其实还是在于通过自己多推式子,多化式子来理解和接受卷积的这样一种运算。当然,丰富的数论知识也是必不可少的(有时候一些题目会用到一些奇奇怪怪的性质)。实际上,反演就是已知一个函数 \(g\) 与 \(f\) 的关系,要通过 \(f\) 求出 \(g\),或通过 \(g\) 求出 \(f\)。反演,可以理解为一种变换。那么,莫比乌斯反演就是一种特别的变换: 若我们有 \(f = 1 * g\) 则有 \(g = \mu * f\)   这是一种式子的变形,当原本的式子中出现了\(f\) 或 \(g\) 的时候,可以考虑用另一个函数来替换它,从而找到一个易求得的式子。常用的卷积关系有如下几种: \(\mu * 1 = \epsilon \) \(\phi * 1 = id\) \(id * \mu = \phi\)   (以上式子中的函数均为积性函数)。注意:积性函数的卷积依然为积性函数,并且卷积满足结合律, 交换律,分配律。  

opencv图像处理之形态学转换

北战南征 提交于 2020-03-01 03:33:32
文章目录 1.腐蚀、膨胀、梯度 2.开运算、闭运算、礼帽、黑帽 3.创建不同形状的核 1.腐蚀、膨胀、梯度 形态学操作: 根据图像形状进行的简单操作。一般情况下对 二值化图像 进行的操作。 腐蚀: 就像土壤侵蚀一样,这个操作会把前景物体的边界腐蚀掉(但是前景仍然是白色)。这是怎么做到的呢?卷积核沿着图像滑动,如果 与卷积核对应的原图像的所有像素值都是1 ,那么中心元素就保持原来的像素值,否则就变为零。这对于去除白噪声很有用,也可以用来断开两个连在一块的物体等。 膨胀: 与腐蚀相反, 与卷积核对应的原图像的像素值中只要有一个是1 ,中心元素的像素值就是1。所以这个操作会增加图像中的白色区域(前景)。一般在去噪声时先用腐蚀再用膨胀。因为腐蚀在去掉白噪声的同时,也会使前景对象变小。所以我们再对他进行膨胀。这时噪声已经被去除了,不会再回来了,但是前景还在并会增加。膨胀也可以用来连接两个分开的物体。 梯度: 其实就是一幅图像膨胀与腐蚀的差别。结果看上去就像前景物体的轮廓。 代码速记: cv2.erode() cv2.dilate() cv2.morphologyEx():cv2.MORPH_GRADIENT 参数解释: cv2 . erode ( raw_binary , kernel , iterations = 1 ) #原图像、卷积核、迭代次数 cv2 . dilate ( raw

FMT 和 子集卷积

痴心易碎 提交于 2020-03-01 01:11:47
FMT 和 子集卷积 FMT 给定数列 $ a_{0\dots 2^{k}-1} $ 求 $ b $ 满足 $ b_{s} = \sum_{i\in s} a_i $ 实现方法很简单, for( i in 0 to n-1 ) for( j in 0 to 2^n-1) if( j & ( 1 << i ) ) a[j] += a[j ^ ( 1 << i )] 然后称为 $ B = \text{FMT}(A) $ ,快速莫比乌斯变换 想要还原也很简单,把代码反着写: for( i in n-1 downTo 0 ) for( j in 2^n - 1 downTo 0) if( j & ( 1 << i ) ) a[j] -= a[j ^ ( 1 << i )] 当然, $ i $ 的顺序可以是原来的顺序,因为按照哪个顺序枚举位根本不重要 同时,$ j $ 的顺序也不重要,考虑对于一个数字,它只有在当前枚举的位数为 1 的时候才被执行,所以就算已经枚举到这位是 0 的状态,它也不会被更新。 这样 $ A = \text{IFMT}( B ) $ FMT 可以写成 FFT 那样的形式,就不赘述了。 或卷积 或卷积就需要用到这个东西。 或卷积是指: \[ C_s = \sum_{i|j=s} A_i B_j \] 有一个结论, $ \text{FMT}(C) = \text{FMT}

Siam FCN Reading

落花浮王杯 提交于 2020-02-29 16:41:21
/*--> */ /*--> */ 编辑: Yunyao Mao 审订: Qiqi Zhou 1. 问题描述: 跟踪视频中任意的一个目标. 该目标在视频第一帧被一个矩形框标出. 2. 前人工作: 利用待跟踪的视频, 用在线方式学习表观模型(appearance model). ——只能学习到相对简单的模型 利用在相关的任务中预训练得到的深度卷积神经网络: shadow method: ——不能充分的发挥 end-to-end 训练的优势. SGD 微调: ——需要在待跟踪视频上执行 SGD 算法来微调参数, 无法达到实时性的要求. 3. 这篇文章: 利用孪生网络进行相似性学习 训练一个 Siamese 网络, 利用相似性计算来实现在搜索图片( search image )上定位范例图片( exemplar image ). 训练图片: 从被标注的视频( 每帧中的目标都被 bounding box 框出 )中获取用于训练的图片对, 两张图片的帧间隔小于T. search image: 以目标为中心的大小为255*255的图片, 超出原图的区域用合理的RGB值填充, 不对原图进行缩放. exemplar image: 以目标为中心的大小为127*127的图片. 具体地, 若 bounding box(红色框) 的大小为 (w, h), padding 的大小为 p, 则调整因子 s