你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

安装和运行空间分析容器(预览版)

借助空间分析容器可以分析实时流视频,以理解人员之间的空间关系、他们的动作以及与物理环境中对象的交互。 容器非常适合用于满足特定的安全性和数据管理要求。

先决条件

  • Azure 订阅 - 免费创建订阅
  • 你的 Azure 帐户必须分配有认知服务参与者角色,你才能同意负责的 AI 条款并创建资源。 若要将此角色分配给你的帐户,请按照分配角色文档中的步骤进行操作,或与管理员联系。
  • 拥有 Azure 订阅后,在 Azure 门户中为标准 S1 层创建计算机视觉资源,以获取密钥和终结点。 部署后,选择”转到资源”。
    • 需要使用所创建资源的密钥和终结点来运行空间分析容器。 稍后你将使用该密钥和终结点。

空间分析容器要求

若要运行空间分析容器,你的计算设备需要具有支持 NVIDIA CUDA 计算的 GPU 6.0 或更高版本(例如,NVIDIA Tesla T4、A2、1080Ti 或 2080Ti)。 建议使用具有 GPU 加速功能的 Azure Stack Edge,但是,该容器可在满足最低要求的任何其他台式机上运行。 我们将此设备称为主计算机。

Azure Stack Edge 是一个硬件即服务解决方案,也是一台具有网络数据传输功能的支持 AI 的边缘计算设备。 有关详细准备工作和设置说明,请参阅 Azure Stack Edge 文档

要求 说明
照相机 空间分析容器并非仅限用于特定的相机品牌。 相机设备需要:支持实时流式处理协议 (RTSP) 和 H.264 编码、可供主机计算机访问,并能够以 15FPS 和 1080p 的分辨率进行流式处理。
Linux OS 必须在主计算机上安装 Ubuntu Desktop 18.04 LTS

设置主计算机

建议使用 Azure Stack Edge 设备作为主计算机。 如果要配置其他设备,请选择“台式机”;如果要使用 VM,请选择“虚拟机”。

在 Azure Stack Edge 门户上配置计算

空间分析使用 Azure Stack Edge 的计算功能来运行 AI 解决方案。 若要启用计算功能,请确保:

  • 连接并激活 Azure Stack Edge 设备。
  • 具有一个运行 PowerShell 5.0 或更高版本的 Windows 客户端系统,以便能够访问该设备。
  • 若要部署 Kubernetes 群集,需要通过 Azure 门户上的“本地 UI”配置 Azure Stack Edge 设备:
    1. 在 Azure Stack Edge 设备上启用计算功能。 若要启用计算,请在设备的 Web 界面中转到“计算”页。
    2. 选择要为计算启用的网络接口,然后选择“启用”。 这会在设备中的该网络接口上创建一个虚拟交换机。
    3. 将 Kubernetes 测试节点 IP 地址和 Kubernetes 外部服务 IP 地址留空。
    4. 选择“应用”。 此操作可能需要大约两分钟。

配置计算

设置 Azure Stack Edge 角色并创建 IoT 中心资源

Azure 门户中导航到你的 Azure Stack Edge 资源。 在“概述”页或导航列表中,选择 Edge 计算的“入门”按钮。 在“配置 Edge 计算”磁贴中,选择“配置”。

链接

在“配置 Edge 计算”页中,选择现有的 IoT 中心或选择新建一个。 默认将使用标准 (S1) 定价层来创建 IoT 中心资源。 若要使用免费层 IoT 中心资源,请创建一个资源并将其选中。 IoT 中心资源会使用 Azure Stack Edge 资源所用的同一订阅和资源组。

选择“创建”。 创建 IoT 中心资源可能需要几分钟时间。 创建 IoT 中心资源后,“配置 Edge 计算”磁贴会更新,以显示新配置。 若要确认已配置 Edge 计算角色,请在“配置计算”磁贴上选择“查看配置” 。

如果在 Edge 设备上设置了 Edge 计算角色,则会创建两个设备:一个 IoT 设备,一个 IoT Edge 设备。 可在 IoT 中心资源中查看这两个设备。 Azure IoT Edge 运行时已在 IoT Edge 设备上运行。

注意

在 Azure Stack Edge 上启用 MPS

请按照以下步骤从 Windows 客户端进行远程连接。

  1. 以管理员身份运行 Windows PowerShell 会话。

  2. 确保 Windows 远程管理服务正在客户端上运行。 在命令提示符处,键入:

    winrm quickconfig
    

    有关详细信息,请参阅 Windows 远程管理的安装和配置

  3. 将变量分配给 hosts 文件中使用的连接字符串。

    $Name = "<Node serial number>.<DNS domain of the device>"
    

    <Node serial number><DNS domain of the device> 替换为设备的节点序列号和 DNS 域。 可以从设备的本地 Web UI 中的“证书”页获取节点序列号的值,从“设备”页获取 DNS 域。

  4. 若要将设备的连接字符串添加到客户端的受信任主机列表,请键入以下命令:

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. 在设备上启动 Windows PowerShell 会话:

    Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    

    如果看到与信任关系相关的错误,请检查上传到你的设备的节点证书的签名链是否也安装在访问设备的客户端上。

  6. 根据提示提供密码。 使用登录到本地 Web UI 时所用的同一密码。 默认的本地 Web UI 密码为 Password1。 使用远程 PowerShell 成功连接到设备后,可以看到以下示例输出:

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    PS C:\WINDOWS\system32> winrm quickconfig
    WinRM service is already running on this machine.
    PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com"
    PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    
    WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration.
    [1HXQG13.wdshcsso.com]: PS>
    

IoT 部署清单

若要简化多台主计算机上的容器部署,可以创建一个部署清单文件来指定容器创建选项和环境变量。 可在 GitHub 上找到 Azure Stack Edge其他台式机带 GPU 的 Azure VM 的部署清单示例。

下表显示了 IoT Edge 模块使用的各个环境变量。 也可以在 spatialanalysis 中使用 env 特性,在上面链接的部署清单中设置这些变量:

设置名称 “值” 说明
ARCHON_LOG_LEVEL Info;Verbose 日志记录级别,选择两个值中的一个
ARCHON_SHARED_BUFFER_LIMIT 377487360 请勿修改
ARCHON_PERF_MARKER false 要进行性能日志记录,请将此变量设置为 true,否则应设置为 false
ARCHON_NODES_LOG_LEVEL Info;Verbose 日志记录级别,选择两个值中的一个
OMP_WAIT_POLICY PASSIVE 请勿修改
QT_X11_NO_MITSHM 1 请勿修改
APIKEY 你的 API 密钥 在 Azure 门户中从你的计算机视觉资源收集此值。 可以在资源的“密钥和终结点”部分找到它。
账单 你的终结点 URI 在 Azure 门户中从你的计算机视觉资源收集此值。 可以在资源的“密钥和终结点”部分找到它。
EULA accept 需将此值设置为 accept 才能运行容器
DISPLAY :1 此值需与主计算机上 echo $DISPLAY 的输出相同。 Azure Stack Edge 设备没有显示器。 此项设置不适用
KEY_ENV ASE 加密密钥 如果 Video_URL 是经过模糊处理的字符串,请添加此环境变量
IV_ENV 初始化向量 如果 Video_URL 是经过模糊处理的字符串,请添加此环境变量

重要

必须指定 EulaBillingApiKey 选项运行容器;否则,该容器不会启动。 有关详细信息,请参阅计费

使用自己的设置和所选操作更新 Azure Stack Edge 设备台式机带有 GPU 的 Azure VM 的部署清单后,可使用以下 Azure CLI 命令在主计算机上将容器部署为 IoT Edge 模块。

sudo az login
sudo az extension add --name azure-iot
sudo az iot edge set-modules --hub-name "<iothub-name>" --device-id "<device-name>" --content DeploymentManifest.json --subscription "<name or ID of Azure Subscription>"
参数 说明
--hub-name 你的 Azure IoT 中心名称。
--content 部署文件的名称。
--target-condition 主计算机的 IoT Edge 设备名称。
-–subscription 订阅 ID 或名称。

此命令将启动部署。 在 Azure 门户中导航到 Azure IoT 中心实例的页面,以查看部署状态。 在设备完成容器映像下载并开始运行映像之前,状态可能显示为“417 - 设备的部署配置未设置”。

验证部署是否成功

有几种方法可用于验证容器是否正在运行。 在 Azure 门户上 Azure IoT 中心实例的空间分析模块的“IoT Edge 模块设置”中,找到“运行时状态”。 验证“运行时状态”的“所需值”和“报告的值”是否为“正在运行”。

示例部署验证

部署完成并且容器运行后,主计算机会开始将事件发送到 Azure IoT 中心。 如果使用了操作的 .debug 版本,对于在部署清单中配置的每个相机,你将看到一个可视化工具窗口。 现在,可以定义要在部署清单中监视的视线和区域,然后按照说明重新部署。

配置由空间分析执行的操作

需使用空间分析操作将容器配置为使用连接的相机、配置操作,等等。 对于配置的每个相机设备,空间分析的操作会生成发送到 Azure IoT 中心实例的 JSON 消息输出流。

使用容器生成的输出

若要开始使用容器生成的输出,请参阅以下文章:

  • 使用适用于所选编程语言的 Azure 事件中心 SDK 连接到 Azure IoT 中心终结点,并接收事件。 有关详细信息,请参阅从内置终结点读取设备到云的消息
  • 在 Azure IoT 中心设置消息路由,以将事件发送到其他终结点,或者将事件保存到 Azure Blob 存储,等等。有关详细信息,请参阅 IoT 中心消息路由

故障排除

如果在启动或运行容器时遇到问题,请参阅遥测和故障排除,了解常见问题的解决步骤。 此文还包含了有关生成和收集日志以及收集系统运行状况的信息。

如果在运行认知服务容器时遇到问题,可以尝试使用 Microsoft 诊断容器。 使用此容器可以诊断部署环境中可能阻止认知服务容器正常运行的常见错误。

若要获取容器,请使用以下 docker pull 命令:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

然后运行容器。 将 {ENDPOINT_URI} 替换为你的终结点,将 {API_KEY} 替换为你的资源的密钥:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

容器会测试与计费终结点之间的网络连接性。

计费

空间分析容器使用 Azure 帐户中的计算机视觉资源向 Azure 发送账单信息。 空间分析公共预览版目前供免费使用。

Azure 认知服务容器在未连接到计量/计费终结点的情况下无权运行。 必须始终让容器可以向计费终结点传送计费信息。 认知服务容器不会将客户数据(例如,正在分析的视频或图像)发送给 Microsoft。

总结

在本文中,你已学习相关的概念,以及下载、安装和运行空间分析容器的工作流。 综上所述:

  • 空间分析是适用于 Docker 的 Linux 容器。
  • 从 Microsoft 容器注册表下载容器映像。
  • 容器映像作为 Azure IoT Edge 中的 IoT 模块运行。
  • 配置容器并将其部署在主计算机上。

后续步骤