精华内容
下载资源
问答
  • 今天小编就为大家分享一篇PyTorch中反卷积的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 反卷积效果2

    千次阅读 2012-04-12 16:42:22
    Digital image processing Raoul Behrend Geneva Observatory CH-1290 Sauverny - Switzerland Raoul.Behrend@unige.ch Version francophone ...My hobbies: celestrial mechanics, ...astrometry, earth sat

    Digital image processing

    Raoul Behrend
    Geneva Observatory
    CH-1290 Sauverny - Switzerland
    Raoul.Behrend@unige.ch

    Version francophone

    My hobbies: celestrial mechanics, astrometry, earth satellites, aso. The corresponding programs I wrote are Aplaxxxx (complete offset-dark-flat treatement of ccd's frames - coming soon as a stampware (freeware registered by a beautyful stamped postcard <;3)~~~~)), BifsConv, Carte, Eph, Nifflo, Photo, MiniMir, DetOrb, SatJup, CourbRot, RotaRap, and others. They are made for personnal computer (PC). A very nice application of DetOrb was the determination of the scale of the solar system using the parallax of the asteroid 2000 QW7: 8.796±0.003" (document in french only).

    Here are some pictures from my image processor BIFSxx. The left parts are original images and the right parts represent the results. The 48 supported formats are derived from the following families: bmp, imq (spaceprobes, with or without Huffman's compression), ibg, fit (fits, 1-, 2- and 4-bytes integers, 8-bytes reals), st* (st4, st4x, st5, st6, st7, st8, st9, stx, pixcel, with or without compression), cpa (~15 bits, with or without compression), t1m, arn, pds (and vicar), per (Titus format of satellite images), img, ccd, raw, pic, tif (tiff, 8 and 16 bits, uncompressed), mx5, hx5, xl8, gif, pcx, imi (TMSat satellite).

    To limit the bandwidth, this document's images are the shortest files from jpg and png. The other better pictures can be accessed with a simple click.

    Jupiter
    Deconvolution and elimination of interferences.
    Turbulences on the surface of Jupiter. The dark current and flat field were not taken into account; this explain the embossed shape. Origin: Voyager probe.

    Io
    Deconvolution and elimination of interferences.
    Io. Origin: Voyager probe.

    Io's surface
    Deconvolution and elimination of interferences.
    Io's surface. Origin: Voyager probe.

    Europe
    Deconvolution and elimination of interferences.
    Europe. Origin: Voyager probe.

    Ganymed
    Deconvolution and elimination of interferences.
    Ganymed. Origin: Voyager probe.

    Callisto
    Deconvolution and elimination of interferences.
    Callisto. Origin: Voyager probe.

    Amalthea
    Zoom, deconvolution and elimination of interferences.
    Amalthea. Origin: Voyager probe.

    Titan
    Deconvolution and elimination of interferences.
    Titan's atmosphere. Origin: Voyager 1 probe.

    Rings of  Saturn
    Histogram adaptation after deconvolution and elimination of interferences.
    Saturn's rings. Origin:Voyager probe.

    Triton
    Zoom, deconvolution and elimination of interferences.
    Triton. Origin: Voyager 2 probe.

    Sun's surface
    Deconvolution.
    Sun's surface in alpha-band of hydrogen. Origin: the st4 of Armin Behrend.

    Sun's spot
    Deconvolution.
    Sun spot. Origin: the st4 of Armin Behrend.

    Jupiter
    Deconvolution.
    Jupiter. Origin: negative film by Armin Behrend.

    Mars: parasits removal
    Parasits removal.
    Mars' ground. Origin: Viking probe.

    Mars: montage
    Deconvolution (non final version).
    Mars: composit of twenty images. Origin: the StarLight Xpress HX516 camera of Martino Nicolini, at Cavezzo Observatory.

    Moon: ST4
    Deconvolution.
    Craters on the moon. Origin: sample image of the SBIG's st4.

    Saturn
     Zoom and deconvolution.
    Saturne. Origine: la st4 de Michel Mollard.

    Hale-Bopp
    Deconvolution.
    Nucleus and jets of the comet Hale-Bopp. Origin: André Blécha. Remark: the telescope was in construction and the mirror not yet recovered with aluminium; that's why the quality is not very high.

    Guiding
    Deconvolution after sampling of the point spread function.
    Unguided erratic motion of the telescope. Origin: negative film by Raphaël Jubin.
    No corrections of non-linearities were made; original image in jpg format.

    Guiding
    Deconvolution after sampling of the point spread function.
    Unguided erratic motion of the telescope. Origin: negative film by Raphaël Jubin.
    No corrections of non-linearities were made; original image in jpg format.

    Guiding Guiding
    Deconvolution after sampling of the point spread function. Right: detail of the double star.
    Unguided erratic motion of the telescope. Origin: Matthieu Conjat's ST4.

    Jupiter-RGB
    Deconvolution of three R G and B images. Origin: the st7 of Richard Jacobs.
    The trichromic recombination is (fastly) made with Gimp, a PaintShopPro like program...

    SanFrancisco
    Deconvolution and elimination of interferences.
    SanFrancisco's Bay seen by the TMSat satellite and operated by the Thai MicroSatellite Company Ltd and the Surrey Satellite Technology Ltd. The ccd image is raw, non processed for the sensivity of each column; that explains the horizontal lines.

    Grand Canyon
    Deconvolution.
    Grand Canyon seen by the UOSat-12 satellite operated by the Surrey Satellite Technology Ltd.

    Jupiter
    Deconvolution. Image of Jupiter taken by Bastien Confino, at OFXB-StLuc.

    Jupiter
    Deconvolution. Image of Jupiter taken by Bastien Confino, at OFXB-StLuc.

    Epaule
    Local adaptation of contrast and binning of pixels. Calcifying supraspinatus tendinitis in the context of a shoulder periarthritis. (Medical informations related to this picture: DrABiz). Radiographic material kindly loaned by Sion Hospital and scanned at Geneva Observatory. Grace to the binning, the pixels issued by the 8-bits scanner are transformed to ~12-bits metapixels.

    More informations:

    • You may post here all kind of images to test with BIFSxx, even in less common formats. Please avoid the loosy jpg and immoral images! Don't preprocess nonlinearities (for example histogram and gamma corrections, except for film); dark current, zero level and flat field are warmly encouraged for ccd images. The best results will be shown here.
    • The raw images of Voyagers and Vikings probes are kindly supplied by NASA/JPL/CalTech as cidirom.
    • The processed and raw images wih no indication of origin are ©OMG. No reproduction without my preliminary agreement.


      Some links:

    • My personnal homepage
    • ftp zone: some files and programs, depending on mood. Actually:
      • SatJup, a small simulator of galilean moons.
      • St42Bmp, a st4 to bmp converter.
      • BifsConv, a converter from many formats (bmp, imq, st4, stx, ima, cpa, pic, tif, gif, mx5, hx5, xl8, dat, pcx, per, dib, arn, blu, bb1, bb2, bb3, bb4, grn, irq, ibg, img, ir1, ir2, ir3, n07, n15, pds, red, sgr, sur, sun, vio, fts, 08b, raw, sbi, st5, st6, st7, st8, st9, 237, imi, ccd) to fit. The complete description is available here.
      • The Tle.New file which gives orbital elements of visual (by naked eyes) satellites in real Tle format is directly «pumped» from T.S. Kelso's site. An other very good source for TLEs is the site of Mike McCants.
      • The TleSort.Sat and Oldies.Sat files form a database of earth artificial satellites orbital elements, they are also compressed by GZip. The format is near to the ordinary Tle's, but it's possible that they are not recognized by other programs than MiniMir (demos: DemoMir1 and DemoMir2).
      • TleSort.zip contains all files needed to execute TleSort. Options for TleSort are:
        • /L sort by launch
        • /C sort in reverse order
        • /L0 delete line 0 which may be uncompatible with some software
        TleSort loads files Name.Sat, TleSort.Sat, Oldies.Sat, and then Tle.New and *.Tle. It cleans and updates all datas. Names from Name.Sat are used everywhere. To mark a satellite as decayed, just put a star in the first file in which it appears (see examples in Name.Sat and Oldies.Sat). It is strongly recommended that you make a full backup of all your files of satellites before trying TleSort !!!
    • Miam-Globs' homepage
    • Richard Jacobs' homepage
    • Michel Mollard's homepage
    • Matthieu Conjat's homepage
    • André Blécha's homepage
    • Cavezzo Observatory's homepage
    • OFXB-StLuc's homepage
    • Geneva Observatory's welcome page
    • AstroInfo (no more speaks french !!!)


    • 来源:http://obswww.unige.ch/~behrend/page_mgo.html
    展开全文
  • 在光谱仪采样率低的情况下,迭代反卷积的分辨率增强效果优于维纳滤波。随着采样率的增加,维纳滤波的误差小于迭代反卷积。实验分别测量了单纵模和多纵模632.8 nm He-Ne激光器光谱,并对测量结果进行反卷积处理。结果...
  • 1. 本文目的 目的利用双线性插值作为反卷积的权重,进行图像放大 什么是图片的放大? 其实把图像的像素增加. 比如我们现在有一张单色的 2 * 2的图片. [1234](1)\begin{bmatrix} 1 &2\\ 3& 4 \end{bmatrix}\tag{1}[13​...

    1. 本文目的

    目的利用双线性插值作为反卷积的权重,进行图像放大

    什么是图片的放大?

    其实把图像的像素增加.

    比如我们现在有一张单色的 2 * 2的图片.
    [ 1 2 3 4 ] (1) \begin{bmatrix} 1 &2\\ 3& 4 \end{bmatrix}\tag{1} [1324](1)

    简单想的想要将其扩大两倍变成4 * 4的就可以, 比如说下面这个样子
    [ ? ? ? ? ? 1 ? 2 ? ? ? ? ? 3 ? 4 ] (2) \begin{bmatrix} ?&? &?&?\\ ?&1 &?&2\\ ?&? &?&?\\ ?&3 &?&4\\ \end{bmatrix}\tag{2} ?????1?3?????2?4(2)
    那么接下来的目标就是求出 ? ? ?的各个取值

    2. 问题分析

    为了让图片的像素变多后,让他看起来比较自然.那么 ? ? ?的取值一定是和原图的取值是有关系的. 很自然的我们可以想到, 在 3 3 3 4 4 4 之间的 ? ? ? 应该让其等于 3.5 3.5 3.5是比较合理的.

    我们知道反卷积是一个上采样的方法, 也具有把像素点变多的功能. 但是如果我们使用的是系统给定的随机卷积核, 靠训练得出合适的卷积核,那么明显效率会非常低.这里我们就要构造自己的卷积核,直接一步到位.

    那么知道已知的点来估计其他点的方法, 即就是 插值

    在反卷积中,我们只要设置 s t r i d e = 2 , k e r n e l _ s i z e = 2 stride=2, kernel\_size=2 stride=2,kernel_size=2,就可以达到输出为 4 * 4的目的. 但是我们这里拟采用双线性插值, 一个值需要通过四个数来确定, 因此我们将卷积核大小扩大两倍. 但是为了保持输出是 4 * 4的, 因此我们需要加上 p a d d i n g = 1 padding = 1 padding=1

    x = torch.tensor([[[[1,2],[3,4]]]],dtype=torch.float32)
    conv_trans = (nn.ConvTranspose2d(in_channels=1, out_channels=1, kernel_size=4, stride=2, padding=1))
    

    首先对(1)进行反卷积,我们需要对(1)进行填充, 在各个元素之间,填充 s − 1 s-1 s1个0
    [ 1 0 2 0 0 0 3 0 4 ] (3) \begin{bmatrix} 1 &0&2\\ 0& 0&0\\ 3& 0&4 \end{bmatrix}\tag{3} 103000204(3)
    然后通过
    i + 2 p − k s + 1 = o \frac{i+2p-k}{s} + 1=o si+2pk+1=o
    计算出 p p p, 这里 i = 3 , k = 4 , s = 1 , o = 4 i=3,k=4,s=1,o=4 i=3,k=4,s=1,o=4可以求得 p = 2 p=2 p=2.

    所以对矩阵(3)进行padding操作之后, 我们相当于对如下矩阵进行卷积操作
    [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 3 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] (4) \begin{bmatrix} 0& 0&0&0& 0&0& 0\\ 0& 0&0&0& 0&0& 0\\ 0& 0&1 &0&2&0& 0\\ 0& 0&0&0& 0&0& 0\\ 0& 0&3& 0&4&0&0\\ 0& 0&0&0& 0&0& 0\\ 0& 0&0&0& 0&0& 0\\ \end{bmatrix}\tag{4} 0000000000000000103000000000002040000000000000000(4)

    现在我们的问题就是如何给定一个4*4的卷积核,依次进行卷积操作,来得到矩阵(2)

    3. 操作方法

    我们采用首先采用数学的理论来进行计算, 确定矩阵(2), 然后再分析卷积核如何给定

    3.1. 插值计算

    最简单的拉格朗日插值: 在这个点上,其系数为1,不在这个点上的系数为0的原则.

    L ( x ) L(x) L(x)为插值函数, l ( x ) l(x) l(x)为拉格朗日基本多项式(或称插值基函数)
    在这里插入图片描述
    其表达式为
    在这里插入图片描述
    那么对于矩阵(2), 我们从左上角给一个原点, 右方向为一个 x x x 轴, 下方向为 y y y 轴, 并且相邻数字之间的距离为1.
    那么矩阵(2)
    [ ? ? ? ? ? 1 ? 2 ? ? ? ? ? 3 ? 4 ] \begin{bmatrix} ?&? &?&?\\ ?&1 &?&2\\ ?&? &?&?\\ ?&3 &?&4\\ \end{bmatrix} ?????1?3?????2?4中:
    1的坐标为(2,2)
    2的坐标为(4,2)
    3的坐标为(2,4)
    4的坐标为(4,4)

    我们可以建立 L ( x , y ) = 1 ∗ ( 4 − x ) ( 4 − y ) ( 4 − 2 ) ( 4 − 2 ) + 2 ∗ ( x − 2 ) ( 4 − y ) ( 4 − 2 ) ( 4 − 2 ) + 3 ∗ ( 4 − x ) ( y − 2 ) ( 4 − 2 ) ( 4 − 2 ) + 4 ∗ ( x − 2 ) ( y − 2 ) ( 4 − 2 ) ( 4 − 2 ) (5) \begin{aligned}L(x,y)&=1*\frac{(4-x)(4-y)}{(4-2)(4-2)}+2*\frac{(x-2)(4-y)}{(4-2)(4-2)}+3*\frac{(4-x)(y-2)}{(4-2)(4-2)}+4*\frac{(x-2)(y-2)}{(4-2)(4-2)} \end{aligned}\tag{5} L(x,y)=1(42)(42)(4x)(4y)+2(42)(42)(x2)(4y)+3(42)(42)(4x)(y2)+4(42)(42)(x2)(y2)(5)

    可以验证 L ( 2 , 2 ) = 1 , L ( 4 , 2 ) = 2 , L ( 2 , 4 ) = 3 , L ( 4 , 4 ) = 4 L(2,2)=1,L(4,2)=2,L(2,4)=3,L(4,4)=4 L(2,2)=1,L(4,2)=2,L(2,4)=3,L(4,4)=4

    因此我们可以很容易的计算出
    L ( 3 , 3 ) = 1 ∗ 1 4 + 2 ∗ 1 4 + 3 ∗ 1 4 + 4 ∗ 1 4 = 10 4 = 2.5 \begin{aligned}L(3,3)&=1*\frac{1}{4} + 2*\frac{1}{4}+3*\frac{1}{4}+4*\frac{1}{4} \\&=\frac{10}{4}=2.5\end{aligned} L(3,3)=141+241+341+441=410=2.5

    L ( 3 , 4 ) = 1 ∗ 0 4 + 2 ∗ 0 4 + 3 ∗ 2 4 + 4 ∗ 2 4 = 14 4 = 3.5 \begin{aligned}L(3,4)&=1*\frac{0}{4} + 2*\frac{0}{4}+3*\frac{2}{4}+4*\frac{2}{4} \\&=\frac{14}{4}=3.5\end{aligned} L(3,4)=140+240+342+442=414=3.5
    依次我们可以吧矩阵(2)写为
    [ − 0.5 0 0.5 1 0.5 1 1.5 2 1.5 2 2.5 3 2.5 3 3.5 4 ] \begin{bmatrix} -0.5&0 &0.5&1\\ 0.5&1 &1.5&2\\ 1.5&2 &2.5&3\\ 2.5&3 &3.5&4\\ \end{bmatrix} 0.50.51.52.501230.51.52.53.51234

    这里需要注意, 由1,2,3,4组成的正方形包含的值是内插,其余的是外插计算出来的,所以才有了 − 0.5 -0.5 0.5这种不可取的值.暂时先放着.

    3.2 卷积核计算

    观察式子(5), 我们是通过改变基函数的值来计算得到不同地方的插值.

    但是在反卷积的过程中, 卷积核是不变的, 要变化的是(5)中的1,2,3,4

    那么是否可以保持基函数不变通过改变插值点来实现插值呢?

    我们观察基函数, 他的确有一个不变的特性, 即距离.

    看(5)的第一个基函数,假设要求的点为P(x,y), 那么
    4 − x 2 就 是 点 P 到 x = 4 的 距 离 , 记 为 a ; x − 2 2 为 P 到 x = 2 的 距 离 , 记 为 1 − a \frac{4-x}{2}就是点P到x=4的距离,记为a;\frac{x-2}{2}为P到x=2的距离,记为1-a 24xPx=4,a;2x2Px=2,1a
    4 − y 2 就 是 点 P 到 y = 4 的 距 离 , 记 为 b ; y − 2 2 为 P 到 y = 2 的 距 离 , 记 为 1 − b \frac{4-y}{2}就是点P到y=4的距离,记为b;\frac{y-2}{2}为P到y=2的距离,记为1-b 24yPy=4,b;2y2Py=2,1b

    所以
    L = 1 ∗ a b + 2 ∗ ( 1 − a ) b + 3 ∗ a ( 1 − b ) + 4 ∗ ( 1 − a ) ( 1 − b ) L=1*ab+2*(1-a)b+3*a(1-b)+4*(1-a)(1-b) L=1ab+2(1a)b+3a(1b)+4(1a)(1b)
    说明我们现在只要固定住距离, 就可以通过改变插值点来获得插值,这就是我们卷积核所做的事情.

    不失一般性,我可以把P点固定在中心, 即 ( 3 , 3 ) (3,3) (3,3), 那么 a = b = 1 / 2 a=b=1/2 a=b=1/2,

    将其对应于如下的卷积过程
    在这里插入图片描述
    卷积核应该是 [ ? ? ? ? ? 0.25 ? 0.25 ? ? ? ? ? 0.25 ? 0.25 ] \begin{bmatrix} ?&? &?&?\\ ?&0.25 &?&0.25\\ ?&? &?&?\\ ?&0.25&?&0.25\\ \end{bmatrix} ?????0.25?0.25?????0.25?0.25
    可以得出卷积值为2.5

    下一步卷积在这里插入图片描述
    在做这个卷积的时候,我们还是使用1,2,3,4作为插值点,但是位置不同了.

    倘若我们还是用原来的四个 0.5 0.5 0.5去做计算, 那明显是不正确的.这里还是依赖于1,2,3,4作为插值点,但是求出的值不再是对应于原来的P点的值, 因此在这种情况下,我们需要对P 点进行变化

    这卷积核向右边移动了一个位置, 我们吧 P P P也向右边移动一个位置到 ( 4 , 3 ) (4,3) (4,3)

    这个时候 a = 0 , b = 1 / 2 a=0,b=1/2 a=0,b=1/2,那么卷积核即为

    卷积核应该是 [ ? ? ? ? 0 0.25 0.5 0.25 ? ? ? ? 0 0.25 0.5 0.25 ] \begin{bmatrix} ?&? &?&?\\ 0&0.25 &0.5&0.25\\ ?&? &?&?\\ 0&0.25&0.5&0.25\\ \end{bmatrix} ?0?0?0.25?0.25?0.5?0.5?0.25?0.25
    可以得出卷积值为3

    同样的道理

    下面的卷积核相对于第一次卷积向下移动了一次,点 P P P对应于 ( 3 , 4 ) (3,4) (3,4),此时 a = 1 / 2 , b = 0 a=1/2,b=0 a=1/2,b=0
    在这里插入图片描述

    卷积核应该是 [ ? 0 ? 0 0 0.25 0.5 0.25 ? 0.5 ? 0.5 0 0.25 0.5 0.25 ] \begin{bmatrix} ?&0 &?&0\\ 0&0.25 &0.5&0.25\\ ?&0.5 &?&0.5\\ 0&0.25&0.5&0.25\\ \end{bmatrix} ?0?000.250.50.25?0.5?0.500.250.50.25
    可以得出卷积值为3.5

    还有最后一种情况的卷积为
    在这里插入图片描述
    P = ( 4 , 4 ) P=(4,4) P=(4,4),则 a = b = 0 a=b=0 a=b=0
    卷积核应该是 [ 0 0 0 0 0 0.25 0.5 0.25 0 0.5 1 0.5 0 0.25 0.5 0.25 ] (6) \begin{bmatrix} 0&0 &0&0\\ 0&0.25 &0.5&0.25\\ 0&0.5 &1&0.5\\ 0&0.25&0.5&0.25\\ \end{bmatrix}\tag{6} 000000.250.50.2500.510.500.250.50.25(6)
    可以得出卷积值为4

    我们上次所给出的例子,就可以卷积出
    [ 2.5 3 3.5 4 ] \begin{bmatrix} 2.5&3\\ 3.5&4\\ \end{bmatrix} [2.53.534]

    卷积核把往上移一移再做卷积运算
    就可以完善
    [ 1 1.5 2 2 2.5 3 3 3.5 4 ] \begin{bmatrix} 1&1.5&2\\ 2&2.5&3\\ 3&3.5&4\\ \end{bmatrix} 1231.52.53.5234
    这个结果和我们通过插值计算的 内插 的部分是完全一致的!

    3.3 代码

    我们可以把计算卷积核的公式写成
    [ a 1 b 1 a 2 b 2 ( 1 − a 1 ) b 1 ( 1 − a 2 ) b 2 a 3 b 3 a 4 b 4 ( 1 − a 3 ) b 3 ( 1 − a 4 ) b 4 a 1 ( 1 − b 1 ) a 2 ( 1 − b 2 ) ( 1 − a 1 ) ( 1 − b 1 ) ( 1 − a 2 ) ( 1 − b 2 ) a 3 ( 1 − b 3 ) a 4 ( 1 − b 4 ) ( 1 − a 3 ) ( 1 − b 3 ) ( 1 − a 4 ) ( 1 − b 4 ) ] (7) \begin{bmatrix} a_{1}b_{1}&a_{2}b_{2} &(1-a_{1})b_{1}&(1-a_{2})b_{2}\\ a_{3}b_{3}&a_{4}b_{4} &(1-a_{3})b_{3}&(1-a_{4})b_{4}\\ a_{1}(1-b_{1})&a_{2}(1-b_{2}) &(1-a_{1})(1-b_{1}) &(1-a_{2})(1-b_{2})\\ a_{3}(1-b_{3})&a_{4}(1-b_{4}) &(1-a_{3})(1-b_{3})&(1-a_{4})(1-b_{4})\\ \end{bmatrix}\tag{7} a1b1a3b3a1(1b1)a3(1b3)a2b2a4b4a2(1b2)a4(1b4)(1a1)b1(1a3)b3(1a1)(1b1)(1a3)(1b3)(1a2)b2(1a4)b4(1a2)(1b2)(1a4)(1b4)(7)
    若我们使 f ( x ) = ( 4 − x ) / 2 f(x)=(4-x)/2 f(x)=(4x)/2
    a 1 = b 1 = f ( 4 ) , a 2 = b 3 = f ( 3 ) , a 3 = b 2 = f ( 4 ) , a 4 = b 4 = f ( 3 ) a_{1}=b_{1}=f(4),a_{2}=b_{3}=f(3),a_{3}=b_{2}=f(4),a_{4}=b_{4}=f(3) a1=b1=f(4),a2=b3=f(3),a3=b2=f(4),a4=b4=f(3)
    因为 a 1 = a 3 , a 2 = a 4 , b 1 = b 2 , b 3 = b 4 a_{1}=a_{3},a_{2}=a_{4},b_{1}=b_{2},b_{3}=b_{4} a1=a3,a2=a4,b1=b2,b3=b4,因此我们可以把(7)写成两个矩阵的乘积
    ( 7 ) = ( b 1 b 3 1 − b 1 1 − b 3 ) ∗ ( a 1 a 2 1 − a 1 1 − a 2 ) (7)=\begin{pmatrix} b_{1} \\ b_{3}\\ 1-b_{1}\\ 1-b_{3}\\ \end{pmatrix} *\begin{pmatrix} a_{1}&a_{2}&1-a_{1}&1-a_{2}\end{pmatrix} (7)=b1b31b11b3(a1a21a11a2)
    代码思想:
    先计算两个矩阵的前面两个值 b 1 , b 3 , a 1 , a 2 b_1,b_3,a_1,a_2 b1,b3,a1,a2.因为他们都是通过 f ( x ) f(x) f(x)直接计算得到

    然后计算两个矩阵的后面的两个值,通过 1 − f ( x ) 1-f(x) 1f(x)得到
    这里factor为放大的倍数

    import numpy as np
    
    def bilinear_kernel(factor):
        kernel_size=2 *factor
        og = np.ogrid[:factor, :factor]
        og = [kernel_size - og[i] for i in range(len(og))] //og[0]=[3 4],og[1]=[3;4]
        b13 = (kernel_size - og[0])/factor
        a12 = (kernel_size - og[1])/factor
        one_minus_b13 = 1 - (kernel_size - og[0])/factor
        one_minus_a12 = 1 - (kernel_size - og[1])/factor
        left = np.vstack((b13, one_minus_b13))
        right = np.hstack((a12,one_minus_a12))
        return left * right
        
    print(bilinear_kernel(2))   ```
    然后我们放大两倍可以看到结果为
    ```python
    array([[0.  , 0.  , 0.  , 0.  ],
           [0.  , 0.25, 0.5 , 0.25],
           [0.  , 0.5 , 1.  , 0.5 ],
           [0.  , 0.25, 0.5 , 0.25]])
    

    其结果和我们的计算结果(6)保持一致

    4.实验

    4.1. 基本实现

    因为图像是多通道的.所以还需要调整一下我们的bilinear_kernel函数

    def bilinear_kernel(in_channel, out_channel, factor):
        kernel_size=2 *factor
        og = np.ogrid[:factor, :factor]
        og = [kernel_size - og[i] for i in range(len(og))]
        b13 = (kernel_size - og[0])/factor
        a12 = (kernel_size - og[1])/factor
        one_minus_b13 = 1 - (kernel_size - og[0])/factor
        one_minus_a12 = 1 - (kernel_size - og[1])/factor
        left = np.vstack((b13, one_minus_b13))
        right = np.hstack((a12,one_minus_a12))
        ## 把结果变成多通道的
        weight = np.zeros((in_channel, out_channel, kernel_size, kernel_size), dtype='float32')
        weight[range(in_channel), range(out_channel), :, :] = left * right
        
        return weight
    

    我准备了一张png图片进行读取

    x = plt.imread("1.png")
    x.shape
    

    结果为(275, 1138, 4).说明这是一张四维的图片.下面定义反卷积,并且定义反卷积的权重

    x = plt.imread("1.png")
    plt.subplot(1,2,1)
    plt.imshow(x)
    print(x.shape)
    x = torch.from_numpy(x.astype('float32')).permute(2, 0, 1).unsqueeze(0)
    conv_trans = nn.ConvTranspose2d(in_channels=4, out_channels=4, kernel_size=4, stride=2, padding=1)
    # nn.ConvTranspose2d()
    # 将其定义为 bilinear kernel
    conv_trans.weight.data = torch.from_numpy(bilinear_kernel(4, 4, 2))
    conv_trans.bias.data = torch.zeros(4)
    y = conv_trans(x).data.squeeze().permute(1, 2, 0).numpy()
    plt.subplot(1,2,2)
    plt.imshow(y)
    print(y.shape)
    

    结果我们可以看到,的确放大了两倍.看坐标轴!!!

    (275, 1138, 4)
    (550, 2276, 4)
    在这里插入图片描述

    4.2 代码优化

    在上文中, 我们用的是 a a a b b b来衡量是点P到 x = 4 和 y = 4 x=4和y=4 x=4y=4的距离的百分比, f ( x ) = ( 4 − x ) / 2 f(x)=(4-x)/2 f(x)=(4x)/2
    ( a 1 a 2 1 − a 1 1 − a 2 ) (8) \begin{pmatrix} a_{1}&a_{2}&1-a_{1}&1-a_{2}\end{pmatrix}\tag{8} (a1a21a11a2)(8)
    这里对应的是 f ( 4 ) , f ( 3 ) , 1 − f ( 4 ) , 1 − f ( 3 ) f(4),f(3),1-f(4),1-f(3) f(4),f(3),1f(4),1f(3), 就是这里无法统一用一个函数表达,所以我们上面才分开计算再合并.我们希望 1 − f ( 4 ) = f ( 2 ) , 1 − f ( 3 ) = f ( 1 ) 1-f(4)=f(2),1-f(3)=f(1) 1f(4)=f(2),1f(3)=f(1),这样我们就可以直接使用 ( f ( 4 ) , f ( 3 ) , f ( 2 ) , f ( 1 ) ) (f(4),f(3),f(2),f(1)) (f(4),f(3),f(2),f(1))一个表达式就可以表示出(8). 在代码中就比较方便计算了.
    1 − f ( 4 ) = f ( 2 ) 1-f(4)=f(2) 1f(4)=f(2),设衡量距离的点是 x 0 x_0 x0,则
    1 − x 0 − 4 2 = x 0 − 2 2 (9) 1-\frac{x_0-4}{2}=\frac{x_0-2}{2} \tag{9} 12x04=2x02(9)
    上式就表明,只有当 f ( 4 ) f(4) f(4) f ( 2 ) f(2) f(2)表示到某衡量点的距离百分比各为50%的时候, (9)才能成立.

    def bilinear_kernel1(in_channels, out_channels, factor):
        kernel_size = 2 * factor
        center = kernel_size / 2
        og = np.ogrid[:kernel_size, :kernel_size]
        filt = (1 - abs(og[0] - center) / factor) * (1 - abs(og[1] - center) / factor)
        weight = np.zeros((in_channels, out_channels, kernel_size, kernel_size), dtype='float32')
        weight[range(in_channels), range(out_channels), :, :] = filt
        
        return torch.from_numpy(weight)
    

    为了调整出来的og计算方便,在代码中, 由于我们给定的对称性, 可以把 ( f ( 4 ) , f ( 3 ) , f ( 2 ) , f ( 1 ) ) (f(4),f(3),f(2),f(1)) (f(4),f(3),f(2),f(1))写为 ( 1 − f ( 1 ) , 1 − f ( 2 ) , 1 − f ( 3 ) , 1 − f ( 4 ) ) (1-f(1),1-f(2),1-f(3),1-f(4)) (1f(1),1f(2),1f(3),1f(4))

    到此.代码优化完毕

    展开全文
  • 显微图像的3D反卷积代码 使用深度学习Abhijeet Phatak的EE367最终项目3D反卷积() 入门 1.36797.tif是从以下位置获得的数据集 2.数据集是1904x1900x88图像。 使用反卷积函数通过20次迭代来估算44个宽视野[WF](观察...
  • 反卷积的棋盘格效应

    千次阅读 2019-09-30 17:22:47
    本文译自来自谷歌大脑的AUGUSTUS ODENA等人的文章: Deconvolution and Checkerboard Artifacts[1], 虽然是16年的博客了, 但是其对解释反卷积的棋盘效应已经如何规避都给出了非常好和到位的意见. 下面让我们开始~ ...

    本文译自来自谷歌大脑的AUGUSTUS ODENA等人的文章: Deconvolution and Checkerboard Artifacts[1], 虽然是16年的博客了, 但是其对解释反卷积的棋盘效应已经如何规避都给出了非常好和到位的意见. 下面让我们开始~

    前言

    当我们分析由神经网络生成的图片的时候, 常常会发觉有一种奇怪的人造物 (artifacts)棋盘格效应 (checkerboard pattern) 出现. 在某些任务中这种现象表现的尤为明显, 而且最近 (2016年啊, 不是现在…) 很多的模型都暴露出了这个问题.
    在这里插入图片描述

    奇怪的是, 棋盘格效应趋向于出现在图像中最显著的地方 (颜色最强烈) (most prominent in images with strong colors) 的地方. 这是怎么回事呢? 是不是神经网络讨厌亮色? 实际上, 导致这些棋盘效应出现的实际原因非常简单,就如同如何避免它们的方法一样简单。


    反卷积 & 重叠区域 (Deconvolution & Overlap)

    当我们使用神经网络来生成图片时, 我们常常根据低分辨率, 高层次描述来构建这些图片. 这使得神经网络可以描述图像的粗略结构, 然后再填充细节.

    为了实现上面描述的方式, 我们需要找到一些方式来使得低分辨率的图片变为高分辨率的图片. 通常, 这关键的一步是由反卷积 (deconvolution) 运算来实现. 概略的说, 反卷积层可以使得模型利用小图片中的每个像素点来在更高分辨率的图像中"绘制"出一个正方形.

    反卷积这个运算符或者说层结构, 有很多各种各样的解释和不同的名字, 包括转置卷积 (transposed convolution), 本文中为了简单起见, 统一称之为反卷积.

    虽然反卷积很6, 不过它很容易遇到一种叫做 “uneven overlap”(不均匀重叠) 的现象[6]. 具体来说, 当kernel_size 无法被 stride整除时, 反卷积就会出现这种不均匀重叠的现象. 原则上,神经网络可以通过仔细学习权值来避免这种情况,但在实践中,神经网络很难完全避免这种情况.

    在这里插入图片描述

    上面这个图在原文[1]中是可以交互的, 有兴趣的朋友可以去尝试一下~. 图中上面的那行是指输入到反卷积的数据, 下面的那行则是经过反卷积后输出的结果.

    这种重叠模式在2维结构中同样存在. 对2维结构(以图片威力), 两个轴(高, 宽)上的不均匀的重叠叠加在一起,就形成了一个不同大小的典型棋盘状图案, 如下图的深色部分所示。
    在这里插入图片描述

    实际上, 这种不均匀的重叠部分在2维结构中的效应比1维结构更加明显! 因为两张模式的相互耦合, <color=red>不均匀性 (unevenness) 得到进一步的强化了. 举个例子来说, 在1维的结构中, 步长为2, kernel size为3的反卷积的有些输出是2个输入的重叠(深灰色部分), 而在2维结构中, 有些输出甚至是4个输入的重叠(黑色部分).

    在2016年, 典型的图像生成网络通常会使用不少的反卷积层, 以迭代的方式从一系列低分辨率的描述中构建更大的图像. 这种堆叠的反卷积结构经常混合起来, 创建各种尺寸和维度的人造物和棋盘效应.

    在这里插入图片描述
    步长为1的反卷积 — 我们常常会发现这种层被放置在成功的图像生成模型的最后的层中  — 对于抑制人造物效应是相当有效的. 他们可以有效的移除频率伪影 (artifacts of frequencies),并减少其他小于其大小的频率伪影。然而,正如在许多最近的模型中所看到的,这种棋盘人造物仍然可以泄漏出去, 被我们观察到。

    除了在前言部分展示的高频棋盘格效应的人造物外, 早期的反卷积还可能会引起低通滤波人造物.

    这种人造物在输出非常规颜色的时候会变为尤为显著. 由于神经网络层结构通常会使用偏置单元 (bias=True), 通常的输出是平均的颜色. 而像亮红色这种不是平均颜色的特殊颜色, 需要更多的反卷积来进行处理的过程也就越多.


    重叠区域 & 学习 (Overlap & Learning)

    不均匀重叠 (uneven overlap) 的角度考虑问题,虽然这是一个有用的框架,但有点过于简单。无论是好是坏,我们的模型都要为它们的反卷积学习权重。

    理论上讲, 模型应该可以在仔细决定写入的不均匀重叠位置 (carefully write to unevenly overlapping positions), 以便于能够均衡输出结果.

    在这里插入图片描述
    这是一个技巧性的平衡方式, 特别是当有多个通道进行交互的情况下. 避免 人造物(artifacts) 极大地限制了可能的滤波器 (filters),牺牲了模型的容量. 从实际工程的角度而言, 神经网络很难完全避免包括棋盘格效应在内的这些模式。

    实际上: 无论是存在不均匀重叠的模型还是具有均匀重叠的模型都无法完全避免棋盘格效应!

    在这里插入图片描述

    完全避免这种效应是反卷积的滤波器面临的一个很严重的挑战. 而且实际上, 这种效应仍存在在有着反卷积的模型当中, 几遍它们看起来没有那么明显 (如[4], 其使用了stride = 2, kernel_size = 4的反卷积为例进行了说明).

    这里可能有很多因素在起作用。例如,在生成对抗网络 (GANs) 中,一个可能的问题是判别器 D 及其梯度导致的。但问题的很大一部分似乎是反卷积。在最好的情况下,反卷积仍是脆弱的,这是因为它非常容易表示人造的, 并不实际存在的功能,即使在仔细选择kernel_size, stride等参数大小时也是如此。在最坏的情况下,人造物或者说棋盘效应是反卷积的默认行为。

    那么, 问题来了, "有没有一种能够有效的抑制棋盘格效应的上采样方法呢?"


    更好的上采样方法 (Better Upsampling)

    为了避免人造物, 作者使用了最近邻上采样来代替反卷积.

    • 一种方式是要确保你使用的kernel size 可以被 stride 整除, 这就避免了overlap的问题. 这个操作等效于 “sub-pixel convolution” [7] 这个技术在图像超分辨率上取得了不错的效果. 然而, 这个方式治标不治本~

    • 更一种方式是two-stage: 1) 用一般的upsample方法(最近邻, 双线性插值等)进行resize, 对特征图进行放大 2) 在第1)步得到的放大的特征图基础上进行卷积. 这看起来是更自然的方法, 而且这种思路在超分辨率任务中表现的非常不错.

    在这里插入图片描述
    无论是反卷积还是Resize的方式都可以以矩阵的形式来呈现, 这对于发现他们之间的不同很有帮助 (上图的例子是1维卷积). 当反卷积对每个输出窗口都有一个唯一的入口时,resize-convolution就隐含地限制了权重,从而抑制了高频伪影.

    本文作者尝试的结果是: 最近邻上采样+卷积 > 双线性上采样+卷积.具体做法如下:

    具体代码实现:
    Resize-convolution layers can be easily implemented in TensorFlow using tf.image.resize_images(). For best results, use tf.pad() before doing convolution with tf.nn.conv2d() to avoid boundary artifacts.


    图像生成结果

    作者的经验是最近邻+卷积的效果是最好的.下面是在GAN中将反卷积替换为最近邻上采样+卷积的效果.可以发现,棋盘格这种人造物现象真的没有了~
    在这里插入图片描述

    实际上,由于反卷积导致人造物的出现在训练之前就可以察觉.如果我们以随机的权重来生成一张图片,我们能够观察到如下现象:

    在这里插入图片描述

    这显然表明:人造物是由于反卷积产生的, 而非对抗训练这种策略导致的.

    参考资料

    [1] Unsupervised representation learning with deep convolutional generative adversarial networks
    PDF
    Radford, A., Metz, L. and Chintala, S., 2015. arXiv preprint arXiv:1511.06434.

    [2] Improved techniques for training gans
    PDF
    Salimans, T., Goodfellow, I., Zaremba, W., Cheung, V., Radford, A. and Chen, X., 2016. Advances in Neural Information Processing Systems, pp. 2226—2234.

    [3] Adversarial Feature Learning
    PDF
    Donahue, J., Krahenbuhl, P. and Darrell, T., 2016. arXiv preprint arXiv:1605.09782.

    [4] Adversarially Learned Inference
    PDF
    Dumoulin, V., Belghazi, I., Poole, B., Lamb, A., Arjovsky, M., Mastropietro, O. and Courville, A., 2016. arXiv preprint arXiv:1606.00704.

    [5] Deconvolution and Checkerboard Artifacts

    [6] Conditional generative adversarial nets for convolutional face generation
    PDF
    Gauthier, J., 2014. Class Project for Stanford CS231N: Convolutional Neural Networks for Visual Recognition, Winter semester, Vol 2014.

    [7] Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network
    PDF
    Shi, W., Caballero, J., Huszar, F., Totz, J., Aitken, A.P., Bishop, R., Rueckert, D. and Wang, Z., 2016. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1874—1883. DOI: 10.1109/cvpr.2016.207

    展开全文
  • 基于特征融合的扩展反卷积SSD小目标检测方法,刘惠禾,高欣,为了提高SSD在小目标上的检测效果,本文提出一种基于特征融合的扩展反卷积SSD目标检测模型。该模型首先选取基础网络特定层,通过上
  • 卷积与反卷积

    2019-04-23 20:29:44
    转自:卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)动态图1.前言   传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给...

    转自:卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)

    1.前言

       传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与反卷积。
        对于1维的卷积,公式(离散)与计算过程(连续)如下,要记住的是其中一个函数(原函数或者卷积函数)在卷积前要翻转180度

    图1
        对于离散卷积,f的大小是n1,g的大小是n2,卷积后的大小是n1+n2-1

    2.图像卷积


    图2
    同样地,卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下

    图3
    这样计算出左上角(即第一行第一列)像素的卷积后像素值。

    给出一个更直观的例子,从左到右看,原像素经过卷积由1变成-8。

    图4
    通过滑动卷积核,就可以得到整张图片的卷积结果,

    图5
        到了这里,大致可以明白图像卷积。但是我们可以看出,通过图像卷积后,新图像的大小跟原来一样,或者变小。图2计算后图像大小不变,如图5卷积后图像变小是因为没有对所用像素进行卷积计算。但是1维的卷积结果不是变大了吗? 下面对其解释。

        在matlb中对2维卷积的计算分为了3类,1.full   2.same   3. valid   参考:https://cn.mathworks.com/help/matlab/ref/conv2.html?requestedDomain=www.mathworks.com
    图2对应的卷积就是就是所谓的same,图5对应的就是valid。那么full又是什么呢?如下图

    图6

        图6中蓝色为原图像,白色为对应卷积所增加的padding,通常全部为0,绿色是卷积后图片。图6的卷积的滑动是从卷积核右下角与图片左上角重叠开始进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图像的像素点。可以看到卷积后的图像是4X4,比原图2X2大了,我们还记1维卷积大小是n1+n2-1,这里原图是2X2,卷积核3X3,卷积后结果是4X4,与一维完全对应起来了。其实这才是完整的卷积计算,其他比它小的卷积结果都是省去了部分像素的卷积。下面是WIKI对应图像卷积后多出部分的解释:

    Kernel convolution usually requires values from pixels outside of the image boundaries. There are a variety of methods for handling image edges.意思就是多出来的部分根据实际情况可以有不同的处理方法。(其实这里的full卷积就是后面要说的反卷积)


    这里,我们可以总结出full,same,valid三种卷积后图像大小的计算公式:
    1.full: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1+N2-1 x N1+N2-1
    如图6, 滑动步长为1,图片大小为2x2,卷积核大小为3x3,卷积后图像大小:4x4
    2.same: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1xN1
    3.valid:滑动步长为S,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:(N1-N2)/S+1 x (N1-N2)/S+1
    如图5,滑动步长为1,图片大小为5x5,卷积核大小为3x3,卷积后图像大小:3x3

    3.反卷积(后卷积,转置卷积)

        上面也提到过反卷积有时候也被叫做Fractionally Strided Convolution,翻译过来大概意思就是小数步长的卷积。对于步长 s>1的卷积,我们可能会想到其对应的反卷积步长 s′<1。 如下图所示为一个参数为 i=5,k=3,s=2,p=1的卷积操作(就是第一张图所演示的)所对应的反卷积操作。对于反卷积操作的小数步长我们可以理解为:在其输入特征单元之间插入 s−1 个0,插入0后把其看出是新的特征输入,然后此时步长 s′ 不再是小数而是为1。因此,结合上面所得到的结论,我们可以得出Fractionally Strided Convolution的输入输出关系为:    o′=s(i′−1)+k−2p

    这里提到的反卷积跟1维信号处理的反卷积计算是很不一样的,FCN作者称为backwards convolution,有人称Deconvolution layer is a very unfortunate name and should rather be called a transposed convolutional layer. 我们可以知道,在CNN中有con layer与pool layer,con layer进行对图像卷积提取特征,pool layer对图像缩小一半筛选重要特征,对于经典的图像识别CNN网络,如IMAGENET,最后输出结果是1X1X1000,1000是类别种类,1x1得到的是。FCN作者,或者后来对end to end研究的人员,就是对最终1x1的结果使用反卷积(事实上FCN作者最后的输出不是1X1,是图片大小的32分之一,但不影响反卷积的使用)。

        这里图像的反卷积与图6的full卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现end to end。

    图7
       

    这里说另外一种反卷积做法,假设原图是3X3,首先使用上采样让图像变成7X7,可以看到图像多了很多空白的像素点。使用一个3X3的卷积核对图像进行滑动步长为1的valid卷积,得到一个5X5的图像,我们知道的是使用上采样扩大图片,使用反卷积填充图像内容,使得图像内容变得丰富,这也是CNN输出end to end结果的一种方法。韩国作者Hyeonwoo Noh使用VGG16层CNN网络后面加上对称的16层反卷积与上采样网络实现end to end 输出,其不同层上采样与反卷积变化效果如下,


                                                                                                                                                       图8

        到这里就把图像卷积与反卷积解释完成,如有不妥,请学者们指证。
        
        补充一个资料:
        图6与图7出处, https://github.com/vdumoulin/conv_arithmetic     

    ------------新增反卷积过程解释----------------
    经过上面的解释与推导,对卷积有基本的了解,但是在图像上的deconvolution究竟是怎么一回事,可能还是不能够很好的理解,因此这里再对这个过程解释一下。
    目前使用得最多的deconvolution有2种,上文都已经介绍。 
    方法1:full卷积, 完整的卷积可以使得原来的定义域变大
    方法2:记录pooling index,然后扩大空间,再用卷积填充

    图像的deconvolution过程如下,

    输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7
    即输入为2x2的图片经过4x4的卷积核进行步长为3的反卷积的过程
    1.输入图片每个像素进行一次full卷积,根据full卷积大小计算可以知道每个像素的卷积后大小为 1+4-1=4, 即4x4大小的特征图,输入有4个像素所以4个4x4的特征图
    2.将4个特征图进行步长为3的fusion(即相加); 例如红色的特征图仍然是在原来输入位置(左上角),绿色还是在原来的位置(右上角),步长为3是指每隔3个像素进行fusion,重叠部分进行相加,即输出的第1行第4列是由红色特阵图的第一行第四列与绿色特征图的第一行第一列相加得到,其他如此类推。

    可以看出反卷积的大小是由卷积核大小与滑动步长决定, in是输入大小, k是卷积核大小, s是滑动步长, out是输出大小
    得到 out = (in - 1) * s + k
    上图过程就是, (2 - 1) * 3 + 4 = 7

    展开全文
  • 反卷积原理

    千次阅读 2018-05-13 15:17:20
    一 介绍反卷积,可以理解为卷积操作的逆运算。这里千万不要当成反卷积操作可以复原卷积操作的输入值,反卷积并没有那个功能,它仅仅是将卷积变换过程中的步骤反向变换一次而已,通过将卷积核转置,与卷积后的结果再...
  • 卷积 若输入含有多个通道,则对于某个卷积核,分别对每个通道求feature map后将对应...在介绍反卷积之前,我们需要深入了解一下卷积,一个简单的卷积层运算,卷积参数为i=4,k=3,s=1,p=0i=4,k=3,s=1,p=0i=4,k=3,s=1,p=0
  • [CNN] 卷积、反卷积、池化、反池化

    万次阅读 多人点赞 2018-11-28 17:03:55
    之前一直太忙,没时间整理,这两天抽出点时间整理一下卷积、反卷积、池化、反池化的内容。 一、卷积 1、卷积的简单定义 卷积神经网络中的卷积操作可以看做是输入和卷积核的内积运算。其运算过程非常容易理解,...
  • 深度学习---图像卷积与反卷积(最完美的解释)

    万次阅读 多人点赞 2018-05-31 10:57:28
    转自:卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)1.前言 传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个...
  • 反卷积详解

    万次阅读 多人点赞 2019-04-26 16:42:36
    反卷积又称转秩卷积(Transposed Convolution),上采样(Upsampled )。 其作用举例如下: 1.当我们用神经网络生成图片的时候,经常需要将一些低分辨率的图片转换为高分辨率的图片。 2.在语义分割中,会使用卷...
  • 大家好,新手入门语义分割,在利用pytorch实现Linknet的时候,在编码层最后输出的尺寸为6×10(上一层为12× 20),文中规定反卷积核的尺寸为k为3× 3,步长s = 2,利用反卷积求输出尺寸的大小为N(out) = (N(in...
  • 通过示意图,我们可以发现,反卷积层的输入输出在 s=s′=1 的情况下关系为: o′=i′−k′+2p′+1=i′+(k−1)−2p 上述反卷积操作是在 s=s′=1 的情况下,对于步长 s>1的卷积,我们可能会想到其对应的反卷积步长 s′...
  • 在阅读YOLO模型和DenseNet网络模型的时候,...文章目录上采样(Upsample)反卷积(Transposed Convolution)pytorch实现上采样 上采样(Upsample) 在介绍上采样前,还有一个概念叫做下采样。下采样简单来讲,就是在卷
  • 反卷积实现及优化

    2020-08-08 15:26:29
    首先让我们了解一下反卷积操作:反卷积就是卷积的反操作,但是通常情况下反卷积被用来和池化对应起来。被认为是池化的逆操作。原因是池化的作用是缩小图片大小,而池化恰好和他相反。 下面让我们看两种反卷积...
  • 卷积和反卷积

    千次阅读 2018-06-22 22:01:50
    反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其之后的工作中(Adaptive deconvolutional networks ...
  • 反卷积的两种方式

    千次阅读 2019-07-09 22:31:31
    full mode卷积 卷积中的full模式,在步长小的时候会出现卷积后的结果比原图size大的情况。 多出来的部分根据实际情况可以有不同的处理方法。这种操作其实是一种反卷积。...这里千万不要当成反卷积...
  • 反卷积与语义分割

    千次阅读 2016-11-17 16:29:32
    反卷积效果 同卷积网络一样,反卷积网络同样有层次结构,低层输出只能表示出对象的大致形状,而高层的输出则包含了更多的细节。 (a)为输入图片,(b)(d)(f)(h)(j)依次为第1,2,3,4,5层反卷积层输出,剩下的为...
  • 在计算机视觉领域,很多模型都用到了反卷积,但是有一点让我很迷惑:有的论文代码中,反卷积是直接调用ConvTranspose2d()函数,而有的是先upsample(上采样),再卷积,不用转置卷积的函数,为什么呢?然后我就找了...
  • 颜色反卷积

    2018-06-22 10:06:24
    颜色反卷积算法的设计针对RGB摄像机获取的颜色信息,基于免疫组化技术使用的染色剂RGB分量光的特异性吸收,分别计算每种染色剂对图像的作用效果。免疫组织化学图像处理通常用的染色包括DAB、H&amp;E。颜色反卷积...
  • 卷积神经网络实例2:反卷积

    千次阅读 2019-05-23 15:52:16
    反卷积是指,通过测量输出和已知输入重构未知输入的过程。在神经网络中,反卷积过程并不具备学习的能力,仅仅是用于可视化一个已经训练好的卷积网络模型,没有学习训练的过程。对于一个复杂的深度卷积网络,通过每层...
  • 应用于相关辨识中的维纳滤波反卷积算法对噪声的适应性不理想,辨识效果不佳。据此分析了维纳滤波反卷积算法在对大地辨识的过程中对噪声适应性不理想的原因,并提出了相应的改进算法:根据检测系统冲激响应的频谱范围...
  • 传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与反卷积...
  • 点态SA-DCT正则化反卷积。 本文给出的所有结果,都是使用基于低复杂度SA-DCT的算法得到的,并且可以使用点态自适应DCT Demobox进行复制。 用于去模糊,去噪,都有很好的效果
  • 现在,一般使用多层反卷积来生成图像,尽管理论上可以消除假象的影响,实际上反卷积层层叠加,产生不同尺度上的假象。 理论上,模型可以学会处理uneven overlapping positions,所以输出仍是均衡的,实际上很难处理...
  • 并验证了在1 s观测时间内,千赫兹激光测距系统经反卷积解算前后观测量对比效果。分析结果表明,当统计分布中峰谷分辨度大于10时,各光子分立时刻可以有效分辨,该方法的时间分辨力达到0.2~0.7 ns。
  • 搞明白了卷积网络中所谓deconv到底是个什么东西后,不写下来怕又忘记,根据参考资料,加上我自己的理解,记录在这篇博客里。 先来规范表达 ...i,o,k,p,s\ i,o,k,p,s 分别表示:卷积/反卷积的...
  • 对FCN及反卷积的理解

    千次阅读 2018-09-10 11:45:46
    原文链接:对FCN及反卷积的理解 ----主要参考 https://github.com/vdumoulin/conv_arithmetic https://www.zhihu.com/question/43609045 http://blog.csdn.net/fate_fjh/article/details/52882134 先介绍一波...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,656
精华内容 5,862
关键字:

反卷积效果