赞
踩
Github地址:https://github.com/exadel-inc/compreface-net-sdk
CompreFace NET SDK 使您的应用程序中的人脸识别变得更加容易。
在使用我们的 SDK 之前,请确保您的计算机上已安装 CompreFace 和 .NET。
CompreFace .NET SDK 版本 | CompreFace 1.1.0 |
---|---|
1.0.0 | ✔ |
1.0.1 | ✔ |
1.0.2 | ✔ |
解释:
使用SDK安装NuGet包:
Install-Package CompreFace.NET.Sdk
下面的所有示例都可以在 examples 文件夹内的存储库中找到。
您还可以查看识别示例应用程序。 这是 CompreFace 使用的一个简单示例。
要开始使用 Compreface .NET SDK,您需要从compreface-sdk
依赖项导入CompreFace
对象。
然后,您需要创建CompreFaceClient
对象并使用DOMAIN
和PORT
对其进行初始化。 默认情况下,如果您在本地计算机上运行 CompreFace,则DOMAIN
将为http://localhost
,在本例中PORT
将为8000
。
您可以在调用方法时传递可选的options
对象来设置默认参数,请参阅更多信息。
您应该使用CompreFaceClient
对象中的RecognitionService
服务来识别人脸。
然而,在识别之前,您需要首先将主题添加到人脸集合中。 为此,请在RecognitionService
的帮助下获取Subject
对象。 Subject
包含在RecognitionService
类中。
var client = new CompreFaceClient(
domain: "http://localhost",
port: "8000");
var recognitionService = client.GetCompreFaceService<RecognitionService>(recognition api key);
var subject = recognitionService.Subject;
var subjectRequest = new AddSubjectRequest()
{
Subject = "Subject name"
};
var subjectResponse = await subject.AddAsync(subjectRequest);
下面是一个例子,展示了如何从你的文件系统中添加一个图像到你的人脸集合:
var faceCollection = recognitionService.FaceCollection;
var request = new AddSubjectExampleRequestByFilePath()
{
DetProbThreShold = 0.81m,
Subject = "Subject name",
FilePath = "Full file path"
};
var response = await faceCollection.AddAsync(request);
这个代码片段展示了如何识别未知的人脸。
从给定的图像中识别人脸
var recognizeRequest = new RecognizeFaceFromImageRequestByFilePath()
{
FilePath = "Full file path",
DetProbThreshold = 0.81m,
FacePlugins = new List<string>()
{
"landmarks",
"gender",
"age",
"detector",
"calculator"
},
Limit = 0,
PredictionCount = 1,
Status = true
};
var recognizeResponse = await recognitionService.RecognizeFaceFromImage.RecognizeAsync(recognizeRequest);
CompreFace 全局对象用于初始化与 CompreFace 的连接并设置选项的默认值。
如果适用,每个服务方法都将使用默认值。
构造函数:
CompreFaceClient(domain, port)
参数 | 类型 | 是否必须 | 注释 |
---|---|---|---|
domain | string | 是 | CompreFace 的域名和协议。 例如: http://localhost |
port | string | 是 | CompreFace 的端口。 例如:8000 |
例子:
var client = new CompreFaceClient(
domain: "http://localhost",
port: "8000");
client.GetCompreFaceService<RecognitionService>(apiKey)
初始化人脸识别服务对象。
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
apiKey | string | 是 | UUID 格式的人脸识别 Api 密钥 |
例子:
var apiKey = "00000000-0000-0000-0000-000000000002";
var recognitionService = client.GetCompreFaceService<RecognitionService>(apiKey);
client.GetCompreFaceService<FaceDetectionService>(apiKey)
初始化人脸检测服务对象。
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
apiKey | string | 是 | UUID 格式的人脸识别 Api 密钥 |
例子:
var apiKey = "00000000-0000-0000-0000-000000000003";
var faceDetectionService = client.GetCompreFaceService<FaceDetectionService>(api_key);
client.GetCompreFaceService<FaceVerificationService>(apiKey)
初始化人脸验证服务对象。
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
apiKey | string | 是 | UUID 格式的人脸识别 Api 密钥 |
例子:
var apiKey = "00000000-0000-0000-0000-000000000004";
var faceVerificationService = client.GetCompreFaceService<FaceVerificationService>(api_key);
所有可选属性都位于“BaseFaceRequest”类中。
public class BaseFaceRequest
{
public int? Limit { get; set; }
public decimal DetProbThreshold { get; set; }
public IList<string> FacePlugins { get; set; }
public bool Status { get; set; }
}
BaseFaceRequest
类由多个 DTO 类继承,这些 DTO 类被序列化为请求格式。
这是请求正文中的描述。
选项 | 类型 | 解释 |
---|---|---|
det_prob_threshold | float | 所识别的面孔实际上是面孔所需的最低置信度。 值介于 0.0 和 1.0 之间 |
limit | integer | 图像上要识别的最大人脸数量。 它首先识别最大的面孔。 值为 0 表示没有限制。 默认值:0 |
prediction_count | integer | 每张脸的主题预测的最大数量。 它返回最相似的主题。 默认值:1 |
face_plugins | string | 以逗号分隔的面部插件。 如果为空,则不返回任何附加信息。Learn more |
status | boolean | 如果 true 包含系统信息,例如execution_time 和plugin_version 字段。 默认值为 false |
物体人脸识别示例:
var recognizeRequest = new RecognizeFaceFromImageRequestByFilePath()
{
FilePath = "Full file path",
DetProbThreshold = 0.81m,
FacePlugins = new List<string>()
{
"landmarks",
"gender",
"age",
"detector",
"calculator"
},
Limit = 0,
PredictionCount = 1,
Status = true
};
var recognizeResponse = await recognitionService.RecognizeFaceFromImage.RecognizeAsync(recognizeRequest);
人脸识别服务用于进行人脸识别。
这意味着您首先需要将已知的面孔上传到人脸集合中,然后再识别其中的未知面孔。
当您上传未知面孔时,服务会返回与其最相似的面孔。
此外,人脸识别服务还支持验证端点,以检查人脸集合中的此人是否正确。
有关更多信息,请参阅 CompreFace 页面。
方法:
识别图像中的所有面孔。
第一个参数是图像位置,它可以是 url、本地路径或字节。
await recognitionService.RecognizeFaceFromImage.RecognizeAsync(recognizeRequest)
参数 | 类型 | 是否必需 | 解释 |
---|---|---|---|
recognizeRequest | RecognizeFaceFromImageRequestByFilePath | 是 |
RecognizeFaceFromImageRequestByFilePath
这是序列化为 JSON 的数据传输对象。
public class RecognizeFaceFromImageRequestByFilePath : BaseRecognizeFaceFromImageRequest
{
public string FilePath { get; set; }
}
BaseRecognizeFaceFromImageRequest
类:
public class BaseRecognizeFaceFromImageRequest : BaseFaceRequest
{
public int? PredictionCount { get; set; }
}
BaseFaceRequest
类包含 可选 属性:
public class BaseFaceRequest
{
public int? Limit { get; set; }
public decimal DetProbThreshold { get; set; }
public IList<string> FacePlugins { get; set; } = new List<string>()
public bool Status { get; set; }
}
选项 | 类型 | 解释 |
---|---|---|
det_prob_threshold | float | 所识别的面孔实际上是面孔所需的最低置信度。 值介于 0.0 和 1.0 之间 |
limit | integer | 图像上要识别的最大人脸数量。 它首先识别最大的面孔。 值为 0 表示没有限制。 默认值:0 |
prediction_count | integer | 每张脸的主题预测的最大数量。 它返回最相似的主题。 默认值:1 |
face_plugins | string | 以逗号分隔的面部插件。 如果为空,则不返回任何附加信息。Learn more |
status | boolean | 如果 true 包含系统信息,例如execution_time 和plugin_version 字段。 默认值为 false |
ComreFace API 的响应:
{
"result" : [ {
"age" : {
"probability": 0.9308982491493225,
"high": 32,
"low": 25
},
"gender" : {
"probability": 0.9898611307144165,
"value": "female"
},
"mask" : {
"probability": 0.9999470710754395,
"value": "without_mask"
},
"embedding" : [ 9.424854069948196E-4, "...", -0.011415496468544006 ],
"box" : {
"probability" : 1.0,
"x_max" : 1420,
"y_max" : 1368,
"x_min" : 548,
"y_min" : 295
},
"landmarks" : [ [ 814, 713 ], [ 1104, 829 ], [ 832, 937 ], [ 704, 1030 ], [ 1017, 1133 ] ],
"subjects" : [ {
"similarity" : 0.97858,
"subject" : "subject1"
} ],
"execution_time" : {
"age" : 28.0,
"gender" : 26.0,
"detector" : 117.0,
"calculator" : 45.0,
"mask": 36.0
}
} ],
"plugins_versions" : {
"age" : "agegender.AgeDetector",
"gender" : "agegender.GenderDetector",
"detector" : "facenet.FaceDetector",
"calculator" : "facenet.Calculator",
"mask": "facemask.MaskDetector"
}
}
元素 | 类型 | 描述 |
---|---|---|
age | object | 检测到的年龄范围。 仅在启用 age 插件 时返回 |
gender | object | 检测到性别。 仅在启用 性别插件 时返回 |
mask | object | 检测到面具。 仅在启用面罩插件时返回。 |
embedding | array | 人脸嵌入。 仅在启用 计算器插件 时返回 |
box | object | 该人脸的边界框参数列表 |
probability | float | 找到的人脸实际上是人脸的概率 |
x_max, y_max, x_min, y_min | integer | 包含脸部的框架的坐标 |
landmarks | array | 包含面部标志的框架的坐标列表。 |
subjects | list | <prediction_count> 的相似主题列表(按相似度排序) |
similarity | float | 该图像预测人的相似度 |
subject | string | 人脸集合中的主体名称 |
execution_time | object | 所有插件的执行时间 |
plugins_versions | object | 包含有关插件版本的信息 |
此 JSON 响应被反序列化为RecognizeFaceFromImageResponse
数据传输对象 (DTO)。
public class RecognizeFaceFromImageResponse
{
public IList<Result> Result { get; set; }
public PluginVersions PluginsVersions { get; set; }
}
public class Result : BaseResult
{
public IList<SimilarSubject> Subjects { get; set; }
}
BaseResult
类:
public class BaseResult
{
public Age Age { get; set; }
public Gender Gender { get; set; }
public Mask Mask { get; set; }
public Box Box { get; set; }
public IList<List<int>> Landmarks { get; set; }
public ExecutionTime ExecutionTime { get; set; }
public IList<decimal> Embedding { get; set; }
}
await recognitionService.RecognizeFaceFromImage.VerifyAsync(request);
比较给定图像与面部集合中的图像的相似度。
参数 | 类型 | 是否必须 | |
---|---|---|---|
request | VerifyFacesFromImageRequest | 是否必须 |
VerifyFacesFromImageRequest
这是序列化为 JSON 的数据传输对象。
public class VerifyFacesFromImageRequest : BaseVerifyFacesFromImageRequest
{
public string FilePath { get; set; }
}
BaseVerifyFacesFromImageRequest
类:
public class BaseVerifyFacesFromImageRequest : BaseFaceRequest
{
public Guid ImageId { get; set; }
}
BaseFaceRequest
类包含 可选 属性:
public class BaseFaceRequest
{
public int? Limit { get; set; }
public decimal DetProbThreshold { get; set; }
public IList<string> FacePlugins { get; set; }
public bool Status { get; set; }
}
选项 | 类型 | 解释 |
---|---|---|
det_prob_threshold | float | 所识别的面孔实际上是面孔所需的最低置信度。 值介于 0.0 和 1.0 之间 |
limit | integer | 图像上要识别的最大人脸数量。 它首先识别最大的面孔。 值为 0 表示没有限制。 默认值:0 |
prediction_count | integer | 每张脸的主题预测的最大数量。 它返回最相似的主题。 默认值:1 |
face_plugins | string | 以逗号分隔的面部插件。 如果为空,则不返回任何附加信息。Learn more |
status | boolean | 如果 true 包含系统信息,例如execution_time 和plugin_version 字段。 默认值为 false |
回复:
{
"result" : [ {
"age" : {
"probability": 0.9308982491493225,
"high": 32,
"low": 25
},
"gender" : {
"probability": 0.9898611307144165,
"value": "female"
},
"mask" : {
"probability": 0.9999470710754395,
"value": "without_mask"
},
"embedding" : [ 9.424854069948196E-4, "...", -0.011415496468544006 ],
"box" : {
"probability" : 1.0,
"x_max" : 1420,
"y_max" : 1368,
"x_min" : 548,
"y_min" : 295
},
"landmarks" : [ [ 814, 713 ], [ 1104, 829 ], [ 832, 937 ], [ 704, 1030 ], [ 1017, 1133 ] ],
"subjects" : [ {
"similarity" : 0.97858,
"subject" : "subject1"
} ],
"execution_time" : {
"age" : 28.0,
"gender" : 26.0,
"detector" : 117.0,
"calculator" : 45.0,
"mask": 36.0
}
} ],
"plugins_versions" : {
"age" : "agegender.AgeDetector",
"gender" : "agegender.GenderDetector",
"detector" : "facenet.FaceDetector",
"calculator" : "facenet.Calculator",
"mask": "facemask.MaskDetector"
}
}
元素 | 类型 | 描述 |
---|---|---|
age | object | 检测到的年龄范围。 仅在启用 age 插件 时返回 |
gender | object | 检测到性别。 仅在启用 性别插件 时返回 |
mask | object | 检测到面具。 仅在启用面罩插件时返回。 |
embedding | array | 人脸嵌入。 仅在启用 计算器插件 时返回 |
box | object | 该人脸的边界框参数列表 |
probability | float | 找到的人脸实际上是人脸的概率 |
x_max, y_max, x_min, y_min | integer | 包含脸部的框架的坐标 |
landmarks | array | 包含面部标志的框架的坐标列表。 |
subjects | list | <prediction_count> 的相似主题列表(按相似度排序) |
similarity | float | 该图像预测人的相似度 |
subject | string | 人脸集合中的主体名称 |
execution_time | object | 所有插件的执行时间 |
plugins_versions | object | 包含有关插件版本的信息 |
此 JSON 响应被反序列化为VerifyFacesFromImageResponse
数据传输对象 (DTO)。
public class VerifyFacesFromImageResponse
{
public IList<Result> Result { get; set; }
public PluginVersions PluginsVersions { get; set; }
}
public class Result : BaseResult
{
public string Subject { get; set; }
public decimal Similarity { get; set; }
}
BaseResult
类:
public class BaseResult
{
public Age Age { get; set; }
public Gender Gender { get; set; }
public Mask Mask { get; set; }
public Box Box { get; set; }
public IList<List<int>> Landmarks { get; set; }
public ExecutionTime ExecutionTime { get; set; }
public IList<decimal> Embedding { get; set; }
}
ExecutionTime
类:
public class ExecutionTime
{
public decimal Age { get; set; }
public decimal Gender { get; set; }
public decimal Detector { get; set; }
public decimal Calculator { get; set; }
public decimal Mask { get; set; }
}
recognitionService.FaceCollection
返回人脸集合对象
面部收集可用于管理已知面部,例如 添加、列出或删除它们。
人脸识别是针对人脸集合中保存的已知人脸进行的,因此在使用“识别”方法之前需要将至少一张人脸保存到人脸集合中。
有关面部收集和管理示例的更多信息此处
方法:
注:这里的Subject被翻译成“主题”,但其实就是指:某个人。一个人,可以有一张或多张照片。
这将通过保存图像创建主题的示例。 您可以添加任意数量的图像来训练系统。 图像应该仅包含一张脸。
await recognitionService.FaceCollection.AddAsync(request);
参数 | 类型 | 是否 | 解释 |
---|---|---|---|
request | AddSubjectExampleRequestByFilePath | 是 |
AddSubjectExampleRequestByFilePath
这是序列化为 JSON 的数据传输对象。
public class AddSubjectExampleRequestByFilePath : BaseExampleRequest
{
public string FilePath { get; set; }
}
BaseExampleRequest
类:
namespace Exadel.Compreface.DTOs.HelperDTOs.BaseDTOs
{
public class BaseExampleRequest
{
public string Subject { get; set; }
public decimal? DetProbThreShold { get; set; }
}
}
选项 | 类型 | 解释 |
---|---|---|
det_prob_threshold | float | 所识别的面孔实际上是面孔所需的最低置信度。 值介于 0.0 和 1.0 之间 |
DetProbThreShold
是可选属性。
Response:
{
"image_id": "6b135f5b-a365-4522-b1f1-4c9ac2dd0728",
"subject": "SubjectName"
}
元素 | 类型 | 描述 |
---|---|---|
image_id | UUID | UUID of uploaded image |
subject | string | Subject of the saved image |
此 JSON 响应被反序列化为AddSubjectExampleResponse
数据传输对象 (DTO)。
public class AddSubjectExampleResponse
{
public Guid ImageId { get; set; }
public string Subject { get; set; }
}
主题的所有已保存示例的列表
要检索保存在面部集合中的主题列表:
await recognitionService.FaceCollection.ListAsync(request);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | ListAllSubjectExamplesRequest | 是 |
ListAllSubjectExamplesRequest
这是序列化为 JSON 的数据传输对象。
public class ListAllSubjectExamplesRequest
{
public int? Page { get; set; }
public int? Size { get; set; }
public string Subject { get; set; }
}
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
Page | int | 可选 | 要返回的示例的页码。 可用于分页。 默认值为0。从0.6版本开始。 |
Size | int | 可选 | 页面上的面孔(页面大小)。 可用于分页。 默认值为 20。从 0.6 版本开始。 |
Subject | int | 可选 | 端点应返回什么主题示例。 如果为空,则返回所有主题的示例。 从1.0版本开始 |
Response:
{
"faces": [
{
"image_id": <image_id>,
"subject": <subject>
},
...
]
}
元素 | 类型 | 描述 |
---|---|---|
image_id | UUID | 人脸UUID |
subject | string | 为此 api 密钥保存其照片的人员的 |
此 JSON 响应被反序列化为ListAllSubjectExamplesResponse
数据传输对象 (DTO)。
public class ListAllSubjectExamplesResponse
{
public IList<Face> Faces { get; set; }
public int PageNumber { get; set; }
public int PageSize { get; set; }
public int TotalPages { get; set; }
public int TotalElements { get; set; }
}
Face
类:
public class Face
{
public Guid ImageId { get; set; }
public string Subject{ get; set; }
}
要删除<主题>的所有图像示例:
recognitionService.FaceCollection.DeleteAllAsync(request);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | DeleteAllExamplesRequest | 是否必须 |
DeleteAllExamplesRequest
这是序列化为 JSON 的数据传输对象。
public class DeleteMultipleExampleRequest
{
public IList<Guid> ImageIdList { get; set; }
}
Response:
{
"deleted": <count>
}
元素 | 类型 | 描述 |
---|---|---|
deleted | integer | 删除的人脸数量 |
此 JSON 响应被反序列化为DeleteMultipleExamplesResponse
数据传输对象 (DTO)。
public class DeleteMultipleExamplesResponse
{
public IList<Face> Faces { get; set; }
}
按 ID 删除主题的示例
按 ID 删除图像:
await recognitionService.FaceCollection.DeleteAsync(request);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | DeleteImageByIdRequest | 是 |
DeleteImageByIdRequest
这是序列化为 JSON 的数据传输对象。
public class DeleteImageByIdRequest
{
public Guid ImageId { get; set; }
}
Response:
{
"image_id": <image_id>,
"subject": <subject>
}
元素 | 类型 | 描述 |
---|---|---|
image_id | UUID | 被删除的人脸的UUID |
subject | string | 为此 api 密钥保存其照片的人员的 |
此 JSON 响应被反序列化为DeleteImageByIdResponse
数据传输对象 (DTO)。
public class DeleteImageByIdResponse
{
public Guid ImageId { get; set; }
public string Subject { get; set; }
}
按 ID 下载图像:
await recognitionService.FaceCollection.DownloadAsync(downloadImageByIdRequest);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | DownloadImageByIdDirectlyRequest | 是 |
DownloadImageByIdDirectlyRequest
这是序列化为 JSON 的数据传输对象。
public class DownloadImageByIdDirectlyRequest
{
public Guid ImageId { get; set; }
public Guid RecognitionApiKey { get; set; }
}
响应正文是二值图像。 如果找不到图像则为空字节。
0.6版本以来
要按 ID 下载主题的图像示例:
await recognitionService.FaceCollection.DownloadAsync(downloadImageBySubjectIdRequest);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | DownloadImageByIdFromSubjectRequest | 是 |
DownloadImageByIdFromSubjectRequest
这是序列化为 JSON 的数据传输对象。
public class DownloadImageByIdFromSubjectRequest
{
public Guid ImageId { get; set; }
}
Response body是二值图像。 如果找不到图像则为空字节。
recognitionService.Subject
返回主题对象
主题对象允许直接使用主题(而不是通过主题示例)。
有关主题的更多信息此处
方法:
在人脸收藏中创建一个新主题。
await recognitionService.Subject.AddAsync(request);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | AddSubjectRequest | 是 |
AddSubjectRequest
这是序列化为 JSON 的数据传输对象。
public class AddSubjectRequest
{
public string Subject { get; set; }
}
Response:
{
"subject": "subject1"
}
参数 | 类型 | 描述 |
---|---|---|
subject | string | 是主题的名称 |
该 JSON 响应被反序列化为AddSubjectResponse
数据传输对象(DTO)。
public class AddSubjectResponse
{
public string Subject { get; set; }
}
返回与人脸集合相关的所有主题。
await recognitionService.Subject.ListAsync();
Response:
{
"subjects": [
"<subject_name1>",
"<subject_name2>"
]
}
元素 | 类型 | 描述 |
---|---|---|
subjects | array | 人脸收藏中的主题列表 |
此 JSON 响应被反序列化为“GetAllSubjectResponse”数据传输对象 (DTO)。
public class GetAllSubjectResponse
{
public IList<string> Subjects { get; set; }
}
重命名现有主题。 如果新的主题名称已存在,则主题将被合并 - 旧主题名称中的所有面孔将重新分配给具有新名称的主题,旧主题将被删除。
await recognitionService.Subject.RenameAsync(request);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | RenameSubjectRequest | 是 |
RenameSubjectRequest
这是序列化为 JSON 的数据传输对象。
public class RenameSubjectRequest
{
public string CurrentSubject { get; set; }
public string Subject { get; set; }
}
Response:
{
"updated": "true|false"
}
元素 | 类型 | 描述 |
---|---|---|
updated | boolean | failed or success |
此 JSON 响应被反序列化为RenameSubjectResponse
数据传输对象 (DTO)。
public class RenameSubjectResponse
{
public bool Updated { get; set; }
}
删除现有主题和所有已保存的面孔。
await recognitionService.Subject.DeleteAsync(request);
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | DeleteSubjectRequest | 是 |
DeleteSubjectRequest
这是序列化为 JSON 的数据传输对象。
public class RenameSubjectRequest
{
public string CurrentSubject { get; set; }
public string Subject { get; set; }
}
Response:
{
"subject": "subject1"
}
元素 | 类型 | 描述 |
---|---|---|
subject | string | is the name of the subject |
此 JSON 响应被反序列化为DeleteSubjectResponse
数据传输对象 (DTO)。
public class DeleteSubjectResponse
{
public string Subject { get; set; }
}
删除所有现有主题和所有已保存的面孔。
await recognitionService.Subject.DeleteAllAsync();
Response:
{
"deleted": "<count>"
}
元素 | 类型 | 描述 |
---|---|---|
deleted | integer | number of deleted subjects |
此 JSON 响应被反序列化为DeleteAllSubjectsResponse
数据传输对象 (DTO)。
public class DeleteAllSubjectsResponse
{
public int Deleted { get; set; }
}
人脸检测服务用于检测图像中的人脸。
方法:
await faceDetectionService.DetectAsync(request);
查找图像上的所有面孔。
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | FaceDetectionRequestByFilePath | 是 |
FaceDetectionRequestByFilePath
这是序列化为 JSON 的数据传输对象。
public class FaceDetectionRequestByFilePath : BaseFaceRequest
{
public string FilePath { get; set; }
}
BaseFaceRequest
类包含 可选 属性:
public class BaseFaceRequest
{
public int? Limit { get; set; }
public decimal DetProbThreshold { get; set; }
public IList<string> FacePlugins { get; set; }
public bool Status { get; set; }
}
选项 | 类型 | 解释 |
---|---|---|
det_prob_threshold | float | 所识别的面孔实际上是面孔所需的最低置信度。 值介于 0.0 和 1.0 之间 |
limit | integer | 图像上要识别的最大人脸数量。 它首先识别最大的面孔。 值为 0 表示没有限制。 默认值:0 |
prediction_count | integer | 每张脸的主题预测的最大数量。 它返回最相似的主题。 默认值:1 |
face_plugins | string | 以逗号分隔的面部插件。 如果为空,则不返回任何附加信息。Learn more |
status | boolean | 如果 true 包含系统信息,例如execution_time 和plugin_version 字段。 默认值为 false |
Response:
{
"result" : [ {
"age" : {
"probability": 0.9308982491493225,
"high": 32,
"low": 25
},
"gender" : {
"probability": 0.9898611307144165,
"value": "female"
},
"mask" : {
"probability": 0.9999470710754395,
"value": "without_mask"
},
"embedding" : [ -0.03027934394776821, "...", -0.05117142200469971 ],
"box" : {
"probability" : 0.9987509250640869,
"x_max" : 376,
"y_max" : 479,
"x_min" : 68,
"y_min" : 77
},
"landmarks" : [ [ 156, 245 ], [ 277, 253 ], [ 202, 311 ], [ 148, 358 ], [ 274, 365 ] ],
"execution_time" : {
"age" : 30.0,
"gender" : 26.0,
"detector" : 130.0,
"calculator" : 49.0,
"mask": 36.0
}
} ],
"plugins_versions" : {
"age" : "agegender.AgeDetector",
"gender" : "agegender.GenderDetector",
"detector" : "facenet.FaceDetector",
"calculator" : "facenet.Calculator",
"mask": "facemask.MaskDetector"
}
}
元素 | 类型 | 描述 |
---|---|---|
age | object | 检测到的年龄范围。 仅在启用 age 插件 时返回 |
gender | object | 检测到性别。 仅在启用 性别插件 时返回 |
mask | object | 检测到面具。 仅在启用面罩插件时返回。 |
embedding | array | 人脸嵌入。 仅在启用 计算器插件 时返回 |
box | object | 该人脸的边界框参数列表(在processedImage上) |
probability | float | 找到的人脸实际上是人脸的概率(在processedImage上) |
x_max, y_max, x_min, y_min | integer | 包含脸部的帧的坐标(在processedImage上) |
landmarks | array | 包含面部标志的框架的坐标列表。 仅在启用 landmarks 插件 时返回 |
execution_time | object | 所有插件的执行时间 |
plugins_versions | object | 包含有关插件版本的信息 |
此 JSON 响应被反序列化为FaceDetectionResponse
数据传输对象 (DTO)。
public class FaceDetectionResponse
{
public IList<BaseResult> Result { get; set; }
public PluginVersions PluginsVersions { get; set; }
}
BaseResult
类:
public class BaseResult
{
public Age Age { get; set; }
public Gender Gender { get; set; }
public Mask Mask { get; set; }
public Box Box { get; set; }
public IList<List<int>> Landmarks { get; set; }
public ExecutionTime ExecutionTime { get; set; }
public IList<decimal> Embedding { get; set; }
}
人脸验证服务用于比较两个图像。
源图像应仅包含一张面孔,该面孔将与目标图像上的所有面孔进行比较。
方法:
await faceVerificationService.VerifyAsync(request);
比较参数中提供的两个图像。 源图像应仅包含一张人脸,它将与目标图像中的所有人脸进行比较。
参数 | 类型 | 是否必须 | 解释 |
---|---|---|---|
request | FaceVerificationRequestByFilePath | 是否必须 |
FaceVerificationRequestByFilePath
这是序列化为 JSON 的数据传输对象。
public class FaceVerificationRequestByFilePath : BaseFaceRequest
{
public string SourceImageFilePath { get; set; }
public string TargetImageFilePath { get; set; }
}
BaseFaceRequest
类包含 可选 属性:
public class BaseFaceRequest
{
public int? Limit { get; set; }
public decimal DetProbThreshold { get; set; }
public IList<string> FacePlugins { get; set; }
public bool Status { get; set; }
}
选项 | 类型 | 解释 |
---|---|---|
det_prob_threshold | float | 所识别的面孔实际上是面孔所需的最低置信度。 值介于 0.0 和 1.0 之间 |
limit | integer | 图像上要识别的最大人脸数量。 它首先识别最大的面孔。 值为 0 表示没有限制。 默认值:0 |
prediction_count | integer | 每张脸的主题预测的最大数量。 它返回最相似的主题。 默认值:1 |
face_plugins | string | 以逗号分隔的面部插件。 如果为空,则不返回任何附加信息。Learn more |
status | boolean | 如果 true 包含系统信息,例如execution_time 和plugin_version 字段。 默认值为 false |
Response:
{
"result" : [{
"source_image_face" : {
"age" : {
"probability": 0.9308982491493225,
"high": 32,
"low": 25
},
"gender" : {
"probability": 0.9898611307144165,
"value": "female"
},
"mask" : {
"probability": 0.9999470710754395,
"value": "without_mask"
},
"embedding" : [ -0.0010271212086081505, "...", -0.008746841922402382 ],
"box" : {
"probability" : 0.9997453093528748,
"x_max" : 205,
"y_max" : 167,
"x_min" : 48,
"y_min" : 0
},
"landmarks" : [ [ 92, 44 ], [ 130, 68 ], [ 71, 76 ], [ 60, 104 ], [ 95, 125 ] ],
"execution_time" : {
"age" : 85.0,
"gender" : 51.0,
"detector" : 67.0,
"calculator" : 116.0,
"mask": 36.0
}
},
"face_matches": [
{
"age" : {
"probability": 0.9308982491493225,
"high": 32,
"low": 25
},
"gender" : {
"probability": 0.9898611307144165,
"value": "female"
},
"mask" : {
"probability": 0.9999470710754395,
"value": "without_mask"
},
"embedding" : [ -0.049007344990968704, "...", -0.01753818802535534 ],
"box" : {
"probability" : 0.99975,
"x_max" : 308,
"y_max" : 180,
"x_min" : 235,
"y_min" : 98
},
"landmarks" : [ [ 260, 129 ], [ 273, 127 ], [ 258, 136 ], [ 257, 150 ], [ 269, 148 ] ],
"similarity" : 0.97858,
"execution_time" : {
"age" : 59.0,
"gender" : 30.0,
"detector" : 177.0,
"calculator" : 70.0,
"mask": 36.0
}
}],
"plugins_versions" : {
"age" : "agegender.AgeDetector",
"gender" : "agegender.GenderDetector",
"detector" : "facenet.FaceDetector",
"calculator" : "facenet.Calculator",
"mask": "facemask.MaskDetector"
}
}]
}
元素 | 类型 | 描述 |
---|---|---|
source_image_face | object | 有关源图像脸部的附加信息 |
face_matches | array | 人脸验证结果 |
age | object | 检测到的年龄范围。 仅在启用 age 插件 时返回 |
gender | object | 检测到性别。 仅在启用 性别插件 时返回 |
mask | object | 检测到面具。 仅在启用面罩插件时返回。 |
embedding | array | 人脸嵌入。 仅在启用 计算器插件 时返回 |
box | object | 该面的边界框参数列表 |
probability | float | 找到的人脸实际上是人脸的概率 |
x_max, y_max, x_min, y_min | integer | 包含脸部的框架的坐标 |
landmarks | array | 包含面部标志的框架的坐标列表。 仅在启用 landmarks 插件 时返回 |
similarity | float | 该脸部与源图像上的脸部之间的相似度 |
execution_time | object | 所有插件的执行时间 |
plugins_versions | object | 包含有关插件版本的信息 |
此 JSON 响应被反序列化为FaceVerificationResponse
数据传输对象 (DTO)。
public class FaceVerificationResponse
{
public IList<Result> Result { get; set; }
}
public class Result
{
public SourceImageFace SourceImageFace { get; set; }
public IList<FaceMatches> FaceMatches { get; set; }
public PluginVersions PluginsVersions { get; set; }
}
public class SourceImageFace : BaseResult
{ }
public class FaceMatches : BaseResult
{
public decimal Similarity { get; set; }
}
BaseResult
类:
public class BaseResult
{
public Age Age { get; set; }
public Gender Gender { get; set; }
public Mask Mask { get; set; }
public Box Box { get; set; }
public IList<List<int>> Landmarks { get; set; }
public ExecutionTime ExecutionTime { get; set; }
public IList<decimal> Embedding { get; set; }
}
| float | 找到的人脸实际上是人脸的概率 |
| x_max, y_max, x_min, y_min | integer | 包含脸部的框架的坐标 |
| landmarks | array | 包含面部标志的框架的坐标列表。 仅在启用 landmarks 插件 时返回 |
| similarity | float | 该脸部与源图像上的脸部之间的相似度 |
| execution_time | object | 所有插件的执行时间 |
| plugins_versions | object | 包含有关插件版本的信息 |
此 JSON 响应被反序列化为FaceVerificationResponse
数据传输对象 (DTO)。
public class FaceVerificationResponse
{
public IList<Result> Result { get; set; }
}
public class Result
{
public SourceImageFace SourceImageFace { get; set; }
public IList<FaceMatches> FaceMatches { get; set; }
public PluginVersions PluginsVersions { get; set; }
}
public class SourceImageFace : BaseResult
{ }
public class FaceMatches : BaseResult
{
public decimal Similarity { get; set; }
}
BaseResult
类:
public class BaseResult
{
public Age Age { get; set; }
public Gender Gender { get; set; }
public Mask Mask { get; set; }
public Box Box { get; set; }
public IList<List<int>> Landmarks { get; set; }
public ExecutionTime ExecutionTime { get; set; }
public IList<decimal> Embedding { get; set; }
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。