0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用爱芯派Pro开发板部署人体姿态估计模型

电子发烧友论坛 来源:电子发烧友社区 2024-01-09 09:50 次阅读

在经过之前对于开发板的使用,以及通过几个爱芯派官方给出的示例demo(mobilenet/yolov5)在开发板上的部署之后,笔者也逐渐了解了爱芯派这块开发板利用其官方的推理引擎和pipeline部署模型的整体架构。接下来就回到最开始定的主线上了——人体姿态估计。这篇文章就是记录对一些轻量化人体姿态估计模型的调研,和前期准备。

01人体姿态估计任务介绍

其实姿态任务识别在很多生活场景都被使用到,这里给大家举几个例子:

虚拟主播:大家看到B站直播时的“皮套人”,通常通过一个2D live的形象展示一个动漫形象,然后和主播同步动作。这就是通过摄像头识别当前主播姿态,再同步到虚拟形象上实现的。

VR游戏:大家可能用过像kinect这样的设备,用于VR体感游戏。kinect同样会识别当前用户的姿态,然后用于VR交互中。

活动识别:通过得到人体姿态后,再通过一个简单的分类器,可以得到当前的运动状态,如用户是否跌倒(可以帮助监控老年人),以及用户当前身体状态等。

02人体姿态估计任务技术路线

其实人体姿态估计任务已经有很久的年头了,在当前也算是很成熟的任务了。有兴趣的朋友可以阅读下这篇综述:Deep Learning-Based Human Pose Estimation: A Survey (arxiv.org)。下面简单的对单人、多人人体姿态估计的技术路线做个小介绍:

03Openpose/lightweight openpose模型

首先要用到的是Openpose模型,这应该是最有名的人体姿态估计的模型了,因为是首个开源的人体姿态估计框架。论文如下:1812.08008.pdf (arxiv.org)。如下图所示,openpose能在多人情况下达到理想的识别效果。这里简单说明一下openpose的原理:openpose就是原来的Bottom-up模型,会先生成针对关键点的heatmap图像,来预测关键点的位置;同时也会PAF图像,也叫做关节的亲和力场,哪些关节的亲和力大,那么把它们划分为同一个人。比如一个胳膊对应两个关节点。

Openpose存在的一个问题便它其实是于比较大的模型,在GPU上运行速度也只是勉强实时。为了部署在端侧,使用较低算力的设备,我们需要进一步将其轻量化,也就是lightweight openpose项目。这个主要针对Openpose模型做一些改进,参数量下降为15% ,但是性能缺相差无几(精度降低1%)。这里不细讲了,有兴趣的朋友可以看这篇文章:轻量级OpenPose, Lightweight OpenPose

针对其部署,笔者使用了一些开源的项目后,发现如下的项目比较好用,就先用其观察模型的效果:

git clone https://github.com/Hzzone/pytorch-openpose.git

(左右移动查看全部内容)

在其body.py里面可以简单的写一段代码输出onnx文件观察网络结构:

class Body(object):
  def __init__(self, model_path):
    self.model = bodypose_model()
    if torch.cuda.is_available():
      self.model = self.model.cuda()
    model_dict = util.transfer(self.model, torch.load(model_path))
    self.model.load_state_dict(model_dict)
    self.model.eval()


    dummy_input = torch.randn(1, 3, 368, 368).cuda()
    torch.onnx.export(self.model, dummy_input, "model/openpose_lightweight_body.onnx")

(左右移动查看全部内容)

Openpose模型最终会输出了两个特征图heat_map和paf_map,shape分别为(height,width,19)和(height,width,38),其中width、height分别为输入图片的宽高/8,其实是由于最开始会通过一个VGG网络提取特征,得到输入图片的宽高/8的特征图。19表示coco数据集的关节种类个数18(即一个人体的所有关节点)+1个背景类别,38表示由这18个关节点构成的肢体的部分亲和力场(每个肢体由两个关节连接组成)。如下图所示,把导出来的onnx文件放到netron网站可以看到其具体结构。这里可以看到输出的shape,也方便我们部署的要求。

6a5a0460-ae83-11ee-8b88-92fbcf53809c.png

04Movenet

除了Openpose外,笔者还有一个选型,就是谷歌的轻量级人体姿态估计模型MoveNet。它是更近的一个轻量级人体姿态估计模型,但是一个缺点是它没有论文,也没有官方代码,虽然有开源的tfjs模型还有tflite模型,但是也只能通过观察模型结构去反推。

movenent的介绍在这个网站:Next-Generation Pose Detection with MoveNet and TensorFlow.js — The TensorFlow Blog ,通过对其学习,以及利用官方模型转换到onnx模型,打开到netron网站观察其结构,可以发现其有四个输出,分别对应预测人体实例的几何中、预测人体的全部关键点集、 预测所有关键点的位置的热力场、以及预测关键点2D偏移场,也就是每个关键点精确子像素位置的局部偏移。这与Openpose不同,但是有了更精细话的结果。

6abcab42-ae83-11ee-8b88-92fbcf53809c.png

同样为了复刻movenet网络结构,笔者选择参照如下的项目进行实现。

git clone https://github.com/fire717/movenet.pytorch.git

(左右移动查看全部内容)

后续笔者先尝试将openpose/lightweight openpose部署在板子上,再尝试对movenent进行进一步的优化。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4700

    浏览量

    128672
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97157
  • 模型
    +关注

    关注

    1

    文章

    3158

    浏览量

    48700
  • vr
    vr
    +关注

    关注

    34

    文章

    9633

    浏览量

    150035
  • 爱芯派
    +关注

    关注

    0

    文章

    3

    浏览量

    70

原文标题:如何用爱芯派 Pro 开发板来部署人体姿态估计模型

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Pro 开发板试用体验】+ 图像分割和填充的Demo测试

    感谢电子发烧友和元智公司提供的测试机会。 自从开箱 Pro (AXera-Pi
    发表于 12-26 11:22

    Pro 开发板试用体验】人体姿态估计模型部署前期准备

    在经过之前对于开发板的使用,以及通过几个官方给出的示例demo(mobilenet/yolov5)在开发板上的
    发表于 01-01 01:04

     Pro 开发板试用体验】CPU性能测试,与树莓4B对比

    coremark源码下载到Pro上: git clone https://github.com/eembc/coremark.git 下载完成后,可以看到如下文件: 三、Co
    发表于 01-01 16:36

    Pro 开发板试用体验】人体姿态估计模型部署后期尝试

    这里主要还是感觉上一期说的一些对于人体姿态估计模型的前期调研,进行后期的部署的一些尝试。下面主要针对尝试的集中
    发表于 01-21 00:49

    Pro 开发板试用体验】人体姿态估计模型部署后期尝试

    这里主要还是感觉上一期说的一些对于人体姿态估计模型的前期调研,进行后期的部署的一些尝试。下面主要针对尝试的集中
    发表于 01-22 10:46

    Pro 开发板试用体验】开箱报告

    (AI-ISP)。 一、开箱 一个金属盒子,上面有“MAIX-BOX-M4N”字样,有SIPEED设计制造。 盒子很漂亮,打开盒子里面分成两大块,左边是AXera-Pi Pro开发板真身,黑色
    发表于 11-12 00:31

    Pro 开发板试用体验】+开箱初次体验

    Pro 开发板试用体验】+开箱初次体验 开箱内容    打开包装,你可以看到以下物品 12v 2A电源适配器 typec的数据线
    发表于 11-12 10:58

    Pro 开发板试用体验】开箱报告

    开发板介绍 收到了 Pro (AXera-Pi Pro)
    发表于 11-13 13:18

    Pro 开发板试用体验】开箱报告 + 资料准备

    很高兴获得了这次试用爱心Pro开发板的试用资格,之前也有接触过元智家的AX620开发板,是
    发表于 11-14 20:59

    Pro 开发板试用体验】篇一:开箱篇

    Pro (AXera-Pi Pro)M4N Dock 是一款集成了高算力、高能效 AI SOC 的
    发表于 11-15 11:32

    Pro 开发板试用体验】yolov8模型转换

    尝试将最新的yolov8模型转换为模型。 环境准备 准备Docker环境 首先自己在任意机器上准备好docker环境,详细步骤见官网
    发表于 11-20 12:19

    Pro 开发板试用体验】开箱测试

    边缘智能计算的需求。通过内置多种深度学习算法,实现视觉结构化、行为分析、状态检测等应用,高效率支持 Transformer 模型和视觉大模型。 打开快递包装之后,发现
    发表于 11-20 22:09

    Pro 开发板试用体验】模型部署(以mobilenetV2为例)

    ) 系列 AXera-Pi 开发板 - Sipeed Wiki 在docker里面,根据这个指令进行转换: pulsar2 build --input model
    发表于 12-10 16:34

    Pro 开发板试用体验】部署官方YOLOV5模型

    继上文开箱后,本文主要依托元智官方的实例,进行官方YOLOV5模型部署和测试。 一、环境搭建 由于8核A55的SoC,加上目前Debian OS的工具齐全,所以决定直接在
    发表于 12-12 22:58

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8分类模型

    本系列文章将在 AI 爱克斯开发板上使用 OpenVINO 开发套件依次部署并测评 YOLOv8 的分类模型、目标检测模型、实例分割
    的头像 发表于 05-05 11:47 1011次阅读
    在AI爱克斯<b class='flag-5'>开发板</b>上用OpenVINO™加速YOLOv8分类<b class='flag-5'>模型</b>