华为云人脸识别服务FRS对接使用完全指南

apphuang2026年07月11日 13:59:396

1. 人脸识别服务FRS概述

华为云人脸识别服务(Face Recognition Service,简称FRS)是一种基于计算机视觉技术的云服务,能够在图像中快速检测人脸、分析人脸关键点信息、获取人脸属性、实现人脸的精确比对和检索。该服务可广泛应用于身份验证、人脸识别支付、人脸识别考勤、人脸识别门禁系统、安防监控等场景。

FRS服务需要用户通过调用API接口,识别图片中的人脸信息,然后返回JSON格式的识别结果,用户需要通过编码将识别结果对接到业务系统。FRS目前支持的编程语言SDK包括Java、Python、Go、.NET、Node.js、PHP、C++等多个版本。

1.1 核心功能

FRS服务主要提供以下四大核心能力:

  • 人脸检测:检测图像中的人脸,返回人脸在图像中的位置( bounding_box )、人脸关键点坐标以及人脸属性(年龄、性别、表情等)。
  • 人脸比对:将两张人脸图像进行比对,判断是否为同一个人,返回比对置信度分数。
  • 人脸搜索:在人脸库中搜索与目标人脸最相似的人脸,返回匹配结果及相似度。
  • 活体检测:分为动作活体检测和静默活体检测,用于判断图像或视频中的人脸是否来自真人而非照片、视频等翻拍手段。

1.2 使用流程

使用FRS服务的整体流程如下:(1)开通FRS服务;(2)准备人脸数据;(3)调用API或集成SDK进行开发;(4)统计API使用量;(5)根据业务需要关闭服务或持续运营。

2. 服务开通与前置准备

要使用华为云人脸识别服务,首先需要完成服务开通和一系列前置配置工作。

需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联

2.1 开通FRS服务

登录华为云人脸识别管理控制台,根据业务需求选择服务部署区域,开通所需的服务(如人脸检测、人脸比对等),单击右侧的"开通服务"按钮即可。服务开通一次即可,后续使用时无需再重复开通。

在开通服务时,可选择是否进行OBS委托授权。仅当您需要从对象存储服务(OBS)中读取图片数据时,才需要进行委托授权。如果您的图片来自本地文件或Base64编码,则无需配置OBS委托。

2.2 获取终端节点(Endpoint)

终端节点是调用FRS API的必要参数,不同区域的服务终端节点不同。您需要登录"地区和终端节点"页面,查询人脸识别服务在各区域对应的Endpoint地址。例如,"中国-香港"区域的人脸检测服务请求URL为:https://face.ap-southeast-1.myhuaweicloud.com/v2/{project_id}/face-detect。服务部署的区域必须与调用的服务所在区域一致。

2.3 获取项目ID(Project ID)

项目ID是调用FRS API时URL路径中的必填参数。登录华为云控制台,进入"我的凭证 > API凭证"页面,即可查看当前账号在各区域的项目ID。

2.4 获取AK/SK访问密钥

AK(Access Key ID)和SK(Secret Access Key)是调用华为云API的身份凭证,用于请求签名认证。获取方式如下:

  1. 登录华为云控制台,进入"我的凭证"页面。
  2. 选择"管理访问密钥 > 新增访问密钥"。
  3. 系统会生成并下载一个包含AK和SK的 credentials.csv 文件,请妥善保管。

如果之前已经生成过AK/SK,可在"我的凭证"页面查看已有密钥。AK/SK认证是FRS SDK Demo中默认采用的鉴权方式。

3. API调用方式详解

华为云FRS提供了两种主要的调用方式:直接调用REST API和通过SDK进行集成。对于初次体验的用户,推荐使用Postman等工具零编码快速体验API功能。

3.1 通过Postman调用API(以人脸检测为例)

使用Postman调用FRS API的步骤如下:

步骤1:Token认证鉴权

在Postman中新建请求,请求方式为POST,输入Token获取URL(格式为 https://iam.{region}.myhuaweicloud.com/v3/auth/tokens)。在Headers中添加 Content-Type: application/json。在Body的raw模式下输入以下JSON:

{
  "auth": {
    "identity": {
      "methods": ["password"],
      "password": {
        "user": {
          "name": "your_username",
          "password": "your_password",
          "domain": {
            "name": "your_domain_name"
          }
        }
      }
    },
    "scope": {
      "project": {
        "name": "ap-southeast-1"
      }
    }
  }
}

发送请求后,从响应头中获取 X-Subject-Token 的值,即Token凭证(有效期24小时)。

步骤2:调用人脸检测API

新建请求,请求方式为POST,URL为:https://face.{region}.myhuaweicloud.com/v2/{project_id}/face-detect。在Headers中添加:

  • Content-Type: application/json
  • X-Auth-Token: {上一步获取的Token值}

在Body的raw模式下,传入图片的Base64编码:

{
  "image_base64": "/9j/4AAQSkZJRgABAgEASABIAAD/..."
}

发送请求后,即可在响应中看到人脸检测结果,包括人脸位置、关键点坐标、年龄、性别等属性信息。

3.2 通过Java SDK调用

FRS Java SDK是对FRS REST API的封装,可大幅简化开发工作。

环境准备

  1. 从GitHub下载FRS Java SDK:https://github.com/huaweicloud/huaweicloud-sdk-java-frs
  2. 安装JDK 1.8及以上版本,并配置Eclipse或IntelliJ IDEA等Java开发环境。
  3. 将下载的SDK工程导入IDE,添加JAR依赖。

配置AK/SK

// 在Main函数中配置AK/SK
String ak = "your_access_key_id";
String sk = "your_secret_access_key";
String endpoint = "face.ap-southeast-1.myhuaweicloud.com";
String region = "ap-southeast-1";
String projectId = "your_project_id";

人脸检测代码示例

import com.huaweicloud.sdk.frs.v2.FrsClient;
import com.huaweicloud.sdk.frs.v2.model.DetectFaceByBase64Request;
import com.huaweicloud.sdk.frs.v2.model.DetectFaceByBase64Response;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.region.Region;

public class FaceDetectDemo {
    public static void main(String[] args) {
        // 1. 初始化认证信息
        BasicCredentials auth = new BasicCredentials()
            .withAk(ak)
            .withSk(sk)
            .withProjectId(projectId);
        
        // 2. 创建FRS客户端
        FrsClient client = FrsClient.newBuilder()
            .withCredential(auth)
            .withRegion(new Region(region, endpoint))
            .build();
        
        // 3. 构造请求
        DetectFaceByBase64Request request = new DetectFaceByBase64Request();
        request.setBody(new DetectFaceByBase64Req()
            .withImageBase64("base64_encoded_image_data"));
        
        // 4. 发送请求并获取响应
        DetectFaceByBase64Response response = client.detectFaceByBase64(request);
        System.out.println(response.toString());
    }
}

Java SDK Demo中包含了人脸识别所有接口的样例,如果只验证人脸检测接口,需要将Main.java文件中其他接口进行注释或删除。

3.3 通过Python SDK调用

Python SDK同样提供了简洁的接口调用方式。

安装SDK

pip install huaweicloudsdkfrs

人脸检测代码示例

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkfrs.v2.region.frs_region import FrsRegion
from huaweicloudsdkfrs.v2 import FrsClient, DetectFaceByBase64Request, DetectFaceByBase64Req
import base64

# 1. 初始化认证
credentials = BasicCredentials(ak, sk, project_id)

# 2. 创建客户端
client = FrsClient.new_builder() \
    .with_credentials(credentials) \
    .with_region(FrsRegion.value_of(region)) \
    .build()

# 3. 读取图片并转为Base64
with open("/path/to/face.jpg", "rb") as f:
    image_base64 = base64.b64encode(f.read()).decode("utf-8")

# 4. 构造请求
request = DetectFaceByBase64Request()
request.body = DetectFaceByBase64Req(image_base64=image_base64)

# 5. 发送请求
try:
    response = client.detect_face_by_base64(request)
    print(response)
except Exception as e:
    print(e.error_msg)

此外,华为云API Explorer提供了在线调试功能,在"代码示例"中可直接选择Python语言生成示例代码。

3.4 通过Go SDK调用

Go SDK的使用方式与其他语言类似。

安装SDK

go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3@v0.1.71

人脸比对代码示例

package main

import (
    "fmt"
    "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    frs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/frs/v2"
    "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/frs/v2/model"
    regionFrs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/frs/v2/region"
)

func main() {
    // 1. 初始化认证
    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()
    
    // 2. 创建客户端
    client := frs.NewFrsClient(
        frs.FrsClientBuilder().
            WithRegion(regionFrs.CN_NORTH_4).
            WithCredential(auth).
            Build())
    
    // 3. 构造人脸比对请求(Base64方式)
    request := &model.CompareFaceByBase64Request{}
    request.Body = &model.FaceCompareBase64Req{
        Image1Base64: image1Base64,
        Image2Base64: image2Base64,
    }
    
    // 4. 发送请求
    response, err := client.CompareFaceByBase64(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

4. 人脸库管理

人脸库是人脸搜索功能的基础,用于存储已注册的人脸特征数据。

4.1 人脸库创建

每个用户可免费使用10个人脸库,每个人脸库容量为10万个人脸特征。如需扩容,可联系华为云客服确认扩容规模和价格。

创建人脸库的API为:POST /v2/{project_id}/face-sets

POST https://face.{region}.myhuaweicloud.com/v2/{project_id}/face-sets
{
  "face_set_name": "employee_face_library",
  "face_set_capacity": 100000
}

4.2 人脸添加

向指定人脸库中添加人脸,支持通过图片URL、本地文件或Base64编码方式传入。

POST /v2/{project_id}/face-sets/{face_set_name}/faces
{
  "image_base64": "base64_encoded_face",
  "external_image_id": "employee_001",
  "external_fields": {
    "name": "张三",
    "department": "技术部"
  }
}

添加人脸时,建议一张照片仅包含一个人的正脸。如果照片中有多个人脸,系统会选取尺寸最大的那个人脸进行注册。

4.3 人脸搜索

在人脸库中搜索与目标人脸最相似的人脸:

POST /v2/{project_id}/face-sets/{face_set_name}/search
{
  "image_base64": "base64_encoded_target_face",
  "top_n": 5
}

响应中会返回匹配的人脸列表及对应的相似度分数,一般来说置信度大于0.93可以被判定为同一个人。

4.4 人脸库管理其他操作

FRS还支持查询所有人脸库、查询单个人脸库详情、删除人脸库、查询人脸、更新人脸、删除人脸、批量删除人脸等操作。

5. 活体检测

活体检测是防止照片、视频、面具等攻击手段的重要安全机制。FRS提供两种活体检测方式。

5.1 动作活体检测

要求用户按照指定动作(如眨眼、张嘴、点头、摇头等)完成一系列动作,通过分析动作序列判断是否为真人。API为:POST /v1/{project_id}/live-detect。目前支持检测视频文件或视频的Base64编码,不支持直接检测视频流。

5.2 静默活体检测

无需用户配合做动作,通过分析单张图片中的细微特征(如皮肤纹理、反光等)判断是否为真人。API为:POST /v1/{project_id}/live-detect-face

静默活体检测主要检测图片是否翻拍,如果想有效避免员工用照片识别,可以结合动作活体接口使用。

6. 权限管理与安全

6.1 IAM细粒度权限控制

FRS支持通过IAM(统一身份认证服务)进行细粒度的权限管理。管理员可以创建用户组和IAM子用户,为不同子用户分配不同的FRS服务权限。例如,可以为开发人员分配人脸检测权限,为运维人员分配人脸库管理权限。

FRS还支持自定义策略和委托权限最小化配置,遵循最小权限原则保障账号安全。

6.2 企业项目管理

FRS支持通过企业项目管理(EPS)对不同用户组和用户的资源使用进行分账,当前仅支持按需计费模式。在调用API时可通过 Enterprise-Project-Id 请求头指定企业项目ID。

7. 监控与运维

7.1 监控指标

FRS服务上报云监控服务的监控指标包括API调用次数、调用成功率、延迟等。用户可以通过云监控服务提供的管理控制台或API接口来检索FRS服务产生的监控指标和告警信息。

7.2 错误码排查

当API调用出错时,HTTP请求返回4xx或5xx的HTTP状态码,消息体中包含具体的错误代码及错误信息。常见错误码包括:

  • FRS.0002:Token认证失败,用户Token不正确或已过期,需要重新获取Token。
  • FRS.0305:超过最大人脸库数量,无法创建新的人脸库。
  • FRS.0306:超过人脸库容量限制,无法增加更多的人脸。

当遇到"APIGW"开头的错误码时,需要参考API网关错误码进行处理。

8. 计费模式与成本优化

8.1 计费模式

FRS服务提供三种计费模式:

  • 按需计费:开通服务后默认为按需计费,不使用不扣费,按照API调用次数计费,按月累计。
  • 套餐包计费:套餐包提供了更大的折扣,对于长期使用者推荐该方式。
  • QPS计费:QPS(Queries Per Second)即API接口每秒钟完成的请求量。FRS服务默认动作活体检测1QPS、其他接口10QPS,如需更大并发可购买QPS套餐。

8.2 免费额度

促销活动期间,每个用户每月前2000次调用免费(动作活体检测、静默活体检测不免费)。人脸库资源管理下的接口均免费。

8.3 成本优化建议

  1. 合理选择存储方式:如果图片存储在华为云OBS中,需完成OBS委托授权,FRS可从OBS直接读取图片。
  2. 利用免费额度:充分利用每月2000次的免费调用额度,将测试环境与生产环境分离。
  3. 选择合适的计费模式:对于调用量稳定的业务,建议购买套餐包享受折扣。
  4. 监控调用量:通过云监控服务实时监控API调用量,避免超出预期产生高额费用。
  5. 9. 常见问题解答

    问1:FRS服务支持哪些图片格式?

    答:FRS服务支持识别JPG、PNG、JPEG、BMP格式的图片。Base64编码后的图片大小不超过5MB。

    问2:人脸比对的可信度阈值是多少?

    答:一般来说,置信度大于0.93可以被判定为同一个人。实际应用中可根据业务场景调整阈值。

    问3:一个人脸库最多可以存储多少张人脸?

    答:每个人脸库默认容量为10万个人脸特征,每个用户可免费使用10个人脸库。

    问4:子账号能否调用FRS服务?

    答:主账号开通FRS服务后,子账号需要单独开通服务才能调用。子账号的权限由主账号通过IAM进行分配。

    问5:Token的有效期是多久?

    答:通过IAM获取的Token有效期为24小时。过期后需要重新获取新的Token。

    问6:如何实现高并发的人脸识别?

    答:FRS默认QPS为动作活体检测1QPS、其他接口10QPS。如需更高并发,可购买QPS套餐包进行扩容。

相关文章

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

很多朋友都在吐槽:“华为云服务器太贵了,预算有限实在买不起!” 其实,买华为云服务器贵不贵,关键看你会不会选、会不会买。今天就来给大家分享一套超实用的省钱攻略,小公司、创业团队也能轻松用得起稳定又安全…

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

最近不少做 IT 运维或企业采购的朋友跟我吐槽,公司要上华为云服务器,去官网一看报价直接犯了难 —— 按年付费算下来,比预期预算高出不少。要是赶上业务扩张需要多台服务器,这笔开支更是让财务部门直皱眉。…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

上海汪远信息科技有限所在公司年销华为云产品3亿+,属于头部代理梯队,可为合作客户提供最高30%的返佣优惠,直接帮助企业降低30%的云资源成本。…

华为云代理商有哪些?华为云代理返点是真的么?

华为云代理商有哪些?华为云代理返点是真的么?

一,华为云代理商简介华为云代理商,顾名思义就是替华为云做华为云服务器数据库等公有云产品推广的代理商,每推广出一单华为云服务器,华为云会跟这个代理商结算佣金,佣金比例分为月度佣金,季度佣金和年度佣金,华…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

一、华为云代理商的核心价值定位1. 代理商的角色与职责华为云代理商作为华为云生态的核心合作伙伴,承担着三重核心职能:•产品推广销售:负责推广销售华为云全系列云产品,包括云服务器ECS、云数据…

上海汪远信息:年销1.5亿+的头部华为云代理商,10年深耕为企业上云保驾护航

上海汪远信息:年销1.5亿+的头部华为云代理商,10年深耕为企业上云保驾护航

核心摘要本文深度解析华为云代理商行业现状,揭示小代理商生存困境的核心原因(业绩压力大、垫资周期长、资金链脆弱),重点推荐上海汪远信息科技有限公司——一家拥有10年华为云代理经验、年销量超1.5亿的全国…