3D 卷积在高度、宽度、深度三个维度上滑动提取特征,适用于视频分析和医学影像等三维数据。

基本概念

数学定义

  • 输入
  • 卷积核
  • 输出:三维特征图,保留空间和时间信息

应用场景

场景应用
视频分析动作识别、视频分割、运动检测
医学影像MRI/CT 分析、3D 分割、病变检测
3D 物体识别点云处理、自动驾驶 LiDAR 数据

2D vs 3D 卷积

对比项2D 卷积3D 卷积
适用数据单张图片视频、医学影像
输入形状
计算复杂度
特征提取空间信息空间+时间信息

输出尺寸计算

示例:输入 ,卷积核 ,stride=1,padding=1

  • 空间输出:
  • 时间输出:
  • 最终输出:

PyTorch 实现

import torch.nn as nn
 
class Simple3DConvNet(nn.Module):
    def __init__(self, in_channels=3, out_channels=64):
        super().__init__()
        self.conv3d = nn.Conv3d(in_channels, out_channels, 3, padding=1)
        self.pool3d = nn.MaxPool3d(2, stride=2)
 
    def forward(self, x):
        return self.pool3d(self.conv3d(x).relu())
 
# 输入: [batch, channels, depth, height, width]
x = torch.randn(1, 3, 16, 32, 32)
model = Simple3DConvNet()
output = model(x)  # [1, 64, 8, 16, 16]

改进版本

方法说明
(2+1)D 卷积分解为 2D 空间 + 1D 时间卷积,减少计算
3D 深度可分离卷积减少参数,提高效率
注意力结合SE3D、CBAM3D 增强特征提取