Long-term Recurrent Convolutional Networks for Visual Recognition and Description
Long-term Recurrent Convolutional Networks for Visual Recognition and Description
info
2015CVPR
jeff Donahue http://jeffdonahue.com/
lisa anne hendricks https://people.eecs.berkeley.edu/~lisa_anne/index.html
project page:http://jeffdonahue.com/lrcn/
主要关注作者CNN+LSTM用于动作识别的部分。
文章当中个CNNbase:一个混合体(经过小改动的AlexNet和一个在imagenet上预训练的模型的混合)。
大致流程如上图。首先对整个视频抽取视频帧,对于每一个视频帧都用CNN提取特征,送入LSTM,对每个LSTM单元的输出取平均得到最终分类结果。(改动的AlexNet和LSTM是自己训练的)
Intro
作者提出,理想视频模型应该可以处理不同长度的输入(视频)和输出(比如不同长度的描述句子)。
文章提出了LRCN,结合了convolutional layers and long-range temporal recursion,就是CNN和LSTM啦,模型用于视觉识别和描述,而且可以端到端训练。
几个优点:
- 普遍适用于视觉上的时间序列建模
- 在训练数据足够时,能够有效提升原有模型
- 特别的,提升了视频动作识别、对于句子级别的自然语言表述可以端到端训练
- improve generation of descriptions from intermediate visual representations derived from conventional visual models.
三个实验
- 动作识别(CNN+LSTM),捕捉时序状态依赖
- 图像到句子的mapping(端到端)
- 传统视觉算法+LSTM,进行highlevel的判别式标签预测(不是端到端)
BACKGROUND: RECURRENT NETWORKS
介绍RNN,以及LSTM~~(这个网上很多就不写了)
LONG-TERM RECURRENT CONVOLUTIONALNETWORK (LRCN) MODEL
本文提出的LRCN。
LRCN这个框架,对于每个visual input,记为xt,经过一个特征变换(其实就是CNN),产生定长的特征向量,输入接下来的递归序列学习模块(LSTM)。然后这个递归模块会给出输出zt,经过一个线性prediction layer
然后作者详细说明了一下文章做的三个实验(不展开了):
- 动作识别:序列输入、静态输出。输入是任意长度的视频,输出是固定的标签。
- image captioning:静态输入、序列输出。
- 视频描述:序列输入输出。
对于第一个,采用了一个late-fusion的方法,来讲每个时间点的predictions合并为一个prediction y。
Activity Recognition
- 数据集:UCF101
- 输入:RGB+光流图,定长16frames的video clip
- 输出:单独标签
一些实现细节:
首先,对于输入来说,做了如下处理:
- 提取视频帧:30frames/second
- 计算光流图片,采用了ECCV2004的一个方法。计算出来光流之后,通过scaling和shifting光流值到[-128,+128]范围内。光流图片的第三个通道用于计算光流权重flow magnitude。参考:High accuracy optical flow estimation based on a theory for warping
- 训练时,进行resize:240x320
- augment data:227x227 crops,mirroring。另外,作者提出,由于输入定长只有16frms,其实相当于对视频进行crops。
作者采用的CNN base是下述两个的model的混合体(具体细节要看代码了吧):
- caffeNet reference model
- network used by Visualizing and understanding convolutional networks
UCF101,12000+videos,101类,3splits(每个split中训练集不到8000的样子)。
作者在训练时,将第一个training split分为了training set (约6000)和validation set(约3000)。
We find that the most influential hyperparameters include :
- the number of hidden units in the LSTM and
- whether fc6 or fc7 features are used as input to the LSTM
比较了256、512、1024个LSTM隐含单元:
- flow as input:更多hidden unit更高 1024比256高1.7%
- RGB:隐含单元数量has little impact on the performance of the model.
所以最后采用, 1024 hidden units for flow inputs, and 256 for RGB inputs.
然后,对于flow来说,采用fc6而不是fc7特征,能够提高1%,RGB来说,fc6和fc7没什么差别,只增加了0.2%,所以最终采用了fc6特征。记为LRCN-fc6。
Additionally,when training the LRCN network end-to-end, we found that aggressive dropout (0.9) was needed to avoid overfitting.
晚上看代码~~~