Openpose 学习总结

2024-05-15 00:58
文章标签 学习 总结 openpose

本文主要是介绍Openpose 学习总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里提出几个问题,以及整个论文流程:

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(Openpose)

1. https://blog.csdn.net/weixin_41441682/article/details/81357369

2. https://github.com/assmdx/ComputerVisionDoc/blob/master/openpose/openpose.md,中文论文网站,也就是翻译

3. https://blog.csdn.net/htt789/article/details/80283370,这篇文章分析很透彻,能抓住问题的核心

4. http://jacobkong.github.io/posts/3799204522/ 姿势识别论文总结

openpose的前身就是CPM算法,相比较与CPM算法识别单人,openpose可以识别多人,虽然这么说不太严格,因为CPM算法也是可以通过center map识别出多人的,但openpose提出了PAFs,更加优雅的解决了多人的问题。

 

这里简单介绍一下网络的流程,首先是输入一张原始图片,经过基础网络VGG进行简单的特征提取,得到一个Feature map,然后在stage1,经过两个分支分别预测。第一个分支为关键点的分支,这个分支也为CPM的经典方法,此外在这个分支的基础之上增加了PAF骨骼点走向的分支。之后的阶段与上面的类似,最终得到网络的输出S,L

损失函数的计算,两种loss求和。

       

损失函数为每一层循环网络的损失函数之和,接下来说一下两个步骤吧:

第一个就是关键点检测,用的CPM方法。关键点检测,通过图像中标注的2D点Xj,k计算S的groundtruth(S*),其中X (j,k)表示图片中第k个人的第 j 种关节 计算方法:Sj*符合正态分布,当像素点P接近注释点Xj,k时,达到正态曲线的峰值,则每张图像中第j种关节的S,为图像中k个人的正态分布峰值。

                 

第二个步骤为PAF的检测:

其中像素P是否落在肢体上需要满足两个条件 
 
每张图像中第c中肢体的Lc*,为k个人在位置p的向量平均值 


评估两个关键点之间的相关性:
关键点dj1,dj2和PAF已知之后,计算两个关键点连线向量和两关键点连线上各像素的PAF向量之间的点积的积分作为两个关键点之间的相关性。 
 
像素p进行采样


接下来就需要通过PAF计算出来的图的关系来得到一个匹配,最大匹配:匹配边数最多 
完美匹配:所有点都是匹配点 
最大权重匹配:所有匹配边权重之和最大 
最大匹配:匹配边数最多 
完美匹配:所有点都是匹配点 
最大权重匹配:所有匹配边权重之和最大 
求解最大匹配方法:匈牙利算法匈牙利算法
https://blog.csdn.net/nineship/article/details/82797557

这篇关于Openpose 学习总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990352

相关文章

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem