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
您可以在示例文件夹中的存储库中找到下面的所有示例。您也可以查看识别示例应用程序。这是一个简单的示例示例。
要开始使用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);
Global Compreface对象用于初始化连接到compreface和设置选项的默认值。如果适用,将在每种服务方法中使用默认值。
构造函数: CompreFaceClient(domain, port)
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 领域 | 细绳 | 必需的 | 带有compreface位置的协议的域。例如http://localhost |
| 港口 | 细绳 | 必需的 | compreface端口。例如8000 |
例子:
var client = new CompreFaceClient(
domain: "http://localhost",
port: "8000");
client.GetCompreFaceService<RecognitionService>(apiKey)INITS面部识别服务对象。
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| Apikey | 细绳 | 必需的 | 面部识别API键以UUID格式 |
例子:
var apiKey = "00000000-0000-0000-0000-000000000002";
var recognitionService = client.GetCompreFaceService<RecognitionService>(apiKey);
client.GetCompreFaceService<FaceDetectionService>(apiKey)INITS面部检测服务对象。
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| Apikey | 细绳 | 必需的 | 面部检测API键以UUID格式 |
例子:
var apiKey = "00000000-0000-0000-0000-000000000003";
var faceDetectionService = client.GetCompreFaceService<FaceDetectionService>(api_key);
client.GetCompreFaceService<FaceVerificationService>(apiKey)INITS面对验证服务对象。
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| Apikey | 细绳 | 必需的 | 面部验证API键以UUID格式 |
例子:
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 | 漂浮 | 最低要求的信心是公认的面孔实际上是一张脸。值在0.0至1.0之间 |
| 限制 | 整数 | 图像上的最大面孔数量要识别。它首先认识到最大的面孔。值0表示无限。默认值:0 |
| Prediction_Count | 整数 | 每张面的主题预测数量的最大数量。它返回最相似的主题。默认值:1 |
| face_plugins | 细绳 | 面部插件的逗号分隔。如果空,则不会返回其他信息。了解更多 |
| 地位 | 布尔 | 如果是true,则包括execution_time和plugin_version字段(例如expution_time)等系统信息。默认值是错误的 |
带有对象的面部识别的示例:
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)
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| ventizerequest | 识别fromagerequestbyfilepath | 必需的 |
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 | 漂浮 | 最低要求的信心是公认的面孔实际上是一张脸。值在0.0至1.0之间 |
| 限制 | 整数 | 图像上的最大面孔数量要识别。它首先认识到最大的面孔。值0表示无限。默认值:0 |
| Prediction_Count | 整数 | 每张面的主题预测数量的最大数量。它返回最相似的主题。默认值:1 |
| face_plugins | 细绳 | 面部插件的逗号分隔。如果空,则不会返回其他信息。了解更多 |
| 地位 | 布尔 | 如果是true,则包括execution_time和plugin_version字段(例如expution_time)等系统信息。默认值是错误的 |
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"
}
}
| 元素 | 类型 | 描述 |
|---|---|---|
| 年龄 | 目的 | 检测到的年龄范围。仅在启用年龄插件时返回 |
| 性别 | 目的 | 检测到性别。仅在启用性别插件时返回 |
| 面具 | 目的 | 检测到的面具。仅在启用面罩插件时返回。 |
| 嵌入 | 大批 | 面部嵌入。仅在启用计算器插件时返回 |
| 盒子 | 目的 | 该脸的边界框的参数列表 |
| 可能性 | 漂浮 | 发现的脸实际上是脸的概率 |
| x_max,y_max,x_min,y_min | 整数 | 框架的坐标 |
| 地标 | 大批 | 包含面部标记的框架坐标列表。 |
| 主题 | 列表 | 大小<preditiond_count>订购相似性的相似主题列表 |
| 相似 | 漂浮 | 在该图像上预测的人的相似性 |
| 主题 | 细绳 | 主题的名称 |
| execution_time | 目的 | 所有插件的执行时间 |
| plugins_versions | 目的 | 包含有关插件版本的信息 |
该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);
比较给定图像的相似之处与您的面部收藏中的图像。
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | verifyfacesFromageRequest | 必需的 |
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 | 漂浮 | 最低要求的信心是公认的面孔实际上是一张脸。值在0.0至1.0之间 |
| 限制 | 整数 | 图像上的最大面孔数量要识别。它首先认识到最大的面孔。值0表示无限。默认值:0 |
| Prediction_Count | 整数 | 每张面的主题预测数量的最大数量。它返回最相似的主题。默认值:1 |
| face_plugins | 细绳 | 面部插件的逗号分隔。如果空,则不会返回其他信息。了解更多 |
| 地位 | 布尔 | 如果是true,则包括execution_time和plugin_version字段(例如expution_time)等系统信息。默认值是错误的 |
回复:
{
"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 "
}
}| 元素 | 类型 | 描述 |
|---|---|---|
| 年龄 | 目的 | 检测到的年龄范围。仅在启用年龄插件时返回 |
| 性别 | 目的 | 检测到性别。仅在启用性别插件时返回 |
| 面具 | 目的 | 检测到的面具。仅在启用面罩插件时返回。 |
| 嵌入 | 大批 | 面部嵌入。仅在启用计算器插件时返回 |
| 盒子 | 目的 | 该脸的边界框的参数列表 |
| 可能性 | 漂浮 | 发现的脸实际上是脸的概率 |
| x_max,y_max,x_min,y_min | 整数 | 框架的坐标 |
| 地标 | 大批 | 包含面部标记的框架坐标列表。仅在启用地标插件时返回 |
| 相似 | 漂浮 | 在该图像上预测的人的相似性 |
| execution_time | 目的 | 所有插件的执行时间 |
| plugins_versions | 目的 | 包含有关插件版本的信息 |
该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
返回面部收集对象
面部收集可用于管理已知面孔,例如添加,列表或删除它们。
面部收集中已知的已知面孔进行了面部识别,因此在使用recognize方法之前,您需要将至少一个面孔保存到面部收藏中。
有关面部收集和管理示例的更多信息
方法:
这通过保存图像来创建主题的示例。您可以添加尽可能多的图像来训练系统。图像应仅包含一个脸。
await recognitionService.FaceCollection.AddAsync(request);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | 添加subjectexamplerequestbyFilePath | 必需的 |
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 | 漂浮 | 最低要求的信心是公认的面孔实际上是一张脸。值在0.0至1.0之间 |
DetProbThreShold是可选的属性。
回复:
{
"image_id": "6b135f5b-a365-4522-b1f1-4c9ac2dd0728",
"subject": "SubjectName"
}
| 元素 | 类型 | 描述 |
|---|---|---|
| image_id | UUID | 上传图像的UUID |
| 主题 | 细绳 | 保存图像的主题 |
该JSON响应应为AddSubjectExampleResponse数据传输对象(DTO)化。
public class AddSubjectExampleResponse
{
public Guid ImageId { get; set; }
public string Subject { get; set; }
}
检索保存在面部收藏中的主题列表:
await recognitionService.FaceCollection.ListAsync(request);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | ListallSubjectexamplesRequest | 必需的 |
ListAllSubjectExamplesRequest这是序列化与JSON的数据传输对象。
public class ListAllSubjectExamplesRequest
{
public int? Page { get; set; }
public int? Size { get; set; }
public string Subject { get; set; }
}
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 页 | int | 选修的 | 页码返回的示例。可用于分页。默认值为0。由于0.6版本。 |
| 尺寸 | int | 选修的 | 页面上的面(页面大小)。可用于分页。默认值为20。由于0.6版本。 |
| 主题 | int | 选修的 | 哪些主题示例端点应返回。如果为空,请返回所有主题的示例。自1.0版本以来 |
回复:
{
"faces": [
{
"image_id": <image_id>,
"subject": <subject>
},
...
]
}
| 元素 | 类型 | 描述 |
|---|---|---|
| image_id | UUID | 脸 |
| 主题 | 细绳 | 该人的照片保存了此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);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | DeleteallexamplesRequest | 必需的 |
DeleteAllExamplesRequest这是序列化与JSON的数据传输对象。
public class DeleteMultipleExampleRequest
{
public IList<Guid> ImageIdList { get; set; }
}
回复:
{
"deleted": <count>
}
| 元素 | 类型 | 描述 |
|---|---|---|
| 删除 | 整数 | 删除的面孔数量 |
该JSON响应应予以删除,以DeleteMultipleExamplesResponse数据传输对象(DTO)。
public class DeleteMultipleExamplesResponse
{
public IList<Face> Faces { get; set; }
}
通过ID删除图像:
await recognitionService.FaceCollection.DeleteAsync(request);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | DeleteImageByIdRequest | 必需的 |
DeleteImageByIdRequest这是序列化与JSON的数据传输对象。
public class DeleteImageByIdRequest
{
public Guid ImageId { get; set; }
}
回复:
{
"image_id": <image_id>,
"subject": <subject>
}
| 元素 | 类型 | 描述 |
|---|---|---|
| image_id | UUID | 被移开的脸 |
| 主题 | 细绳 | 该人的照片保存了此API键 |
该JSON响应应予以删除,以DeleteImageByIdResponse数据传输对象(DTO)。
public class DeleteImageByIdResponse
{
public Guid ImageId { get; set; }
public string Subject { get; set; }
}
通过ID下载图像:
await recognitionService.FaceCollection.DownloadAsync(downloadImageByIdRequest);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | 下载ImageByIdDirectlyRequest | 必需的 |
DownloadImageByIdDirectlyRequest这是序列化为JSON的数据传输对象。
public class DownloadImageByIdDirectlyRequest
{
public Guid ImageId { get; set; }
public Guid RecognitionApiKey { get; set; }
}
响应主体是二进制图像。如果找不到图像,则空字节。
since 0.6 version
通过ID下载主题的图像示例:
await recognitionService.FaceCollection.DownloadAsync(downloadImageBySubjectIdRequest);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | downloadimageByIdFromSubjectRequest | 必需的 |
DownloadImageByIdFromSubjectRequest这是序列化与JSON的数据传输对象。
public class DownloadImageByIdFromSubjectRequest
{
public Guid ImageId { get; set; }
}
响应主体是二进制图像。如果找不到图像,则空字节。
recognitionService.Subject
返回主题对象对象对象对象允许直接使用主题(不是通过主题示例)。有关主题的更多信息
方法:
在面部收藏中创建一个新主题。
await recognitionService.Subject.AddAsync(request);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | AddsubjectRequest | 必需的 |
AddSubjectRequest这是序列化与JSON的数据传输对象。
public class AddSubjectRequest
{
public string Subject { get; set; }
}
回复:
{
"subject" : " subject1 "
}| 元素 | 类型 | 描述 |
|---|---|---|
| 主题 | 细绳 | 是主题的名称 |
该JSON响应应为AddSubjectResponse数据传输对象(DTO)化。
public class AddSubjectResponse
{
public string Subject { get; set; }
}
返回与面部收集有关的所有主题。
await recognitionService.Subject.ListAsync();
回复:
{
"subjects" : [
" <subject_name1> " ,
" <subject_name2> "
]
}| 元素 | 类型 | 描述 |
|---|---|---|
| 主题 | 大批 | 面部收藏的主题列表 |
该JSON响应应序列化以GetAllSubjectResponse数据传输对象(DTO)。
public class GetAllSubjectResponse
{
public IList<string> Subjects { get; set; }
}
重命名现有主题。如果已经存在一个新的主题名称,则将合并主题 - 旧主题名称中的所有面孔都会用新名称重新分配给主题,并删除了旧主题。
await recognitionService.Subject.RenameAsync(request);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | RenamesubjectRequest | 必需的 |
RenameSubjectRequest这是序列化与JSON的数据传输对象。
public class RenameSubjectRequest
{
public string CurrentSubject { get; set; }
public string Subject { get; set; }
}
回复:
{
"updated" : " true|false "
}| 元素 | 类型 | 描述 |
|---|---|---|
| 更新 | 布尔 | 失败或成功 |
该JSON响应应予以序列化,以列为RenameSubjectResponse数据传输对象(DTO)。
public class RenameSubjectResponse
{
public bool Updated { get; set; }
}
删除现有的主题和所有保存的面孔。
await recognitionService.Subject.DeleteAsync(request);
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | deletesubjectRequest | 必需的 |
DeleteSubjectRequest这是序列化与JSON的数据传输对象。
public class RenameSubjectRequest
{
public string CurrentSubject { get; set; }
public string Subject { get; set; }
}
回复:
{
"subject" : " subject1 "
}| 元素 | 类型 | 描述 |
|---|---|---|
| 主题 | 细绳 | 是主题的名称 |
该JSON响应应序列化为DeleteSubjectResponse数据传输对象(DTO)。
public class DeleteSubjectResponse
{
public string Subject { get; set; }
}
删除所有现有主题和所有保存的面孔。
await recognitionService.Subject.DeleteAllAsync();
回复:
{
"deleted" : " <count> "
}| 元素 | 类型 | 描述 |
|---|---|---|
| 删除 | 整数 | 删除的主题数量 |
该JSON响应应予以删除为DeleteAllSubjectsResponse数据传输对象(DTO)。
public class DeleteAllSubjectsResponse
{
public int Deleted { get; set; }
}
面部检测服务用于检测图像中的面孔。
方法:
await faceDetectionService.DetectAsync(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 | 漂浮 | 最低要求的信心是公认的面孔实际上是一张脸。值在0.0至1.0之间 |
| 限制 | 整数 | 图像上的最大面孔数量要识别。它首先认识到最大的面孔。值0表示无限。默认值:0 |
| Prediction_Count | 整数 | 每张面的主题预测数量的最大数量。它返回最相似的主题。默认值:1 |
| face_plugins | 细绳 | 面部插件的逗号分隔。如果空,则不会返回其他信息。了解更多 |
| 地位 | 布尔 | 如果是true,则包括execution_time和plugin_version字段(例如expution_time)等系统信息。默认值是错误的 |
回复:
{
"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 "
}
}| 元素 | 类型 | 描述 |
|---|---|---|
| 年龄 | 目的 | 检测到的年龄范围。仅在启用年龄插件时返回 |
| 性别 | 目的 | 检测到性别。仅在启用性别插件时返回 |
| 面具 | 目的 | 检测到的面具。仅在启用面罩插件时返回。 |
| 嵌入 | 大批 | 面部嵌入。仅在启用计算器插件时返回 |
| 盒子 | 目的 | 该面的边界框的参数列表(在processedimage上) |
| 可能性 | 漂浮 | 发现的脸实际上是脸部(在processedimage上)的概率 |
| x_max,y_max,x_min,y_min | 整数 | 包含面部的框架的坐标(在processEdimage上) |
| 地标 | 大批 | 包含面部标记的框架坐标列表。仅在启用地标插件时返回 |
| execution_time | 目的 | 所有插件的执行时间 |
| plugins_versions | 目的 | 包含有关插件版本的信息 |
该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);
比较参数中提供的两个图像。源图像应仅包含一个脸,将其与目标图像中的所有脸部进行比较。
| 争论 | 类型 | 必需的 | 笔记 |
|---|---|---|---|
| 要求 | 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 | 漂浮 | 最低要求的信心是公认的面孔实际上是一张脸。值在0.0至1.0之间 |
| 限制 | 整数 | 图像上的最大面孔数量要识别。它首先认识到最大的面孔。值0表示无限。默认值:0 |
| Prediction_Count | 整数 | 每张面的主题预测数量的最大数量。它返回最相似的主题。默认值:1 |
| face_plugins | 细绳 | 面部插件的逗号分隔。如果空,则不会返回其他信息。了解更多 |
| 地位 | 布尔 | 如果是true,则包括execution_time和plugin_version字段(例如expution_time)等系统信息。默认值是错误的 |
回复:
{
"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 | 目的 | 有关源图像面的其他信息 |
| face_matches | 大批 | 面部验证的结果 |
| 年龄 | 目的 | 检测到的年龄范围。仅在启用年龄插件时返回 |
| 性别 | 目的 | 检测到性别。仅在启用性别插件时返回 |
| 面具 | 目的 | 检测到的面具。仅在启用面罩插件时返回。 |
| 嵌入 | 大批 | 面部嵌入。仅在启用计算器插件时返回 |
| 盒子 | 目的 | 该脸的边界框的参数列表 |
| 可能性 | 漂浮 | 发现的脸实际上是脸的概率 |
| x_max,y_max,x_min,y_min | 整数 | 框架的坐标 |
| 地标 | 大批 | 包含面部标记的框架坐标列表。仅在启用地标插件时返回 |
| 相似 | 漂浮 | 源图像上这张脸和脸之间的相似性 |
| execution_time | 目的 | 所有插件的执行时间 |
| plugins_versions | 目的 | 包含有关插件版本的信息 |
该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; }
}
贡献是使开源社区成为学习,启发和创造的惊人场所的原因。您所做的任何贡献都非常感谢。
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature )创建第一个贡献的拉请请求后,您将收到一个请求,以通过特殊消息对您的拉请请求发表评论,以签署我们的贡献许可协议。
请在此处报告任何错误。
如果要报告错误,请指定:
向我们发送反馈的最佳方法是在https://github.com/exadel-inc/compreface-net-sdk/issues上提交问题。
如果您提出了一项功能,请:
COMPREFACE .NET SDK是根据Apache 2.0许可发布的开源面部识别SDK。