姿态估计端到端新方案 | DirectMHP:用于全范围角度2D多人头部姿势估计

news2024/10/2 16:26:01
前言 现有的头部姿势估计主要集中在具有预先检测到的正面头部的单个人,这依赖于单独训练的面部检测器,不能很好地泛化到完整的视点。在本文中,作者关注全范围 MPHPE 问题,并提出了一个名为 DirectMHP 的直接端到端简单基线,通过多头的联合回归位置和方向设计了一种新颖的端到端可训练单级网络架构,以解决 MPHPE 问题。
这种灵活的设计可以接受任意姿势表示,同时可以隐含地从更多环境中获益,以提高 HPE 精度,同时保持头部检测性能。

Transformer、目标检测、语义分割交流群

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

论文:https://arxiv.org/pdf/2301.13817.pdf

代码:https://github.com/hnuzhy/DirectMHP

论文出发点

目前,两个最广泛使用的 HPE 数据集BIWI和300W-LP仅包含窄范围偏航角(-99°,99°)的头部姿势标签。现有 HPE 方法的性能在这些基准上趋于饱和。然而,覆盖全范围偏航角(−180°、180°)的 HPE 方法因此同样具有重要的应用价值。

作者认为目前的两阶段 HPE 方法存在以下两个缺点:(1)人脸/头部检测和方向估计的两阶段模型不能端到端地训练,这使得它不紧凑且效率低下;(2) 单独的阶段无法整合和利用整个人体和周围背景的信息,因此这些模型在野外应用时对挑战性条件不稳健。

创新思路

由于多人头部姿势估计 (MPHPE) 任务没有专门的公共数据集。因此,本文首先分别构建两个 2D 全范围 MPHPE 数据集 AGORA-HPE 和 CMUHPE。然后,本文提出了一种新颖的单级端到端网络结构 DirectMHP,它可以直接预测出现在一张图像中的所有人类头部的全方位姿势。该方法通过共享特征实现联合头部检测和姿势估计。同时,将头部姿势作为相邻属性集成到典型对象预测中,支持任意姿势表示,例如欧拉角。

方法

Benchmarks Construction

(1)AGORA-HPE

首先通过封闭形式的解决方案从具有精确正面视图和预定义相机参数Cref的通用头部模型Href计算相似变换矩阵Mc。在Hreal和Href中精心选择N0对角地标进行对齐。然后,使用Mc松散地围绕每个头部定义一个变换后的3D半球,并通过具有真实相机参数Creal的2D投影生成其边界框,以获得包含背景和整个头部的区域。最后,为了提取头部方向,估计从相机世界Ccam到现实世界Creal的变换矩阵 Mr。Mr计算如下:

然后按照数据集300W-LP和BIWI按照俯仰-偏航-滚动顺序拆分出三个欧拉角。丢弃掉可能没有至少一个有效头部姿势标签的图像,最终生成的 AGORA-HPE 基准分别包含1,070和14,408个图像用于验证和训练集。

(2)CMU-HPE

CMU Panoptic Dataset由一个大规模的多视图系统收集。它的场景主要集中在半球形设备中的一个人或互动的人身上。其标签包括 31 个同步高清视频流中多人的 3D 身体姿势、手部关键点和面部特征。它还提供来自31个视图的校准相机参数Creal。典型的采样时刻快照如下图所示:

类似于构建AGORA-HPE的过程,本文构建了CMU-HPE,它分别有16,216和15,718个图像用于验证和训练集。

如下图,本文构建的两个数据集的俯仰角和横滚角基本上服从正态分布。

提出的两个全范围数据集自然包含比300W-LP&AFLW2000和BIWI更多的人脸隐形头。如下图所示,除了那些奇特的头部后仰外,普通的正面脸往往与自遮挡、隐现遮挡或异常角度等复杂情况并存。

DirectMHP

在MPHPE方法中,训练了一个密集的检测网络来直接预测一组头部对象,其中包含头部边界框集和相应的头部姿势同时设置,并联合头部检测和姿势估计之间的内在相关性。

然后,将头部姿势视为附加的头部属性,并将其与其头部位置连接起来以构建头部对象的联合表示,在统一框架中使用联合预测将这两个任务集成在一起。

一方面,一个合适的头部边界框具有强烈的局部特征(例如,眼睛、耳朵和下巴)和弱的全局特征(例如周围背景和解剖位置),用于其头部方向估计。因此,本文将两者绑定到一个嵌入中,以使网络能够学习它们的内在关系。

Network Architecture Design

网络结构如下图所示。采用目标检测架构(YOLOv5)作为backbone,从一张输入图像I中提取特征并生成预测网格。在训练期间,使用目标网格G来监督损失函数L。在推理中,应用对预测的头部对象进行非最大抑制 (NMS)以获得最终边界框集和相关头部姿势集。

Multi-Loss Optimization

计算总训练损失:

计算三个损失分量如下:

Splitting: Offline Inference

训练结束后,需要对预测对象集进行处理。首先,使用非极大值抑制 (NMS) 来过滤掉误报和冗余边界框。通过计算每个预测对象的置信度,不需要修改获得正头部边界框的常见NMS步骤。

结果

DIRECTMHP-M与在300W-LP 数据集上训练的方法的比较(红色表示最好的结果,蓝色表示第二好的结果):

同理,在AGORA-HPE 基准验证集的性能比较:

类似的,在CMU-HPE 基准验证集的性能比较:

来自 COCO val-set 的一些野外图像的可视化如下图所示。第二行和第三行分别是比较6DRepNet和本文方法的例子。使用6DRepNet估计的头部样本有明显的不准确(黄色圈出)。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题。

模型部署交流群:732145323。用于计算机视觉方面的模型部署、高性能计算、优化加速、技术学习等方面的交流。

用于超大图像的训练策略:Patch Gradient Descent

新方案:从错误中学习,点云分割中的自我规范化层次语义表示

ECCV2022 | 重新思考单阶段3D目标检测中的IoU优化

目标检测模型的评价标准总结

Vision Transformer和MLP-Mixer联系和对比

Visual Attention Network

TensorRT教程(一)初次介绍TensorRT

TensorRT教程(二)TensorRT进阶介绍

从零搭建Pytorch模型教程(一)数据读取

从零搭建Pytorch模型教程(二)搭建网络

从零搭建Pytorch模型教程(三)搭建Transformer网络

从零搭建Pytorch模型教程(四)编写训练过程--参数解析

从零搭建Pytorch模型教程(五)编写训练过程--一些基本的配置

从零搭建Pytorch模型教程(六)编写训练过程和推理过程

从零搭建Pytorch模型教程(七)单机多卡和多机多卡训练

从零搭建pytorch模型教程(八)实践部分(一)微调、冻结网络

从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

入门必读系列(十五)神经网络不work的原因总结

入门必读系列(十四)CV论文常见英语单词总结

入门必读系列(十三)高效阅读论文的方法

入门必读系列(十二)池化各要点与各方法总结

入门必读系列(十一)Dropout原理解析

入门必读系列(十)warmup及各主流框架实现差异

入门必读系列(九)彻底理解神经网络

入门必读系列(八)优化器的选择

入门必读系列(七)BatchSize对神经网络训练的影响

入门必读系列(六)神经网络中的归一化方法总结

入门必读系列(五)如何选择合适的初始化方法

入门必读系列(四)Transformer模型

入门必读系列(三)轻量化模型

入门必读系列(二)CNN经典模型

入门必读系列(一)欠拟合与过拟合总结

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

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

相关文章

怎么给笔记本电脑外接两台显示器?

我们在办公室会看见不少同事的电脑不止一台显示器,多屏确实可以提高工作效率。有的游戏党也会选择给电脑外接显示器,带来绝佳的体验。 不过要怎么把将外部显示器连接到笔记本电脑上?驱动人生在这里教给大家给笔记本外接显示器的做法。 一、…

TensorFlow CNN 卷积神经网络实现人脸性别检测 完整教程 附完整代码

本文主要是实现了根据人脸识别性别的卷积神经网络,并对卷积过程中的提取特征进行了可视化.

HydroD 实用教程(二)有限元模型

目 录一、前言二、模型种类三、单元类型四、FEM文件五、参考文献一、前言 SESAM (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、…

【Linux command 09】tcpdump 命令

tcp一款sniffer工具,是Linux上的抓包工具,嗅探器语法tcpdump (选项)选项-c: 指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包&#xf…

激光slam学习笔记2--激光点云数据结构特点可视化查看

背景:不同厂商的激光点云结果存在一定差异,比如有些只有xyz,有些包含其他,如反光率、时间戳、ring等。如何快速判断是个值得学习的点 概要:对于rosbag类型的激光点云,介绍使用rviz快速查看点云结构特点 如…

JavaWeb--MySQL高级

MySQL高级1 约束1.1 概念1.2 分类1.3 非空约束1.4 唯一约束1.5 主键约束1.6 默认约束1.7 检查约束1.8 外键约束1.8.1 概述1.8.2 语法2 数据库设计2.1 数据库设计简介2.2 表关系(一对多)2.3 表关系(多对多)2.4 表关系(一对一)3 多表查询3.1 内连接查询3.2 外连接查询3.3 子查询3…

技能树基础——17四平方和(拉格朗日定理,嵌套循环)

题目:四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 0^ 2 0^ 2 1^ 2 2^27 1^ 2 1^ 2 1^ 2 2^2 (^符号表…

微服务项目【服务调用分布式session共享】

nginx动静分离 第1步:通过SwitchHosts新增二级域名:images.zmall.com 第2步:将本次项目的所有静态资源js/css/images复制到nginx中的html目录下 第3步:在nginx的核心配置文件nginx.conf中新增二级域名images.zmall.com访问映射…

h2database源码解析-表和索引

目录表索引MVPrimaryIndexMVDelegateIndexMVSecondaryIndex索引更新表 h2使用类MVTable表示数据库表,h2的表数据是基于主键排列的,这种表也叫做主键索引表。这也就意味着表必须有主键,如果没有主键,h2会自动生成一个主键_ROWID_&…

在Linux和Windows上编译datax-web-ui源码

记录:375场景:在CentOS 7.9操作系统上,使用apache-maven-3.8.7安装编译datax-web-ui源码。在Windows上操作系统上,使用apache-maven-3.8.7编译datax-web-ui源码。版本:JDK 1.8 node-v14.17.3 npm-6.14.13datax-web-ui开…

江苏五年制专转本应该复习几轮?

五年制专转本应该复习几轮? 据调查统计:2022年专转本17%的考生复习三轮及以上,23%的考生复习了两轮。这两类的考生录取率高至85%。可见复习轮数多,专转本上岸的概率也大。综合多方因素,建议同学们专转本复习四轮&#…

pointpillars Paper学习总结

Pointpillar Paper PointPillars提出了一种新的点云编码方式和3D转2D的方法,用2D卷积的方式实现目标检测而没有采用耗时的3D卷积,在速度和精度上达到了很好的平衡,其速度快、精度高、易于部署的特点使得其在工业界得到了广泛的应用。 处理思…

JavaWeb--JDBC

JDBC1 JDBC概述1.1 JDBC概念1.2 JDBC本质1.3 JDBC好处2 JDBC快速入门2.1 编写代码步骤2.2 具体操作3 JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行对象3.2.2 事务管理3.3 Statement3.3.1 概述3.3.2 代码实现3.4 ResultSet3.4.1 概述3.4.2 代码实现3.5 案例3.6 P…

2.Java基础【Java面试第三季】

2.Java基础【Java面试第三季】前言推荐2.Java基础01_字符串常量Java内部加载-上58同城的java字符串常量池面试code讲解intern()方法---源码解释02_字符串常量Java内部加载-下whyOpenJDK8底层源码说明递推步骤总结考查点03_闲聊力扣算法第一题字节跳动两数求和题目说明面试题解法…

rt-thread 移植调试记录

rt-thread 移植调试记录 记录rt-thread移植的过程。这里移植仅仅是利用rt-thread源码目录已经移植好的文件,组建自己的工程,不需要自己编写汇编完成底层移植。 1. 搭建基础工程 这里使用的是正点原子的潘多拉开发板,MCU为stm32l475。需要先…

【c++】类和对象:让你明白“面向一个对象有多重要”:构造函数,析构函数,拷贝构造函数的深入学习

文章目录 什么是面向对象?一:类是什么? 1.类的访问限定符 2.封装 3.类的实例化 4.this指针二:类的6个默认成员函数 1.构造函数 2.析构函数 3.拷贝构造函数什么是面向对象? c语言是面向…

window系统中安装Jupyter Notebook方法记录

1.初步感受Jupyter Notebook Jupyter Notebook 官网地址:Jupyter Notebook Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序&#xf…

Java体系最强干货分享—挑战40天准备Java面试,最快拿到offer!

如何准备java面试,顺利上岸大厂java岗位? 主攻Java的人越来越多,导致行业越来越卷,最开始敲个“hello world”都能进大厂,现在,八股、全家桶、算法等等面试题横行,卷到极致!就拿今年…

聊聊什么是架构,你理解对了吗?

什么是架构?软件有架构?建筑也有架构?它们有什么相同点和不同点? 下面咱们就介绍一下,容易混淆的几个概念 一、系统与子系统 系统 泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是 “总体”、“整体”或“联盟” 子系…

Java基础常见面试题(二)

面向对象基础 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点…