孝感市网站建设_网站建设公司_CMS_seo优化
2026/1/16 19:09:42 网站建设 项目流程

目录

  • 一、研究内容概述
    • 1、凝视数据的提取与可视化
      • 1.1、使用aria眼睛的机器感知系统(MPS)获取3D凝视方向
      • 1.2、提供凝视数据在第一人称和第三人称下的2D重投影方法
      • 1.3、支持一般凝视和个性化凝视两种模式
    • 2、手势与身体姿势的提取与重投影
      • 2.1、从标注文件中提取3D关键点(世界坐标系)
      • 2.2、将3D关键点重投影到第一人称和第三人称的图像平面上
      • 2.3、支持手部与身体姿势上绘制关键点与骨骼连接
    • 3、无失真图像的处理与标注叠加
      • 3.1、对 Aria 镜头和 GoPro 镜头进行去畸变处理
      • 3.2、将2D标注叠加至去畸变后的图像上,便于可视化分析
    • 4、对参与者进行熟练度估计
      • 4.1、示范者熟练度估算
      • 4.2、示范熟练度估计
      • 4.3、区别
  • 二、研究方法与技术路线
    • 1. 数据加载与预处理
      • 1.1、 使用`projectaria_tools`和`opencv-python`等库读取VRS格式的传感器数据
      • 1.2、通过 takes.json 和 captures.json 获取拍摄元数据与时间同步信息。
      • 1.3、支持自定义路径与采样频率,适应不同数据规模与处理需求
    • 2、3D到2D的重投影方法
      • 2.1 、凝视重投影
      • 2.2、姿势重投影
    • 3、无失真处理技术
    • 4、可视化与标注绘制
    • 5、多模态数据融合

一、研究内容概述

该教程围绕的Ego-Exo4D 数据集展开,该数据集同时包含了第一人称视角(Ego)和第三人称视角(Exo)的视频、传感器与标注数据,而4D则是三维空间+时间维度,研究内容主要包括以下几个方面:

1、凝视数据的提取与可视化

1.1、使用aria眼睛的机器感知系统(MPS)获取3D凝视方向

aria眼睛数据的文件一般都是用VRS储存的,VRS数据存储在Stream流中,且有唯一的标识,允许我们检索所有的VRS数据以及校准数据,我可以从Stream流中获取aria眼睛的RGB相机和左右SLAM相机的标定信息以及图像信息

1.2、提供凝视数据在第一人称和第三人称下的2D重投影方法

虽然训练集同时包含第一人称和第三人称的数据,但是理解下来,第一人称是占主要位置的,第三人称是为第一人称服务的,第三人称得到的凝视数据,对于aria眼睛模拟效果不好的情况,第三人称可以提供额外的凝视数据来帮助计算

1.3、支持一般凝视和个性化凝视两种模式

一般凝视和个性化凝视都是第一人称下的凝视方式,一般凝视是基于用户大数据推导出来的平均数据,无需用户特定校准,随时可使用,但是可能有系统误差;而个性化凝视是有专门的校准过程,系统学习该用户的眼动特性,但是具体实现该教程没有说明

2、手势与身体姿势的提取与重投影

2.1、从标注文件中提取3D关键点(世界坐标系)

跟上面一样,通过MPS读取外置相机,VRS读取aria眼睛的相机,只不过这次需要加载手部姿势和身体姿势。

2.2、将3D关键点重投影到第一人称和第三人称的图像平面上

通过重投影技术,分别将3D关键点投影到2D图像平面上,因为最终我们是要通过2D图像来展示学习效果

2.3、支持手部与身体姿势上绘制关键点与骨骼连接

通过关键点以及关键点之间的连接关系,我们可以简化人类复杂的行动逻辑,在该教程中,骨骼包括了鼻子、耳朵、手肘、腕部、拇指、臀部等一些关键的运动部位,但是从实际效果图中,只运用了腕部、手指的骨骼连接关系

3、无失真图像的处理与标注叠加

3.1、对 Aria 镜头和 GoPro 镜头进行去畸变处理

通过资料发现,Aria眼镜是鱼眼状的,所以拍摄出来的画面是缩小且扭曲的;而GoPro则是广角镜头,也是带有一定扭曲效果的,而EgoExo4D 数据集中的一些注释是在未失真帧上完成的。因此,我们需要先恢复失真,然后才能在帧上叠加二维注释。

3.2、将2D标注叠加至去畸变后的图像上,便于可视化分析

找到EgoExo4D数据集的下载文件,加载必要注释,再通过加载Ego镜头和Exo镜头,读取其外心相机的校准数据,找到采样帧,再添加到视频里中去

4、对参与者进行熟练度估计

4.1、示范者熟练度估算

目标是估算参与者在任务中的绝对技能水平,评估参与者在整个任务中的整体技能水平,给出一个全局性的熟练度等级,并且提出相关建议

4.2、示范熟练度估计

对任务执行过程进行细粒度、时序性分析,识别具体表现良好和需要改进的时段

4.3、区别

前者的输出是一个单一标签,比如该参与者是新手、专家、高级专家等,是对参与者评价

后者输出的是一个时间戳列表,每个时间戳对应一个熟练度类别,拿做饭举例子,在t1时间戳下,切菜的熟练度为老手,t2时间戳下,炒菜的熟练度为新手,是对过程的评价

二、研究方法与技术路线

1. 数据加载与预处理

1.1、 使用projectaria_toolsopencv-python等库读取VRS格式的传感器数据

projectaria_tools:Meta专门为Project Aria设备开发的专用工具库,主要用于Aria眼镜采集的VRS格式数据、相机标定处理、MPS数据处理、集合变换(SE3)等

opencv-python:通用的计算机视觉和图像处理库,主要用于读写图像、尺寸调整、相机标定、去畸变、一些机器学习的模块

1.2、通过 takes.json 和 captures.json 获取拍摄元数据与时间同步信息。

takes.json:记录的是拍摄片段,比如正在做什么活动、什么时候、有谁参与了

captures.json:记录设备的信息,用什么设备、如何同步、原始数据位置

1.3、支持自定义路径与采样频率,适应不同数据规模与处理需求

数据集在不同机器上储存不同

比如

如果代码是这样的

ego_exo_root='/datasets01/egoexo4d/v2/'

那么数据集只能在我的机器中使用,教程中是这样的

那么我们可以很方便的在不同的机器上调用这些数据

2、3D到2D的重投影方法

2.1 、凝视重投影

使用的是MPS提供的凝视向量,结合我们相机的参数,可以将3D凝视投影到图像平面

在教程中的逻辑关系为:

gaze_vector_in_cpf=mps.get_eyegaze_point_at_depth(eye_gaze.yaw,eye_gaze.pitch,eye_gaze.depth)gaze_vector_in_cpf=np.nan_to_num(gaze_vector_in_cpf)gaze_vector_in_device=T_device_CPF @ gaze_vector_in_cpf gaze_vector_in_world=T_world_device @ gaze_vector_in_device

运用到了矩阵的预算,如果需要逆运算,则调用.inverse()

2.2、姿势重投影

基于标注的3D关键点,通过相机姿态变换矩阵,将世界坐标系下的关键点投影至各相机视角。

教程中代码为

pose_vector_in_world=annot_3d[part]# project the keypoint from world to go_pro devicepose_in_go_pro_world=go_pro_proxy[go_pro]["pose"].inverse()@ pose_vector_in_world# project the keypoint from go_pro device to go_pro image planedevice_projection=go_pro_proxy[go_pro]["camera"].project(pose_in_go_pro_world)

MPS 是一个 离线数据处理系统,专门用于处理从多相机系统(特别是 EgoExo 这样的第一人称+第三人称系统)收集的数据,生成高层次的计算结果。

因为原始VRS数据是低层次、未处理、未对齐、数据量大,经过MPS处理之后就是高层级、已处理、已对齐且紧凑的。

3、无失真处理技术

Aria 相机:使用 projectaria_tools.calibration 提供的 undistort_by_calibration 函数。

GoPro 相机:基于 OpenCV 的鱼眼去畸变模型,结合相机内参与畸变系数进行图像校正。

4、可视化与标注绘制

使用 PIL.ImageDraw 绘制关键点、骨骼连接与标签,这些在教程代码中阐述的很详细,所以不多赘述

支持不同颜色编码与绘制样式(圆形、十字、标签等),通过教程中的绘制函数,我们知道,红色的叉代表的是MPS重投影的凝视点、模型预测的关键点,而绿色代表的是CSV中的凝视点、人工标注的关键点

可同时展示多视角图像,便于对比分析。

5、多模态数据融合

结合 VRS 数据、MPS 轨迹数据、时间同步文件与标注文件,实现多传感器数据的时空对齐。

支持凝视、姿势、图像与视频数据的联合可视化。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询