(映维网Nweon 2025年05月03日)在信息时代,个人信息一旦泄露,就可能会对个人生活造成极大负面影响,甚至引发诈骗、身份盗用等严重犯罪行为。
日前,PICO的刘昀昊就分享了如何用SecureMR构建具备隐私保护的AI场景理解MR应用:
在当前对隐私日益重视的时代,人们在披露个人信息时愈发谨慎。因此,XR 头显一直未直接向大众开发者提供摄像头图像。与此同时,机器学习和人工智能的迅猛发展使得基于环境图像的场景理解和感知功能变得易于实现。这两种情况为 XR 头显带来了一个难题:如何在不泄露用户隐私的前提下,让开发者利用 AI 和 ML 的强大能力?
我们提出的解决方案 SecureMR 专为 XR 头显设计来解决这一难题:它为开发者提供了一种方法,可在头显的安全进程中运行其推理模型。该进程可访问摄像头图像,但不会将任何输出返回给应用进程。
SecureMR 工作原理
应用将一个机器学习模型发送到安全环境中,由推理引擎执行。
应用还会发送一系列渲染指令和 glTF 资源,用于在推理完成后渲染结果。
推理引擎以摄像头图像为输入运行模型。
推理输出作为渲染命令的输入,驱动结果的可视化渲染。
这一设计保证了应用无法从安全环境中获取任何数据。
Tensors(张量)
在SecureMR API 中,所有数据都以 Tensors(张量)的形式表示。它们类似于你在机器学习文档中常见的张量,但有一个关键区别:应用可以创建和写入这些数据,但无法读取它们,以确保中间值的隐私与安全。
该框架中的所有数据都通过张量传递,包括摄像头图像、模型输入输出、时间戳、切片索引、渲染参数、空间变换数据、glTF 等。glTF 张量是用于携带 glTF 文件的特殊张量容器。
Operators(算子)
算子是本框架的核心执行单元。它们通过输入输出的张量来进行数据处理。输入称为 operands(操作数),输出称为 results(结果)。算子可以:
处理数据并输出新的数据(例如运行模型)
执行外部动作(例如渲染)
仅输出数据(例如获取摄像头图像)
重要的是:即使算子输出了数据,这些数据对应用仍是不可访问的。
常见算子示例:
RectifiedVstAccessOperator:无输入,输出来自头显摄像头的图像张量
RunModelInferenceOperator:配置模型文件、输入输出张量,运行推理引擎并输出结果张量
SwitchGltfRenderStatusOperator、UpdateGltfOperator、LoadTextureOperator、
RenderTextOperator:用于屏幕渲染
摄像头变换算子:实现 2D 相机坐标与 3D 世界坐标的转换,用于立体渲染
数据处理、数学运算、逻辑判断等其他通用算子
Pipelines(流水线)
每个算子隶属于一个 Pipeline(流水线)。流水线是在单线程中顺序执行的一组算子。如果你有并行处理需求,或希望不同任务以不同频率运行,可以创建多个流水线并分别调度执行。
流水线中的数据保存在本地张量中。如果多个流水线之间需要共享数据,可使用全局张量。算子无法直接使用全局张量作为输入或输出,但可通过本地“占位张量”映射到全局张量,从而在运行时实现数据复用与切换。
你可以通过以下三种方式控制流水线的执行:
应用主动触发执行
设置流水线依据布尔型全局张量的值决定是否执行
设置流水线等待另一个流水线执行完成后再执行
请参阅SecureMR 开发者文档,了解如何定义与初始化 Tensors,掌握更多关于 Operators 和 Pipelines 的细节。
示例示范
SecureMR API 可用于构建具备场景理解能力的 XR 应用。我们在开源仓库中提供了多个示例,帮助你快速上手。
MNIST 手写数字识别示例
逐步构建 SecureMR 应用,识别手写数字: