主要内容

classifySequence

视频序列进行分类

自从R2021b

描述

例子

标签= classifySequence (分类器)使用视频分类器分类视频序列分类器。函数返回标签一个标量直言,指定视频的分类或光学流序列。标签是一种的值视频分类对象的属性。

(标签,分数)= classifySequence (分类器)此外返回分类得分与标签。分数代表的信心预测类标签,并且包含值之间01

(___)= classifySequence (分类器,ExecutionEnvironment = env)指定运行的硬件资源分类器除了任意组合的参数从以前的语法,这些选项之一:

  • “汽车”——设置GPU执行环境,如果可用。否则函数集CPU。

  • “图形”——设置GPU执行环境。使用CUDA GPU需要并行计算工具箱™和®使英伟达®GPU。关于支持计算能力的信息,看到金宝appGPU计算的需求(并行计算工具箱)

  • “cpu”——设置CPU执行环境。

例子

全部折叠

这个例子展示了如何对视频序列进行分类的视频文件使用SlowFast视频分类器pretrained动力学- 400视频活动识别数据集。了解更多关于如何训练视频分类器网络数据集,明白了手势识别使用视频和深度学习

负载SlowFast视频分类器

科幻小说= slowFastVideoClassifier ();

设置视频播放器和电子阅读器

指定流视频帧视频文件名称。

videoFilename =“pushup.mp4”;

创建一个VideoReader读视频。

读者= VideoReader (videoFilename);

设置视频播放器。

球员= vision.VideoPlayer;

视频序列进行分类

指定分类器的频率应该应用于传入的视频帧。

classifyInterval = 10;

值10平衡运行时性能对分类性能。增加这个值来提高运行时性能为代价的失踪的行动从视频文件。

获得的序列长度SlowFast视频分类器。只有在捕获至少进行分类sequenceLength从视频文件的帧数。

sequenceLength = sf.InputSize (4);

读取视频帧使用hasFramereadFrame的功能VideoReader。使用updateSequence功能更新视频分类的序列。使用classifySequence功能分类更新后的序列。

numFrames = 0;文本=”“;hasFrame(读者)帧= readFrame(读者);numFrames = numFrames + 1;%更新下个视频序列帧。科幻小说= updateSequence(科幻,框架);%分类只在每个classifyInterval数量的帧序列。如果国防部(numFrames classifyInterval) = = 0 & & numFrames > = sequenceLength[标签,分数]= classifySequence (sf);文本字符串(标签)+ =”;”+ num2str(得分,“% 0.2 f”);结束= insertText帧(帧,(30、30),文本,“字形大小”、24);步骤(球员,框架);结束

这个例子展示了如何分类的视频摄像头使用pretrained SlowFast视频分类器。了解更多关于如何训练视频分类器网络数据集,明白了手势识别使用视频和深度学习

下载Pretrained视频分类器

下载pretrained SlowFast视频分类器。

downloadFolder = fullfile (tempdir,“姿态”);zipFile =“slowFastPretrained_fourClasses.zip”;如果~ isfile (fullfile (downloadFolder zipFile) disp (“下载pretrained网络…”);downloadURL =“https://ssd.mathworks.com/金宝appsupportfiles/vision/data/”+ zipFile;zipFile = fullfile (downloadFolder zipFile);websave (zipFile downloadURL);解压缩(zipFile downloadFolder);结束

加载pretrained SlowFast视频分类器。

pretrainedDataFile = fullfile (downloadFolder,“slowFastPretrained_fourClasses.mat”);pretrained =负载(pretrainedDataFile);slowFastClassifier = pretrained.data.slowFast;

显示的类标签名pretrained视频分类器。任何手势如“鼓掌”和“wavingHello”的摄像头将被SlowFast视频分类器。

类= slowFastClassifier.Classes
类=4×1分类换掉wavingHello再鼓掌

安装摄像头和视频播放器

在这个例子中,一个摄像头对象用于捕获视频。视频播放器是用来显示视频以及预测类。

创建一个对象使用摄像头网络摄像头函数。

凸轮=摄像头;

创建一个视频播放器使用vision.VideoPlayer函数。一定要把视频播放器,你可以清楚地看到运行分类时的视频。

球员= vision.VideoPlayer;

摄像头视频进行分类

指定分类器的频率应该应用于传入的视频帧。

classifyInterval = 10;

值10平衡运行时性能对分类性能。增加这个值来提高运行时性能为代价的失踪的姿态从视频直播流。

获得的序列长度SlowFast视频分类器。只有在捕获至少进行分类sequenceLength从摄像头的帧数。

sequenceLength = slowFastClassifier.InputSize (4);

指定的最大帧数来捕获在一个循环中使用maxNumFrames变量。确保你波识别你的手之一“wavingHello”标签,拍使用分类器识别你的手“鼓掌”标签。

maxNumFrames = 280;

在一个循环中捕获摄像头快照。更新分类器使用的视频序列updateSequence使用的方法,分类流序列classifySequence方法。

numFrames = 0;文本=”“;numFrames < = maxNumFrames帧=快照(cam);numFrames = numFrames + 1;slowFastClassifier = updateSequence (slowFastClassifier,框架);如果国防部(numFrames classifyInterval) = = 0 & & numFrames > = sequenceLength[标签,分数]= classifySequence (slowFastClassifier);如果~ isempty(标签)文本字符串(标签)+ =”;”+ num2str (max(分数),“% 0.2 f”);结束结束= insertText帧(帧,(30、30),文本,“字形大小”,18);步骤(球员,框架);结束

输入参数

全部折叠

指定为一个分类器r2plus1dVideoClassifierslowFastVideoClassifier对象。

输出参数

全部折叠

分类的视频或光流序列,作为一个绝对标量返回。

分类分数相关的标签,作为一个标量返回值之间01。分数代表的信心预测类标签。

版本历史

介绍了R2021b