AR SDK 系统指南
NVIDIA® AR SDK 能够从视频中实时建模和跟踪人脸。
该 SDK 由带有 Tensor Core 的 NVIDIA 图形处理器 (GPU) 驱动,因此,算法吞吐量大大加快,延迟也降低了。NVIDIA AR SDK 具有以下功能:
- 人脸检测和跟踪(Beta 版) 通过使用边界框检测、定位和跟踪图像或视频中的人脸。
- 面部landmark检测和跟踪(Beta 版) 预测和跟踪图像或视频中人脸landmark点和头部姿势的像素位置。
它可以预测 68 个和 126 个 landmark 点。68 个检测到的面部 landmark 遵循 面部点注释 中的 Multi-PIE 68 点标记信息。126 个面部 landmark 点检测器可以预测脸颊、眼睛和笑纹上更多的点。
- 人脸 3D 网格和跟踪(Beta 版) 从提供的面部 landmark 重建和跟踪 3D 人脸及其头部姿势。
- 3D 身体姿势跟踪(Beta 版) 预测和跟踪图像或视频中的 3D 人体姿势。
它预测 2D 和 3D 身体姿势的 34 个关键点,包括关节角度,并支持多人跟踪。有关关键点,请参阅附录 B。
- 眼神交流(Beta 版) 估计图像或视频中人物的注视角度,并将注视方向重定向为正面。它可以以下列模式运行:
- 头部姿势和注视角度在相机坐标中估计,无需任何重定向,另一种模式需要重定向。
- 除了估计之外,人的眼睛会被重定向,以便在允许的范围内与相机进行眼神交流。
- 面部表情估计(Beta 版) 从提供的面部 landmark 估计面部表情系数。
AR SDK 可用于各种应用,例如增强现实、美颜、3D 人脸动画、建模等等。该 SDK 还提供了示例应用程序,演示了使用网络摄像头或离线视频实时展示上述功能。
1.1. AR SDK for Windows 入门
本节提供有关如何开始使用 AR SDK for Windows 的信息。
1.1.1. 硬件和软件要求
AR SDK 需要特定的 NVIDIA GPU、特定版本的 Windows 操作系统以及 SDK 依赖的其他相关软件。
此 SDK 专为客户端应用程序集成和本地部署而设计和优化。我们不正式支持将此 SDK 测试、实验或部署到数据中心/云环境。
1.1.1.1. 硬件要求
AR SDK 兼容基于 NVIDIA Turing™、NVIDIA Ampere™ 架构和 NVIDIA Ada™ 架构且具有 Tensor Core 的 GPU。
1.1.1.2. 软件要求
NVIDIA AR SDK 需要特定版本的 Windows 操作系统和 SDK 依赖的其他相关软件。NVIDIA CUDA® 和 TensorRTTM 依赖项与 SDK 安装程序捆绑在一起。请参阅安装 NVIDIA AR SDK 和关联软件。
1.2. 安装 AR SDK 和关联软件
以下是关于安装 SDK 的一些信息。
- 开发 SDK 包
开发包包含 SDK 中的所有内容,包括 API 标头、运行时依赖项和示例应用程序。
- 可再发行 SDK 包。
如果您的应用程序只想集成 SDK API 标头并要求最终用户下载并安装 SDK 运行时依赖项,则可再发行包更方便。
要开发应用程序,由于这两个包中的基本内容相同,因此您可以使用任一包。
- 一个开源存储库,包含 SDK API 标头、示例应用程序及其依赖库,以及一个代理文件,用于在没有 SDK DLL 的情况下启用编译。
- 一个安装程序,用于安装以下 SDK 运行时依赖项:
- DLL
- 模型
- SDK 依赖库
安装位置为 C:\Program Files\NVIDIA Corporation\NVIDIA AR SDK\ 目录。
对于基于 SDK 构建的应用程序,开发人员可以将运行时依赖项打包到应用程序中,或者要求应用程序用户使用 SDK 安装程序。
源代码和示例应用程序位于开发包中,并托管在 GitHub 上:https://github.com/NVIDIA/MAXINE-AR-SDK。
要使用 SDK 可再发行包,请从 GitHub 下载源代码并安装 SDK 二进制文件。
如果您使用的是开发包,则可以忽略此步骤。
示例应用程序源代码演示了如何集成 API 标头并调用 SDK API。示例应用程序还包括 nvARProxy.cpp
文件,该文件用于链接 SDK DLL,而无需导入库 (.lib) 文件。使用此文件,您可以独立于 SDK 安装程序编译开源代码。但是,仍然需要 SDK 运行时依赖项来加载运行时依赖项、DLL 和模型。
1.3. 在 Windows 上构建示例应用程序
开源存储库 包括用于构建示例应用程序的源代码,以及 nvARProxy.cpp
代理文件,用于在不显式链接 SDK DLL 的情况下启用编译。
要下载功能所需的模型和运行时依赖项,您需要运行 SDK 安装程序。
- 在下载的源代码的根文件夹中,启动 CMake GUI 并指定源文件夹和用于二进制文件的构建文件夹。
- 对于源文件夹,请确保路径以
OSS
结尾。 - 对于构建文件夹,请确保路径以 OSS/build 结尾。使用 CMake 配置并生成 Visual Studio 解决方案文件。
- 单击 Configure(配置)。
- 当提示确认 CMake 可以创建构建文件夹时,单击 OK(确定)。
- 为生成器选择 Visual Studio,为平台选择 x64。
- 要完成配置 Visual Studio 解决方案文件,请单击 Finish(完成)。
- 要生成 Visual Studio 解决方案文件,请单击 Generate(生成)。
- 验证构建文件夹是否包含
NvAR_SDK.sln
文件。使用 Visual Studio 从NvAR_SDK.sln
文件生成FaceTrack.exe
和BodyTrack.exe
文件。 - 在 CMake 中,要打开 Visual Studio,请单击
Open Project(打开项目)
。 - 在 Visual Studio 中,选择 Build(构建) > Build Solution(构建解决方案)。
1.4. 在 Windows 上运行示例应用程序
SDK 提供了 FaceTrack、BodyTrack、GazeDirect 和 ExpressionApp 示例应用程序。
在运行应用程序之前,请将摄像头连接到您计划运行示例应用程序的计算机上。
该应用程序使用来自此摄像头的视频源。
- 打开命令提示符窗口。
- 要运行示例应用程序,请完成以下步骤之一:
- 对于
FaceTrack
示例应用程序,从 AR SDK 根文件夹下的 samples\FaceTrack 文件夹中,执行run.bat
文件。 - 要运行
BodyTrack
示例应用程序,从 AR SDK 根文件夹下的 samples\BodyTrack 文件夹中,执行run.bat
文件。 - 要运行 ExpressionApp 示例应用程序,从 AR SDK 根文件夹下的
samples\ExpressionApp
文件夹中,执行run.bat
文件。
此命令会启动一个带有摄像头馈送的 OpenCV 窗口。
- FaceTrack 在检测到的最大人脸上绘制 3D 人脸网格。
- GazeRedirect 绘制检测到的最大人脸的头部姿势和估计的注视方向,以及注视方向重定向人脸的并排视图。
- BodyTrack 在检测到的人员上绘制身体姿势骨架。
- ExpressionApp 在单独的帧缓冲区上渲染虚拟化身人脸。
- 对于
1.5. SDK 示例应用程序
FaceTrack 是一个 Windows 示例应用程序,演示了 AR SDK 的人脸跟踪、landmark 跟踪和 3D 网格跟踪功能。同样,BodyTrack 是一个 Windows 示例应用程序,演示了 SDK 的 3D 身体姿势跟踪功能。
1.5.1. FaceTrack 示例应用程序
本节提供有关 FaceTrack 示例应用程序的信息。
1.5.1.1. FaceTrack 示例应用程序的命令行参数
以下是 FaceTrack 示例应用程序的命令行参数列表。
-
--model_path=path
- 指定模型的路径。
-
--landmarks_126[=(true|false)]
- 指定是否将 landmark 点的数量设置为 126 或 68。
true
:将 landmark 数量设置为 126。false
:将 landmark 数量设置为 68。
-
--landmarks_mode [0|1]
- 指定是设置高质量 landmark 模型还是高性能模型。
0
:使用高性能 landmark 模型 [默认模式]。1
:使用高质量 landmark 模型。
-
--temporal[=(true|false)]
- 为时序输入帧优化结果。如果输入是视频,请将此值设置为 true。
-
--offline_mode[=(true|false)]
- 指定是使用离线视频还是在线摄像头视频作为输入。
- true:使用离线视频作为输入。
- false:使用在线摄像头作为输入。
-
--capture_outputs[=(true|false)]
- 如果
--offline_mode=false
,则指定是否启用以下功能:- 按 C 键切换视频捕获的开启和关闭。
- 按 S 键保存图像帧。
此外,包含检测到的 landmark 和/或人脸框的结果文件在捕获时写入。
如果
--offline_mode=true
,则忽略此参数。 -
--cam_res=[width x] height
-
- 如果
--offline_mode=false
,则指定摄像头分辨率,width 是可选的。如果省略,width 将根据 height 计算得出,以给出 4:3 的宽高比,例如--cam_res=640x480 or --cam_res=480.
- 如果
--offline_mode=true
,则忽略此参数。
- 如果
-
--in_file=file
-
--in=file
- 如果
--offline_mode=true
,则指定输入视频文件。 - 如果
--offline_mode=false
,则忽略此参数。
- 如果
-
--out_file=file
-
--out=file
- 如果
--offline_mode=true
,则指定输出视频文件。 - 如果
--offline_mode=false
,则忽略此参数。
- 如果
1.5.1.2. FaceTrack 示例应用程序的键盘控制
FaceTrack
示例应用程序提供键盘控制来更改应用程序的运行时行为。
<b>1</b>
选择仅人脸跟踪模式,并且仅显示边界框。<b>2</b>
选择人脸和 landmark 跟踪模式,并且仅显示 landmark。<b>3</b>
选择人脸、landmark 和 3D 网格跟踪模式,并且仅显示 3D 人脸网格。<b>W</b>
切换所选可视化模式的开启和关闭。<b>F</b>
切换帧速率显示。<b>C</b>
切换视频保存的开启和关闭。- 当视频保存切换为关闭时,将保存一个文件,其中包含捕获的视频以及包含检测到的人脸框和/或 landmark 的结果文件。
- 仅当
--offline_mode=false
且--capture_outputs=true
时,此控件才启用。
<b>S</b>
保存图像和结果文件。
仅当 --offline_mode=false
且 --capture_outputs=true
时,此控件才启用。
1.5.2. BodyTrack 示例应用程序
本节提供有关 BodyTrack 示例应用程序的信息。
1.5.2.1. BodyTrack 示例应用程序的命令行参数
以下是 BodyTrack 示例应用程序的命令行参数列表。
-
--model_path=path
- 指定模型的路径。
-
--mode[=(0|1)]
- 指定是选择高性能模式还是高质量模式。
0
:将模式设置为高质量。1
:将模式设置为高性能。
-
--app_mode[=(0|1)]
- 指定是选择身体检测还是身体姿势检测。
0
:将模式设置为身体检测。1
:将模式设置为身体姿势检测。
-
--temporal[=(true|false)]
- 为时序输入帧优化结果。如果输入是视频,请将此值设置为 true。
-
--use_cuda_graph[=(true|false)]
- 使用 CUDA Graphs 提高性能。CUDA graph 减少了 3D 身体跟踪的 GPU 操作提交开销。
-
--offline_mode[=(true|false)]
- 指定是使用离线视频还是在线摄像头视频作为输入。
true
:使用离线视频作为输入。false
:使用在线摄像头作为输入。
-
--capture_outputs[=(true|false)]
-
--cam_res=[width x] height
-
- 如果
--offline_mode=false
,则指定摄像头分辨率,width 是可选的。如果省略,width 将根据 height 计算得出,以给出 4:3 的宽高比。
例如
--cam_res=640x480 or --cam_res=480.
- 如果
--offline_mode=true
,则忽略此参数。
- 如果
-
--in_file=file
-
--in=file
- 如果
--offline_mode=true
,则指定输入视频文件。 - 如果
--offline_mode=false
,则忽略此参数。
- 如果
-
--out_file=file
-
--out=file
- 如果
--offline_mode=true
,则指定输出视频文件。 - 如果
--offline_mode=false
,则忽略此参数。
- 如果
-
--enable_people_tracking[=(true|false)]
- 启用多人跟踪。
-
--shadow_tracking_age=<unsigned int>
- 此参数设置多人跟踪的阴影跟踪年龄,默认值为 90。
-
--probation_age=<unsigned int>
- 此参数设置多人跟踪的试用年龄,默认值为 10。
-
--max_targets_tracked=<unsigned int>
- 此参数设置跟踪的最大目标数。默认值为 30,最小值为 1。
1.5.2.2. BodyTrack 示例应用程序的键盘控制
BodyTrack
示例应用程序提供键盘控制来更改应用程序的运行时行为。
<b>1</b>
选择仅身体跟踪模式,并且仅显示边界框。<b>2</b>
选择身体和身体姿势跟踪模式,并且显示边界框和身体姿势关键点。<b>W</b>
切换所选可视化模式的开启和关闭。<b>F</b>
切换帧速率显示。<b>C</b>
切换视频保存的开启和关闭。- 当视频保存切换为关闭时,将保存一个文件,其中包含捕获的视频以及包含检测到的人脸框和/或 landmark 的结果文件。
- 仅当
--offline_mode=false
且--capture_outputs=true
时,此控件才启用。
<b>S</b>
保存图像和结果文件。
仅当 --offline_mode=false
且 --capture_outputs=true
时,此控件才启用。
1.5.3. 眼神交流示例应用程序
本节提供有关 GazeRedirect 示例应用程序的信息。
1.5.3.1. 眼神交流示例应用程序的命令行参数
以下是 GazeRedirect 示例应用程序的命令行参数列表。
-
<b class="spb">--model_path=path</b>
- 指定模型的路径。
-
<b class="spb">--landmarks_126[=(true|false)]</b>
- 指定是否将 landmark 点的数量设置为 126 或 68 以计算关键点。
true
:将 landmark 数量设置为 126。false
:将 landmark 数量设置为 68。
-
<b class="spb">--temporal[=(true|false)]</b>
-
设置为
true
时,眼神交流的 landmark 计算会进行时序优化。 -
<b class="spb">--offline_mode[=(true|false)]</b>
- 指定是使用离线视频还是在线摄像头视频作为输入。
true
:使用离线视频作为输入。false
:使用在线摄像头作为输入。
-
<b class="spb">--redirect_gaze[=(true|false)]</b>
-
<b class="spb">--split_screen_view[=(true|false)]</b>
- 此参数在启用重定向时适用。它指定是否在输出视频之外显示原始视频。如果
--offline_mode=false
,则可以通过按 O 键来切换分屏模式的开启和关闭。true
:并排显示原始视频和注视方向重定向输出视频。可视化效果显示在原始视频上。false
:仅显示注视方向重定向输出视频。
-
<b class="spb">--draw_visualizations[=(true|false)]</b>
-
设置为 true 时,将显示头部姿势和注视方向的可视化效果。此外,头部平移 (x,y,z) 和注视角度(俯仰角、偏航角)显示在原始视频上。头部姿势可视化效果遵循红色、绿色、蓝色作为 x、y 和 z 颜色编码。如果启用了注视方向重定向,则应启用分屏视图以绘制可视化效果。如果
--offline_mode=false
,则可以通过按 W 键来切换可视化模式的开启和关闭。 -
<b class="spb">--capture_outputs[=(true|false)]</b>
-
如果
--offline_mode=false
,则可以通过按 C 键来切换视频捕获的开启和关闭。包含输出视频的结果文件在捕获时写入。如果--offline_mode=true
,则忽略此参数。 -
<b class="spb">--cam_res=[width x] height</b>
-
如果
--offline_mode=false
,则指定摄像头分辨率,width 是可选的。如果您省略 width 的值,则会根据 height 计算此值,以获得 4:3 的宽高比(例如,--cam_res=640x480 or --cam_res=480
)。如果
--offline_mode=true
,则忽略此参数。 -
<b class="spb">--in=file</b>
-
- 如果
--offline_mode=true
,则指定输入视频文件。 - 如果
--offline_mode=false
,则忽略此参数。
- 如果
-
<b class="spb">--out=file</b>
-
- 如果
--offline_mode=true
,则指定输出视频文件。 - 如果
--offline_mode=false
,则忽略此参数。
- 如果
-
-eyesize_sensitivity=<integer 2-5>
-
此参数与用于重定向眼睛的眼睛区域的大小相关。值越大,眼睛区域越大。默认值设置为 3。
-
--use_cuda_graph=[=(true|false)]
-
使用 CUDA Graphs 提高性能。CUDA graph 减少了眼神交流网络的 GPU 操作提交开销。默认情况下,此项设置为 false。
1.5.3.2. 眼神交流示例应用程序的键盘控制
GazeRedirect
示例应用程序提供键盘控制来更改应用程序的运行时行为。
<b>F</b>
切换帧速率显示。-
<b class="spb">C</b>
切换视频保存的开启和关闭。当视频保存切换为关闭时,将保存一个文件,其中包含捕获的视频以及包含检测到的人脸框和/或 landmark 的结果文件。仅当
--offline_mode=false
且--capture_outputs=true
时,此控件才启用。 <b>L</b>
切换 landmark 的显示。当 landmark 的显示切换为开启时,除了头部姿势和注视方向之外,还会显示面部 landmark。仅当
--offline_mode=false
且--draw_visualization=true
时,此控件才启用。<b>O</b>
切换分屏视图。切换为开启时,原始帧和注视方向重定向帧都并排显示。
If --draw_visualization=true
或可视化效果切换为开启,则头部姿势和注视方向可视化效果显示在原始帧上。Landmark 也可选择显示在原始帧上。仅当
--offline_mode=false
且--redirect_gaze=true
时,此控件才启用。<b>W</b>
切换可视化效果。当可视化效果切换为开启时,可以在原始帧上可视化头部姿势、注视方向和 landmark。当切换为关闭时,不显示可视化效果。仅当
--offline_mode=false
时,此控件才启用。当--redirect_gaze=true
时,只有在--split_screen_mode
也启用或切换为开启时,才能看到可视化效果。
1.5.4. ExpressionApp 示例应用程序
ExpressionApp 是一个使用 AR SDK 从视频中提取面部表情信号的示例应用程序。这些信号用于控制 3D 可变形人脸模型的表情、姿势和注视方向。该应用程序可以处理来自网络摄像头的实时视频或来自文件的离线视频。它演示了被跟踪的面部关键点,绘制了导出的表情信号,并渲染了动画 3D 化身网格。
- 面部表情估计(默认,建议用于化身动画)。
- 基于 Face3DReconstruction 的表情估计。
面部表情估计是化身动画的首选功能。
Face3DReconstruction 演示了其随时间跟踪面部以实现 AR 效果的能力。除了表情估计外,此功能还支持身份人脸形状估计,并在 FaceTrack 示例应用程序中得到更好的演示。来自面部表情估计的结果表情权重也比来自 Face3DReconstruction 的权重更准确。
1.5.4.1. ExpressionApp 示例应用程序的命令行参数
以下是 ExpressionApp 示例应用程序的命令行参数列表。
-
--cam_res=[width x] height
- 将分辨率指定为高度或宽度 x 高度。
-
--codec=<fourcc>
-
所需编解码器的 FOURCC 代码,默认值为
avc1
。 -
--debug[=(true|false)]
-
报告调试信息,默认值为
false
。 -
--expr_mode=<number>
- 用于生成表情的 SDK 功能。默认值为 2。
1
=Face3DReconstruction2
=面部表情估计
-
--pose_mode=<number>
- 仅用于 FaceExpressions 功能的姿势模式。默认值为 0。
0
=3DOF1
=6DOF
-
--face_model=<file>
-
指定用于拟合的人脸模型,默认值为
face_model2.nvf
。 -
--filter=<bitfield>
- 以下是可用值:
1
:人脸框2
:landmark4
:姿势16
:表情32
:注视方向256
:眼睛和嘴巴闭合
默认值为
55
,这意味着人脸框、landmark、姿势、表情、注视方向,且不包含闭合。
-
--gaze=<number>
- 指定注视点估计模式:
0=隐式
1=显式
默认值为 0。
-
--cheekpuff[=(true|false)]
-
(实验性)启用脸颊膨胀 blendshape。默认值为
false
。 -
--fov=<degrees>
-
视野,以度为单位,
0
表示正交。默认值为0
。 -
<b class="spb">--help</b>
-
打印帮助信息。
-
<b class="spb">--in=<file></b>
-
指定输入文件,默认值为
webcam 0.
。 -
--loop[=(true|false)]
-
重复播放同一视频。
-
--model_dir=<path>
-
指定包含 TRT 模型的目录。
-
--model_path=<path>
-
指定包含 TRT 模型的目录。
-
--out=<file>
-
指定输出文件。
-
--render_model=<file>
-
指定将用于渲染的面部模型,默认值为
face_model2.nvf
。使用face_model3.nvf
以获得使用分区的更全面的可视化模型。 -
--show[=(true|false)]
-
显示结果,除非
--out
为空,否则默认值为false
。 -
<b class="spb">--show_ui[=(true|false)]</b>
-
显示表情校准 UI,默认值为
false
。 -
--temporal=<bitfield>
-
应用时间滤波器。有关更多信息,请参阅
--filter
。 -
--view_mode=<bitfield>
- 以下是这些值:
<b>1</b>
:网格<b>2</b>
:图像<b>4</b>
:绘图<b>8</b>
:Landmark
默认值为
15
,表示all
(全部)。
-
--verbose[=(true|false)]
-
报告有趣的信息,默认
off
(关闭)。
1.5.4.2. ExpressionApp 示例应用程序的键盘控件
ExpressionApp 示例应用程序提供键盘控件来更改应用程序的运行时行为。
- Escape、
q
或<b>Q</b>
退出 <b>m</b>
切换网格显示<b>n</b>
校准表情权重<b>i</b>
切换图像显示<b>p</b>
切换绘图显示<b>l</b>
切换 Landmark 显示<b>f</b>
切换帧率显示<b>L</b>
或 ctrl-L 切换 Landmark 滤波<b>N</b>
或 ctrl-N 取消校准表情权重<b>P</b>
或 ctrl-P 切换姿势滤波<b>E</b>
或 ctrl-E 切换表情滤波<b>G</b>
或 ctrl-G 切换注视滤波<b>C</b>
或 ctrl-C 切换闭合增强<b>M</b>
或 ctrl-M 切换姿势模式<b>1</b>
来自网格拟合的表情<b>2</b>
来自 DNN (面部表情估计) 的表情
1.5.4.3. 应用程序 GUI
GUI 简单易用。通过选中 Expression Graph(表情图表)复选框,可以显示表情系数及其微调控件。要在表情模式中设置不同的显示选项,请输入 1 或 2。您可以通过单击 SaveSettings(保存设置)和 LoadSettings(加载设置)来保存或加载设置。
校准过程可能需要一些微调,这可能需要时间。

1.5.4.4. 表情系数传递函数
ExpressionApp 估计每个作为输入的帧的表情系数。为了在最终模型中提取最大表现力,请使用每个表情系数。为了获得额外的表现力和响应性,您可以选择通过校准来调整额外的参数。有关更多信息,请参阅校准。
在校准期间调整的参数将应用于传递函数,其中系数范围介于 0 和 1 之间
- 0:此表情 blendshape 未激活。
- 1:此表情 blendshape 已完全激活。
为了微调表现力,传递函数应用于表情系数,然后再发送以渲染模型,从而引入缩放、偏移和非线性。传递函数如下所示
y = 1 - (pow(1 - (max(x + a, 0) * b), c)), {0<=x<=1}
其中 x 是输入系数,y 是输出系数。以下是参数
- a = 偏移
- b = 比例
- c = 指数
这些参数可从应用程序的 GUI 中针对每种表情模式进行调整。

该函数的绘图为 a=-0.3,b=1.5,c=2。
通过调整这些参数,您可以了解它们的效果,特别是对于较大的表情形状,例如 jawOpen
(张嘴)或 brow(眉毛)表情。您可以不用随机尝试使用参数,而是可以使用半自动校准来调整参数。
1.5.4.5. 校准
校准过程包括自动和手动部分。对于每个步骤,您可以确定 a、b 和 c 参数。
校准不是必需的,但它有助于形状系数的响应性和准确性,特别是正确闭合嘴唇并增加对语音的响应性。
以下是校准过程
- 校准中性表情。
这是校准过程的自动部分,您需要笔直坐在网络摄像头前,保持中性面孔,同时直视摄像头,然后单击 Calibrate(校准)。此功能根据您的中性面孔计算每个表情的偏移参数,并根据偏移估计缩放参数。现在,当您保持中性面孔时,条形图会使大多数表情系数接近于零。
- 缩放表情。例如,关注以下表情:
-
browInnerUp_R(右眉内抬)
-
browInnerUp_L(左眉内抬)
-
browOuterUp_R(右眉外抬)
-
browOuterUp_L(左眉外抬)
大多数人都可以完全抬起眉毛,这对应于这些表情系数设置为 1。
当您在“Expression Graph Options”(表情图表选项)中选中 Brow(眉毛)复选框时,与眉毛相关的表情将显示在一个新窗口中。
- 在 GUI 的“Expression Graph Options”(表情图表选项)部分中,选中“Brow”(眉毛)复选框。一个新窗口将显示与眉毛相关的表情。
- 要调整缩放,请执行完全抬眉表情,并移动滑块以对应于缩放参数,直到所有四个表情系数都接近 1。
如果您过度缩放表情,则会导致过度曝光。
- 在降低眉毛的同时,对
browDown_R
(右眉下皱)和browDown_L
(左眉下皱)重复相同的过程。并非所有表情都可以像眉毛形状那样被隔离,但可以应用一些额外的表情缩放。
-
browDown_L(左眉下皱)
-
browDown_R(右眉下皱)
-
browInnerUp_L(左眉内抬)
-
browInnerUp_R(右眉内抬)
-
browOuterUp_L(左眉外抬)
-
browOuterUp_R(右眉外抬)
-
cheekPuff_L(左脸颊膨胀)
-
cheekPuff_R(右脸颊膨胀)
-
eyeBlink_L(左眼眨眼)
-
eyeBlink_R(右眼眨眼)
-
jawForward(下巴前伸)
-
jawLeft(下巴向左)
-
jawOpen(张嘴)
-
jawRight(下巴向右)
-
mouthClose(闭嘴)
-
mouthLeft(嘴角向左)
-
mouthRight(嘴角向右)
-
mouthSmile_L(左嘴角微笑)
-
mouthSmile_R(右嘴角微笑)
尝试隔离各个形状并相应地应用缩放以最大化这些表情。
注意mouthClose
(闭嘴)是一个特殊的形状,不应单独调整。它作为jawOpen
(张嘴)形状的校正形状。这意味着它应该具有与jawOpen
(张嘴)形状相同的缩放和相同的指数,并且应该相应地进行调整。否则,会导致上下嘴唇相互交叉的情况。
-
-
- 确定表情指数。
此步骤是最不科学的步骤,但它提供了额外的表现力和响应性,特别是对于在说话时可能会稍微静音的嘴部形状。较高的指数值使表情在较低的值范围内更具响应性,而较低的指数值会使表情静音。另一种提高说话时响应性的方法是将所有与嘴部相关的 blendshape 的指数增加到特定值,例如介于 1.5 和 2 之间。这些值取决于您的需求,这就是为什么每个校准都是一个单独的过程。
如果
jawOpen
(张嘴)或mouthClose
(闭嘴)形状的指数发生变化,请将另一个形状的值更改为相同的值,因为这些形状是相互配合的。要重置校准设置,请单击 UnCalibrate(取消校准)。
1.5.4.6. 保存和加载校准文件
完成校准后,要保存校准文件,请单击 SaveSettings(保存设置)。要加载先前保存的设置,即应用程序文件夹中的 ExpressionAppSettings.json
文件,请单击 LoadSettings(加载设置)。要从先前的校准设置加载特定文件,请单击 LoadSettingsFromFile(从文件加载设置)。
校准文件通常对应于特定设置中的人员(光照条件基本相同,并且摄像头应相同)。如果捕获设置不同,通常需要进行新的校准会话。
1.5.4.7. GUI 窗口
窗口可以调整大小。如果校准窗口中未显示所有表情,请使用复选框将它们分组。键盘快捷键仅在 ExpressionApp 主窗口处于焦点时才有效。
1.5.4.8. 模式之间的校准
在表情模式 1 和表情模式 2 之间切换时,校准设置不应相同。这两种模式以不同的方式估计表情形状,因此系数集将显着不同,您需要开始新的校准会话。
1.6. 其他信息
本节包含有关使用 AR SDK 的其他信息。
1.6.1. 以无损格式保存输出视频
无损编解码器(例如 Ut Video Codec)可用于保存示例应用程序的输出视频,而不会产生任何压缩伪影。例如,要使用此编解码器保存输出视频,请使用 --codec=ULY0
选项。
1.7. 环境变量
以下是有关 AR SDK 中环境变量的信息。
NVAR_MODEL_DIR
如果应用程序未通过设置
NvAR_Parameter_Config_ModelDir
字符串来提供模型目录的路径,则 SDK 会尝试从NVAR_MODEL_DIR
环境变量中的路径加载模型。SDK 安装程序将NVAR_MODEL_DIR
设置为 %ProgramFiles%\NVIDIA Corporation\NVIDIA AR SDK\models。NV_AR_SDK_PATH
默认情况下,使用 SDK 的应用程序将尝试从 SDK 安装目录(例如 %ProgramFiles%\NVIDIA Corporation\NVIDIA AR SDK\models)加载 SDK DLL 及其依赖项。应用程序可能还希望直接从应用程序文件夹中包含和加载 SDK DLL 及其依赖项。
为了防止从安装目录加载文件,应用程序可以将此环境变量设置为
USE_APP_PATH
。如果NV_AR_SDK_PATH
设置为USE_APP_PATH
,则 SDK 将遵循标准操作系统搜索顺序来加载二进制文件,而不是从 Program Files 安装目录加载二进制文件。例如,应用程序文件夹后跟 PATH 环境变量。重要提示仅为应用程序进程设置此变量。将此变量设置为用户或系统变量会影响使用 SDK 的其他应用程序。
1.8. 性能参考
下表列出了 NVIDIA AR SDK 在受支持的 GPU 架构上的功能性能数据。
眼神交流延迟在 720p 视频分辨率下计算。面部 Landmark 跟踪使用在人脸上检测到的 68 个 Landmark 点计算。
声明
本文档仅供参考,不得视为对产品的特定功能、条件或质量的保证。NVIDIA Corporation(“NVIDIA”)对本文档中包含的信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。NVIDIA 对使用此类信息或因使用此类信息而可能导致的侵犯第三方专利或其他权利的后果或使用不承担任何责任。本文档不构成开发、发布或交付任何材料(如下定义)、代码或功能的承诺。
NVIDIA 保留在不另行通知的情况下随时对本文档进行更正、修改、增强、改进和任何其他更改的权利。
客户在下订单前应获取最新的相关信息,并应验证此类信息是否为最新且完整。
NVIDIA 产品的销售受 NVIDIA 标准销售条款和条件(在订单确认时提供)的约束,除非 NVIDIA 和客户的授权代表签署的个别销售协议(“销售条款”)另有约定。NVIDIA 特此明确反对将任何客户通用条款和条件应用于购买本文档中引用的 NVIDIA 产品。本文档既不直接也不间接地构成任何合同义务。
NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命维持设备,也不适用于 NVIDIA 产品的故障或失灵可能合理预期会导致人身伤害、死亡或财产或环境损害的应用。NVIDIA 对在上述设备或应用中包含和/或使用 NVIDIA 产品不承担任何责任,因此,此类包含和/或使用由客户自行承担风险。
NVIDIA 不保证基于本文档的产品适用于任何特定用途。NVIDIA 不一定对每个产品的所有参数进行测试。客户有责任评估和确定本文档中包含的任何信息的适用性,确保产品适合并满足客户计划的应用,并为应用执行必要的测试,以避免应用或产品的缺陷。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同条件和/或要求。对于可能基于或归因于以下原因的任何缺陷、损坏、成本或问题,NVIDIA 不承担任何责任:(i)以任何与本文档相悖的方式使用 NVIDIA 产品,或(ii)客户产品设计。
本文档未授予任何 NVIDIA 专利权、版权或其他 NVIDIA 知识产权下的任何明示或暗示的许可。NVIDIA 发布的有关第三方产品或服务的信息不构成 NVIDIA 授予使用此类产品或服务的许可,也不构成对此类产品或服务的保证或认可。使用此类信息可能需要获得第三方在其专利或其他知识产权下的许可,或获得 NVIDIA 在其专利或其他知识产权下的许可。
只有在事先获得 NVIDIA 书面批准的情况下,才允许复制本文档中的信息,并且复制时不得进行更改,并应完全遵守所有适用的出口法律和法规,并附带所有相关的条件、限制和声明。
本文档和所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“材料”)均“按原样”提供。NVIDIA 不对材料作出任何明示、暗示、法定或其他方面的保证,并且明确否认所有关于不侵权、适销性和特定用途适用性的暗示保证。在法律未禁止的范围内,在任何情况下,NVIDIA 均不对因使用本文档而引起的任何损害(包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论如何引起,也无论责任理论如何)承担责任,即使 NVIDIA 已被告知可能发生此类损害。尽管客户可能因任何原因而遭受任何损害,但 NVIDIA 对本文所述产品的客户的累计总责任应根据产品的销售条款进行限制。
VESA DisplayPort
DisplayPort 和 DisplayPort Compliance Logo、DisplayPort Compliance Logo for Dual-mode Sources 以及 DisplayPort Compliance Logo for Active Cables 是视频电子标准协会在美国和其他国家/地区的商标。
HDMI
HDMI、HDMI 徽标和 High-Definition Multimedia Interface 是 HDMI Licensing LLC 的商标或注册商标。
OpenCL
OpenCL 是 Apple Inc. 的商标,已获得 Khronos Group Inc. 的许可使用。
商标
NVIDIA、NVIDIA 徽标以及 cuBLAS、CUDA、CUDA Toolkit、cuDNN、DALI、DIGITS、DGX、DGX-1、DGX-2、DGX Station、DLProf、GPU、JetPack、Jetson、Kepler、Maxwell、NCCL、Nsight Compute、Nsight Systems、NVCaffe、NVIDIA Ampere GPU 架构、NVIDIA Deep Learning SDK、NVIDIA Developer Program、NVIDIA GPU Cloud、NVLink、NVSHMEM、PerfWorks、Pascal、SDK Manager、T4、Tegra、TensorRT、TensorRT Inference Server、Tesla、TF-TRT、Triton Inference Server、Turing 和 Volta 是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。其他公司和产品名称可能是与其相关的各自公司的商标。