三维卷积及其应用

理论基础

三维卷积是二维卷积的自然扩展,它在处理三维数据时具有独特优势。与二维卷积在图像平面上滑动不同,三维卷积核在三个维度上同时进行卷积运算。

三维卷积的本质是在三维空间中进行滑动窗口操作。其详细的数学表达可以展开为:

其中:

  • k_{1},k_{2},k_{3}​ 分别表示卷积核在三个维度上的大小
  • V 是输入体积数据
  • K是三维卷积核
  • (x,y,z)表示输出特征图中的位置

特征映射计算

对于具有多个输入通道的情况,完整的三维卷积计算可以表示为:

其中:

  • C_{in}是输入通道数
  • d_{out}表示输出特征图的通道索引
  • b 是偏置项

 感受野分析

三维卷积的感受野是一个三维立方体区域:

其中k_{x},k_{y},k_{z}是卷积核尺寸,d_{x},d_{y},d_{z}是膨胀率(dilation rate)。

有效感受野(ERF)

实际上,卷积层的有效感受野呈现高斯分布特性,中心区域的影响最大,向外逐渐减弱。

填充策略(Padding)

三维卷积中的填充可以在三个维度上独立设置:

  1. 零填充(Zero Padding): 输出尺寸计算:O_{d}=|\frac{I_{d}+2P_{d}-K_{d}}{S_{d}}|+1,

    其中I_{d} 是输入尺寸,P_{d}是填充大小,K_{d} 是核尺寸, S_{d}是步长。

  2. 反射填充(Reflection Padding): 适用于需要保持边界连续性的场景。

参数复杂度分析

参数量计算:P_{arams}=(k_{1}*k_{2}*k_{3}*C_{in}*C_{out})+*C_{out}

实例代码

实例的3维卷积函数

def conv3d(input_img, kernel):
    """
    执行3D卷积运算
    """
    channels, height, width = input_img.shape
    k_depth, k_height, k_width = kernel.shape

    # 计算输出尺寸
    output_height = height - k_height + 1
    output_width = width - k_width + 1

    # 初始化输出
    output = np.zeros((output_height, output_width))

    # 执行卷积
    for i in range(output_height):
        for j in range(output_width):
            # 对所有通道进行卷积并求和
            sum = 0
            for c in range(channels):
                patch = input_img[c, i:i + k_height, j:j + k_width]
                sum += np.sum(patch * kernel[c])
            output[i, j] = sum

    return output

 计算每个卷积核的输出

# 计算卷积核的输出
output = conv3d(I, K) + b

需要详细代码,私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可喜~可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值