网站开发费用算无形资产,中企动力是做哪方面销售,企业网站建设项目策划书,长沙斌网网络行人摔倒检测 — 基于 OpenVINO C# API 部署PP-Human 1. 英特尔开发套件1.1 OpenVINO1.2 AIxBoard 介绍产品定位产品参数AI推理单元 2. PaddleDetection实时行人分析工具PP-Human3. 预测模型获取与转换3.1 PP-YOLOE行人跟踪模型介绍模型下载与转换#xff08;1#xff09;Pad… 行人摔倒检测 — 基于 OpenVINO C# API 部署PP-Human 1. 英特尔开发套件1.1 OpenVINO1.2 AIxBoard 介绍产品定位产品参数AI推理单元 2. PaddleDetection实时行人分析工具PP-Human3. 预测模型获取与转换3.1 PP-YOLOE行人跟踪模型介绍模型下载与转换1PaddlePaddle模型下载与裁剪2转换为ONNX格式3转成IR格式 3.2 PP-TinyPose人体姿态识别模型介绍模型下载与转换1PaddlePaddle模型下载方式2转换为ONNX格式3转换为IR格式 3.3 ST-GCN基于关键点的行为识别模型介绍模型下载与转换1PaddlePaddle模型下载方式2转换为ONNX格式3转换为IR格式 随着人口老龄化问题的加重独居老人、空巢老人数量在不断上升因此如何保障独居老人、空巢老人健康生活和人身安全至关重要。而对于独居老人、空巢老人如果出现摔倒等情况而不会及时发现将会对其健康安全造成重大影响。本项目主要研究为开发一套摔倒自动识别报警平台使用视频监控其采集多路视频流数据使用行人检测算法、关键点检测算法以及摔倒检测算法实现对行人摔倒自动识别并根据检测情况对相关人员发送警报实现对老人的及时看护。该装置可以布置在养老院等场所通过算法自动判别可以大大降低人力成本以及保护老人的隐私。该项目应用场景不知可以用到空巢老人还可以用到家庭中的孕妇儿童、幼儿园等场景实现对儿童的摔倒检测。 项目中采用OpenVINO部署行人检测算法、关键点检测算法以及摔倒检测算法实现对行人摔倒自动识别算法并在AIxBoard 开发板上使用 OpenVINO C# API 结合应用场景部署多模型。 项目中所使用的代码全部在GitHub上开源项目链接为PP-Human_Fall_Detection 项目首发网址行人摔倒检测 - 在英特尔开发套件上基于 OpenVINO™ C# API 部署 PP-Human | 开发者实战 项目内容角度在本文中我们将重点讲述项目中所使用的开发套件以及模型获取方式如何使用大家可以关注下一篇文章。
1. 英特尔开发套件
1.1 OpenVINO 英特尔发行版 OpenVINO™工具套件基于oneAPI 而开发可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件适用于从边缘到云的各种英特尔平台上帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程 OpenVINO™可赋能开发者在现实世界中部署高性能应用程序和算法。 OpenVINO™ 2023.1于2023年9月18日发布该工具包带来了挖掘生成人工智能全部潜力的新功能。生成人工智能的覆盖范围得到了扩展通过PyTorch*等框架增强了体验您可以在其中自动导入和转换模型。大型语言模型LLM在运行时性能和内存优化方面得到了提升。聊天机器人、代码生成等的模型已启用。OpenVINO更便携性能更高可以在任何需要的地方运行在边缘、云中或本地。
1.2 AIxBoard 介绍 产品定位 英特尔开发套件 AIxBoard(爱克斯板)是英特尔开发套件官方序列中的一员专为入门级人工智能应用和边缘智能设备而设计。爱克斯板能完美胜人工智能学习、开发、实训、应用等不同应用场景。该套件预装了英特尔OpenVINO™工具套件、模型仓库和演示案例便于您轻松快捷地开始应用开发。 套件主要接口与Jetson Nano载板兼容GPIO与树莓派兼容能够最大限度地复用成熟的生态资源。这使得套件能够作为边缘计算引擎为人工智能产品验证和开发提供强大支持同时也可以作为域控核心为机器人产品开发提供技术支撑。 使用AIxBoard(爱克斯板)开发套件您将能够在短时间内构建出一个出色的人工智能应用应用程序。无论是用于科研、教育还是商业领域爱克斯板都能为您提供良好的支持。借助 OpenVINO™ 工具套件CPU、iGPU 都具备强劲的 AI 推理能力支持在图像分类、目标检测、分割和语音处理等应用中并行运行多个神经网络。
产品参数
主控英特尔赛扬N5105 2.0-2.9GHz (formerly Jasper Lake)内存板载LPDDR4x 2933MHz, 4GB/6GB/8GB存储板载 64GB eMMC存储存储扩展1个M.2 Key-M 2242扩展槽, 支持SATANVME协议BIOSAMI UEFI BIOS系统支持Ubuntu20.04 LTSWinodws 10/11
AI推理单元 借助OpenVINO工具能够实现CPUiGPU异构计算推理IGPU算力约为0.6TOPS
CPUINT8/FP16/FP32iGPUINT8/FP16 0.6TOPSGNA高斯及神经加速器
2. PaddleDetection实时行人分析工具PP-Human 飞桨(PaddlePaddle)是集深度学习核心框架、工具组件和服务平台为一体的技术先进、功能完备的开源深度学习平台已被中国企业广泛使用深度契合企业应用需求拥有活跃的开发者社区生态。提供丰富的官方支持模型集合并推出全类型的高性能部署和集成方案供开发者使用。是中国首个自主研发、功能丰富、开源开放的产业级深度学习平台。 PaddleDetection是一个基于PaddlePaddle的目标检测端到端开发套件内置30模型算法及250预训练模型覆盖目标检测、实例分割、跟踪、关键点检测等方向其中包括服务器端和移动端高精度、轻量级产业级SOTA模型、冠军方案和学术前沿算法并提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案。在提供丰富的模型组件和测试基准的同时注重端到端的产业落地应用通过打造产业级特色模型|工具、建设产业应用范例等手段帮助开发者实现数据准备、模型选型、模型训练、模型部署的全流程打通快速进行落地应用。 在实际应用中打架、摔倒、异常闯入等异常行为的发生率高、后果严重使得其成为了安防领域中重点监控的场景。飞桨目标检测套件PaddleDetection中开源的行人分析工具PP-Human提供了五大异常行为识别、26种人体属性分析、人流计数、跨镜ReID四大产业级功能其中异常行为识别功能覆盖了对摔倒、打架、打电话、抽烟、闯入等行为的检测。 如图所示PP-Human支持单张图片、图片文件夹单镜头视频和多镜头视频输入经目标检测以及特征关联实现属性识别、关键点检测、轨迹/流量计数以及行为识别等功能。此处基于OpenVINOTM模型部署套件进行多种模型联合部署实现实时行人行为识别此处主要实现行人摔倒识别。 3. 预测模型获取与转换
3.1 PP-YOLOE行人跟踪
模型介绍 PP-YOLOE是基于PP-YOLOv2的卓越的单阶段Anchor-free模型超越了多种流行的YOLO模型可以通过width multiplier和depth multiplier配置。PP-YOLOE避免了使用诸如Deformable Convolution或者Matrix NMS之类的特殊算子以使其能轻松地部署在多种多样的硬件上。此处主要利用PP-Yoloe模型进行行人跟踪。
表 2 PP-Yoloe Paddle格式模型信息
InputOutput名称imagescale_factormulticlass_nms3_0.tmp_0multiclass_nms3_0.tmp_2形状[-1, 3, 640, 640][-1, 2][8400, 6][-1]数据类型Float32Float32Float32Int32 表 2 为Paddle格式下PP-YOLOE模型的输入与输出相关信息该模型包括两个输入与两个输出可以实现行人识别该模型可以直接在飞桨平台下载。但由于PP-Yoloe模型无法在OpenVINOTM平台直接部署需要进行节点裁剪即裁剪掉scale_factor输入节点裁剪后模型结构如表 3 所示具体如何裁剪后续讲解。
表 3 PP-YOLOE Paddle格式模型信息
InputOutput名称imageconcat_14.tmp_0tmp_20形状[-1, 3, 640, 640][-1, 1, 8400][-1, 8400, 4]数据类型Float32Float32Float32
模型下载与转换
1PaddlePaddle模型下载与裁剪 PP-Human提供了训练好的行人跟踪模型此处只需要下载并将其解压到指定文件夹中
weget https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip此处模型裁剪主要是在Paddle模型格式下进行裁剪裁剪方式参考的jiangjiajun (https://github.com/jiangjiajun/PaddleUtils)提供的模型裁剪方式为了方便使用当前项目提供了模型裁剪工具包在“./paddle_model_process/”文件夹下利用命令进行模型裁剪
python prune_paddle_model.py --model_dir mot_ppyoloe_l_36e_pipeline --model_filename model.pdmodel --params_filename model.pdiparams --output_names tmp_16 concat_14.tmp_0 --save_dir export_model如表 4 所示提供了模型裁剪命令说明大家可以根据自己设置进行模型裁剪当前命令裁剪的模型目前已经进行测试完全符合当前阶段的要求。
表 4 模型裁剪命令说明
标志位说明输入–model_dir模型文件路径mot_ppyoloe_l_36e_pipeline–model_filename静态图模型文件model.pdmodel–params_filename模型配置文件信息model.pdiparams–output_names输出节点名tmp_16 concat_14.tmp_0–save_dir模型保存路径export_model
2转换为ONNX格式 该方式需要安装paddle2onnx和onnxruntime模块。导出方式比较简单可以进行模型输入固定此处使用的都为bath_size1在命令行中输入以下指令进行转换
paddle2onnx --model_dir mot_ppyoloe_l_36e_pipeline --model_filename model.pdmodel --params_filename model.pdiparams --input_shape_dict {image:[1,3,640,640]} --opset_version 11 --save_file mot_ppyoloe_l_36e_pipeline.onnx3转成IR格式 IR格式为OpenVINOTM原生支持的模型格式此处主要通过OpenVINOTM工具进行转换直接在命令行输入以下指令即可
mo --input_model mot_ppyoloe_l_36e_pipeline.onnx3.2 PP-TinyPose人体姿态识别
模型介绍 PP-TinyPose 是PaddlePaddle提供了关键点识别模型PP-TinyPose在单人和多人场景均达到性能SOTA同时对检测人数无上限并且在微小目标场景有卓越效果助力开发者高性能实现异常行为识别、智能健身、体感互动游戏、人机交互等任务。同时扩大数据集减小输入尺寸预处理与后处理加入AID、UDP和DARK等策略保证模型的高性能。实现速度在FP16下122FPS的情况下精度也可达到51.8%AP不仅比其他类似实现速度更快精度更是提升了130%。此处使用的是dark_hrnet_w32_256x192模型该模型输入与输出如下表所示
表 5 dark_hrnet_w32_256x192 Paddle 模型信息
InputOutput名称imageconv2d_585.tmp_1argmax_0.tmp_0形状[bath_size, 3, 256, 192][bath_size, 17, 64, 48][bath_size,17]数据类型Float32Float32Int64 表 5为Paddle格式下dark_hrnet_w32_256x192模型的输入与输出相关信息除此以外飞桨还提供了输入大小为128×96的模型这两类模型在部署时所有操作基本一致主要差别就是输入与输出的形状不同。分析模型的输入和输出可以获取以下几个点 第一模型的输入与conv2d_585.tmp_1节点输出形状呈现倍数关系具体是输入的长宽是输出的四倍 因此我们可以通过输入形状来推算输出的大小。 第二模型argmax_0.tmp_00节点输出为预测出的17个点的灰度图因此后续在进行数据处理是只需要寻找到最大值所在位置就可以找到近似的位置。
模型下载与转换
1PaddlePaddle模型下载方式 命令行直接输入以下代码或者浏览器输入后面的网址即可。
wget https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.zip下载好后将其解压到文件夹中便可以获得Paddle格式的推理模型。
2转换为ONNX格式 该方式需要安装paddle2onnx和onnxruntime模块。在命令行中输入以下指令进行转换其中转换时需要指定input_shape否者推理时间会很长
paddle2onnx --model_dir dark_hrnet_w32_256x192 --model_filename model.pdmodel --params_filename model.pdiparams --input_shape_dict {image:[1,3,256,192]} --opset_version 11 --save_file dark_hrnet_w32_256x192.onnx3转换为IR格式 利用OpenVINOTM模型优化器可以实现将ONNX模型转为IR格式。在OpenVINOTM环境下切换到模型优化器文件夹直接使用下面指令便可以进行转换。
cd .\openvino\tools
mo --input_model paddle/model.pdmodel --input_shape [1,3,256,192]经过上述指令模型转换后可以在当前文件夹下找到转换后的三个文件。 由于OpenVINOTM支持FP16推理此处为了对比推理时间也已并将模型转为FP16格式
mo --input_model paddle/model.pdmodel --data_type FP16 --input_shape [1,3,256,192]3.3 ST-GCN基于关键点的行为识别
模型介绍 摔倒行为识别模型使用了ST-GCN并基于PaddleVideo套件完成模型训练此处可以直接下载飞桨提供的训练好的模型。
表 6 ST-GCN Paddle 模型信息
InputOutput名称data_batch_0reshape2_34.tmp_0形状[1, 2, 50, 17, 1][1, 2]数据类型Float32Float32 表 6为Paddle格式下ST-GCN模型的输入与输出相关信息该模型输入为人体骨骼关键识别由于摔倒是一个连续的过程因此需要同时输入50帧的关键点结果因此该模型不支持单张图片的预测只支持视频的推理预测其模型输出为是否摔倒的概率。
模型下载与转换
1PaddlePaddle模型下载方式 命令行直接输入以下代码或者浏览器输入后面的网址即可。
wget https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip下载好后将其解压到文件夹中便可以获得Paddle格式的推理模型。
2转换为ONNX格式 该方式需要安装paddle2onnx和onnxruntime模块。在命令行中输入以下指令进行转换
paddle2onnx --model_dir STGCN --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 11 --save_file STGCN.onnx3转换为IR格式 利用OpenVINOTM模型优化器可以实现将ONNX模型转为IR格式。在OpenVINOTM环境下切换到模型优化器文件夹直接使用下面指令便可以进行转换。
cd .\openvino\tools
mo --input_model paddle/model.pdmodel经过上述指令模型转换后可以在当前文件夹下找到转换后的三个文件。 由于OpenVINOTM支持FP16推理此处为了对比推理时间也已并将模型转为FP16格式
mo --input_model paddle/model.pdmodel --data_type FP16