论文《Recursive Cascaded Networks for Unsupervised Medical Image Registration》中密度可变形网络中的通道数和卷积层尺寸问题

各个卷积层的上方是通道数channels,初始图像是128*128*128*2,代表(x,y,z,c)每一层的卷积核数量number of kernel有多少,

就代表经过这一层卷积后的输出图像的通道数有多少,论文的代码中初始channel设为16,下采样的过程中每次卷积的卷积核的数量都会乘2

 

初始参数:

输入图像尺寸:n*n*n=128*128*128

padding=0

f=3

strde s=2

根据公式公式链接

得出输出图像尺寸为(128+0-3)/2+1=63,但这是跟代码中的注释不符的,代码中明确标明第一层后的图像尺寸变为了64*64*64,

我一开始认为:这里是向上取整的,否则后续的所有计算都不正确。

但后来发现这是不对的,因为我注意到了代码中的边缘填充padding并不是0

def convolve(opName, inputLayer, outputChannel, kernelSize, stride, stddev=1e-2, reuse=False, weights_init='uniform_scaling'):
    return tflearn.layers.conv_3d(inputLayer, outputChannel, kernelSize, strides=stride,
                                  padding='same', activation='linear', bias=True, scope=opName, reuse=reuse, weights_init=weights_init)

被用到的填充方法叫做Same卷积,那意味你填充后,你的输出大小和输入大小是一样的。

如果你想让n+2p-f+1=n的话,使得输出和输入大小相等,如果你用这个等式求解p,那么p=(f-1)/2。也就是p=1

那么重新计算就变成了了(128+2*1-3)/2+1=64,这样就对了

当从4-1到4-2时,4-1的大小是8*8*8,但到达4-2时步长设为了1

根据公式就变成了(8+2*1-3)/1+1=8,尺寸依然没有变,同时这里的卷积核数量也没有变,通道也就没变。

在padding为same时,公式也可以写成ceil(n/s),ceil代表向上取整

conv4 = convolveLeakyReLU(
            'conv4',   conv3_1,    c*8,  3, 2)  # 16 * 16 * 16
        conv4_1 = convolveLeakyReLU('conv4_1', conv4,      c*8,  3, 1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值