人体姿态估计算法之open pose

一,openpose是一种自底向上的算法:
        OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用,基于它的实例如雨后春笋般涌现。


        检测所有的关键点,再group成不同的人,是当前比较流行的人体姿态评估算法之一。OpenPose 大获成功的一部分原因是它在 GitHub 上开源了其实现代码

(https://github.com/CMU-Perceptual-Computing-Lab/openpose),并配有详细的说明文档。
和很多自底向上的方法一样,OpenPose 首先检测出图像中所有人的关节(关键点),然后将检出的关键点分配给每个对应的人。下图展示了 OpenPose 模型的架构。

 

二,openpose算法:
1.输入一幅图像,经过VGG19卷积网络提取特征,得到一组特征图,然后分成两个岔路Branch1&2,分别使用 CNN网络提取Part Confidence Maps(置信度) 和 Part Affinity Fields(关联度);
2.得到这两个信息后,我们使用图论中的 Bipartite Matching(偶匹配) 求出Part Association,将同一个人的关节点连接起来,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架;
3.最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing问题转换成graphs问题—>Hungarian Algorithm(匈牙利算法)(匈牙利算法是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。)

三,关键点热图与矢量图(heatmap&vectmap):
如,一共有19个关键点,就会生成19个通道的热图,每一个通道为某个关节的热图分布(也就是概率图)。同时会生成192个通道的矢量图,为什么是192呢?因为矢量图分为两个方向,一个是X方向、一个是Y方向。

heatmap生成关键点热力图,未在图内且未标注的关键点生成的heatmap所有值都为0。一共19个heatmap,其中最后一个代表背景。


vectormap 向量叉乘,vectormap是heatmap的两倍为38个(19*2),因为有19条的关键点连接线,每一条线使用向量表示,分别有x轴的map,以及y轴的map。

四,coco keypoints 标注 以及tf-openpose的标注的不同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python练习5

import re from datetime import datetime, timezone, timedeltadef to_timestamp(dt_str, tz_str):# 时间dt_now datetime.strptime(dt_str, %Y-%m-%d %H:%M:%S)#时区tz_num int(re.match(\w{3}([|-]\d):00,tz_str).groups()[0])tz_utc timezone(timedelta(hours tz_num))…

抢火车票这个事吧,其实我也能做!(python黑科技)

2019独角兽企业重金招聘Python工程师标准>>> 又是一年,马上就要回家过年了,还没有买到票的小伙伴们是否已经像热锅上的蚂蚁了无脑的开始找黄牛了? 俗话说的好,求人不如求自己,抢票这玩意,其实我觉得我也可…

用 Python+openpose 实现抖音尬舞机

游戏开始后,随着音乐会给出不同的动作提示,用户按照提示摆出正确动作即可得分。援引官方说法,“尬舞机”主要应用了今日头条 AI Lab 自主开发的“人体关键点检测技术”,依靠这项技术,抖音能够检测到图像中所包含人体的…

PHP获取中文字符拼音首字母

在项目中遇到需要把游戏进行字母排序,于是百度到一个格式化的首字母的方法。 /*** name php获取中文字符拼音首字母* param $str* return null|string*/public function getFirstCharter($str){if (empty($str)) {return ;}$fchar ord($str{0});if ($fchar > or…

Array类型

一、转换方法 toString() 调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分割的字符串 valueOf() 返回的还是数组 实际上,为了创建这个字符串会调用数组每一项的toString()方法 二、栈方法 push() pop() 只发生在栈的顶部 三…

Create a Service Catalog Request via REST API

http://wiki.servicenow.com/index.php?titleUseful_Catalog_Scripts#Eureka http://wiki.servicenow.com/index.php?titleService_Catalog_Script_API#gsc.tab0 Service Catalog APIhttps://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/integrate/inboun…

MYSQL和JAVA(课堂笔记)

MYSQL  数据库管理工具 JAVA    编程语言 数据库驱动(JAVA和MYSQL对接方式) 到官网上下载驱动    加载驱动 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class S…

解密昇腾AI处理器--Ascend310简介

Ascend310 AI处理器规格 Ascend310 AI处理器逻辑架构 昇腾AI处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。其主要的架构组成部件包括特制的计算单元、大容量的存储…

银盒子扫码下单在线订单开启商品售卖时段使用说明

1,登陆管理员账号,子账号下,配置管理--店铺配置--扫码下单Tab页,是否开启商品售卖时段,选择“是” 2,在商家后台登陆相应的子账号,在店铺管理--商品售卖时段里配置售卖时间以及相应时段售卖的商…

使用pandas时遇到ValueError: numpy.dtype has the wrong size, try recompiling

[问题]使用pandas时遇到ValueError: numpy.dtype has the wrong size, try recompiling [原因] 这是因为 Python 包的版本问题,例如安装了较旧版本的 Numpy,但安装了较新版本的 Pandas。 [解决方法] 查看Numpy版本号 python -c "import numpy; prin…

『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

# 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导&#x…

海思芯片选型表汇总

海思芯片选型表汇总_「违规用户」的博客-CSDN博客_海思芯片型号大全

Docker中未指定挂载点容器间volume卷的数据共享

一 背景 在实际使用过程中,我们可能会经常遇到容器间数据共享的情况,怎么处理呢?通过 docker 命令中的一些选项,我们即可完成容器间的数据共享。 二 实验步骤 2.1 创建容器 容器一:gysl-1 [rootdev ~]# docker run -it…

为什么早上和傍晚的太阳总是红色,而中午的大阳却是黄白色?

由太阳光本质决定,但会受环境影响。在地球上和火星上看到的太阳光也是有区别的,和太气层物质及厚薄也有关系。太阳光是由赤橙黄绿青蓝紫七色光组成的复合光是白色光。 在日出和日落的时候,地平线上所透过的大气层厚度,一般要比白…

js把日期字符串转换成时间戳

//获取当前时间: var myDate new Date();//当前时间 var year myDate.getFullYear();//当前年份 var month myDate.getMonth() 1;//当前月份 var day myDate.getDate();//当前日 myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); …

VS2008中开发智能设备程序的一些总结

原文链接:http://blog.csdn.net/citybug_nj/article/details/2598705 程序中包括四个部分: 系统配置这个部分用来配置系统中的相关参数,参数包括数据库信息和串口的配置信息。这部分的主要技术是XML文件的读取和写入。 数据下载从数据库中下载…

go语言值得学习的开源项目推荐

谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也有大型如nsq、docker等的项目。 下面推荐几款适合学习的项目: 1、…

部分Nand flash uboot 命令详解

nand info & nand device显示flash的信息: DM365 :>nand info Device 0: NAND 32MiB 3,3V 8-bit, sector size 16 KiB DM365 :>nand device Device 0: NAND 32MiB 3,3V 8-bitnand read(.oob) addr off size 不管是读取data, 使用nand read,还是…

java7

第八章 数组 1.数组的声明定义 数据类型[]变量名 new 数据类型[长度]; 列:int[]ary new int[5]; 2.取值,赋值 取值:数据名[下标]; 列:int a ary[1]; 赋值:变量数据名[…

BZOJ 3564 信号增幅仪

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id3564 题意:给出平面上n个点,画出一个椭圆,椭圆的长轴是短轴的p倍,且长轴的方向为x轴逆时针旋转a度。求这个椭圆短轴的最小值使得可以覆盖所以点。 思路&…