如何使用OpenVINO工具套件以同步的方式进行实时人体动作识别

人体动作识别背景简介
自从我在英特尔开始我的旅程以来已经有几个月了,我很高兴能与大家分享我一直在做的事情。今天,我将带你浏览我的第一个关于人体动作识别的openvino  notebook。我希望你喜欢它,并且可以将它应用到你正在进行的开发中。
在本博客中,您将了解如何使用 openvino 工具套件以同步的方式进行实时人体动作识别。
人体动作识别是一种 ai 功能,可以在录制或实时视频中查找和分类大量活动。例如:如果您有大量的家庭视频收藏,并且想要找到特定的记忆,如图1.1所示,那么人体动作识别是最简单、最快的方法。
传统方法需要您花费大量精力和时间手动查看您拥有的每个视频,直到找到合适的视频。使用人体动作识别,您可以训练 ai 模型根据录制的活动为您自动分类和组织您的视频,从而在几秒钟内更轻松地找到和访问您最珍贵的记忆。
图1.1  珍贵的家庭回忆
人体动作识别也可以应用于制造业等企业。例如:为工人提供一种保证他们工作安全的解决方案,该方案能够识别工人正在执行任务和工人手势,并提醒管理人员可能存在的潜在危险。
这只是人体动作识别的几个应用场景。在接下来的几年里,我希望在这个领域看到更多新的和令人兴奋的应用案例。在运行这个openvino notebook后,若能激发您想到还有其它领域可以从人体动作识别功能中受益,请告诉我们。
现在,让我们开始吧!
openvino notebook简介
openvino notebook 是开源免费的一系列 jupyter notebook 格式的 openvino 范例程序。
本文对应的 openvino notebook 范例是live action recognition with openvino,如图1-2所示。
图1-2  live action recognition with openvino
live action recognition with openvino基于 deepmind kinetics-400 人体动作视频数据集,它总共包含 400 个动作,包括:
人的动作(例如,写作、喝酒、大笑)
人与人的动作(例如,拥抱、握手、玩耍)扑克)
人与物体的动作(骑摩托车、洗衣服、吹气球)
您还可以区分一组亲子互动,例如:编辫子或梳头、萨尔萨舞或机器人跳舞,以及拉小提琴或吉他。
有关标签和数据集的更多信息,请参阅 “the kinetics human action video dataset” 研究论文。
您可以使用普通计算机运行此 openvino  notebook范例程序,无需硬件加速器。使用 openvino 工具套件的好处在于:它设计为在边缘工作,因此可以针对边缘运行,优化您的ai模型,以便在 gpu、cpu 或vpu 上高效运行。
您可以使用各种视频源,例如:来自 url、本地存储的文件或网络摄像头源。
动作识别模型简介
本文使用 open model zoo 的 action recognition 模型库,它提供了各种各样的预训练深度学习模型和演示应用程序。本文使用的模型  action-recognition-0001 ,这是一个基于 video transformer,具有 resnet34 架构的模型,如图1.3所示。
图1.3 人体行为识别模型流程图
action-recognition-0001模型含两个关键组件:
编码器
基于pytorch 框架,输入形状为 [1x3x224x224],表示批尺寸大小为1,颜色通道为3,图像尺寸为 224 x 224 像素;输出形状为 [1x512x1x1],表示内嵌的已处理帧。
解码器
同样基于 pytorch 框架,输入形状为 [1x16x512],表示批尺寸大小为1,一秒内处理 16 帧,内嵌数据为 512。
我选择每秒 16 帧进行分析——因为这是 kinetics-400  作者找到类别分数的平均帧数。如图1.2中的 gif 所示,对帧进行预处理以及分析中心裁剪的图像。
编码器和解码器都创建了一个序列到序列 (seq2seq) 系统来识别 kinetics-400 数据集的人体动作。由于没有过量的标注信息,模型性能是最好的,它可以帮助我们理解处理工作流程
了解了上述基础信息后,您可以按照以下步骤开始识别您自己的视频:
准备 openvino notebooks 运行环境。
准备您的视频源、网络摄像头或视频文件以及您想要检测的常见活动。考虑通过检查数据集标签来检测动作名称。
在您的计算机上打开一个 jupyter notebook。该notebook可以在windows、macos 和 ubuntu 下通过不同的互联网浏览器运行。
实现实时动作识别
现在,我将向您展示如何使用 openvino 实现实时动作识别。
1.4.1
下载模型
我们使用open model zoo 工具,例如:omz_downloader,来下载 open model zoo 中的预训练模型。omz_downloader 是一个命令行工具,可以自动创建目录结构并下载选定的模型。
使用 omz_downloader 工具下载 open model zoo 的 “action-recognition-0001” 模型,如图1.4所示。
图1.4  下载 action-recognition-0001 模型
1.4.2 
初始化模型
在执行推理计算前,需要先初始化推理引擎,然后从模型文件中读取网络和权重,并将模型加载到所选设备(本文例子中是 cpu)上,最后获取模型的输入和输出节点,如图1.5所示。
图1.5  初始化模型
1.4.3
辅助函数
您需要一些辅助函数来帮您将执行结果可视化,例如:创建一个以裁剪为中心的 roi,调整图像大小,并在每一帧中放置文本信息。
1.4.4
ai 函数
这里将依次实现ai推理计算。
第一步:
在运行编码器之前对每帧图像进行预处理(预处理)。在将帧传入编码器之前,请先准备好图像:
01
将图像放缩到编码器中输入尺寸,即[224,224]
02
将放缩后的图像进行中心裁剪,并使其长宽相等
03
将颜色通道从 hwc 变为 chw
具体代码实现,如图1.6所示
图1.6  图像预处理
第二步:
执行编码器模型推理计算。encoder()函数调用已编译模型(compiled_model),执行推理计算,然后从输出节点提取推理计算结果,并以列表形式以供解码器使用,如图1.7所示。
图1.7  执行编码器模型推理计算
第三步:
执行解码器模型推理计算。decoder()函数将来自编码器输出的16帧的嵌入层连接在一起,然后转置数组以匹配解码器输入尺寸。它调用已编译好的解码器模型 (compiled_model_de),提取 logits,并将 logits 标准化以获得沿指定轴的置信度值。最后,它将最高概率解码为相应的标签名称,如图1.8所示。
图1.8  执行解码器模型推理计算
1.4.5
完整执行整个程序
现在,我们可以直接执行整个完整的人体动作识别程序。
首先,选择您要为其运行完整工作流程的视频。
video_file = https://archive.org/serve/issvideoresourcelifeonstation720p/iss%20video%20resource_lifeonstation_720p.mp4run_action_recognition(source=video_file, flip=false, use_popup=false, skip_first_frames=600)  
然后,选择网络摄像头并再次运行完整的工作流程。
run_action_recognition(source=0, flip=false, use_popup=false, skip_first_frames=0)  
恭喜!你已经做到了。我希望您发现这个主题对您的应用程序开发有趣和有用。


普及一下什么是监控中的标清、高清和全高清?
无刷自控电机软起动器工作原理 及结构特点
Velodyne 传感器可创建360°实时环境地图,以实现自动驾驶安全导航
不同颜色的电缆代表什么含义?
物联网在智能家居行业中扮演什么角色?
如何使用OpenVINO工具套件以同步的方式进行实时人体动作识别
通用LED驱动控制器的应用
OPPO发布6G白皮书,展望未来“移动世界”
当ToF像素遇到摩尔定律如何发展?
AI科技嘉年华在上海世博展览馆中厅舞台区精彩上演
蓄电池的容量
华为携手中国移动福建推出“和•云VR”服务
光伏产业的变动引起逆变器市场的巨大调整
新能源车车主面临换电池还是低价卖车的两难境地
如何优雅地绕过函数调用链呢?
高度确定的实时音频处理性能
安卓8.0什么时候发布?安卓8.0的新增功能
出售Agilent83491A时钟恢复模块
NMT+LDS技术融合,可将天线打印在手机上
肥料氮磷钾检测仪使用步骤的详细介绍