3D卷积神经网络详解

1 3d卷积的官方详解

 3D卷积神经网络详解_第1张图片

3D卷积神经网络详解_第2张图片

2 2D卷积与3D卷积

1)2D卷积

       2D卷积:卷积核在输入图像的二维空间进行滑窗操作。

2D单通道卷积

       对于2维卷积,一个3*3的卷积核,在单通道图像上进行卷积,得到输出的动图如下所示:

 3D卷积神经网络详解_第3张图片

 2D多通道卷积

       在之前的2D单通道的例子中,我们在一张图像上使用卷积核进行扫描,得到一张特征图。这里的“被扫描图像”是一个通道,而非一张彩色图片。如果卷积核每扫描一个通道,就会得到一张特征图,那多通道的图像应该 被怎样扫描呢?会有怎样的输出呢?

       在一次扫描中,我们输入了一张拥有三个通道的彩色图像。对于这张图,拥有同样尺寸、但不同具体数值的三个卷积核会分别在三个通道上进行扫描,得出三个相应的“新通道”。由于同一张图片中不同通道的结构一定是一致的,卷积核的尺寸也是一致的,因此卷积操作后得出的“新通道”的尺寸也是一致的。

3D卷积神经网络详解_第4张图片       得出三个“新通道”后,我们将对应位置的元素相加,形成一张新图,这就是卷积层输入的三彩色图像的第一个特征图,如下图所示:3D卷积神经网络详解_第5张图片

       这个操作对于三通道的RGB图像、四通道的RGBA或者CYMK图像都是一致的。只不过, 如果是四通道的图像,则会存在4个同样尺寸、但数值不同的卷积核分别扫描4个通道。

       因此,在一次扫描中,无论图像本身有几个通道,卷积核会扫描全部通道之后,将扫描结果加和为一张 feature map。所以,一次扫描对应一个feature map,无关原始图像的通道数目是多少,所以 out_channels就是扫描次数,这之中卷积核的数量就等于输入的通道数in_channels x 扫描次数 out_channels

2D卷积的计算

输入层: (Cin 为输入的通道数)

 超参数:扫描次数:k

              过滤器中卷积核维度:w*h

              滑动步长(stride):s

              填充值(padding):p

输出层:(Cout为输出的通道数) 

输出层和输入层之间的参数关系为:

参数量为:

 2)3D卷积

 3D单通道

       对于3维卷积,一个3*3*3的卷积核在立方体上进行卷积,得到输出如下:

 

 注意:三维单通道跟二维多通道有什么区别吗?

       有。二维多通道卷积不同通道上的卷积核的参数是不同的,而三维卷积的卷积核本身就是3D的。三维单通道的一个三维卷积核的参数在整个图像上权重共享。三维卷积核比二维卷积核多了一个depth维度。这个深度可能是视频上的连续帧,也可能是立体图像中的不同切片

3D多通道

       类似于2D多通道,例如,对于三维多通道,输入大小为(3, depth, height, width)的图像。

       对于这张图,拥有同样尺寸、但不同具体数值的三个三维卷积核会分别在三个通道上进行扫描,得出三个相应的“新通道”。得出三个“新通道”后,我们将对应位置的元素相加,形成一张新图。

            3D卷积神经网络详解_第6张图片

3D卷积的计算

输入层:

超参数:扫描次数:k

               过滤器中卷积核维度:w*h*d

               滑动步长(stride):s

               填充值(padding):p

输出层:

输出层与输入层之间的参数关系为:

 

参数量为:(w*h*d+1)*k

 参考:

卷积神经网络中二维卷积核与三维卷积核有什么区别?

一文搞定3D卷积

你可能感兴趣的:(python,深度学习,计算机视觉,人工智能,pytorch)