openpose姿态估计【学习笔记】

文章目录

      • 1、人体需要检测的关键点
      • 2、Top-down方法
      • 3、Openpose
        • 3.1 姿态估计的步骤
        • 3.2 PAF(Part Affinity Fields)部分亲和场
        • 3.3 制作PAF标签
        • 3.4 PAF权值计算
        • 3.5 匹配方法
      • 4、CPM(Convolutional Pose Machines)模型
      • 5、Openpose
        • 5.1 序列的作用
        • 5.2 整体框架

1、人体需要检测的关键点

在本项目中,需要检测人体18个关键点,除了下图所标注的17个关键点外,还有1个脖子关键点

在这里插入图片描述

2、Top-down方法

1、检测得到所有人的框;
2、对每一个框进行姿态估计输出结果

Top-down方法的问题
1、姿态估计做成啥样主要由人体检测所决定,能检测到效果估计也没问题
2、但是如果俩人出现重叠,只检测到一个人,那肯定会丢失一个目标
3、计算效率有点低,如果一张图像中存在很多人,那姿态估计得相当慢了

能不能设计一种方法不依赖于人体框而是直接进行预测呢?有的,接下来请看下面的方法

3、Openpose

3.1 姿态估计的步骤

姿态估计的2个步骤
1、识别出图片中所有关键点,
2、按顺序拼接同属一个人的所有关键点

如下面左图所示,我们识别人体18个关键点中的右肩关键点,就在图片中建立热度图(高斯),识别18个关键点就需要建立18个特征图
在这里插入图片描述

3.2 PAF(Part Affinity Fields)部分亲和场

PAF作用:将属于同一个人的不同关键点按顺序拼接

整体框架如下,1张图片经过CNN网络后分成2个网络,Parts Detection网络是预测关键点,Parts Association网络是预测方向,人体18个关键点总共需要19个不同的方向,而确定方向至少需要1个平面,即 x x x y y y 坐标,所以Parts Association需要预测19x2=38个特征图

在这里插入图片描述

3.3 制作PAF标签

Parts Association输出38张特征图,其中19张特征图预测 x x x 坐标,19张特征图预测 y y y 坐标,每一张特征图的像素点都需要输出坐标值。在PAF标签处理中,把2个关键点所包围的矩形当中的所有像素值的方向与2个关键点的方向都一致。
在这里插入图片描述
蓝色和红色分别是两个关键点, V V V 是其向量,

在这里插入图片描述
在这里插入图片描述

对于其中某个PAF特征图(19种连接方式种的1种),这就相当于得到PAF标签值了,包括所有人在该连接处的向量,
在这里插入图片描述

3.4 PAF权值计算

两个关键点j1与j2之间的权值计算方法
在这里插入图片描述
d j 1 d_{j1} dj1 d j 2 d_{j2} dj2分别表示j1与j2两点的坐标,求j1和j2间各点的PAF在线段j1j2上投影的积分,其实就是线段上各点的PAF方向如果与线段的方向越接近权值就越大

3.5 匹配方法

在这里插入图片描述

4、CPM(Convolutional Pose Machines)模型

为OpenPose后面的工作奠定了基础,也可以当作基础框架,通过多个stage来不断优化关键点位置(stage1预测完全错误,2和3在纠正)

在这里插入图片描述

stage越多相当于层数越深,模型感受野越大,姿态估计需要更大的感受野,因为进行关键点检测需要更多关于人体的信息,所以感受野越大则人体的信息越多,关键点检测越能检测准确

在这里插入图片描述

使用多个stage级联的思想,每个stage都加损失函数,也就是中间过程也得做的好才行

在这里插入图片描述

5、Openpose

两个网络结构分别搞定:1、关键点预测;2、姿势的‘亲和力’向量
使用多个stage级联的思想,2个网络结构输出之后再进行特征融合,因为方向的预测离不开关键点的位置信息,关键点的位置信息也与方向有关

在这里插入图片描述

5.1 序列的作用

多个stage,相当于纠正的过程,不断调整预测结果

在这里插入图片描述

5.2 整体框架

两个分支都要经过多个阶段,注意每个阶段后要把特征拼接一起

在这里插入图片描述

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

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

相关文章

怎么修改图片的分辨率?

怎么修改图片的分辨率?很多人还不知道分辨率是什么意思,以为代表了图片的清晰度,然而并不是这样的,其实图片的分辨率就是图片尺寸大小的意思。修改图片的分辨率即改变图片的尺寸,通常以像素为单位表示。分辨率决定了图…

【linux基础(四)】对Linux权限的理解

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到开通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux权限 1. 前言2. shell命…

八、Linux下,grep/wc/管道符/echo/重定向符/tail如何使用?

1、grep命令 (1)主要用于文件 (2)主要作用是“通过关键字,过滤文件行” (3)示例: 2、wc命令 (1)统计文件的行数、单词数等 (2)示例…

react之路由的安装与使用

一、路由安装 路由官网2021.11月初,react-router 更新到 v6 版本。使用最广泛的 v5 版本的使用 npm i react-router-dom5.3.0二、路由使用 2.1 路由的简单使用 第一步 在根目录下 创建 views 文件夹 ,用于放置路由页面 films.js示例代码 export default functio…

一文预览 | 8 月 16 日 NVIDIA 在 WAVE SUMMIT深度学习开发者大会 2023精彩亮点抢先看!

由深度学习技术及应用国家工程研究中心主办,百度飞桨和文心大模型承办的 WAVE SUMMIT深度学习开发者大会2023,将于 8 月 16 日在北京与大家见面。NVIDIA 作为技术合作伙伴,将携手百度飞桨参与这场技术盛会。 在这次大会中,NVIDIA…

Java 项目日志实例基础:Log4j

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ 介绍几个日志使用方面的基础知识。 1 Log4j 1、Log4j 介绍 Log4j(log for java)是 Apache 的一个开源项目,通过使用 Log4j,我…

RabbitMq交换机类型介绍

RabbitMq交换机类型介绍 在RabbitMq中,生产者的消息都是通过交换器来接收,然后再从交换器分发到不同的队列,再由消费者从队列获取消息。这种模式也被成为“发布/订阅”。 分发的过程中交换器类型会影响分发的逻辑。 直连交换机&#xff1a…

【计算机视觉|生成对抗】逐步增长的生成对抗网络(GAN)以提升质量、稳定性和变化

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Progressive Growing of GANs for Improved Quality, Stability, and Variation 链接:[1710.10196] Progressive Growing of GANs for Improved Quality, Stability, and Vari…

安防监控视频云存储平台EasyNVR出现内核报错的情况该如何解决?

安防视频监控汇聚EasyNVR视频集中存储平台,是基于RTSP/Onvif协议的安防视频平台,可支持将接入的视频流进行全平台、全终端分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。 近期有用户联系到我们,EasyNVR…

kafka集成篇

kafka的Java客户端 生产者 1.引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.6.3</version></dependency>2.生产者发送消息的基本实现 /*** 消息的发送⽅*/ …

分类预测 | MATLAB实现DRN深度残差网络多输入分类预测

分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 目录 分类预测 | MATLAB实现DRN深度残差网络多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 2.代码说明&#xff1a;MATLAB实现DRN深度残差网络…

LVS集群和nginx负载均衡

目录 1、基于 CentOS 7 构建 LVS-DR 群集。 2、配置nginx负载均衡。 1、基于 CentOS 7 构建 LVS-DR 群集。 1.部署LVS负载调度器 1>安装配置工具 [rootnode6 ~]# yum install -y ipvsadm 2>配置LVS虚拟IP&#xff08;VIP地址&#xff09; [rootnode6 ~]# ifconfig ens…

32.Netty源码之服务端如何处理客户端新建连接

highlight: arduino-light 服务端如何处理客户端新建连接 Netty 服务端完全启动后&#xff0c;就可以对外工作了。接下来 Netty 服务端是如何处理客户端新建连接的呢&#xff1f; 主要分为四步&#xff1a; md Boss NioEventLoop 线程轮询客户端新连接 OP_ACCEPT 事件&#xff…

算法与数据结构(七)--堆

一.堆 1.堆的定义 堆是计算机科学中一类特殊的数据结构的通常&#xff0c;堆通常可以被看做是一颗完全二叉树的数组对象。 堆的特性 1.它是完全二叉树&#xff0c;除了树的最后一层结点不需要是满的&#xff0c;其他的每一层从左到右都是满的&#xff0c;如果最后一层结点不…

linux 文件权限识别及其修改

一、文件权限认识 在 Linux 系统中&#xff0c;一切皆文件&#xff0c;目录也是一种文件形式叫目录文件&#xff0c;它们的属性主要包含&#xff1a;索引节点(inode)&#xff0c;类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。 如下为根目录下目录&…

改进YOLO系列:3.添加SOCA注意力机制

添加SOCA注意力机制 1. SOCA注意力机制论文2. SOCA注意力机制原理3. SOCA注意力机制的配置3.1common.py配置3.2yolo.py配置3.3yaml文件配置1. SOCA注意力机制论文 暂未找到 2. SOCA注意力机制原理 3. SOCA注意力机制的配置 3.1common.py配置 ./models/common.p…

Linux 网络发包流程

哈喽大家好&#xff0c;我是咸鱼 之前咸鱼在《Linux 网络收包流程》一文中介绍了 Linux 是如何实现网络接收数据包的 简单回顾一下&#xff1a; 数据到达网卡之后&#xff0c;网卡通过 DMA 将数据放到内存分配好的一块 ring buffer 中&#xff0c;然后触发硬中断CPU 收到硬中…

Lnton羚通关于Optimization在【PyTorch】中的基础知识

OPTIMIZING MODEL PARAMETERS &#xff08;模型参数优化&#xff09; 现在我们有了模型和数据&#xff0c;是时候通过优化数据上的参数来训练了&#xff0c;验证和测试我们的模型。训练一个模型是一个迭代的过程&#xff0c;在每次迭代中&#xff0c;模型会对输出进行猜测&…

python3 0基础学习----数据结构(基础+练习)

python 0基础学习笔记之数据结构 &#x1f4da; 几种常见数据结构列表 &#xff08;List&#xff09;1. 定义2. 实例&#xff1a;3. 列表中常用方法.append(要添加内容) 向列表末尾添加数据.extend(列表) 将可迭代对象逐个添加到列表中.insert(索引&#xff0c;插入内容) 向指定…

国家一带一路和万众创业创新的方针政策指引下,Live Market探索跨境产业的创新发展

现代社会&#xff0c;全球经济互联互通&#xff0c;跨境产业也因此而崛起。为了推动跨境产业的创新发展&#xff0c;中国政府提出了“一带一路”和“万众创业、万众创新”的方针政策&#xff0c;旨在促进全球经济的互联互通和创新发展。在这个大环境下&#xff0c;Live Market积…