【CV-Action Recognition】3D CNN阅读笔记

原论文链接:3D Convolutional Neural Networks for Human Action Recognition

motivation

随着红黄蓝事件的发酵,这个社会人心不古,没有监督政府会腐败,教育也会沦丧,谁还会说视频监控的人类行为识别没有必要,打架斗殴,偷窃,养老院虐待等等社会问题,各种异常行为检测,依目前的技术条件当然要很长路要走,但是这么多的坑,在CV行业奋战的各路牛鬼蛇神,不都是在填坑的路上发顶会Paper,开创业公司, 我欲成仙立地成佛!

书接上回,RGB image静态图像处理的CNN,对二维图像有效,视频图像是否可以按帧分割成一序列静态图像,在每帧上用2D CNN处理?当然可以!但是视频图像大部分的背景信息是冗余的,2D CNN太不高效。视频处理领域有4个基本流派:3D CNN、LSTM、optial flow、two stream。3D CNN被吐槽参数太多,本着有问题不放过的原则,研读2013年这篇古董级的paper。(另外一篇更古董的文章:Notes on Convolutional Neural Networks,介绍3D CNN的计算细节。关于光流的文章鄙人不会写精度笔记了)

Architecture

首先看一下2D CNN和3D CNN的公式对比(不好意思这有这么一个公式):



2D CNN只是针对单一图像,3D CNN针对R个连续帧图像,且卷积位置是固定的!如下图所示,3D CNN的黑红蓝色表示对第1,2,3帧卷积,输出第一个卷积特征图,对第2,3,4帧图像共享卷积核,输出第二个卷积特征图。



本文使用的数据集是TRECVID,3D CNN架构包含一个hardwired层(这个真不知道怎么翻译)、3个卷积层、2个下采样层和一个全连接层。每个3D卷积核卷积的立方体是连续7帧,每帧patch大小是60x40;



为什么7帧的图片,产生23通道特征图?论文交代,每帧图像提取五个通道的信息,分别是:灰度、x和y方向的梯度,x和y方向的光流。其中,灰度和X,Y方向的梯度每帧都都可以单独计算。但是水平和垂直方向的光流信息需要两个连续帧计算。所以是7x3 + (7-1)x2=33个特征maps。

这时候,3D CNN登上舞台。作者用两个7x7x3的3D卷积核(7x7在二维空间,3是时间维度,表示每3帧卷积一次),在五个通道的每一个通道分别进行卷积。这样在C2层的两个特征maps组中,每组都包含23个特征maps。23=(7-3+1)x3+(6-3+1)x2,加号前面表示七个连续帧,其灰度、x和y方向的梯度这3个通道都分别有7帧,水平和垂直方向光流2个通道都只有6帧。54x34是空间维度卷积,(60-7+1)x(40-7+1)。

以下的过程都是不断下采样和3D卷积的过程。值得关心的是这个数据:针对7@60x40的视频序列,3D CNN使用了296M的参数,这还只是3个卷基层,2个下采样层,1个全连层,这还只是输出三个行为类别,怎一个臃肿了得!

Experiment

略,比较state-of-the-art结果无意义

Conclusion

从论文介绍的3D CNN有很多缺点: 1、论文是使用对二维尺度卷积,接近300M参数,图片是600x400得多少参数?

2、有的论文笔记讨论模型规则化Model Regularization,本文是7帧图片卷积,跨10帧或更多帧信息处理?但是我看到的论文版本无此介绍,(已翻墙google搜索)

3、实时性,论文没有介绍,应该是不理想。作为3D CNN的奠基之作,应该有更多的优化空间。


返回CV-Action Recognition目录

返回CV总目录

编辑于 2017-12-08

文章被以下专栏收录