精华内容
下载资源
问答
  • Lucy去卷积1.泊松过程及联合概率分布2.极大似然估计参考文献 1.泊松过程及联合概率分布 首先假设相机接收光子生成图像的过程符合泊松分布。 因此,一次曝光过程中,某像素位置接收到iii个光子的概率p(i)p(i)p(i)为:...

    上图来自https://www.zeiss.com/microscopy/int/solutions/reference/basic-microscopy/the-point-spread-function.html

    1.泊松过程及联合概率分布

    假设相机接收光子生成图像的过程符合泊松分布,曝光过程中某像素位置接收到 i i i个光子的概率 p ( i ) p(i) p(i)为:

    p ( i ) = exp ⁡ ( − λ ) ⋅ λ i i ! \qquad\qquad p(i)=\exp(-\lambda)\cdot\cfrac{\lambda^{i}}{i!} p(i)=exp(λ)i!λi

    那么针对一张 M ∗ N M*N MN的图像,所有像素的联合概率分布可以描述为:
    P ( I ) = ∏ exp ⁡ − Λ ⋅ Λ I I ! \qquad\qquad P(I)=\prod \exp^{-\Lambda}\cdot \cfrac{{\Lambda}^{I}}{I!} P(I)=expΛI!ΛI

    • I : I: I:包含了散粒噪声的图像信息;
    • Λ : \Lambda: Λ:不包含散粒噪声的图像信息

    其中,
    Λ = O ∗ P S F \qquad\qquad \Lambda=O*PSF Λ=OPSF

    • O : O: O:不包含散粒噪声的原始图像;
    • P S F ( 点 扩 散 函 数 ) : PSF(点扩散函数): PSF():点光源对光学系统的响应。
    • ∗ : *: :代表卷积运算。
      在这里插入图片描述

    2.极大似然估计

    很明显,如果要获得未被散粒噪声污染图像 Λ \Lambda Λ的一个好的概率估计,可以通过求 P ( I ) P(I) P(I)的极大似然估计。

    为了计算方便,取自然对数,则有:

    ln ⁡ ( P ( i ) ) = − ∑ ( Λ − I ln ⁡ ( Λ ) + l n ( I ! ) ) \qquad\qquad\ln({P(i)})=-\sum(\Lambda-I\ln(\Lambda)+ln(I!)) ln(P(i))=(ΛIln(Λ)+ln(I!))

    约去第三项,同时两边取负号将求极大值问题转化为极小值问题。令: J = − ln ⁡ ( P ( i ) J=-\ln(P(i) J=ln(P(i),有:

    J ( O ) = − ∑ ( O ∗ P S F − I ln ⁡ ( O ∗ P S F ) ) \qquad\qquad J(O)=-\sum \big(O*PSF-I\ln(O*PSF)\big) J(O)=(OPSFIln(OPSF))

    求导取极小值,有:
    ∇ J ( O ) = ( 1 − I O ∗ P S F ) ∗ P S F + \qquad\qquad\nabla J(O)=(1-\cfrac{I}{O*PSF})*PSF^{+} J(O)=(1OPSFI)PSF+

    这里 + ^{+} +代表伴随算子, P S F + ( x ) = P S F ( − x ) , x 代 表 图 片 的 尺 寸 , 如 二 维 图 片 ( X , Y ) PSF^{+}(x)=PSF(-x),x代表图片的尺寸,如二维图片(X,Y) PSF+(x)=PSF(x)x(X,Y)

    在极小值处, ∇ J ( O ) = 0 \nabla J(O)=0 J(O)=0

    P S F ( − x ) PSF(-x) PSF(x)归一化后为1,则:

    1 ∗ P S F = ∫ x P S F ( − x ) d x = 1 \qquad\qquad1*PSF=\int_xPSF(-x)\mathrm{d}x=1 1PSF=xPSF(x)dx=1.

    故有:
    I O ∗ P S F ∗ P S F ( − x ) = 1 \qquad\qquad\cfrac{I}{O*PSF}*PSF(-x)=1 OPSFIPSF(x)=1

    3.RL去卷积算法的两种形式

    3.1 增量式( Additive Solution)

    O k + 1 = O k + δ ⋅ ∇ J = O k + δ ⋅ ( 1 − I O k ∗ P S F ∗ P S F ( − x ) ) \qquad O_{k+1}=O_{k}+\delta\cdot\nabla J=O_{k}+\delta\cdot\big(1-\cfrac{I}{O_{k}*PSF}*PSF(-x)\big) Ok+1=Ok+δJ=Ok+δ(1OkPSFIPSF(x))

    3.2 倍增式(Multiplicative Solution)

    利用当算法收敛时, O k + 1 = O k O_{k+1}=O_{k} Ok+1=Ok,则:
    O k + 1 = O k [ I O k ∗ P S F ∗ P S F ( − x ) ] \qquad O_{k+1}=O_{k}\Big[\cfrac{I}{O_{k}*PSF}*PSF(-x)\Big] Ok+1=Ok[OkPSFIPSF(x)]

    注:有的文章中右半部分用的是相关(★),而非卷积:
    O k + 1 = O k [ I O k ∗ P S F ★ P S F ] \qquad O_{k+1}=O_{k}\Big[\cfrac{I}{O_{k}*PSF}★PSF\Big] Ok+1=Ok[OkPSFIPSF]
    这是因为:
    a ( t ) ∗ b ( t ) = a ( t ) ★ b ( − t ) \qquad a(t)*b(t)=a(t)★b(-t) a(t)b(t)=a(t)b(t)

    4. scikit-image的Python 实现

    skimage richardson_lucy中的代码如下,使用的是倍增式:

    def richardson_lucy(image, psf, num_iter=50, clip=True, filter_epsilon=None):
        """Richardson-Lucy deconvolution.
    
        Parameters
        ----------
        image : ndarray
           Input degraded image (can be N dimensional).
        psf : ndarray
           The point spread function.
        num_iter : int, optional
           Number of iterations. This parameter plays the role of
           regularisation.
        clip : boolean, optional
           True by default. If true, pixel value of the result above 1 or
           under -1 are thresholded for skimage pipeline compatibility.
        filter_epsilon: float, optional
           Value below which intermediate results become 0 to avoid division
           by small numbers.
    
        Returns
        -------
        im_deconv : ndarray
           The deconvolved image.
    
        References
        ----------
        .. [1] https://en.wikipedia.org/wiki/Richardson%E2%80%93Lucy_deconvolution
        """
        float_type = _supported_float_type(image.dtype)
        image = image.astype(float_type, copy=False)
        psf = psf.astype(float_type, copy=False)
        im_deconv = np.full(image.shape, 0.5, dtype=float_type)
        psf_mirror = np.flip(psf)
    
        # Small regularization parameter used to avoid 0 divisions
        eps = 1e-12
    
        for _ in range(num_iter):
            conv = convolve(im_deconv, psf, mode='same') + eps
            if filter_epsilon:
                relative_blur = np.where(conv < filter_epsilon, 0, image / conv)
            else:
                relative_blur = image / conv
            im_deconv *= convolve(relative_blur, psf_mirror, mode='same')
    
        if clip:
            im_deconv[im_deconv > 1] = 1
            im_deconv[im_deconv < -1] = -1
    
        return im_deconv
    

    参考文献

    [1] https://www.strollswithmydog.com/elements-of-richardson-lucy-deconvolution
    [2] 3D Microscopy Deconvolution using Richardson-Lucy Algorithm with Total Variation Regularization
    [3] https://en.wikipedia.org/wiki/Point_spread_function
    [4] 知乎 去卷积:怎么把模糊的图像变清晰?
    [5] https://www.zeiss.com/microscopy/int/solutions/reference/basic-microscopy/the-point-spread-function.html
    [6] skimage richardson_lucy

    展开全文
  • 引言:首先我们应该知道什么是卷积?干什么的?如何在自己的图像数据集上进行卷积操作?本篇文章就是解决这个为的。 1.首先谈一下什么是卷积? 答:(本人小学生六年级,哈哈)首先我们看一下这位博客的图: ...

    引言:首先我们应该知道什么是卷积?干什么的?如何在自己的图像数据集上进行卷积操作?本篇文章就是解决这个为的。

    1.首先谈一下什么是卷积?

    答:(本人小学生六年级,哈哈)首先我们看一下这位博客的图:

            是不是很生动形象地表达了 卷积的操作步骤,其中黄色的方框为3x3卷积模板,绿色为你要输入的图像,最后输出为橙色的框(后面那个,应该是橙色吧!)

            运算步骤:模板从左上角开始然后依次向右步长为1,进行滑动,在下一次滑动之前,首先就要进行卷积运行(黄色方框上的数字与绿色方框上的数按照相同在位置进行相乘(9次),然后结果相加(9次)),完事了。

    2.本帅做的工作是:在一幅图像上进行卷积操作,并进行可视化(使用tensorboard)。

    使用到的卷积函数为:conv2d。因为一幅图像为二维图像(W*H*C,长*宽*通道数)

    卷积代码:

    torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)

    输出大小维度计算公式 

    首先看一下效果图:(太着急了)

    原图 

     卷积操作之后的图像显示

    上图是对三通道图像进行卷积,下面展示一下对灰度化后的单通道卷积。

    效果展示:

    原图 

     卷积之后的图像 

    小伙伴梦猜猜看,为什么灰度化后的图像是上图的形式?采用了什么操作?欢迎在评论区留言哦。

    欢迎小伙伴梦一起探讨学习,我们都是热爱学习的小青年!!!

    展开全文
  • 当然实际操作时,通常还需要加入一定的正则,来限制卷积核中的噪声。 Image and depth from a conventional camera with a coded aperture 自然图像的特殊之处就是其梯度是稀疏的,因此可以用正则项惩罚梯度项,...

    (一)去空间不变的模糊核

    1)维纳滤波

    一个理想点经过相机后成的像由点扩散函数PSF(Point Spread Function)来描述。
    线性移不变的PSF导致的图像模糊:b=c*x+n n是噪声 例如衍射极限PSF 相机抖动模糊
    在这里插入图片描述 在这里插入图片描述

    直接去卷积会放大系统中高频部分的的噪声
    维纳滤波:把图像和噪声都看做是随机过程,并把去卷积的问题看作是一个最大似然问题去求解。
    在这里插入图片描述
    SNR(ω)是频率ω的信噪比
    当噪声很低时,SNR(ω)很高,上式接近于去卷积 。
    而当噪声较大时,则上式接近于0。
    实际上,对于自然图像,一般认为其功率谱与1/ww 线性相关,同时我们认为噪声是白噪声,其功率是与频率无关的常量
    那么一般SNR(ω)=1/w
    w
    在这里插入图片描述
    也可以理解为
    在这里插入图片描述

    2)Richardson-Lucy方法

    通过迭代的方式得到去卷积结果

    3)盲去卷积(卷积核未知)

    https://zhuanlan.zhihu.com/p/105500403
    可以假设噪声是均值为0的高斯噪声。
    先用部分图像块估算卷积核K(变分贝叶斯), 拟合图像的梯度分布(重尾分布)
    再用Richardson-Lucy算法进行去卷积

    High-quality Motion Deblurring from a Single Image 改进
    假设噪声满足高斯分布–>>更复杂的噪声模型,噪声的概率分布由其0阶、1阶、2阶梯度的分布来描述
    用混合高斯模型来拟合重尾模型–>>更简单的拟合重尾分布的函数
    用混合指数分布来描述模糊核的形态–>>加入了局部平滑区域的约束,避免出现振铃效应
    采用RL算法去卷积–>>复杂的优化方法,交替式的优化估计清晰图像L和模糊核K

    (二)失焦模糊:

    镜头是有景深的,因此景深范围内的物体可以清晰成像,不在这个范围内的物体则会显得模糊。
    失焦模糊对画面中每个点都不一致的。各个失焦距离的PSF构成失焦簇
    失焦的PSF其实和镜头的光圈形状高度相关,因此,失焦的PSF相对更加容易测量一些
    在这里插入图片描述
    在这里插入图片描述
    当镜头的像距、焦距固定好后,对焦平面也固定了。
    提前获取到失焦的图像x和清晰的图像b,可以反向去卷积得到卷积核c。
    当然实际操作时,通常还需要加入一定的正则化,来限制卷积核中的噪声。

    Image and depth from a conventional camera with a coded aperture
    自然图像的特殊之处就是其梯度是稀疏的,因此可以用正则项惩罚梯度项,防止振铃
    在这里插入图片描述
    在这里插入图片描述
    难点:
    即便知道了接近正确的卷积核的尺寸和形状,对应失焦类型的卷积核,也很难通过传统的去卷积方法得到清晰的图像。比如采用经典的Richardson-Lucy方法处理失焦图像很多时候会产生强烈的振铃效应
    用不同尺度的卷积核去卷积后,很多时候很难分清楚哪个更清晰, 特别是比正确尺寸略小的卷积核的去卷积结果很难和正确尺寸的结果相区分, 这导致我们很难为每个区域都选择出正确的卷积核。

    (三)运动模糊

    快门速度不够快时,拍摄的图像会模糊、拖尾,这种模糊我们称之为“运动模糊”

    生成方法:
    1)时间反失真
    高帧率多帧积累渲染的到低帧频。
    2)设定角度距离,对目标进行叠加

    难点:
    很难获取到准确的卷积核,因为卷积核跟物体的远近、物体运动的速度方向都有关系
    场景中的各个物体有不同的运动方向和速度,还可能有固定的背景,所以需要把需要恢复的物体分割开来。
    运动卷积核丢失了高频信息,去卷积技术就会面临严重的信噪比低的问题。

    水平一维运动物体的运动模糊相当于一个一维的Box Filter,这个卷积核的傅里叶变换是一个Sinc函数,有大量接近零的点,导致去卷积时出现大量的噪声,最终结果信噪比极低。这时的运动模糊使得很多频域信息损失掉了,无法准确恢复出原始信号。

    去模糊论文整理: https://github.com/subeeshvasu/Awesome-Deblurring

    展开全文
  • 我们处理feature的时候往往先要normalize encoding,使用python可以很容易做:from sklearn import preprocessingfrom scipy.stats import rankdatax = [[1], [3], [34], [21], [10], [12]]std_x = preprocessing....

    我们处理feature的时候往往先要normalize encoding,使用python可以很容易做:

    from sklearn import preprocessing

    from scipy.stats import rankdata

    x = [[1], [3], [34], [21], [10], [12]]

    std_x = preprocessing.StandardScaler().fit_transform(x)

    norm_x= preprocessing.MinMaxScaler().fit_transform(x)

    norm_x2= preprocessing.LabelEncoder().fit_transform(x)

    print('std_x=\n', std_x)

    print('norm_x=\n', norm_x)

    print('norm_2=\n', norm_x2)

    print('oringial order =', rankdata(x))

    print('stand order =', rankdata(std_x))

    print('normalize order=', rankdata(norm_x))

    其中preprocessing.LabelEncoder().fit_transform(x)就是做normalize encoding,上面的程序输入如下:

    std_x=

    [[-1.1124854 ]

    [-0.93448773]

    [ 1.82447605]

    [ 0.66749124]

    [-0.31149591]

    [-0.13349825]]

    norm_x=

    [[0. ]

    [0.06060606]

    [1. ]

    [0.60606061]

    [0.27272727]

    [0.33333333]]

    norm_2=

    [0 1 5 4 2 3]

    oringial order = [1. 2. 6. 5. 3. 4.]

    stand order = [1. 2. 6. 5. 3. 4.]

    normalize order= [1. 2. 6. 5. 3. 4.]

    可以看到normailize之后的结果是 [0 1 5 4 2 3]。这样做的好处是什么呢?

    bVbch1K?w=514&h=1782

    展开全文
  • 文章目录引言卷积核可视权重和激活可视小结 引言 本文整理了卷积神经网络训练过程中的可视,便于对训练过程进行分析和检查。有需要的朋友可以马住收藏。 卷积核可视 以下代码参考1: # 可视化卷积核 # in ...
  • 本专栏用于记录关于深度学习的笔记,不光方便自己复习...3 归一 4 泛化 5 正则 1 激活函数 如果没有非线性激活函数:增加网络层数模型仍然是线性的。 1.1 S 型激活函数 包 括 函数(常被代指 函 数 ) 与 ...
  • 卷积正则方法 dropBlock 首先看看为什么普通dropout对于卷积没有用。 看上图,卷积网络提取的是有空间语义的信息,每个独立的特征单元单独具备的意义不是那么大,而各个特征单元之间的连接规律,相
  • 实验三MATLAB计算结果可视卷积操作(一)实验目的1)掌握二维平面图形的绘制方法,能够使用这些方法进行常用的数据可视处理。2)掌握卷积运算。(二)实验设备计算机,Matlab软件(三)实验要求本实验属于设计实验,请...
  • 卷积神经网络基础---批量归一(BN层、 Batch Normalization)1. BN层的作用2. 源码3. 在超分辨率处理过程中BN层的缺点 1. BN层的作用 BN层使得神经网络能够设定较高的初始学习率,加速模型收敛过程; 将数据进行...
  • 基于Pytorch再次解读NiN现代卷积神经网络 文章目录 1 网络中的网络(NiN) 2 代码实现 3 训练 4 批量归一 5 使用批量归一层的 LeNet 1 网络中的网络(NiN) 卷积层的输入和输出由四维张量组成,张量的每个轴...
  • PyTorch中反卷积的用法

    2021-02-04 18:39:50
    随着反卷积在神经网络可视上的成功应用,其被越来越多的工作所采纳比如:场景分割、生成模型等。其中反卷积(Deconvolution)也有很多其他的叫法,比如:Transposed Convolution,Fractional Strided Convolution...
  • 编辑丨量子位做计算机视觉,离不开CNN。可是,卷积、池化、Softmax……究竟长啥样,是怎样相互连接在一起的?对着代码凭空想象,多少让人有点头皮微凉。于是,有人干脆用Unity给...
  • https://poloclub.github.io/cnn-explainer/
  • 卷积神经网络是一种特殊类型的人工神经网络,广泛应用于图像识别。这种架构的成功始于 2015 年,当时凭借这种方法赢得了 ImageNet 图像分类挑战。 这些方法非常强大并且能够很好地进行预测,但同时它们也难以解释。...
  • 卷积神经网络 特征热力图可视

    千次阅读 2021-05-12 17:09:35
    获取卷积神经网络的特征热力图。 实现方式:Grad-GAM(注:不过多展开讲Grad-GAM,具体请上网搜) 话不多说,直接上代码! import cv2 import numpy as np import matplotlib.pyplot as plt import tensorflow as tf ...
  • 卷积(多---->1 的映射)本质:在对输入做9--->1的映射关系时,保持了输出相对于input中的位置性关系对核矩阵做以下...多 的映射)deconvlution/transpose-convlution动机想要网络学出一种最优的上采样方法,...
  • 卷积 卷积层的结构参数 卷积核大小(Kernel Size):定义卷积操作的感受野。 步幅(Stride): 定义卷积核遍历图像时的步幅大小。其默认值通常设置为1。设置大于1的值后对图像进行下采样,这种方式类似池化操作。 ...
  • pytorch默认只保存最后一层的输出,中间层输出默认不保存,要提取中间层网络输出值,需要使用回调函数register_forward_hook(),通过传入处理函数,便可以提取和保存特点网络层的输出值。 class ActivationData(): ...
  • 卷积

    2020-12-29 23:02:52
    卷积将是过去所有连续信号经过系统的响应之后得到的在观察那一刻的加权叠加。 如何通俗易懂地解释卷积?:https://www.zhihu.com/question/22298352 “卷积”其实没那么难以理解:...
  • 前两篇我们对卷积层的原理和实现做了一些介绍。这一节我们来深入了解两个常用的卷积——转置卷积和空洞卷积。传送门:卷积核的基本概况转置卷积利用神经网络生成图片,通察情况下是从低像素、粗糙的图...
  • 图像雨是图像处理和计算机视觉领域共同关心的重要问题,传统的关于图像雨的图像恢复方法在某些特定的情况下会失效,鉴于深度卷积神经网络(CNN)在计算机视觉领域的迅猛发展及其良好的学习性能,越来越多的研究者...
  • 分组卷积 串联信息 分组+串联 Mobile Net V1的深度可分离卷积 模型网络结构 代码实现 Mobile Net V1简介 随着2012年的AlexNet在ImageNet竞赛中获得冠军,越来越多的深度神经网络被人们提出,例如优秀的VGG系列、...
  • 空洞卷积过程可视

    2021-12-15 22:49:16
    空洞卷积过程可视
  • 本人最近在研究深度学习的目标检测网络,在研究代码的过程中,对提取图像特征这个黑盒子的内容比较好奇和感兴趣,就进行了进一步的研究,查询相关资料,实现了vgg16网络特征图的可视。 首先贴出完整代码: import ...
  • 这段代码的步骤大致如下: 1.处理单张图作为网络的输入。 2.根据给定的layer层,...5.将tensor转为numpy,然后归一[0,1],最后乘以255,使得范围为[0,255]。 6.得到灰度图像保存。 ———————————————
  • CNN怎么自定义卷积核初始值?

    千次阅读 2020-12-23 21:08:12
    卷积核初始。不是网络初始卷积核初始我也没做过。文档是这样写的。ParamAttr¶classpaddle.fluid.ParamAttr(name=None,initializer=None,learning_rate=1.0,regularizer=None,trainable=True,gradient_...
  • 采用可视就可以更加方便人理解神经网络 。 要想更加全方位、采用更多方式可视神经网络,可以采用下面的方法 一、小图片段 利用小图片段,看能够使指定神经元激活值最大的小图片是什么,从而推断某些神经元对...
  • 在这个视频中将展示一些可视的例子,可以帮助我们理解卷积网络中深度较大的层真正在做什么,这样有助于理解如何实现神经风格迁移。看一个例子。 这是一个Alexnet,轻量级网络,我们希望看到不同层之间隐藏...
  • 系列文章目录 数字信号处理(DSP:Digital Signal Process)是电子通信领域非常重要的研究方向,博主汇总了数字信号处理(DSP)中常用的经典...第三篇 基于matlab实现信号的线性卷积与循环卷积 基于matlab实现信号的线
  • 卷积核的基本概况

    2021-08-27 14:04:44
    在机器学习篇章中,我们简单介绍了卷积核,今天,我们借助知乎的一篇文章,梳理一下对卷积核一些基本情况。传送门:卷积神经网络(CNN)什么是卷积核在数学上,卷积核的标准定义是两个函数在反转和移...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,747
精华内容 55,898
关键字:

去卷积化