目录
加载预训练卷积网络
加载数据
将帧转换为特征向量
准备训练数据
创建 LSTM 网络
指定训练选项
训练 LSTM 网络
组合视频分类网络
使用新数据进行分类
辅助函数
此示例说明如何通过将预训练图像分类模型和 LSTM 网络相结合来创建视频分类网络。
要为视频分类创建深度学习网络,请执行以下操作:
-
使用预训练卷积神经网络(如 GoogLeNet)将视频转换为特征向量序列,以从每帧中提取特征。
-
基于序列训练 LSTM 网络来预测视频标签。
-
通过合并来自两个网络的层,组合一个直接对视频进行分类的网络。
下图说明网络架构。
-
要将图像序列输入到网络,请使用序列输入层。
-
要使用卷积层来提取特征,也就是说,要将卷积运算独立地应用于视频的每帧,请使用一个后跟卷积层的序列折叠层。
-
要还原序列结构体并将输出重构为向量序列,请使用序列展开层和扁平化层。
-
要对得到的向量序列进行分类,请包括 LSTM 层,并在其后添加输出层。
加载预训练卷积网络
要将视频帧转换为特征向量,请使用预训练网络的激活值。
使用 googlenet 函数加载预训练的 GoogLeNet 模型。此函数需要 Deep Learning Toolbox™ Model for GoogLeNet Network 支持包。如果未安装此支持包,则函数会提供下载链接。
netCNN = googlenet;
加载数据
从 HMDB:大型人体运动数据库下载 HMBD51 数据集,并将 RAR 文件提取到名为 "hmdb51_org" 的文件夹中。该数据集包含 51 个类的 7000 个片段、大约 2 GB 的视频数据,例如 "drink"、"run" 和 "shake_hands"。
提取 RAR 文件后,使用支持函数 hmdb51Files 获取视频的文件名和标签。
dataFolder = "