论文阅读三——端到端的帧到凝视估计

news2024/11/23 7:53:09

论文阅读三——端到端的帧到凝视估计

    • 主要内容
      • 研究问题
      • 文章的解题思路
      • 文章的主要结构
    • 论文实验
      • 关于端到端凝视估计的数据集
      • 3种基线模型与EFE模型的对比
      • 在三个数据集中与SOTA进行比较
    • 问题分析
    • 重要架构
      • U-Net
    • 基础知识

主要内容

文章从端到端的方法出发,提出了根据heatmap和sprase depth map生成凝视原点和通过图像帧获得凝视方向,将两者结合获得注视点(PoG),和先前传统的通过裁剪人脸眼睛和脸部特征有所区别,并且PoG误差较之前的小。

研究问题

文章所需要解决的问题是远程基于网络摄像头的凝视估计,即如何通过通过单个用户面向的、远程放置的摄像头捕捉用户的图像,然后利用这些图像来估计用户的凝视方向的问题。譬如远程RGB图像凝视估计(使用面向用户的单个RGB摄像头,而无需额外工具(如红外光源)来更容易地解决凝视估计问题)

在传统的解决方法中,有着以下两点难题:

  • 传统的学习型远程凝视估计方法通常需要将小的裁剪图像(眼睛或者面部图像)作为输入,以预测凝视方向。
  • 这些输入以及凝视起源必须根据面部特征的预定义过程生成,通常通过数据规范化等方式。

使用基于卷积神经网络(CNN)的学习型方法(输入是简单的裁剪图像 / 通过“数据归一化”过程产生的图像块)不会考虑到3D头部姿势,而大幅度头部旋转的情况下会导致不同的尺寸和图像比例。为了解决这个问题,论文提出了**"End-to-end Frame-to-Gaze Estimation(EFE)"方法,直接从相机帧**中回归3D凝视起源和3D凝视方向,允许模型适应新的相机-屏幕几何结构,方法避免了昂贵的数据规范化步骤。但是,不可忽视的是原始帧中眼部区域较小,且需要对凝视起源进行准确估计。

因此,文章作者作出了这样的模型设计:

  • 使用全卷积U-Net架构预测凝视起源的2D热图和深度图。
  • 利用多层感知机(MLP)从U-Net架构的瓶颈特征中预测3D凝视方向。
  • 使用相机内参和外参参数,通过可微分方式将凝视射线与已知屏幕平面相交,以得到Point-of-Gaze(PoG)。

文章的解题思路

文章在摘要前便直接展示了一张图,体现了自身模型与传统的凝视估计不同,图像如下:

在这里插入图片描述

端到端帧到视线估计方法**(EFE)被训练成直接从输入的摄像机帧预测眼睛的凝视**,而传统方法有许多的预处理模块(人脸检测模块、地标检测模块、数据归一化模块,然后进行凝视估计(视差估计)),而文章表示他们在跳过这些过程的情况下,还可以提升性能!

从论文的第一张图片以及摘要我们可以得到作者提出的EFE模型和过去大部分传统模型的差别:

  • 传统的凝视方法:需要一个或多个眼部或面部区域的裁剪作为输入,并产生一个凝视方向向量作为输出。

    • 根据面部标志从输入摄像头帧中裁剪眼部/面部补丁,通过拟合通用的3D面部模型估计3D头部姿势,进而生成3D凝视起源(上图没体现)。
    • 在摄像机坐标系中输出凝视方向(是通过眼睛的凝视行为进行估计的,而不仅仅是头部姿势的估计),通过将预测的凝视方向与在数据归一化步骤中获得的凝视原点合成,可以构建凝视射线。

    但是传统凝视方法中的裁剪有好处也有坏处,如下:

    • 好处:在眼部区域获得更高的分辨率,并且减少混淆因素(衣服、头发)。
    • 坏处:眼部/面部裁剪过程昂贵、容易出错,并且对于不同的方法具有特定的实现。
  • EFE方法:构建一个模型,实现以端到端的方式直接从相机帧中估计一个包括凝视起源和凝视方向的6D凝视射线(3D凝视原点+3D凝视方向),而无需对面部或眼睛进行任何裁剪。

总之,文章提出了一种无需进行面部或眼睛裁剪即可直接从原始帧进行凝视估计的方法,在实现简化流程、降低成本的同时,实现效果可以与当今最先进的模型进行媲美。

文章的主要结构

为了通过相机帧来确定人眼的注视点(PoG),文章使用了以下结构:

在这里插入图片描述

如上图,作者提出了一种类似U-Net的体系结构,其中输出特征被映射到图像上的2D凝视原点位置稀疏深度图中,它们结合在一起来产生3D凝视原点;使用瓶颈特征作为输入,利用MLP预测三维视线方向(POG是使用预测的凝视原点凝视方向以及相机转换矩阵来计算的)。

(注:感觉这里的系数深度图的图像是有问题的,可能是作者为了美观而将后面的Gaze Origin Depth的图像前移了,否则不会出现范围性的深度结果。)

  • 预测凝视原点

    • 预测2D凝视起源热图和稀疏深度图:使用 U-Net-like 结构,模型预测一个 2D 凝视起源热图和一个稀疏深度图。

    • 热图和深度图的训练损失:

      • 热图的预测,使用均方误差损失(MSE)用于预测热图,获得热图后通过softargmax获得。

      L h e a t m a p = 1 n ∑ i = 1 n ∣ ∣ h − h ^ ∣ ∣ 2 2 n = W × H h : 预测的凝视原点在相机帧上的 2 D 位置 h ^ 是通过以凝视原点为中心绘制二维高斯而生成的地面真实热图 通过损失函数获得最终的热图后,使用 s o f t − a r g m a x 来确定最终的凝视点坐标 L_{heatmap}=\frac{1}{n}\sum_{i=1}^{n}||h-\hat{h}||_2^2\\ n=W×H\\ h:预测的凝视原点在相机帧上的2D位置 \\ \hat{h}是通过以凝视原点为中心绘制二维高斯而生成的地面真实热图\\ 通过损失函数获得最终的热图后,使用soft-argmax来确定最终的凝视点坐标 Lheatmap=n1i=1n∣∣hh^22n=W×Hh:预测的凝视原点在相机帧上的2D位置h^是通过以凝视原点为中心绘制二维高斯而生成的地面真实热图通过损失函数获得最终的热图后,使用softargmax来确定最终的凝视点坐标

      之所以预测凝视原点为热图的概率分布而不是固定的某个点,是因为数据集的ground truth本身存在一定的误差,可以更好地应对凝视原点位置定义的模糊性和地面实况标签的误差。

      • 对于 2D 凝视起源位置的预测,同样使用均方误差损失。深度图的预测则使用 L1 范式损失,该损失函数仅考虑到对于可见的用户面部区域的点。-
        2D凝视位置损失:
        L g = ∣ ∣ g − g ^ ∣ ∣ 2 2 g ^ 是在摄像头帧上的真实 2 D 凝视位置。 L_g=||g-\hat{g}||_2^2\\ \hat{g}是在摄像头帧上的真实 2D 凝视位置。 Lg=∣∣gg^22g^是在摄像头帧上的真实2D凝视位置。

z = h ⋅ d L d = ∣ ∣ z − z ^ ∣ ∣ 1 z ^ 是真实的深度值(距离) , d : 预测稀疏深度图 z=h·d\\ L_d=||z-\hat{z}||_1\\ \hat{z}是真实的深度值(距离),d:预测稀疏深度图 z=hdLd=∣∣zz^1z^是真实的深度值(距离),d:预测稀疏深度图

  • 计算 3D 凝视起源:通过将2D图像坐标转换为世界坐标,利用相机内参矩阵 K,计算 3D 凝视起源 。

     # 相机参数矩阵K
     K = np.array([
             [fx, 0, cx],
             [0, fy, cy],
             [0, 0, 1]])
     # fx,fy是相机的焦距
     # cx,cy是相机的中心点 ```
    

热图通过soft-argmax获得一个2D凝视点坐标g=(x,y),设该点深度为d。通过相机内参矩阵可以将2D凝视点坐标进行归一化,如下操作:
u = x − c x f x v = y − c y f y u=\frac{x-c_x}{f_x}\\ v=\frac{y-c_y}{f_y} u=fxxcxv=fyycy
所以得到归一化后的点g1=(u,v,1),其中数字1是为了让坐标可以进行齐次坐标转换。
[ x y z 1 ] = K − 1 [ u v 1 ] ⋅ d \begin{bmatrix} x \\ y\\ z\\ 1 \end{bmatrix}=K^{-1}\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}·d xyz1 =K1 uv1 d
则o=(x,y,z)就是3D的凝视起源坐标。

  • 预测凝视方向: 通过映射从图像空间到3D方向的方式进行凝视方向的预测。

    • 使用了类似U-Net的中间瓶颈特征进行凝视方向的预测,共享特征提取器的信息。
    • 针对凝视方向的预测,使用了角度损失 Lr 进行监督。使用角度余弦进行计算损失Lr:

    L r = a r c c o s ( r ^ ⋅ r ∣ ∣ r ^ ∣ ∣ ⋅ ∣ ∣ r ∣ ∣ ) L_r=arccos(\frac{\hat{r}·r}{||\hat{r}||·||r||}) Lr=arccos(∣∣r^∣∣∣∣r∣∣r^r)

  • 如何计算注视点(PoG)

    • PoG:与屏幕平面相交的6D凝视光线(由凝视起源和方向组成)的交点。

    • 利用凝视起源 o 和凝视方向 r,可以获取到屏幕框架的距离 λ*。*
      λ = r ⋅ n s ( a s − o ) ⋅ n s 凝视起点: o , 凝视方向: r 屏幕框架法线: n s 屏幕平面上的样本点: a s ( 用于计算凝视距离 λ 的屏幕平面上的一个随机点 ) \lambda=\frac{r·n_s}{(a_s-o)·n_s}\\ 凝视起点:o,凝视方向:r\\ 屏幕框架法线:n_s\\ 屏幕平面上的样本点:a_s(用于计算凝视距离 λ 的屏幕平面上的一个随机点) λ=(aso)nsrns凝视起点:o,凝视方向:r屏幕框架法线:ns屏幕平面上的样本点:as(用于计算凝视距离λ的屏幕平面上的一个随机点)

    • PoG的计算:

    P o G = o + λ r PoG=o+\lambda r PoG=o+λr

    • PoG计算的损失函数

    L P o G = ∣ ∣ p − p ^ ∣ ∣ —— 2 2 L_{PoG}=||p-\hat{p}||——2^2 LPoG=∣∣pp^∣∣——22

    综上可以得到凝视估计点,而纵观全过程,EFE的总体损失函数为:
    L t o t a l = λ g L g + λ h L h e a t m a p + λ d L d + λ P o g L P o G L_{total}=\lambda_gL_g+\lambda_hL_{heatmap}+\lambda_dL_d+\lambda_{Pog}L_{PoG} Ltotal=λgLg+λhLheatmap+λdLd+λPogLPoG

与之前的论文阅读相比,作者认为其实现了真正的端到端(从原始输入到最终输出的完整流程,而不需要手动处理中间步骤或阶段):

  • 输入与输出直接相关: EFE 模型从摄像机帧直接预测凝视方向,而不需要在中间阶段进行额外的预处理或特征提取。
  • EFE 避免了预处理步骤,直接使用原始帧进行训练和推理。这使得模型训练和使用更加直接和全面。
  • EFE 使用整个相机帧作为输入,因此可以被视为全图输入模型。

论文实验

关于端到端凝视估计的数据集

数据集任务内容数据处理
EVE端到端凝视估计连续视频,Tobii Pro Spectrum眼动仪提供地面实况凝视标签创建图像数据集,训练集进行0.6的子采样率,将帧的大小调整为480 × 270像素
GazeCapture端到端凝视估计通过众包方式使用手机和平板电脑进行采集,1450多人,近250万帧提供原始帧输入和相对于摄像机的PoG,假设摄像机和屏幕共面
MPIIFaceGaze端到端凝视估计15名受试者的笔记本电脑下的3000张面部图像,自然头部运动和各种光照条件提供原始摄像机帧、通过数据归一化估计的3D凝视起源、3D凝视方向以及屏幕上的2D PoG

3种基线模型与EFE模型的对比

文中考虑了3中基线模型,分别是:方向回归、单独模型和联合预测,其对比表格如下:

模型/方法特点性能
方向回归方法直接估计 PoG,不预测凝视起源或凝视方向性能较差
独立模型方法通过两个独立的模型估计凝视起源和凝视方向较好的性能,因为有更大的模型容量
联合预测方法通过共享网络和独立 MLP 联合估计凝视起源和凝视方向,使用 PoG 损失进行优化性能较差,不能有效地共同学习凝视起源和凝视方向
EFE(提出的方法)通过 U-Net-like 架构,使用热图回归凝视起源,同时学习稀疏深度图进行凝视方向估计,最终通过屏幕平面计算 PoG最佳性能,相对于其他方法表现更好,尤其在复杂的 EVE 数据集上

其结构图如下:

在这里插入图片描述

其中联合预测方法,作者使用了共享卷积神经网络来提取图像特征,然后使用两个独立的多层感知机来分别预测凝视的起源和凝视的方向。这方法与EFE模型是不一样的。

对比结果:

在这里插入图片描述

在三个数据集中与SOTA进行比较

  • 在EVE数据集中,比较效果如下:

在这里插入图片描述

  • 在GazeCpture数据集中,比较效果如下:

在这里插入图片描述

  • ITracker方法接受多个输入:裁剪的面、左眼、右眼和面占用栅格。

  • EFE只接受调整大小的原始帧作为输入。

  • 在MPIIGaze数据集中

在这里插入图片描述

在15倍交叉验证评估方案下,将EFE与最先进的POG估计方法Full-Face、Far-Net和AFF-Net进行了比较,从数据上看,性能sota模型持平,部分领先。

与EFE模型不同,其他三个模型都是使用数据归一化后的人脸图像以及通过数据归一化计算的地面真实凝视原点作为输入,模型只输出凝视方向,而没有生成凝视原点。

问题分析

EVE上PoG残差的直方图,通过比较数据归一化计算凝视原点EFE预测了凝视的来源,结果表明,我们的端到端学习方法在POG误差方面表现出较小的偏差。图像如下:

在这里插入图片描述

文章最后还提到了一个效果极好的深度图可视化:

在这里插入图片描述

文章提到:用户的脸是离相机更远还是更靠近相机的粗略概念被捕捉到了。

文章还进行了跨相机评估,,将EFE模型与FaceNet模型(要数据归一化)进行了比较。文章指出,对数据进行归一化是为了让生成的归一化数据在更多的相机中可以进行使用(适配)。最后,将两个模型在EVE数据集中进行对比,其结果如下:

在这里插入图片描述

说明:机器视觉摄像头(MVC),显示器顶部(WC)、左上角(WL)和右上角(WR)上的网络摄像头,通过结果图来看,在大多数跨摄像头配置中,EFE的表现都超过了基于数据归一化的FaceNet,在许多情况下,EFE的表现要比基于数据标准化的FaceNet高出很多。文章中说,在WL摄像头进行训练,在WR中进行测试,得到的精度,EFE模型会明显优于FaceNet(提高了16.8).

重要架构

U-Net

可以进行图像分割

组成:从图像中提取相关特征的编码器,以及获取提取的特征并重建分割掩模的解码器部分。

  • 编码器部分,使用了卷积层,然后使用ReLUMaxPool作为特征提取器。
  • 解码器部分,转置卷积以增加特征图的大小并减少通道数。使用填充来保持卷积运算后特征图的大小相同。

在这里插入图片描述

从上图中我们可以发现,其没有全连接层!随着我们扩展编码器和解码器层中的层数,可以有效地越来越“缩小”特征图,这样会导致编码器可能会丢弃更详细的特征,而选择更一般的特征。

由于深度神经网络在通过连续层传递信息时可能会“忘记”某些特征,因此跳过连接可以重新引入它们以使学习变得更强。因此,U-Net引入了残差网络 (ResNet) 进行改进,从而引入了跳跃连接(通过将编码器的某一层的特征图与解码器的对应层的特征图进行拼接而实现的),并显示出分类改进以及更平滑的学习梯度,使得其具有跳跃连接以确保精细细节不会丢失。

在这里插入图片描述

这样的话,U-Net有了以下特性:

  • 没有全连接层
  • 随着编码器和解码器层数的加深,提取越通用的特征。
  • 将详细功能重新引入解码器的跳过连接。

文章中,U-Net-like结构主要是以U-Net为主体,U-Net以Efficient V2为主干网络,为了更好的训练参数以及加快训练速度。而EfficientV2较Efficient V1进行了改进,以fused MBConv模块替换了MBConv模块,达到了加快速度的方法,如下图:
在这里插入图片描述

基础知识

face Landmark Detector:检测图像或视频中物体的关键点或地标,通常指的是人脸的关键点,如眼睛的位置、鼻子的位置、嘴巴的位置等。

多层感知机MLP:一种人工神经网络结构,由多个神经元层组成,通常包括输入层、隐藏层和输出层。

原始帧:拍摄场景的视觉信息(头部姿势、面部表情、眼部状态等等),但是会有很多无用的信息,譬如背景、头法,衣服等等。

跨人凝视估计:在凝视估计任务中,模型能够处理和泛化到不同个体的情况,使模型具有足够的泛化能力,以便在面对新的、不同于训练集的个体时,依然能够准确地估计其凝视方向。

凝视起源/原点:用户凝视的起始点或者视线的源头,即在眼睛的视觉轴上的起始位置。

凝视射线:指从眼睛到凝视目标的一条直线。它连接了观察者(用户)的眼睛位置(凝视起源)和他们正在凝视的目标的位置,形成一个向目标指示的直线。

凝视方向:人的眼睛所注视的方向,通常以某种坐标系表示,凝视方向可以用来描述眼睛的注视点,即眼球看向的具体位置或方向,通常以空间坐标或相对于某个参考点或平面的角度来表示。

3D原点(3D origin):凝视光线的起点在三维空间中的位置,即光线从眼睛的位置发出的点。

3D方向(3D direction):凝视光线的方向,即光线的路径或轨迹,表示为视线的方向,从眼睛指向观察场景的某个点。

注视点(Point-of-Gaze):观察者注视的具体位置或方向,通常以屏幕上的像素坐标表示,在凝视估计领域中,通常表示用户当前正在屏幕上注视的位置

Heatmap: 二维图像,其中的像素值表示了凝视原点(gaze origin)在输入图像中的可能位置。 训练得到的热图可以被视为对凝视原点位置的概率分布,热图用于表示模型对凝视起源位置的预测信心程度。

Depth Map: 二维图像,其中的像素值表示了凝视原点的深度或距离。深度图提供了凝视原点相对于摄像头的距离信息。通过深度图,可以了解观察者注视目标的距离。

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

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

相关文章

Linux---虚拟机软件

1. 虚拟机软件的介绍 它是能够虚拟出来计算机的一个软件。 常用虚拟机软件: VmwareVirtualBox 说明: 只有安装了虚拟机软件才可以创建虚拟机,当然通过虚拟机软件还可以创建多个虚拟机。 2. 虚拟机的介绍 就是模拟一个真实的计算机,好比一个虚拟的…

Mybatis映射接口的动态代理实现原理

Mybatis映射接口的动态代理实现原理 在上一节中,我们介绍了MyBatis的核心配置文件加载流程,Mybatis核心配置文件加载流程详解 在文中,我们介绍了MyBatis在加载配置文件的过程中会针对每个接口类都生成一个相应的MapperProxyFactory动态代理工…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat(已解决) 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的,都能正常运行。重启的时候突然就不能启…

单元测试技术

文章目录 一、单元测试快速入门二、单元测试断言三、Junit框架的常用注解 一、单元测试快速入门 所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。 常规的例如如果在main中测试,比如说我们写了一个学生管理系统&…

MSPM0L1306例程学习-ADC部分(1)

MSPM0L1306例程学习-ADC部分(1) MSPM0L1306例程学习 使用的TI的官方例程,即SDK里边包含的例程代码。 MCU使用的是MSPM0L1306, 对于ADC部分,有10个例程: 例程理解 ADC的转换有多种工作模式,从最简单的单通道单次转换开始入手…

C++共享和保护——(1)作用域

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 人生就像骑单车,要想平衡就…

Java - Spring中Bean的循环依赖问题

什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

ubuntu如何远程ssh登录Windows环境并执行测试命令

ubuntu如何远程ssh登录Windows环境并执行测试命令 1 paramiko模块简介1.1 安装paramiko1.2 paramiko基本用法1.2.1 创建SSHClient实例1.2.2 设置主机密钥策略1.2.3 连接SSH服务器1.2.4 执行命令1.2.5 关闭SSH连接1.2.6 异常处理 2 windows的配置2.1 启动OpenSSH服务2.2 配置防火…

【Qt开发流程】之2D绘图1:概述及基本绘制与填充和渐变填充

概述 Qt的绘图系统可以使用相同的API在屏幕和打印设备上进行绘图,并且主要基于QPainter, QPaintDevice和QPaintEngine类。 QPainter用于执行绘图操作,QPaintDevice是一个二维空间的抽象,可以使用QPainter在其上绘制,QPaintEngine…

Android : XUI- SimpleImageBanner+BannerItem带标题的轮播图-简单应用

示例图: 1.导入XUI http://t.csdnimg.cn/qgGaN 2.MainActivity.java package com.example.viewpagerbanne;import android.os.Bundle; import android.view.View; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.xu…

vue项目中 CDN 是vue本身的依赖可以按需加载还是项目中所有的第三方库都可以按需加载?

这是我看到CDN简介时产生的问题 相信很多小伙伴会有 和我一样的疑问 在这里 我也统一回答一下 CDN(内容分发网络)是一种通过将数据分发到全球各个节点,以提供快速、可靠的内容传输的技术。在Vue项目中,CDN可以用于按需加载Vue本…

Linux--操作系统

1. 常见的操作系统 Windowsmac OSLinuxiOSAndroid 2. 操作系统的定义 操作系统直接运行在计算机上的系统软件, 它是控制硬件和支持软件运行的计算机程序。 3. 操作系统的作用 向下控制硬件向上支持软件的运行,具有承上启下的作用。 4.总结 操作系统…

Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 is available

记录一次服务调用中的错误 背景:我使用了nacos2.x的版本,同时在同一台服务器的三个docker容器中部署了nacos1、2、3,并将它们连接到了同一个docker网络 错误:Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 …

事件驱动架构 vs. RESTful架构:通信模式对比与选择

1. 通信风格 事件驱动架构(EDA) 是一种异步通信风格,组件之间通过产生和消费事件进行通信。 事件是表示系统中重大变化或事件的消息,并分发给感兴趣的组件。这种通信模型允许系统的不同部分之间进行解耦和动态交互。 组件充当事件…

MTK Android P Sensor架构(一)

需求场景: 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点,是一件比较轻松的事情,但是最近上层应用的同事要求我们按照安卓标准的流程来,这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…

从手工测试进阶中高级测试?如何突破职业瓶颈...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、手工测试如何进…

【教3妹学编程-算法题】需要添加的硬币的最小数量

3妹:2哥2哥,你有没有看到新闻, 有人中了2.2亿彩票大奖! 2哥 : 看到了,2.2亿啊, 一生一世也花不完。 3妹:为啥我就中不了呢,不开心呀不开心。 2哥 : 得了吧,你又不买彩票&…

Vue 双向绑定:让数据与视图互动的魔法!(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

人体关键点检测3:Android实现人体关键点检测(人体姿势估计)含源码 可实时检测

目录 1. 前言 2.人体关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法: 3.人体关键点检测模型训练 4.人体关键点检测模型Android部署 (1) 将Pytorch模型转换ONNX模型 (2) 将ONNX模型转换…

【JVM从入门到实战】(一) 字节码文件

一、什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。 JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 二、JVM的功能 解释和运行 对字节码文件中的指令,实时的解释成机器码,让计算机…