注:本文首发在微信公众号-极市平台。如需转载,请联系微信Extreme-Vision
卷积神经网络(CNN)近年被广泛应用于计算机视觉中,包括分类、检测、分割等任务。这些任务一般都是针对图像进行的,使用的是二维卷积(即卷积核的维度为二维)。而对于基于视频分析的问题,2D convolution不能很好得捕获时序上的信息。因此3D convolution就被提出来了。3D convolution 最早应该是在[1]中被提出并用于行为识别的,本篇文章则主要介绍下面这篇文章 C3D[2],C3D network是作为一个通用的网络提出的,文章中将其用于行为识别,场景识别,视频相似度分析等领域。
可以访问C3D network的项目主页或是github获得其项目代码及模型,项目基于caffe实现。最近作者还更新了残差网络结构的新C3D模型,但是还没有放出对应的论文,暂时不做讨论。
2D 与 3D 卷积操作
首先简要介绍一下2D与3D卷积之间的区别。a)和b)分别为2D卷积用于单通道图像和多通道图像的情况(此处多通道图像可以指同一张图片的3个颜色通道,也指多张堆叠在一起的图片,即一小段视频),对于一个滤波器,输出为一张二维的特征图,多通道的信息被完全压缩了。而c)中的3D卷积的输出仍然为3D的特征图。
现在考虑一个视频段输入,其大小为 c∗l∗h∗w ,其中c为图像通道(一般为3),l为视频序列的长度,h和w分别为视频的宽与高。进行一次kernel size为 3∗3∗