LRCN
2017-01-24 09:54:53 0 举报
AI智能生成
LRCN
作者其他创作
大纲/内容
视频描述
Sequence to Sequence Video to Text
Abstract
真实世界的视频非常复杂,生成开放的视频描述的方法应该对时间结构敏感,并保持输入输出可变
本文提出了端到端可训练的Sequence-to-Sequence模型,用来生成视频描述
我们用了在image captioning领域取得很大成功的LSTMs
我们的LSTM模型用video-sentence pair训练,学习视频序列到单词序列的关联,生成视频事件的描述
我们的模型天然地能够学习视频序列的时间结构和生成的句子的序列模型
在YouTube数据集、M-VAD和MPII-MD视频描述集上验证算法
Introduction
本文的模型
S2VT模型,直接学习视频帧序列到单词序列的映射
LSTM stack逐帧编码视频序列
每帧图像先用CNN提取特征
特征再进入LSTM进行编码
读取所有帧之后,用LSTMs逐个生成word
frame和word representation的编解码联合学习
为了建模视频的时间结构,还计算了连续帧之间的光流
光流同样作为CNN的输入,最后进入LSTM编码
光流特征被证明对动作识别有帮助
本文的先进性
是第一个将Sequence to Sequence模型用于视频描述的算法
能处理不同长度的输入
能学习并利用视频的时间信息
能学习出语言模型和句法
联合学习,端到端可训练,整合了灰度和光流信息,不需要显式的attention 模型
Related Work
Approach
模型描述
用于视频描述的Sequence to Sequence模型
输入是视频帧序列
输出是单词序列
输入和输出的长度皆可变
算法来源
计算的是给定输入序列(x0, ..., xn)时的输出的序列的条件概率
这个问题与机器翻译类似,输入的是一种语言的序列,输出是另一种语言的序列
文献[6, 34]证明了LSTM RNN能很好地适用于机器翻译
本文借鉴了这一处理方法,将输入改为视频序列,简化了之前基于RNN的视频描述方法
LSTMs for Sequence modeling
主要思想
先逐个编码输入帧序列,用latent向量来表示视频
然后将这个表达解码为sentence
LSTM回顾
算法方程
编解码过程
编码:给定输入序列,LSTM计算隐含状态序列
解码:给定输入序列和隐含状态序列,计算输出序列的条件概率分布
Sequence to sequence video to text
算法模型
用了两个LSTMs stack来学习视频帧序列表达,并解码为描述视频事情的句子
上层LSTMs建模视觉特征输入
下层LSTMs建模给定文本输入和隐含状态视频表达的语言输出
用<BOS>表示句子的开始,用<EOS>表示结束,输入为空用<pad>表示
编码和解码用的是同一个LSTM,能共享参数
LSTM细节
两个LSTMs stack
每个LSTM有1000个隐含单元
上层LSTM的隐含层被用作下层LSTM的输入
上层LSTM建模视觉特征,下层用于建模单词序列输出
训练和推理
训练
第一个phase
top LSTM层接收帧序列并作encode
second LSTM层接收隐含表达和<pad>输入,并串联,然后做encode
这个阶段LSTM做的是encoding,没有loss
视频帧提取完进入第二个phase
下层LSTM接收<BOS>输入,将隐含状态解码为单词序列
解码stage的训练,给定视觉特征的隐含表达,和前一时刻的单词,模型最大化预测的输出句子的log-likelyhood
在整个数据集上用SGD优化这个log-likelihood,该loss尽在LSTM进行解码的训练时计算
因为loss在时间轴上作BP,所以LSTM能学习产生合适的隐含状态表达
下层LSTM的输出z用于获取最终的单词y,用softmax来计算
解码阶段,上层LSTM的输入是<pad>
我们用显式的<EOS>标签告知句子中断,从而能学习不同长度的输出分布
每个时刻,选择解码后经过softmax得到的概率最大的单词y,直至输出为<EOS>
Video and text representation
RGB frames
用CNN提取500维向量,最后一层的特征提取将在训练时与LSTM层的参数一起优化
Optical Flow
光流的提取与LRCN类似,也取500维向量,最后输入到LSTM
RGB和光流的融合
shallow fusion - 两个网络的输出进行加权,权值在Validation set上选择
Text input
单词的目标输出序列用one-hot vector encoding来表达
Experimental Setup
Introduction
RNN
进行了三种不同的实验配置
直接连接CNN和LSTM
训练的视频识别模型能捕获时间状态依赖
端到端可训练的图像到句子的映射
基于LSTM的encoder-decoder pair
用visual CNN编码deep state vector
用LSTM将vector解码为自然语言string
能够在大尺度的图像和文本构成的数据集上进行端到端的训练
LSTM解码器可以与传统的视觉算法连接,进行high-level的判别式标签预测
不是端到端可训练
比传统方法有更好的表现能力
在Caffe上实现了recurrent models的通用框架
包括LSTM和RNN单元
RECURRENT NETWORKS
传统RNN
建模时间动态性
映射输入序列到隐含层
映射隐含层到输出
优缺点
RNNs在语音识别、文本生成等方面取得了成功应用
long-term跨度上难以训练,因为梯度弥散问题
LSTM
引入了一个memory unit
允许网络学习何时"forget"之前的隐含状态
用了文献[13]介绍的LSTM单元,是原始的LSTM的衍生
LRCN
系统组成
深度分层视觉特征系统算子
学习识别并合成时间动态性的模型
工作原理
子主题
图像或视频帧
进入特征提取算子,通常是CNN
得到固定长度的向量表达
向量表达传递到recurrent sequence Learning module
工作机制
recurrent model参数为W
将输入xt和前一时刻的隐含状态ht-1映射到输出zt
更新隐含状态ht
推理是顺序进行的
预测在输出状态集C上的分布
将序列输出zt传递到linear prediction layer:yt = WzZt + bz
on softmax计算输出P(yt)
Recurrent原理
深度模型在视觉的感知问题上很好的应用
当T较大时,recurrent的网络结构也是一个深度的模型
具有类似的深度表达能力
特征提取算子用CNN
时变,在每个时间点独立
能并行训练每个时间点上的CNN
在三个问题上实验LRCN算法
动作识别
序列输入,静态输出
图像描述
静态输入,序列输出
视频描述
序列输入,序列输出
从传统RNN到LRCN的问题迁移
传统RNN: T个输入,T个输出;LRCN: 输入和输出数目可变
多输入单输出
用late-fusion
单输入多输出
将输入的数目扩展为与输出一致
多输入多输出
encoder-decorder模型
encoder - 将输入映射为固定长度的向量
decoder - 将向量展开为可变长度的输出
训练方法
联合优化CNN和RNN的参数(V, W)
最大化每个time stept的输出与ground truth输出的相似度
最吸引人的特质:端到端可训练
SGD
ACTIVITY RECOGNITION
采用了RGB和光流作为网络输入
光流的计算
文献[21]的方法
flow image的三通道:scaling和shifting x和y到[-128, +128],flow magnitude
训练配置
输入
resize to 240x320
放大
crop 227x227,mirror
在16帧的video clips上训练LRCN
类似image crop,作为数据放大的一种
决策方式
训练在每个time step预测动作分类
在softmax输出层平均label probabilities,并选择概率值最高的标签
预测
提取16帧视频切片,stride为8帧
最终的结果取该视频上所有clips的均值
IMAGE CAPTIONING
网络结构
用a stack of LSTMs
LSTM的输入是每个时刻的CNN的输出特征,和每个时刻的隐含状态
输出是变长度的自然语言描述
学习过程
最底层的LSTM的输入是上一层的embeded word
输入的words被编码为one-hot vectors
然后将这些one-hot vectors投影到embeded space
不同形式的LSTM输入方式 - Fig.4
图像的视觉特征表达,与前一时刻的embeded word串联,作为贯序模型LSTMs的输入
训练
t时刻的previous word inputs y1:(t-1)用ground truth输入
推理
连续产生推理结果,直至生成<EOS>
VIDEO DESCRIPTION
LSTM框架能将视频建模为变长度的input stream
由于视频描述数据集缺乏,我们依赖更多的传统的行为和视频识别数据集作为输入,然后用LSTMs产生句子输出
预测的内容来自基于CRF的全视频输入,包括
activity
tool
Object
locations present in the video
视频描述的方法分为以下几种结构
LSTM encoder & decoder with CRF max
LSTM decoder with CRF max
LSTM decoder with CRF probabilites
Related Work
之前的研究
同时期的研究
Activity Recognition
Image Captioning
Video Captioning
本文做视频描述依赖的是intermediate features
同时期的研究,也有end-to-end trainable的
文献[69] - Translating videos to natural language using deep recurrent neural networks
在frames之间pooling high level CNN特征来创建视频特征
然后用视频特征视频描述的生成方式与LRCN一致
虽然在frames之间做pooling能得到很好的结果,但是破坏了视频的时间动态性
文献[70] - sequence-to-sequence
用LSTM将视频帧编码为固定长度的向量,然后用LSTM做句子生成
用端到端可训练的
“sequence-to-sequence” 模型可以建模视频中的时间结构特征
“sequence-to-sequence” 模型可以建模视频中的时间结构特征
改进了视频描述的结果
文献[71] -
Describing videos by exploiting temporal structure
与[70]类似的模型,添加了temporal attention mechanism
在生成句子的每个单词时对每帧做不同的加权
Visual Grounding
文献[72] -
Grounding of textual phrases in images by reconstruction
Grounding of textual phrases in images by reconstruction
组合CNNs和LSTMs,做visual grouding
先用LSTM编码了一个phrase,描述图像的一个部分
然后学习图像中的合适部分,来试图重构这个phrase
为了重构这个phrase,模型需要学习图像中地平线的合适位置
Natural Language Object Retrieval
本文展示了用自然语言的描述来检索图像的方法
文献[73] - Natural language object retrieval
用LRCN模型做Object retrieve
返回结果是给定目标的bbox
引入了local convolutional features,从Object proposals中提取
除了图像全局特征,还引入了Object proposals直接的空间位置关系
最后能够成功地将LRCN用于目标检索
Related work
子主题
训练LRCN动作识别模型
提取RGB frames
extract_frames.sh
提取flow frames
create_flow_images_LRCN.m
训练single frame models
run_singleFrame_RGB.sh
run_singleFrame_flow.sh
训练LRCN models
run_lstm_RGB.sh
run_lstm_flow.sh
Evaluate models
classify.py
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容