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 من تبعية "compreface-SDK".
ثم تحتاج إلى إنشاء كائن CompreFaceClient وتهيئته باستخدام DOMAIN PORT . بشكل افتراضي ، إذا قمت بتشغيل compreface على جهازك المحلي ، فسيكون DOMAIN هو http://localhost ، وسيكون PORT في هذه الحالة 8000 . يمكنك تمرير كائن options اختيارية عند طريقة الاتصال لتعيين المعلمات الافتراضية ، راجع المرجع لمزيد من المعلومات.
يجب عليك استخدام خدمة RecognitionService كائن CompreFaceClient للتعرف على الوجوه.
ومع ذلك ، قبل إدراك أنك بحاجة أولاً إلى إضافة موضوع إلى مجموعة الوجه. للقيام بذلك ، احصل على كائن Subject بمساعدة RecognitionService . يتم تضمين 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 العالمي لتهيئة الاتصال إلى واجهة الكامل وإعداد القيم الافتراضية للخيارات. سيتم استخدام القيم الافتراضية في كل طريقة خدمة إن وجدت.
مُنشئ: 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)كائن خدمة التحقق من الوجه.
| دعوى | يكتب | مطلوب | ملحوظات |
|---|---|---|---|
| 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 التي يتم تسلسلها لطلب التنسيق.
فيما يلي الوصف كيف يبدو في الجسم.
| خيار | يكتب | ملحوظات |
|---|---|---|
| det_prob_threshold | يطفو | الحد الأدنى للثقة المطلوبة أن الوجه المعترف به هو في الواقع وجه. القيمة بين 0.0 و 1.0 |
| حد | عدد صحيح | الحد الأقصى لعدد الوجوه على الصورة المراد التعرف عليها. إنه يتعرف على أكبر الوجوه أولاً. لا تمثل قيمة 0 أي حد. القيمة الافتراضية: 0 |
| التنبؤ_count | عدد صحيح | الحد الأقصى لعدد تنبؤات الموضوع لكل وجه. يعيد أكثر الموضوعات مماثلة. القيمة الافتراضية: 1 |
| Face_plugins | خيط | فاصلة فاصلة الرخويات من الإضافات الوجه. إذا فارغة ، لم يتم إرجاع أي معلومات إضافية. يتعلم أكثر |
| حالة | منطقية | إذا كان TRUE يتضمن معلومات النظام مثل Execution_time و Plugin_version Fields. القيمة الافتراضية خاطئة |
مثال على التعرف على الوجه مع الكائن:
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)
| دعوى | يكتب | مطلوب | ملحوظات |
|---|---|---|---|
| الاعتراف | التعرف على fromimagerequestbyfilepath | مطلوب |
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 |
| التنبؤ_count | عدد صحيح | الحد الأقصى لعدد تنبؤات الموضوع لكل وجه. يعيد أكثر الموضوعات مماثلة. القيمة الافتراضية: 1 |
| Face_plugins | خيط | فاصلة فاصلة الرخويات من الإضافات الوجه. إذا فارغة ، لم يتم إرجاع أي معلومات إضافية. يتعلم أكثر |
| حالة | منطقية | إذا كان TRUE يتضمن معلومات النظام مثل Execution_time و Plugin_version Fields. القيمة الافتراضية خاطئة |
استجابة من 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"
}
}
| عنصر | يكتب | وصف |
|---|---|---|
| عمر | هدف | مكتشف نطاق العمر. العودة فقط إذا تم تمكين البرنامج المساعد العمري |
| جنس | هدف | اكتشاف الجنس. العودة فقط إذا تم تمكين البرنامج المساعد بين الجنسين |
| قناع | هدف | القناع المكتشف. ارجع فقط إذا تم تمكين مكون الإضافات Mask Face. |
| التضمين | صفيف | التضمينات الوجه. إرجاع فقط إذا تم تمكين المكون الإضافي للآلة الحاسبة |
| صندوق | هدف | قائمة المعلمات من المربع المحيط بهذا الوجه |
| احتمال | يطفو | احتمال أن يكون الوجه الموجود في الواقع وجهًا |
| x_max ، y_max ، x_min ، y_min | عدد صحيح | إحداثيات الإطار الذي يحتوي على الوجه |
| المعالم | صفيف | قائمة إحداثيات الإطار الذي يحتوي على علامات الوجه. |
| الموضوعات | قائمة | قائمة المواضيع المماثلة بحجم <purection_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);
يقارن أوجه تشابه الصورة المعطاة مع الصورة من مجموعة وجهك.
| دعوى | يكتب | مطلوب | ملحوظات |
|---|---|---|---|
| طلب | 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 |
| التنبؤ_count | عدد صحيح | الحد الأقصى لعدد تنبؤات الموضوع لكل وجه. يعيد أكثر الموضوعات مماثلة. القيمة الافتراضية: 1 |
| Face_plugins | خيط | فاصلة فاصلة الرخويات من الإضافات الوجه. إذا فارغة ، لم يتم إرجاع أي معلومات إضافية. يتعلم أكثر |
| حالة | منطقية | إذا كان TRUE يتضمن معلومات النظام مثل Execution_time و Plugin_version Fields. القيمة الافتراضية خاطئة |
إجابة:
{
"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 "
}
}| عنصر | يكتب | وصف |
|---|---|---|
| عمر | هدف | مكتشف نطاق العمر. العودة فقط إذا تم تمكين البرنامج المساعد العمري |
| جنس | هدف | اكتشاف الجنس. العودة فقط إذا تم تمكين البرنامج المساعد بين الجنسين |
| قناع | هدف | القناع المكتشف. ارجع فقط إذا تم تمكين مكون الإضافات Mask Face. |
| التضمين | صفيف | التضمينات الوجه. إرجاع فقط إذا تم تمكين المكون الإضافي للآلة الحاسبة |
| صندوق | هدف | قائمة المعلمات من المربع المحيط بهذا الوجه |
| احتمال | يطفو | احتمال أن يكون الوجه الموجود في الواقع وجهًا |
| 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);
| دعوى | يكتب | مطلوب | ملحوظات |
|---|---|---|---|
| طلب | إضافة ubjectexamplerequestbyfilepath | مطلوب |
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; }
}
لحذف صورة بالمعرف:
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);
| دعوى | يكتب | مطلوب | ملحوظات |
|---|---|---|---|
| طلب | إضافة ubjectRequest | مطلوب |
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);
| دعوى | يكتب | مطلوب | ملحوظات |
|---|---|---|---|
| طلب | إعادة تسمية ubjectrequest | مطلوب |
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 |
| التنبؤ_count | عدد صحيح | الحد الأقصى لعدد تنبؤات الموضوع لكل وجه. يعيد أكثر الموضوعات مماثلة. القيمة الافتراضية: 1 |
| Face_plugins | خيط | فاصلة فاصلة الرخويات من الإضافات الوجه. إذا فارغة ، لم يتم إرجاع أي معلومات إضافية. يتعلم أكثر |
| حالة | منطقية | إذا كان TRUE يتضمن معلومات النظام مثل Execution_time و Plugin_version Fields. القيمة الافتراضية خاطئة |
إجابة:
{
"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 "
}
}| عنصر | يكتب | وصف |
|---|---|---|
| عمر | هدف | مكتشف نطاق العمر. العودة فقط إذا تم تمكين البرنامج المساعد العمري |
| جنس | هدف | اكتشاف الجنس. العودة فقط إذا تم تمكين البرنامج المساعد بين الجنسين |
| قناع | هدف | القناع المكتشف. ارجع فقط إذا تم تمكين مكون الإضافات Mask Face. |
| التضمين | صفيف | التضمينات الوجه. إرجاع فقط إذا تم تمكين المكون الإضافي للآلة الحاسبة |
| صندوق | هدف | قائمة المعلمات من المربع المحيط بهذا الوجه (على المعالجة) |
| احتمال | يطفو | احتمال أن يكون الوجه الموجود في الواقع وجهًا (على المعالجة) |
| x_max ، y_max ، x_min ، y_min | عدد صحيح | إحداثيات الإطار الذي يحتوي على الوجه (على المعالجة) |
| المعالم | صفيف | قائمة إحداثيات الإطار الذي يحتوي على علامات الوجه. العودة فقط إذا تم تمكين المكون الإضافي للمعالم |
| 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 |
| التنبؤ_count | عدد صحيح | الحد الأقصى لعدد تنبؤات الموضوع لكل وجه. يعيد أكثر الموضوعات مماثلة. القيمة الافتراضية: 1 |
| Face_plugins | خيط | فاصلة فاصلة الرخويات من الإضافات الوجه. إذا فارغة ، لم يتم إرجاع أي معلومات إضافية. يتعلم أكثر |
| حالة | منطقية | إذا كان TRUE يتضمن معلومات النظام مثل Execution_time و Plugin_version Fields. القيمة الافتراضية خاطئة |
إجابة:
{
"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 | صفيف | نتيجة التحقق من الوجه |
| عمر | هدف | مكتشف نطاق العمر. العودة فقط إذا تم تمكين البرنامج المساعد العمري |
| جنس | هدف | اكتشاف الجنس. العودة فقط إذا تم تمكين البرنامج المساعد بين الجنسين |
| قناع | هدف | القناع المكتشف. ارجع فقط إذا تم تمكين مكون الإضافات Mask Face. |
| التضمين | صفيف | التضمينات الوجه. إرجاع فقط إذا تم تمكين المكون الإضافي للآلة الحاسبة |
| صندوق | هدف | قائمة المعلمات من المربع المحيط بهذا الوجه |
| احتمال | يطفو | احتمال أن يكون الوجه الموجود في الواقع وجهًا |
| 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 هو التعرف على الوجه مفتوح المصدر SDK تم إصداره بموجب ترخيص Apache 2.0.