安装和运行人脸容器(预览版)Install and run Face containers (Preview)

重要

已达到人脸容器用户的限制。The limit for Face container users has been reached. 目前不接受用于人脸容器的新应用程序。We are not currently accepting new applications for the Face container.

Azure 认知服务人脸 API 提供 Linux Docker 容器,用于检测和分析图像中的人脸。Azure Cognitive Services Face API provides a Linux Docker container that detects and analyzes human faces in images. 它还标识属性,其中包括人脸特征(例如,鼻子和眼睛)、性别、年龄和其他计算机预测的面部特征。It also identifies attributes, which include face landmarks such as noses and eyes, gender, age, and other machine-predicted facial features. 除检测外,人脸还可以使用置信分数检查同一图像或不同图像中的两张人脸是否相同。In addition to detection, Face can check if two faces in the same image or different images are the same by using a confidence score. 人脸还可以根据数据库比较人脸,查看是否已存在类似或相同的人脸。Face also can compare faces against a database to see if a similar-looking or identical face already exists. 它也可以使用共享视觉特征将类似人脸整理为许多组。It also can organize similar faces into groups by using shared visual traits.

如果没有 Azure 订阅,可在开始前创建一个试用帐户If you don't have an Azure subscription, create a Trial before you begin.

先决条件Prerequisites

使用人脸服务容器之前,必须满足以下先决条件:You must meet the following prerequisites before you use the Face service containers.

必须Required 目的Purpose
Docker 引擎Docker Engine 必须在主计算机上安装 Docker 引擎。The Docker Engine must be installed on a host computer. Docker 提供用于在 macOSWindowsLinux 上配置 Docker 环境的包。Docker provides packages that configure the Docker environment on macOS, Windows, and Linux. 有关 Docker 和容器的基础知识,请参阅 Docker 概述For a primer on Docker and container basics, see the Docker overview.

必须将 Docker 配置为允许容器连接 Azure 并向其发送账单数据。Docker must be configured to allow the containers to connect with and send billing data to Azure.

在 Windows 上,还必须将 Docker 配置为支持 Linux 容器。On Windows, Docker also must be configured to support Linux containers.

熟悉 DockerFamiliarity with Docker 需对 Docker 概念(例如注册表、存储库、容器和容器映像)有一个基本的理解。You need a basic understanding of Docker concepts, such as registries, repositories, containers, and container images. 还需要了解基本的 docker 命令。You also need knowledge of basic docker commands.
人脸资源Face resource 若要使用容器,必须具有:To use the container, you must have:

Azure 人脸资源和关联的 API 密钥及终结点 URI。An Azure Face resource and the associated API key and the endpoint URI. 可在资源的“概述”和“密钥”页上获取这两个值 。Both values are available on the Overview and Keys pages for the resource. 必须获取这两个值才能启动容器。They're required to start the container.

{API_KEY} :“密钥”页上提供的两个可用资源密钥中的一个{API_KEY}: One of the two available resource keys on the Keys page

{ENDPOINT_URI} :“概述”页上提供的终结点{ENDPOINT_URI}: The endpoint as provided on the Overview page

收集必需参数Gathering required parameters

对于所有认知服务的容器来说,有三种主要参数是必需的。There are three primary parameters for all Cognitive Services' containers that are required. 最终用户许可协议 (EULA) 的值必须为 acceptThe end-user license agreement (EULA) must be present with a value of accept. 此外还需要终结点 URL 和 API 密钥。Additionally, both an Endpoint URL and API Key are needed.

终结点 URI {ENDPOINT_URI}Endpoint URI {ENDPOINT_URI}

在相应的认知服务资源的 Azure 门户“概览” 页上提供终结点 URI 值。The Endpoint URI value is available on the Azure portal Overview page of the corresponding Cognitive Service resource. 导航到“概览” 页,将鼠标悬停在“终结点”上就会显示一个 Copy to clipboard 图标。Navigate to the Overview page, hover over the Endpoint, and a Copy to clipboard icon will appear. 复制后在需要时使用。Copy and use where needed.

收集终结点 URI 供以后使用

密钥 {API_KEY}Keys {API_KEY}

此密钥用于启动容器,可以从相应认知服务资源的 Azure 门户的“密钥”页获取。This key is used to start the container, and is available on the Azure portal's Keys page of the corresponding Cognitive Service resource. 导航到“密钥”页并单击 Copy to clipboard 图标。 Navigate to the Keys page, and click on the Copy to clipboard icon.

获取两个密钥中的一个供以后使用

重要

这些订阅密钥用于访问认知服务 API。These subscription keys are used to access your Cognitive Service API. 不要共享你的密钥。Do not share your keys. 以安全方式存储密钥(例如,使用 Azure Key Vault 来存储)。Store them securely, for example, using Azure Key Vault. 此外,我们建议定期重新生成这些密钥。We also recommend regenerating these keys regularly. 发出 API 调用只需一个密钥。Only one key is necessary to make an API call. 重新生成第一个密钥时,可以使用第二个密钥来持续访问服务。When regenerating the first key, you can use the second key for continued access to the service.

主计算机The host computer

主机是运行 Docker 容器且基于 x64 的计算机。The host is a x64-based computer that runs the Docker container. 它可以是本地计算机或 Azure 中的 Docker 托管服务,例如:It can be a computer on your premises or a Docker hosting service in Azure, such as:

容器要求和建议Container requirements and recommendations

下表显示了为每个人脸服务容器分配的最小和建议的 CPU 核心数和内存。The following table describes the minimum and recommended CPU cores and memory to allocate for each Face service container.

容器Container 最小值Minimum 建议Recommended 每秒事务数Transactions per second
(最小值、最大值)(Minimum, maximum)
人脸Face 单核,2-GB 内存1 core, 2-GB memory 单核,4-GB 内存1 core, 4-GB memory 10, 2010, 20
  • 每个核心必须至少为 2.6 GHz 或更快。Each core must be at least 2.6 GHz or faster.
  • 每秒事务数 (TPS)。Transactions per second (TPS).

核心和内存对应于 --cpus--memory 设置,用作 docker run 命令的一部分。Core and memory correspond to the --cpus and --memory settings, which are used as part of the docker run command.

使用 docker pull 获取容器映像Get the container image with docker pull

提供了适用于人脸服务的容器映像。Container images for the Face service are available.

容器Container 存储库Repository
人脸Face containerpreview.azurecr.io/microsoft/cognitive-services-face:latest

提示

可以使用 docker images 命令列出下载的容器映像。You can use the docker images command to list your downloaded container images. 例如,以下命令以表格列出每个下载的容器映像的 ID、存储库和标记:For example, the following command lists the ID, repository, and tag of each downloaded container image, formatted as a table:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID            REPOSITORY              TAG
<image-id>       <repository-path/name>     <tag-name>

适用于人脸容器的 Docker 拉取Docker pull for the Face container

docker pull containerpreview.azurecr.io/microsoft/cognitive-services-face:latest

使用容器Use the container

当容器位于主计算机上以后,请通过以下过程使用容器。After the container is on the host computer, use the following process to work with the container.

  1. 使用所需的计费设置运行容器Run the container with the required billing settings. 提供 docker run 命令的多个示例More examples of the docker run command are available.
  2. 查询容器的预测终结点Query the container's prediction endpoint.

通过 docker run 运行容器Run the container with docker run

使用 docker run 命令运行容器。Use the docker run command to run the container. 有关如何获取 {ENDPOINT_URI}{API_KEY} 值的详细信息,请参阅收集所需的参数Refer to gathering required parameters for details on how to get the {ENDPOINT_URI} and {API_KEY} values.

docker run 命令的示例可用。Examples of the docker run command are available.

docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 \
containerpreview.azurecr.io/microsoft/cognitive-services-face \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

此命令:This command:

  • 从容器映像运行人脸容器。Runs a face container from the container image.
  • 分配一个 CPU 核心和 4 GB 内存。Allocates one CPU core and 4 GB of memory.
  • 公开 TCP 端口 5000,并为容器分配伪 TTY。Exposes TCP port 5000 and allocates a pseudo TTY for the container.
  • 退出后自动删除容器。Automatically removes the container after it exits. 容器映像在主计算机上仍然可用。The container image is still available on the host computer.

提供 docker run 命令的多个示例More examples of the docker run command are available.

重要

必须指定 EulaBillingApiKey 选项运行容器,否则该容器不会启动。The Eula, Billing, and ApiKey options must be specified to run the container or the container won't start. 有关详细信息,请参阅计费For more information, see Billing.

在同一主机上运行多个容器Run multiple containers on the same host

若要使用公开端口运行多个容器,请确保在运行每个容器时使用不同的公开端口。If you intend to run multiple containers with exposed ports, make sure to run each container with a different exposed port. 例如,在端口 5000 上运行第一个容器,在端口 5001 上运行第二个容器。For example, run the first container on port 5000 and the second container on port 5001.

可以让此容器和其他 Azure 认知服务容器一起运行在该主机上。You can have this container and a different Azure Cognitive Services container running on the HOST together. 此外,还可以让同一认知服务容器的多个容器一起运行。You also can have multiple containers of the same Cognitive Services container running.

查询容器的预测终结点Query the container's prediction endpoint

容器提供了基于 REST 的查询预测终结点 API。The container provides REST-based query prediction endpoint APIs.

为容器 API 使用主机 http://localhost:5000Use the host, http://localhost:5000, for container APIs.

验证容器是否正在运行Validate that a container is running

有几种方法可用于验证容器是否正在运行。There are several ways to validate that the container is running. 找到相关容器的外部 IP 地址和公开端口,并打开你常用的 Web 浏览器。Locate the External IP address and exposed port of the container in question, and open your favorite web browser. 使用以下各种请求 URL 验证容器是否正在运行。Use the various request URLs below to validate the container is running. 下面列出的示例请求 URL 是 http://localhost:5000,但是你的特定容器可能会有所不同。The example request URLs listed below are http://localhost:5000, but your specific container may vary. 请记住,你要依赖于容器的外部 IP 地址和公开端口。Keep in mind that you're to rely on your container's External IP address and exposed port.

请求 URLRequest URL 目的Purpose
http://localhost:5000/ 容器提供主页。The container provides a home page.
http://localhost:5000/status 使用 HTTP GET 进行请求,以便在不会导致终结点查询的情况下验证容器是否正在运行。Requested with an HTTP GET, to validate that the container is running without causing an endpoint query. 此请求可用于 Kubernetes 运行情况和就绪情况探测This request can be used for Kubernetes liveness and readiness probes.
http://localhost:5000/swagger 容器针对终结点及试用功能提供了一整套文档。The container provides a full set of documentation for the endpoints and a Try it out feature. 使用此功能可以将设置输入到基于 Web 的 HTML 表单并进行查询,而无需编写任何代码。With this feature, you can enter your settings into a web-based HTML form and make the query without having to write any code. 查询返回后,将提供示例 CURL 命令,用于演示所需的 HTTP 标头和正文格式。After the query returns, an example CURL command is provided to demonstrate the HTTP headers and body format that's required.

容器的主页

停止容器Stop the container

若要关闭容器,请在运行容器的命令行环境中选择 Ctrl+CTo shut down the container, in the command-line environment where the container is running, select Ctrl+C.

故障排除Troubleshooting

如果运行启用了输出装载和日志记录的容器,该容器会生成有助于排查启动或运行容器时发生的问题的日志文件。If you run the container with an output mount and logging is enabled, the container generates log files that are helpful to troubleshoot issues that happen while you start or run the container.

提示

如需更多的故障排除信息和指南,请参阅认知服务容器常见问题解答 (FAQ)For more troubleshooting information and guidance, see Cognitive Services containers frequently asked questions (FAQ).

计费Billing

人脸服务容器使用 Azure 帐户中的人脸资源向 Azure 发送账单信息。The Face service containers send billing information to Azure by using a Face resource on your Azure account.

对该容器的查询在用于 <ApiKey> 的 Azure 资源的定价层计费。Queries to the container are billed at the pricing tier of the Azure resource that's used for the <ApiKey>.

如果未连接到计费终结点进行计量,则 Azure 认知服务容器不会被许可运行。Azure Cognitive Services containers aren't licensed to run without being connected to the billing endpoint for metering. 必须始终让容器可以向计费终结点传送计费信息。You must enable the containers to communicate billing information with the billing endpoint at all times. 认知服务容器不会将客户数据(例如,正在分析的图像或文本)发送给 Microsoft。Cognitive Services containers don't send customer data, such as the image or text that's being analyzed, to Microsoft.

连接到 AzureConnect to Azure

容器需要计费参数值才能运行。The container needs the billing argument values to run. 这些值使容器可以连接到计费终结点。These values allow the container to connect to the billing endpoint. 容器约每 10 到 15 分钟报告一次使用情况。The container reports usage about every 10 to 15 minutes. 如果容器未在允许的时间范围内连接到 Azure,容器将继续运行,但不会为查询提供服务,直到计费终结点恢复。If the container doesn't connect to Azure within the allowed time window, the container continues to run but doesn't serve queries until the billing endpoint is restored. 尝试连接按 10 到 15 分钟的相同时间间隔进行 10 次。The connection is attempted 10 times at the same time interval of 10 to 15 minutes. 如果无法在 10 次尝试内连接到计费终结点,容器将停止运行。If it can't connect to the billing endpoint within the 10 tries, the container stops running.

计费参数Billing arguments

必须使用有效值指定所有以下三个选项,才能使 docker run 命令启动容器:For the docker run command to start the container, all three of the following options must be specified with valid values:

选项Option 说明Description
ApiKey 用于跟踪计费信息的认知服务资源的 API 密钥。The API key of the Cognitive Services resource that's used to track billing information.
必须将此选项的值设置为 Billing 中指定的已预配资源的 API 密钥。The value of this option must be set to an API key for the provisioned resource that's specified in Billing.
Billing 用于跟踪计费信息的认知服务资源的终结点。The endpoint of the Cognitive Services resource that's used to track billing information.
必须将此选项的值设置为已预配的 Azure 资源的终结点 URI。The value of this option must be set to the endpoint URI of a provisioned Azure resource.
Eula 表示已接受容器的许可条款。Indicates that you accepted the license for the container.
此选项的值必须设置为 acceptThe value of this option must be set to accept.

有关这些选项的详细信息,请参阅配置容器For more information about these options, see Configure containers.

摘要Summary

本文介绍了与下载、安装和运行人脸服务容器相关的概念和工作流。In this article, you learned concepts and workflow for how to download, install, and run Face service containers. 综上所述:In summary:

  • 从 Azure 容器注册表下载容器映像。Container images are downloaded from the Azure Container Registry.
  • 容器映像在 Docker 中运行。Container images run in Docker.
  • 可以使用 REST API 或 SDK 通过指定容器的主机 URI 来调用人脸服务容器中的操作。You can use either the REST API or the SDK to call operations in Face service containers by specifying the host URI of the container.
  • 必须在实例化容器时指定账单信息。You must specify billing information when you instantiate a container.

重要

如果未连接到 Azure 进行计量,则无法授权并运行认知服务容器。Cognitive Services containers aren't licensed to run without being connected to Azure for metering. 客户必须始终让容器向计量服务传送账单信息。Customers must enable the containers to communicate billing information with the metering service at all times. 认知服务容器不会将客户数据(例如,正在分析的图像或文本)发送给 Microsoft。Cognitive Services containers don't send customer data, such as the image or text that's being analyzed, to Microsoft.

后续步骤Next steps