Long-term Recurrent Convolutional Networks for Visual Recognition and Description

来源:互联网 发布:C 释放动态数组内存 编辑:程序博客网 时间:2024/05/18 02:35

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

yt=Wzzt+bz
最终得到预测分布
P(yt=c)=softmax(yt)exp(yt,c)Σexp(yt,ct)

然后作者详细说明了一下文章做的三个实验(不展开了):

  1. 动作识别:序列输入、静态输出。输入是任意长度的视频,输出是固定的标签。
  2. image captioning:静态输入、序列输出。
  3. 视频描述:序列输入输出。

对于第一个,采用了一个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.

晚上看代码~~~

0 0
原创粉丝点击