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 사용의 간단한 예입니다.
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)얼굴 인식 서비스 객체.
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 아파키 | 끈 | 필수의 | UUID 형식의 얼굴 인식 API 키 |
예:
var apiKey = "00000000-0000-0000-0000-000000000002";
var recognitionService = client.GetCompreFaceService<RecognitionService>(apiKey);
client.GetCompreFaceService<FaceDetectionService>(apiKey)inits face detection service 객체.
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 아파키 | 끈 | 필수의 | UUID 형식의 얼굴 감지 API 키 |
예:
var apiKey = "00000000-0000-0000-0000-000000000003";
var faceDetectionService = client.GetCompreFaceService<FaceDetectionService>(api_key);
client.GetCompreFaceService<FaceVerificationService>(apiKey)inits face verification service 객체.
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 아파키 | 끈 | 필수의 | 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 클래스에 의해 상속됩니다.
다음은 요청 본문에서 어떻게 보이는지 설명합니다.
| 옵션 | 유형 | 메모 |
|---|---|---|
| det_prob_threshold | 뜨다 | 인식 된 얼굴이 실제로 얼굴이라는 최소 필수 확신. 값은 0.0에서 1.0 사이입니다 |
| 한계 | 정수 | 인식 할 이미지의 최대면 수. 가장 큰 얼굴을 먼저 인식합니다. 0의 값은 한계가 없습니다. 기본값 : 0 |
| prediction_count | 정수 | 얼굴 당 최대 주제 예측 수. 가장 유사한 주제를 반환합니다. 기본값 : 1 |
| face_plugins | 끈 | 얼굴 플러그인의 쉼표로 구분 된 슬러그. 비어 있으면 추가 정보가 반환되지 않습니다. 자세히 알아보십시오 |
| 상태 | 부울 | 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);
얼굴 인식 서비스는 얼굴 식별에 사용됩니다. 이것은 먼저 알려진 얼굴을 컬렉션에 직면 한 다음 알 수없는 얼굴을 인식해야한다는 것을 의미합니다. 알 수없는 얼굴을 업로드하면 서비스가 가장 유사한 얼굴을 반환합니다. 또한 얼굴 인식 서비스는 Face Collection 의이 사람이 올바른지 확인하기 위해 엔드 포인트 확인을 지원합니다. 자세한 내용은 CompReface 페이지를 참조하십시오.
행동 양식:
이미지에서 모든면을 인식합니다. 첫 번째 인수는 이미지 위치이며 URL, 로컬 경로 또는 바이트 일 수 있습니다.
await recognitionService.RecognizeFaceFromImage.RecognizeAsync(recognizeRequest)
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 인식 request | FacefacefromimagerequestbyFilePath를 인식하십시오 | 필수의 |
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 필드와 같은 시스템 정보가 포함됩니다. 기본값은 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"
}
}
| 요소 | 유형 | 설명 |
|---|---|---|
| 나이 | 물체 | 감지 된 연령대. 연령 플러그인이 활성화 된 경우에만 반환하십시오 |
| 성별 | 물체 | 성별 감지. 성별 플러그인이 활성화 된 경우에만 반환하십시오 |
| 마스크 | 물체 | 감지 된 마스크. 페이스 마스크 플러그인이 활성화 된 경우에만 반환하십시오. |
| 임베딩 | 정렬 | 얼굴 임베딩. 계산기 플러그인이 활성화 된 경우에만 반환하십시오 |
| 상자 | 물체 | 이 얼굴에 대한 경계 상자의 매개 변수 목록 |
| 개연성 | 뜨다 | 발견 된 얼굴이 실제로 얼굴 일 가능성 |
| x_max, y_max, x_min, y_min | 정수 | 얼굴을 포함하는 프레임의 좌표 |
| 랜드 마크 | 정렬 | 페이스 랜드 마크를 포함하는 프레임의 좌표 목록. |
| 주제 | 목록 | <prodiction_count> 크기의 유사한 주제 목록 유사성에 의한 순서 |
| 유사 | 뜨다 | 그 이미지에서 사람을 예측하는 것과 유사합니다 |
| 주제 | 끈 | 얼굴 컬렉션에있는 주제의 이름 |
| execution_time | 물체 | 모든 플러그인의 실행 시간 |
| 플러그인_versions | 물체 | 플러그인 버전에 대한 정보가 포함되어 있습니다 |
이 JSON 응답은 FacefaceFromImagerPonse 데이터 전송 객체 (DTO)를 RecognizeFaceFromImageResponse 위해 필사적입니다.
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);
주어진 이미지의 유사성을 얼굴 컬렉션의 이미지와 비교합니다.
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 요구 | 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 | 뜨다 | 인식 된 얼굴이 실제로 얼굴이라는 최소 필수 확신. 값은 0.0에서 1.0 사이입니다 |
| 한계 | 정수 | 인식 할 이미지의 최대면 수. 가장 큰 얼굴을 먼저 인식합니다. 0의 값은 한계가 없습니다. 기본값 : 0 |
| prediction_count | 정수 | 얼굴 당 최대 주제 예측 수. 가장 유사한 주제를 반환합니다. 기본값 : 1 |
| face_plugins | 끈 | 얼굴 플러그인의 쉼표로 구분 된 슬러그. 비어 있으면 추가 정보가 반환되지 않습니다. 자세히 알아보십시오 |
| 상태 | 부울 | 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 "
}
}| 요소 | 유형 | 설명 |
|---|---|---|
| 나이 | 물체 | 감지 된 연령대. 연령 플러그인이 활성화 된 경우에만 반환하십시오 |
| 성별 | 물체 | 성별 감지. 성별 플러그인이 활성화 된 경우에만 반환하십시오 |
| 마스크 | 물체 | 감지 된 마스크. 페이스 마스크 플러그인이 활성화 된 경우에만 반환하십시오. |
| 임베딩 | 정렬 | 얼굴 임베딩. 계산기 플러그인이 활성화 된 경우에만 반환하십시오 |
| 상자 | 물체 | 이 얼굴에 대한 경계 상자의 매개 변수 목록 |
| 개연성 | 뜨다 | 발견 된 얼굴이 실제로 얼굴 일 가능성 |
| x_max, y_max, x_min, y_min | 정수 | 얼굴을 포함하는 프레임의 좌표 |
| 랜드 마크 | 정렬 | 페이스 랜드 마크를 포함하는 프레임의 좌표 목록. 랜드 마크 플러그인이 활성화 된 경우에만 반환하십시오 |
| 유사 | 뜨다 | 그 이미지에서 사람을 예측하는 것과 유사합니다 |
| execution_time | 물체 | 모든 플러그인의 실행 시간 |
| 플러그인_versions | 물체 | 플러그인 버전에 대한 정보가 포함되어 있습니다 |
이 JSON 응답은 DTO ( VerifyFacesFromImageResponse 데이터 전송 객체)를 veryfacesfacesfaces로 검증합니다.
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
얼굴 수집 객체를 반환합니다
얼굴 컬렉션은 알려진 얼굴을 관리하는 데 사용될 수 있으며, 예를 들어 추가, 목록 또는 삭제.
페이스 컬렉션에서 저장된 FACES에 대해 얼굴 인식이 수행되므로 recognize 방법을 사용하기 전에 얼굴 컬렉션에 최소한 하나의 얼굴을 저장해야합니다.
얼굴 수집 및 관리 예제에 대한 자세한 내용은 여기를 참조하십시오
행동 양식:
이것은 이미지를 저장하여 주제의 예를 만듭니다. 시스템을 훈련하려는만큼의 이미지를 추가 할 수 있습니다. 이미지에는 단 하나의 얼굴 만 포함되어야합니다.
await recognitionService.FaceCollection.AddAsync(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 | 뜨다 | 인식 된 얼굴이 실제로 얼굴이라는 최소 필수 확신. 값은 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 | 얼굴의 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 | 제거 된 얼굴의 uuid |
| 주제 | 끈 | 이 API 키에 대한 사진이 저장된 사람의 |
이 JSON 응답은 DeleteImageByIdResponse 데이터 전송 객체 (DTO)로 필사적입니다.
public class DeleteImageByIdResponse
{
public Guid ImageId { get; set; }
public string Subject { get; set; }
}
ID로 이미지를 다운로드하려면 :
await recognitionService.FaceCollection.DownloadAsync(downloadImageByIdRequest);
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 요구 | downloadImageByIdDirectLyRequest | 필수의 |
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);
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 요구 | AddSubjectefeSt | 필수의 |
AddSubjectRequest 는 JSON에 직렬화 된 데이터 전송 객체입니다.
public class AddSubjectRequest
{
public string Subject { get; set; }
}
응답:
{
"subject" : " subject1 "
}| 요소 | 유형 | 설명 |
|---|---|---|
| 주제 | 끈 | 주제의 이름입니다 |
이 JSON 응답은 AddSubjectResponse 데이터 전송 객체 (DTO)로 필사적입니다.
public class AddSubjectResponse
{
public string Subject { get; set; }
}
Face Collection과 관련된 모든 주제를 반환합니다.
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);
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 요구 | RenameUbjectRequest | 필수의 |
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);
| 논쟁 | 유형 | 필수의 | 메모 |
|---|---|---|---|
| 요구 | deletesubjectrefest | 필수의 |
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 필드와 같은 시스템 정보가 포함됩니다. 기본값은 False입니다 |
응답:
{
"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 | 물체 | 모든 플러그인의 실행 시간 |
| 플러그인_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 필드와 같은 시스템 정보가 포함됩니다. 기본값은 False입니다 |
응답:
{
"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 | 물체 | 모든 플러그인의 실행 시간 |
| 플러그인_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첫 번째 기고 풀 요청을 작성한 후에는 PULL 요청에 특별한 메시지로 기고자 라이센스 계약에 서명하라는 요청을 받게됩니다.
여기에 버그를보고하십시오.
버그를보고하는 경우 다음을 지정하십시오.
피드백을 보내는 가장 좋은 방법은 https://github.com/exadel-inc/compreface-net-sdk/issues에서 문제를 제출하는 것입니다.
기능을 제안하는 경우 :
Compreface .NET SDK는 Apache 2.0 라이센스에 따라 오픈 소스 얼굴 인식 SDK입니다.