理解3d卷积

  • 我的个人理解


我的个人理解

作分类时,对于不同类别的数据,无论是使用什么方法和分类器(仅限于线性回归和深度学习)去拟合数据,都首先要构建适合数据的多种特征(比如根据性别、年龄、身高来区分一个人是否喜欢打篮球).之后的处理过程是,权重参数都要和不同的特征分别相乘,然后再将不同的乘积加起来求和,处理过程就是不同特征和对应的权重相乘再相加,而不会是将不同的特征相乘.

对于图像数据,不同的通道表示不同种类的特征,比如RGB通道分别表示红、绿、蓝光谱特征.

而卷积就是分别对不同通道操作,再将这些不同通道的卷积结果相加,而不会将不同通道之间相互卷积.通道始终是独立的,每一个卷积核中的滤波器个数由输入图像的通道数来决定.

conv2d
输入数据是(H,W,band),即为(height,width,band),一个卷积核中的滤波器数量对应于通道数,每个滤波器都是随机生成,一般都是不同的.每个滤波器和对应的波段作卷积,最后不同波段的卷积结果相加输出一个包含一个波段的图像. 滤波器只在每个波段的长、宽方向上移动,滤波器形状为(h,w),是二维的.多个滤波器构成一个卷积核,即为(h,w,b).

conv3d
输入数据是(F,H,W,band),即为(frame,height,width,band).3维卷积滤波器要在每个波段的帧、长、宽方向上移动,滤波器形状为(f,h,w),是三维的.每个波段的数据都是(F,H,W),是三维的,每个滤波器和对应的波段作卷积,得到的结果也是三维数据,之后不同的波段卷积结果相加,得到的结果还是三维的.多个滤波器构成一个卷积核,即为(f,h,w,b).

无论是conv3d还是conv2d,不同的通道都表示不同的特征,都是独立于卷积核的构建的,也不会是卷积的方向;卷积都是分别在不同通道上进行的,最后将所有通道的卷积结果相加.通道数即为卷积核的个数.

注意:如果只是应用的话,理解到是怎么conv3d构建的,是怎么卷积的,就可以了,其中的具体实现不必深究。

注意: 为conv3d作数据准备时候,要再加上一个维度,用来表示帧数,而不是简单地将所有不同时间地影像叠加到通道尺度上.也就是conv2d的数据格式为(H,W,band),而conv3d的数据格式为(F,H,W,band).

参考
讲解最清楚的:
可视化:
Conv1D、Conv2D、Conv3D 讲解:
keras中实现3D卷积(Con3D)和如何准备3D卷积的输入数据:
从2d卷积到3d卷积:
3d卷积的应用: https://zhuanlan.zhihu.com/p/55567098