OpenVINO™ 室内动作识别

article/2025/10/16 3:54:59

动作识别网络
图-1(来自OpenVINO™ 安装包)
深度学习在人体动作识别领域有两类主要的网络,一类是基于姿态评估,基于关键点实现的动作识别网络;另外一类是直接预测的动作识别网络。关于姿态评估相关的网络模型应用,我们在前面的文章中已经介绍过了。OpenVINO2021.2版本中支持的动作识别网络都不是基于关键点输出的,而是基于Box直接预测,当前支持动作识别的预训练模型与识别的动作数目支持列表如下:
在这里插入图片描述
这些网络的输出都是基于SSD检测头实现对象检测与动作预测。

输入与输出格式:
以person-detection-action-recognition-0005模型为例说明它们的输入与输出数据格式支持,我也不知道什么原因(个人猜测因为Caffe框架的原因),网络的输出居然都是SSD原始检测头,怎么解析,我有妙招,稍后送上!先看一下输入与输出格式说明:

输入格式:
格式 NCHW=[1x3x400x680] ,Netron实际查看:
在这里插入图片描述
注意:OpenVINO2021.2安装之后的文档上格式说明是NHWC

输出格式:
输出有七个分支头的数据,它们的名称跟维度格式列表如下:
在这里插入图片描述
关于输出格式的解释,首先是num_priors值是多少,骨干网络到SSD输出头,是实现了16倍的降采样,最终输出的h x w=25x43然后每个特征点预测4个PriorBox, 每个特征点预测动作,总计有三类的动作,所以动作预测输出为: [b, 3, h, w] = [1x3x25x43],总计PriorBoxes数目为:num_priors=25x43x4=4300,这些都是SSD检测头的原始输出,没有非最大抑制,没有见过转换处理,所以想直接解析它们对开发应用的人来说是一个大麻烦!

输出数据解析与处理问题:
person-detection-action-recognition-0005网络推理之后的输出数据解析跟后处理特别的复杂,怎么解析原始输出头是个技术活,我从示例代码中提取跟整理出来两个C++文件,它们是:

action_detector.h
cnn.h

以及它们的实现文件:

action_detector.cpp
cnn.cpp

这个其中最重要的就是有个ActionDetection类,它有几个方法,分别是:

void enqueue(const cv::Mat &frame) 
void submitRequest()
void wait()
DetectedActions fetchResults() 

这几个方法的解释分别如下:
enqueue方法的就是实现了推理请求创建与图像数据的输入设置,它的代码实现如下:

if (!request) {request = net_.CreateInferRequestPtr();
}width_ = static_cast<float>(frame.cols);
height_ = static_cast<float>(frame.rows);Blob::Ptr inputBlob = request->GetBlob(input_name_);
matU8ToBlob<uint8_t>(frame, inputBlob);
enqueued_frames_ = 1;submitRequest方法,就是执行推理,支持同步与异步推理执行模型,它的代码实现如下:
if (request == nullptr) return;
if (isAsync) {request->StartAsync();
}
else {request->Infer();
}

wait方法,当同步推理时候无需调用,异步推理调用

fetchResults方法,该方法是推理过程中最复杂的部分,负责解析输出的七个分支数据,生成Box与action标签预测。简单的说它的执行过程是这样,首先获取输出的七个输出数据,然后转换为基于Mat的数据,然后循环每个特征图的特征点预测Box与置信得分,大于阈值的置信得分对应的预测Box与PriorBox计算真实的BOX坐标,同时阈值化处理Action的置信得分,最终对结果完整非最大抑制之后输出,得到数据结构为:

struct DetectedAction {/** @brief BBox of detection */cv::Rect rect;/** @brief Action label */int label;/** @brief Confidence of detection */float detection_conf;/** @brief Confidence of predicted action */float action_conf;

这样就完成了对输出的数据解析。

这个就是上述四个相关依赖文件,我已经把其他不相关的或者非必要的依赖全部去掉,基于这四个相关文件,就可以实现对表-1中动作识别模型的推理与解析输出显示。

动作识别代码演示
动作识别代码演示基于person-detection-action-recognition-0005网络模型完成,该模型是基于室内场景数据训练生成的,适合于教育智慧教室应用场景。首先需要初始化动作检测类与初始化推理引擎加载,然后配置动作检测类的相关参数,这些参数主要包括以下:
-模型的权重文件路径
-推理引擎的计算设备支持
-对象检测阈值
-动作预测阈值
-支持动作类别数目
-是否支持异步推理
等等。

配置完成之后设置与初始化ActionDetection类,然后就可以直接调用上述提到几个类方法完成整个推理与输出,根据输出结果绘制与显示即可,这部分的代码如下:

cv::Mat frame = cv::imread("D:/action_001.png");
InferenceEngine::Core ie;
std::unique_ptr<AsyncDetection<DetectedAction>> action_detector;
// Load action detector
ActionDetectorConfig action_config(model_xml);
action_config.deviceName = "CPU";
action_config.ie = ie;
action_config.is_async = false;
action_config.detection_confidence_threshold = 0.1f;
action_config.action_confidence_threshold = 0.1f;
action_config.num_action_classes = 3;
action_detector.reset(new ActionDetection(action_config));
action_detector->enqueue(frame);
action_detector->submitRequest();
DetectedActions actions = action_detector->fetchResults();
std::cout << actions.size() << std::endl;
for (int i = 0; i < actions.size(); i++) {std::cout << actions[i].rect << std::endl;std::cout << actions[i].label << std::endl;cv::rectangle(frame, actions[i].rect, cv::Scalar(0, 0, 255), 2, 8, 0);putText(frame, action_text_labels[actions[i].label], actions[i].rect.tl(), cv::FONT_HERSHEY_SIMPLEX, 0.75, cv::Scalar(0, 0, 255), 2, 8);
}
cv::imshow("动作识别演示", frame);
cv::waitKey(0);
return 0;

运行结果如下:
图-3(动作识别-sitting)
图-4(举手)
如欲了解更多OpenVINO™ 开发资料,请扫描下方二维码,我们会把最新资料及时推送给您。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/OpYhlLgp.shtml

相关文章

OpenCV动作识别

刚参加完一个比赛&#xff0c;其中做了OpenCV动作的识别&#xff0c;分享出来&#xff0c;大家可以看看。 代码下载链接https://download.csdn.net/download/wangshuai610/10430105点击打开链接

CVPR 2020 论文大盘点-动作识别篇

本文盘点所有CVPR 2020 动作识别(Action Recognition )相关论文,该方向也常被称为视频分类(Video Classification )。从后面的名字可以看出该任务就是对含人体动作的视频进行分类。 (关于动作检测、分割、活动识别等方向将在后续文章整理) 该部分既包含基于普通视频的动…

视频理解综述:动作识别、时序动作定位、视频Embedding

选自丨机器之心 本文将介绍视频理解中的三大基础领域:动作识别(Action Recognition)、时序动作定位(Temporal Action Localization)和视频 Embedding。 1.视频理解背景 根据中国互联网络信息中心&#xff08;CNNIC&#xff09;第 47 次《中国互联网络发展状况统计报告》&#x…

推荐一些动作识别数据集

↑↑↑↑↑点击上方蓝色字关注我们&#xff01; 『运筹OR帷幄』原创 作者&#xff1a;周岩 编者按&#xff1a;动作识别的研究主要基于对视频数据的识别&#xff0c;其中主要包含动作识别&#xff08;如手势识别&#xff0c;运动识别等&#xff09;&#xff0c;目标识别和姿态预…

动作识别数据集

官网内容总结 1.UCF101&#xff08;https://www.crcv.ucf.edu/data/UCF101.php&#xff09; UCF101发布于2012年&#xff0c;来源于YouTube&#xff0c;拥有来自101个动作类别的13320个视频&#xff0c;在动作方面具有最大的多样性&#xff0c;并且在摄像机运动&#xff0c;物体…

动作识别的笔记

动作识别的笔记 最近有看实验室师姐写的一篇有关动作识别的论文&#xff0c;里边有讲到一种特征融合的方法&#xff0c;怕到时忘记&#xff0c;就此记录下。 &#xff08;只是简单的记一些流程&#xff0c;公式暂时没有编辑&#xff09; 论文简介 人体动作是实验室采集的数据…

计算机视觉和动作检测,计算机视觉技术深度解读之视频动作识别

来源:雪球App,作者: 我是张康,(https://xueqiu.com/6964725465/135165468) 作者:极链AI研究院 徐宝函 视频的理解与识别是计算机视觉的基础任务之一。随着视频设备和网络的普通,视频理解也吸引了越来越多研究者的关注。而识别视频中的动作则是其中一个充满挑战而又具有较…

动作识别、检测、分割、解析相关数据集介绍

文章目录 动作识别UCF101(UCF101 Human Actions dataset)Kinetics (Kinetics Human Action Video Dataset) 动作检测 / 时序动作定位CharadesActivityNetMulti-THUMOSUCF101-24IKEA ASMAVAJHMDB 动作分割Breakfast (The Breakfast Actions Dataset)GTEA (Georgia Tech Egocentr…

视频动作识别(Action Recognition)综述

概述 使用深度学习方法解决视频中行为识别/动作识别的问题解决思路有两大类&#xff0c;一是以抽取并分类时空特征为目的的视频识别方法&#xff1b;二是以提取骨架信息进行再训练为目的的姿态估计方法。本文主要梳理近5年来第一类论文中的算法&#xff0c;其中有三个分支&…

使用OpenVINO实现人体动作识别

Paula Ramos著 张晶 译 目录 1.1 人体动作识别背景简介 1.2 OpenVINOTM Notebook简介 1.3 动作识别模型简介 1.4 实现实时动作识别 1.4.1 下载模型 1.4.2 初始化模型 1.4.3 辅助函数 1.4.4 AI函数 1.4.5 完整执行整个程序 1.5 关于作者&#xff1a; 1.6 声明和免责声明 1.1 人…

使用kinect2.0做动作识别和动作计数

利用kinect2结构光相机进行运动动作识别和运动计数&#xff0c;不仅可以测量运动人员的卡路里&#xff0c;也可以测出运动速度和做功&#xff0c;并对于运动的动作做出科学规范的指导。 这里我们选用kinect2和windows系统作为开发工具来进行开发。如果要进行运动动作的识别&am…

基于Detectron2和LSTM的人体动作识别

人体动作识别通过分析视频来预测或分类视频中人物的各种动作。它被广泛应用于监测、体育、健身、防御等各个领域。 假设你想创建一个在线教授瑜伽的应用程序。它应该提供一个预先录制的瑜伽视频列表供用户观看。用户在应用程序上观看视频后&#xff0c;可以上传自己的个人练习…

短视频动作识别技术简述

1总体介绍 短视频在当前多媒体环境中占据着巨大流量&#xff0c;有效理解视频内容对于数据分发发挥着重要作用&#xff0c;动作识别是视频内容理解的一个重要方向。当前图像识别技术已趋于成熟&#xff0c;但动作识别仍未达到理想效果&#xff0c;相比于图像识别&#xff0c;动…

动作识别01:Understanding action recognition in still images

文章目录 摘要一、引言二、相关工作三、实验3.1 定义交互功能 四、结果总结 摘要 静止图像中的动作识别与姿态估计、目标识别、图像检索、视频动作识别和视频帧标记等计算机视觉任务密切相关。这个问题的重点是用单一的框架识别一个人的动作或行为。与视频中的动作识别不同——…

mediapipe 实现动作识别

环境 windows 10 64bitmediapipe 0.8.10.1 前言 本文使用 google 家的 mediapipe 机器学习框架&#xff0c;结合 opencv 和 numpy&#xff0c;实现了一个实时识别 站立、坐下、走动、挥手 共4个动作的简单系统。 mediapipe 能做的事情非常多&#xff0c;感兴趣的童鞋可以去研究…

行为动作识别

一、跌倒检测数据集 随着计算机学科与人工智能的发展和应用&#xff0c;视频分析技术迅速兴起并得到了广泛关注。视频分析中的一个核心就是人体行为识别&#xff0c;行为识别的准确性和快速性将直接影响视频分析系统后续工作的结果。因此&#xff0c;如何提高视频中人体行为识别…

基于骨骼的动作识别:PoseConv3D

Revisiting Skeleton-based Action Recognition解读 摘要1. 简介2. Related Work2.1 基于3D-CNN的rgb视频动作识别2.2 基于GCN的骨骼动作识别2.3 基于CNN的骨骼动作识别 3. Framework3.1 Pose Extraction3.2 From 2D Poses to 3D Heatmap Volumes3.3 基于骨骼的动作识别3D-CNN3…

视频动作识别调研(Action Recognition)

视频动作识别调研&#xff08;Action Recognition&#xff09; 本文首发于微信公众号“ StrongerTang”&#xff0c;可打开微信搜一搜&#xff0c;或扫描文末二维码&#xff0c;关注查看更多文章。 原文链接&#xff1a;( https://mp.weixin.qq.com/s?__bizMzg3NDEzOTAzMw&…

动作识别概况

文章目录 一、动作识别二、动作识别的难点三、动作识别现在常用的方法四、行为识别的两个方向五、常用数据集六、常用框架介绍 一、动作识别 主要目标是判断一段视频中人的行为的类别&#xff0c;所以也可以叫做 Human Action Recognition。 二、动作识别的难点 1.类内和类之…

动作/行为识别调研

动作识别调研 1. 简介1.1 基本概念1.2 难点 2. 人体动作识别系统2.1 传统方法2.1.1 iDT框架 2.2 深度学习方法2.2.1 Two-Stream双流架构2.2.2 3D卷积架构2.2.3 CNNLSTM架构2.2.4 GCN架构 相关文献 1. 简介 动作识别(Action Recognition)&#xff0c;就是从视频片段&#xff08…