首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于深度卷积神经网络的图像反卷积 学习笔记

在本文中,我们提出了一种不基于物理或数学特征的自然图像反卷积方法,我们展示了使用图像样本构建数据驱动系统的新方向,这些图像样本可以很容易地从摄像机中生成或在线收集。 我们使用卷积神经网络(CNN)来学习反卷积操作,不需要知道人 为视觉效果产生的原因,与之前的基于学习的图像去模糊方法不同,它不依赖任何预处理。本文的工作是在反卷积的伪逆背景下,我们利用生成模型来弥补经验决定的卷积神经网络与现有方法之间的差距。我们产生一个实用的系统,提供了有效的策略来初始化网络的权重值,否则在卷积随机初始化训练过程中很难得到,实验证明,当输入的模糊图像是部分饱和的,我们的系统比之前的方法效果都要好。

02
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    韩银和:如何设计机器人处理器?

    机器人是否需要专用的芯片支持?要想开发机器人芯片,首先必须弄清楚是否有这方面的需求。一方面,尽管今天能实用的机器人数量还比较少,但在可预期的未来,很多人相信会诞生一批经济适用、量大面广的现象级产品,就像无人机、无人车一样,由于其功能的丰富,其总数量甚至会达到百亿级,超过个人电脑、手机的数量。如此庞大的应用空间,按照过去计算机的发展经验,必然伴生孕育着新型计算系统,所以未来机器人系统需要芯片这一点比较肯定。接着,另外一个问题,是否需要设计专用芯片?今天现行的如CPU、DSP、GPU、神经网络或他们的组合是否就够用了?这个问题还需要从机器人的功能角度出发去分析。一方面,我们会赋予机器人更多的智能能力,使他能够听说看甚至决策;另一方面,机器人也将具有越来越强运动能力。而这些都是现行芯片所解决不好的,我们认为今天机器人无法大规模普及,和他们的能力不足直接相关,而这种能力除了算法方面的改进外,性能的大幅提升也是必要的。因此,我们认为需要设计面向机器人的专用芯片,以解决机器人在应用中的若干问题,为未来机器人的大发展提供硬件基础。

    02

    转置卷积详解

    前面文章对卷积做了讲解,感觉既然重新整理,就将系列概念整体做个梳理,也算是将自己知道的所有东西拿来献丑把。   转置卷积(Transposed Convolution)是后来的叫法,一开始大家都是称逆卷积/反卷积(Deconvolution),这个概念是在图像分割任务中被提出来的,图像分割需要逐像素的操作,对每一个像素做一个分割,将其归类到不同的物体当中。   这个任务大家很自然的想要使用卷积神经网络来完成,那就得先使用卷积神经网络提取特征,但是卷积神经网络中的两大主要构件,卷积层和下采样层会使得图像的尺寸不断缩小。这个就与逐像素的分类不符,因为逐像素分割的话是需要输出和输入大小是一致的。   针对这个问题,有人提出了先使用卷积核下采样层逐层的提取特征,然后通过上采样再将特征图逐渐的恢复到原图的尺寸。而这个上采样一开始就是通过反卷积来实现的。如果说卷积核下采样的过程特征图是变小的,那么上采样之后特征图应该变大。   我们应该熟悉卷积的输出尺寸公式 o u t = ( F − K + 2 P ) / s + 1 out=(F-K+2P)/s+1 out=(F−K+2P)/s+1,其中F表示输入特征图的尺寸,K表示卷积核的尺寸,P表示padding,S表示卷积的步长。我们都通过这个公式来计算卷积的输出特征图尺寸。举例来说明,一个4×4的输入特征图,卷积核为3×3,如果不使用paddng,步长为1,则带入计算 o u t = ( 4 − 3 ) / 1 + 1 out=(4-3)/1+1 out=(4−3)/1+1为2。   我们已经在im2col算法的介绍中讲解了卷积的实现,实际上这个步骤是通过两个矩阵的乘法来完成的,我们不妨记为 y = C x y=Cx y=Cx,如果要上采样,我们希望给输出特征图乘一个参数矩阵,然后把尺寸还原回去,根据数学知识,我们给特征图矩阵 y y y左乘一个{C^T},就能得到 C T y = C T C x C^Ty=C^TCx CTy=CTCx, C C C的列数等于 x x x的行数, C T C C^TC CTC的行数和列数都等于x的行数,乘完之后,得到的结果与 x x x形状相同。这就是转置卷积名字的来源。有一些工作确实是这样实现的。   我们也能很自然的得出结论,我们不需要给输出特征图左乘 C T C^T CT,显然只要和这个矩阵形状相同,输出的结果就和原特征图尺寸相同,而且这个操作同样可以使用卷积来实现,那我们只要保证形状一致,然后参数我们可以自己训练,这样尺寸的问题解决了,而且特征的对应也有了,是可以训练的,一举两得。 im2col讲解的内容,卷积是 ( C o u t , C i n ∗ K h ∗ K w ) (C_{out},C_{in}*K_h*K_w) (Cout​,Cin​∗Kh​∗Kw​)的卷积核乘 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图,得到 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)的结果。现在对卷积核做一个转置 ( C i n ∗ K h ∗ K w , C o u t ) (C_{in}*K_h*K_w,C_{out}) (Cin​∗Kh​∗Kw​,Cout​)乘 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)得到一个 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图。   除了以上内容这里还有一点其他需要补充的东西,比如在caffe中除了im2col函数之外,还有一个函数是col2im,也就是im2col的逆运算。所以对于上面的结果caffe是通过col2im来转换成特征图的。但是col2im函数对于im2col只是形状上的逆函数,事实上,如果对于一个特征图先执行im2col再执行col2im得到的结果和原来是不相等的。   而在tensorflow和pytorch中,这一点是有差异的,两者是基于特征图膨胀实现的转置卷积操作,两者是是通过填充来进行特征图膨胀的,之后可能还会有一个crop操作。之所以需要填充,是因为想要直接通过卷积操作来实现转置卷积,干脆填充一些值,这样卷积出来的特征图尺寸自然就更大。   但是两者从运算上来讲都无法对原卷积进行复原,只是进行了形状复原而已。   到了最后就可以讨论形状的计算了,转置卷积是卷积的形状逆操作,所以形状计算就是原来计算方式的逆函数。 o u t = ( F − K + 2 P ) / s + 1 out

    02

    【Pytorch 】笔记五:nn 模块中的网络层介绍

    疫情在家的这段时间,想系统的学习一遍 Pytorch 基础知识,因为我发现虽然直接 Pytorch 实战上手比较快,但是关于一些内部的原理知识其实并不是太懂,这样学习起来感觉很不踏实,对 Pytorch 的使用依然是模模糊糊, 跟着人家的代码用 Pytorch 玩神经网络还行,也能读懂,但自己亲手做的时候,直接无从下手,啥也想不起来, 我觉得我这种情况就不是对于某个程序练得不熟了,而是对 Pytorch 本身在自己的脑海根本没有形成一个概念框架,不知道它内部运行原理和逻辑,所以自己写的时候没法形成一个代码逻辑,就无从下手。这种情况即使背过人家这个程序,那也只是某个程序而已,不能说会 Pytorch, 并且这种背程序的思想本身就很可怕, 所以我还是习惯学习知识先有框架(至少先知道有啥东西)然后再通过实战(各个东西具体咋用)来填充这个框架。而「这个系列的目的就是在脑海中先建一个 Pytorch 的基本框架出来, 学习知识,知其然,知其所以然才更有意思 ;)」。

    05

    小波去噪程序c语言,小波去噪c语言程序

    1、小波阈值去噪理论小波阈值去噪就是对信号进行分解,然后对分解后的系数进行阈值处理,最后重构得到去噪信号。该算法其主要理论依据是:小波变换具有很强的去数据相关性,它能够使信号的能量在小波域集中在一些大的小波系数中;而噪声的能量却分布于整个小波域内。因此,经小波分解后,信号的小波系数幅值要大于噪声的系数幅值。可以认为,幅值比较大的小波系数一般以信号为主,而幅值比较小的系数在很大程度上是噪声。于是,采用阈值的办法可以把信号系数保留,而使大部分噪声系数减小至零。小波阈值收缩法去噪的具体处理过程为:将含噪信号在各尺度上进行小波分解,设定一个阈值,幅值低于该阈值的小波系数置为0,高于该阈值的小波系数或者完全保留,或者做相应的收缩(shrinkage)处理。最后将处理后获得的小波系数用逆小波变换进行重构,得到去噪后的信号.

    01
    领券