• ## Deconv

2017-04-23 19:34:18
https://github.com/vdumoulin/conv_arithmetic https://www.zhihu.com/question/43609045/answer/98699795 ... ... ... ... http://buptldy.github.io/2016/10/29/2016-10-29-deconv/
https://github.com/vdumoulin/conv_arithmetic

http://buptldy.github.io/2016/10/29/2016-10-29-deconv/
展开全文
• use to deconv the seismic data
• ## deconv 函数介绍

千次阅读 2019-02-21 11:04:49
deconv Deconvolution and polynomial division Syntax [q,r] = deconv(u,v) Description [q,r] = deconv(u,v) 使用长除法将向量v从向量u中解卷积，并返回商q和余数r，使得u = conv（v，q）+ r。 如果u和v是多项式...
deconv
Deconvolution and polynomial division
Syntax
[q,r] = deconv(u,v)
Description
[q,r] = deconv(u,v) 使用长除法将向量v从向量u中解卷积，并返回商q和余数r，使得u = conv（v，q）+ r。 如果u和v是多项式系数的向量，则对它们进行去卷积相当于将由u表示的多项式除以由v表示的多项式。
废话那么多，就是多项式除法，，使用MATLAB表达为：[q,r]= deconv(u,v);
所以，，使用MATLAB表示为：u = conv(q,v)+r;
Polynomial Division
Create two vectors u and v containing the coefficients of the polynomials   ，respectively. Divide the first polynomial by the second by deconvolving v out of u, which results in quotient coefficients corresponding to the polynomial 2x+7 and remainder coefficients corresponding to 2x+2.
分别创建包含多项式系数的两个向量u和v。通过对u中的v进行去卷积将第一多项式除以第二多项式，这导致对应于多项式2x + 7的系数和对应于2x + 2的余数系数。
u = [2 7 4 9];
v = [1 0 1];
[q,r] = deconv(u,v)

作者：李锐博恩（Reborn）
来源：CSDN
原文：https://blog.csdn.net/reborn_lee/article/details/83420213
版权声明：本文为博主原创文章，转载请附上博文链接！


展开全文
• <p>Also, checking the graph it seems that the only difference between the two is the <code>LceBsign</code> op before the deconv op as seen in the pictures below. <p>Is this expected behaviour or am I...
• <p>I used deconv with 2x2 kernel and 2x2 stride for a 2x upscaling. I also created a wrapper function to build deconv layers (because my model has several of thos) <p>For whatever reasons, I could not...
• <div><p>I tried implementing the training function of the model_01_deconv.py function but I get errors starting with the first being the following: File "model_01_deconv.py", line 382, in ...
• Conv-Deconv-神经网络- 介绍 该项目使用Pytorch [1]实现Zeiler的方法来可视化反卷积神经网络。 还实现了卷积神经网络以帮助测试结果。 网络使用了预训练的VGG16模型和一些图片。 我希望演示一个示例，该示例使用...
• <p>For regular convolutions the weight distribution is (h,w,c,n), while for deconv layers it's (h,w,n,c). Why is this the case?</p><p>该提问来源于开源项目：lmb-freiburg/flownet2</p></div>
• <div><p>Deconv, which is used in flownet, is registered into CONV_LAYERS in this PR.</p><p>该提问来源于开源项目：open-mmlab/mmcv</p></div>
• 之前一段时间学习cs231n时，写过的几个naive版本的conv和deconv函数，今天拿出来跟大家分享。 conv def conv(X, w, b, conv_param): ''' X: input with shape (C, H, W) W: filter with shape (C, HH, WW) b:...
之前一段时间学习cs231n时，写过的几个naive版本的conv和deconv函数，今天拿出来跟大家分享。

conv

def conv(X, w, b, conv_param):
'''
X: input with shape (C, H, W)
W: filter with shape (C, HH, WW)
b: bias float
'''

C, H, W = X.shape
C, HH, WW = w.shape
stride = conv_param['stride']

H_o = 1 + (H + 2 * pad - HH) // stride
W_o = 1 + (W + 2 * pad - WW) // stride

# conv
Y = np.zeros((H_o, W_o))
for i in range(H_o):
for j in range(W_o):
left_top_y, left_top_x = i * stride, j * stride
conv_map = X[:, left_top_y:(left_top_y + HH), left_top_x:(left_top_x + HH)] * w
Y[i, j]  = np.sum(conv_map) + b

return Y

def conv_forward_naive(x, w, b, conv_param):
"""
A naive implementation of the forward pass for a convolutional layer.

The input consists of N data points, each with C channels, height H and width
W. We convolve each input with F different filters, where each filter spans
all C channels and has height HH and width HH.

Input:
- x: Input data of shape (N, C, H, W)
- w: Filter weights of shape (F, C, HH, WW)
- b: Biases, of shape (F,)
- conv_param: A dictionary with the following keys:
- 'stride': The number of pixels between adjacent receptive fields in the horizontal and vertical directions.
- 'pad'   : The number of pixels that will be used to zero-pad the input.

Returns a tuple of:
- out: Output data, of shape (N, F, H', W') where H' and W' are given by
H' = 1 + (H + 2 * pad - HH) // stride
W' = 1 + (W + 2 * pad - WW) // stride
- cache: (x, w, b, conv_param)
"""

out = None

# get params
N, C, H, W   = x.shape
F, C, HH, WW = w.shape

# conv for evry image
out = []
for i in range(N):
channel_list = []
for j in range(F):
y = conv(x[i], w[j], b[j], conv_param)
channel_list.append(y)
out.append(channel_list)

out = np.array(out)

cache = (x, w, b, conv_param)
return out, cache

deconv

def conv_backward_naive(dout, cache):
"""
A naive implementation of the backward pass for a convolutional layer.

Inputs:
- dout: Upstream derivatives.
- cache: A tuple of (x, w, b, conv_param) as in conv_forward_naive

Returns a tuple of:
- dx: Gradient with respect to x
- dw: Gradient with respect to w
- db: Gradient with respect to b
"""

dx, dw, db = None, None, None

x, w, b, conv_param = cache
stride = conv_param['stride']
N, C, H, W = x.shape
F, _, HH, WW = w.shape
_, _, H_o, W_o = dout.shape

# calculate the db
db, temp = np.zeros((F)), dout.transpose(1, 0, 2, 3)
for f in range(F):
db[f] = np.sum(temp[f, :, :, :])

# calculate the dx and dw
for n in range(N):
for f in range(F):
for i in range(H_o):
for j in range(W_o):
y_left_top, x_left_top = i * stride, j * stride
current_x_matrix = x_pad[n, :, y_left_top:(y_left_top + HH), x_left_top:(x_left_top + WW)]
dw[f] += dout[n, f, i, j] * current_x_matrix
dx_pad[n, :, y_left_top:(y_left_top + HH), x_left_top:(x_left_top + WW)] += w[f] * dout[n, f, i, j]

return dx, dw, db


展开全文
• ## dilation conv 和 deconv

千次阅读 2018-07-02 11:23:25
最近工作要用到dilation conv，在此总结一下空洞卷积，并和deconv进行对比。dilation conv首先空洞卷积的目的是为了在扩大感受野的同时，不降低图片分辨率和不引入额外参数及计算量（一般在CNN中扩大感受野都需要...
最近工作要用到dilation conv，在此总结一下空洞卷积，并和deconv进行对比。dilation conv首先空洞卷积的目的是为了在扩大感受野的同时，不降低图片分辨率和不引入额外参数及计算量（一般在CNN中扩大感受野都需要使用s>1的conv或者pooling，导致分辨率降低，不利于segmentation。如果使用大卷积核，确实可以达到增大感受野，但是会引入额外的参数及计算量）。知乎上关于空洞卷积的前两个回答比较不错，可以参考借鉴。 如何理解空洞卷积（dilated convolution）？空洞卷积的feature map size计算：对于K*K的卷积核，rate =r，则扩充后的卷积核size = K+(K-1)*(r-1)。rate可以理解为K*K的卷积核上的一像素点旁边第rate个点是原K*K的卷积核邻近的点，也相当于K*K的卷积核中两个相邻的点中间插入了r-1个点。特别地，对于3*3的卷积核，如果pad = rate，则特征图尺寸大小不改变。不同rate的空洞卷积组合，具体的感受野如何获得呢？例如rate =1的3*3卷积（就是普通卷积），后接rate=2的3*3卷积，感受野是7*7.一种理解方法是rate=2的3*3卷积其实相当于5*5卷积，3*3和5*5叠加自然是7*7卷积，总结一个一般性的结论， 对于s=1, a*a的常规卷积和b*b的常规卷积组合相当于（a+b-1）的卷积核（可以从平移的角度思考，参考下图）。从下图中也可以看出，最下面的表示原图，1*1卷积依次在原图上以s=1进行卷积（s一般为1，如果不为1，就会改变特征图尺寸，空洞卷积也就失去作用）得到不同颜色的块，如右边的一行块所示。在这上面进行rate=2的3*3卷积，可以看到每次卷积会用到红色，黄色，绿色三个块，对应到原图紫色区域，刚好是7*7.空洞卷积一般应用在segmentation，对于detection也有很大的用处，使用的时候，如果一直使用同一个rate的空洞卷积或者rate存在公约数就会出现 The Gridding Effect问题，简单来说就是一直使用了底层特征图的部分像素点，而忽略了很大一部分像素点。如下图所示，最上面表示bottom层使用rate=2的空洞卷积，从下面三种情况可以看出，使用2+3或者2+5就不会出现白色的像素点没用上的情况。这个问题在图森的文章里面提到过，Understanding Convolution for Semantic SegmentationHDC把rate设成锯齿状。DUC用于上采样。这从侧面说明了ASPP的改进地方，ASPP用了平行的几个空洞卷积（rate=6,12,18,24等）。deconv转置卷积多数用于上采样。转置怎么理解呢？对于一个[3,3]的input，可以视为[1,9]，欲得到[2,2]的输出，视为[1,4]。则需要一个[4,9]的权重矩阵，反之，如果从[1,4]得到[1,9]，那么需要[9,4]的权重矩阵，也就是之前的转置。个人觉得这只是一个shape的转置，并不是说它的value就是原权重矩阵转置的对应value。 这篇博文关于相关概念的解释比较清楚：deconv关于实现，参考github，图片不搬过来了，可以对照着打开看。直接看Transposed conv部分。蓝色部分是输入，绿色部分是输出。上面一行，s=1。第一个图其实就是标准卷积的逆过程，为什么说没有pading呢，我觉得是为了和标准卷积对应，因为4*4生成2*2不需要pad。后面的half padding其实就是希望输出和输入一样的特征图（关于conv的三种形式：full其实是放大，same是同等输出， valid是downsamping，参考链接），在普通卷积，这样的过程是需要进行pad的，所以此处也写了padding。其实把half padding就是普通卷积的same padding。Arbitrary padding是随机补充，还没太弄懂，有清楚的朋友还望赐教。full padding是希望输出比输入要小，相当于vaild conv，对应于普通卷积的full conv逆过程，所以有了full padding。下面一行，有了stride. 对应于标准卷积的s<1.在map中间插入0像素点（不同于dilation conv是skip掉一些像素点），接下来就转化成了s=1的卷积。至于为什么第一张图实际上还是有padding，我是这么理解的：因为填充了0像素点后还不能达到输出，所以就和no stride一样的做法，2*2插完值后变成3*3.但是要想输出为5*5，在s=1的情况下，必须要进行p=2。对应于正向的5*5输出3*3不需要padding，所以此处对应也不用padding.最后一张图，加了个odd，其实这是一个填充，目的为了让所有的map上的点都能用到（图中对应蓝色最右边一列）。参考链接总结起来，deconv中的padding是和conv的padding对应，并不是说deconv的padding=0，就真的没有填充；s<1时，先把map中的每个点插入部分0像素（和s有关），然后变成s=1的deconv. odd不是新概念，主要是为了充分利用map上的像素值。总起来说，dilation conv是对卷积核进行upsample，deconv是对feature map进行upsample；或者说，dilation conv是skip掉map中的一些元素，而deconv是对map中的元素进行补0操作。
展开全文
• Tensorflow反卷积（DeConv）实现原理+手写python代码实现反卷积（DeConv） 原文：https://blog.csdn.net/huachao1001/article/details/79131814 反卷积作用：上采样，...
• ## conv和deconv解读

万次阅读 2017-01-03 21:23:50
首先，要知道caffe里的卷积核都是三维的 在caffe中卷积核是三维的还是二维的？...关于deconv 这个概念很混乱，没有统一的定义，在不同的地方出现，意义却不一样。 上采样的卷积层有很多名字：全卷积（full
• deconv Deconvolution and polynomial division Syntax [q,r] = deconv(u,v) Description [q,r] = deconv(u,v) 使用长除法将向量v从向量u中解卷积，并返回商q和余数r，使得u = conv（v，q）+ r。 如果u和v是...
• <div><p>I may found a possible memory leak in deconv; <p>I run the code below several times, the memory of my program keeps rising. I used ASAN to test the memory leak, I got a report that the memory ...
• 函数 deconv 格式 [q r] = deconv(v,u)%多项式v除以多项式u，返回商多项式q和余多项式r。 注意：v、u、q、r都是按降幂排列的多项式系数向量。
• ## 对deconv的个人理解

千次阅读 2018-07-25 14:40:04
对于图像的语义分割，我觉得比较经典文章的基本上的框架是：conv + deconv + （后续的处理模块）。 在conv中，是这样操作的：举例说明 4x4的输入，卷积Kernel为3x3, 没有Padding / Stride, 则输出为2x2。输入矩阵...
• deconv的用处还挺广的，涉及到 - visualization - pixel-wiseprediction - unsupervised learning 都会用到deconv的结构。比如Deconvolutional Network做图片的unsupervised feature learning，ZF-Net论文中...
• python_deconv_demo 小型演示如何使测得的ESS信号去分解
• matlab几个图像恢复的程序代码-deconv_alm.m 主要针对运动模糊和离焦模糊，这是我的硕士课题之一，有兴趣的一起讨论下。
• matlab几个图像恢复的程序代码-deconv_tuberlin.m 主要针对运动模糊和离焦模糊，这是我的硕士课题之一，有兴趣的一起讨论下。
• matlab几个图像恢复的程序代码-deconv_sondhi.m 主要针对运动模糊和离焦模糊，这是我的硕士课题之一，有兴趣的一起讨论下。
• <div><p>The <a href="https://github.com/nyanp/tiny-cnn/tree/master/examples/deconv">deconvolution example</a> pretty much consistently crashes in the end, and sometimes even before the end (but this ...
• <div><h2>Quantization Method for conv, deconv and fc Layers. <p>Here I want to implement the quanzization on operation in conv, deconv and fc layers. Much quantization method are included in this ...
• deconv.</li><li>[x] Quantized fully connected layer and pass the tests for q_fully_connected.</li><li>[x] Quantized bias inside other kernels.</li><li>[x] Ensure acceptable accuracy on typical ...
• ## deconv理解

千次阅读 2018-11-16 10:07:08
近期在看fcn，提到 a natural way to upsample ...不是很懂，deconv是conv的正向与反向的颠倒。 原文网址： https://www.zhihu.com/question/43609045 博主不让复制，我只好贴图了。
• 上采样的卷积层有很多名字：全卷积（full convolution），网络内上采样（ in-network upsampling），微步幅卷积（fractionally-strided convolution），反向...deconv: output = (input - 1) * stride + kernel - 2*pad
• <div><p><a href="https://github.com/shiba24/3d-unet/blob/master/tensorflow/model.py">tensorflow/models.py</a> script tries to import conv3d and deconv3d wrappers from ...t exist. </p><p>该提问来源于开源...

...