跳到主要内容

👤 人脸检测

0.2 IC每次请求(单人脸)/ 0.3 IC(多人脸)
✅ 活跃🪪 eKYC

欢迎使用人脸检测 API,这是由艾艾普科技有限公司开发的人工智能产品。我们的 API 旨在高精度、高速度地从图像中检测和提取人脸。该 API 支持单人脸和多人脸检测,并提供灵活的评分选项。

立即试用!

Example Images (Click to try)

Example 1

入门指南

  1. 先决条件

    • 艾艾普科技的 API 密钥
    • 包含人脸的图片文件
    • 支持的格式:JPEG、JPG、PNG
    • 最大文件大小:10MB
  2. 快速入门

    • 快速处理时间
    • 高精度人脸检测
    • 支持多种文件格式
    • 灵活的评分选项
  3. 主要功能

    • 单人脸和多人脸检测
    • 人脸边界框坐标
    • 检测置信度分数
    • 人脸图像提取
    • 公司特定的评分选项
  4. 安全与合规

    • 符合 GDPR 和 PDPA
    • 处理后不保留数据
如何获取 API 密钥?

请访问 API 密钥管理 页面查看您现有的 API 密钥或申请新密钥。

示例

单人脸检测请求:

图片预览 人脸检测示例

curl --location --request POST 'https://api.iapp.co.th/v3/store/ekyc/face-detection/single' \
--header 'apikey: {您的 API Key}' \
--form 'file=@"{您的图片文件路径}"'

单人脸检测响应:

{
"bbox": {
"xmax": 320.15,
"xmin": 100.23,
"ymax": 450.78,
"ymin": 150.45
},
"detection_score": 0.9998989105224609,
"face": "/9j/4AAQ...base64_encoded_image",
"message": "success",
"process_time": 0.41
}

多人脸检测请求:

图片预览 人脸检测示例

curl --location --request POST 'https://api.iapp.co.th/v3/store/ekyc/face-detection/multi' \
--header 'apikey: {您的 API Key}' \
--form 'file=@"{您的图片文件路径}"'

多人脸检测响应:

{
"message": "success",
"process_time": 0.67,
"result": [
{
"bbox": {
"xmax":1317.7054443359375,
"xmin":1075.64013671875,
"ymax":555.1968994140625,
"ymin":243.38815307617188
},
"detection_score": 0.99,
"face": "/9j/4AAQ...base64_encoded_image"
},
{
"bbox": {
"xmax":684.1102294921875,
"xmin":484.45068359375,
"ymax":520.4813842773438,
"ymin":265.50823974609375
},
"detection_score": 0.99,
"face": "/9j/4AAQ...base64_encoded_image"
},
...
]
}

功能与能力

核心功能

  • 单人脸和多人脸检测
  • 人脸边界框坐标
  • 检测置信度分数
  • Base64 编码的人脸图像
  • 公司特定的评分选项

支持的字段

单人脸检测响应

字段类型描述
bbox字典人脸边界框坐标
detection_score浮点数人脸检测置信度分数
face字符串Base64 编码的人脸图像
message字符串处理状态
process_time浮点数处理时间(秒)

多人脸检测响应

字段类型描述
message字符串处理状态
process_time浮点数处理时间(秒)
result数组检测到的人脸数组
bbox字典人脸边界框坐标
detection_score浮点数人脸检测置信度分数
face字符串Base64 编码的人脸图像

API 端点

端点方法描述价格
POST /v3/store/ekyc/face-detection/single
旧版: /face_detect_single
POST检测图像中最突出的人脸0.2 IC/次
POST /v3/store/ekyc/face-detection/multi
旧版: /face_detect_multi
POST检测图像中的所有人脸0.3 IC/次

API 参考

人脸检测端点

1. 单人脸检测

POST /v3/store/ekyc/face-detection/single

检测图像中最突出的人脸。返回单个人脸的边界框、置信度分数和 Base64 编码的人脸图像。


2. 多人脸检测

POST /v3/store/ekyc/face-detection/multi

检测图像中的所有人脸。返回每个检测到的人脸的边界框、置信度分数和 Base64 编码的人脸图像的数组。

代码示例

Curl

curl -X POST https://api.iapp.co.th/v3/store/ekyc/face-detection/single \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"

Python

import requests

url = "https://api.iapp.co.th/v3/store/ekyc/face-detection/single"

payload = {}
files=[
('file',('{YOUR UPLOADED IMAGE}',open('{YOUR UPLOADED IMAGE}','rb'),'image/jpeg'))
]
headers = {
'apikey': '{YOUR API KEY}'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

JavaScript

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('file', fs.createReadStream('/Users/iapp/Downloads/removebg_trial.png'));

let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.iapp.co.th/v3/store/ekyc/face-detection/single',
headers: {
'apikey': 'YOUR_API_KEY',
...data.getHeaders()
},
data : data
};

axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/face-detection/single',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('{YOUR UPLOADED IMAGE}')),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR API KEY}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Swift

let parameters = [[
"key": "file",
"src": "{YOUR UPLOADED IMAGE}",
"type": "file"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}

let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body


var request = URLRequest(url: URL(string: "https://api.iapp.co.th/v3/store/ekyc/face-detection/single")!,timeoutInterval: Double.infinity)
request.addValue("{YOUR API KEY}", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","file",
File("{YOUR API KEY}").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-detection/single")
.post(body)
.addHeader("apikey", "{YOUR API KEY}")
.build()
val response = client.newCall(request).execute()

Java

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","file",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR UPLOADED IMAGE}")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/face-detection/single")
.method("POST", body)
.addHeader("apikey", "{YOUR API KEY}")
.build();
Response response = client.newCall(request).execute();

Dart

var headers = {
'apikey': '{YOUR API KEY}'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/v3/store/ekyc/face-detection/single'));
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR UPLOADED IMAGE}'));
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}

限制与最佳实践

限制

  • 最大文件大小:10MB
  • 支持的格式:JPEG、JPG、PNG
  • 每张图片最多人脸数:50

最佳实践

  1. 确保良好的图像质量
  2. 检查检测分数
  3. 恰当处理错误消息
  4. 考虑使用公司特定的评分
  5. 上传前优化图像大小

准确性与性能

总体准确性

  • 检测分数通常高于 95%
  • 性能随图像质量而异

处理速度

  • 单人脸:0.3-0.5 秒
  • 多人脸:0.5-1.0 秒

影响准确性的因素

  1. 图像质量
    • 分辨率
    • 光照
    • 对焦
  2. 人脸朝向
    • 头部姿态
    • 面部表情
    • 遮挡

历史记录

版本 1.0 (发布:2023 年 1 月)

  • 主要改进:初始发布

版本 0.9 (发布:2022 年 11 月)

  • 主要改进:Beta 测试

版本 0.8 (发布:2022 年 9 月)

  • 主要改进:内部测试

定价

操作生产路径旧版路径IC 成本单位本地部署
单人脸检测/v3/store/ekyc/face-detection/single/face_detect_single0.2 IC每次请求联系我们
多人脸检测/v3/store/ekyc/face-detection/multi/face_detect_multi0.3 IC每次请求