كيفية القيام بما يلي: تخفيف زمن الوصول عند استخدام خدمة الوجه
قد تواجه زمن انتقال عند استخدام خدمة الوجه. يشير زمن الوصول إلى أي نوع من التأخير الذي يحدث عند الاتصال عبر شبكة. بشكل عام ، تشمل الأسباب المحتملة لزمن الوصول ما يلي:
- المسافة المادية التي يجب أن تقطعها كل حزمة من المصدر إلى الوجهة.
- مشاكل مع وسيط الإرسال.
- أخطاء في أجهزة التوجيه أو المفاتيح على طول مسار الإرسال.
- الوقت الذي تتطلبه تطبيقات مكافحة الفيروسات وجدران الحماية وآليات الأمان الأخرى لفحص الحزم.
- أعطال في تطبيقات العميل أو الخادم.
يتحدث هذا الموضوع عن الأسباب المحتملة لزمن الوصول الخاصة باستخدام خدمات Azure المعرفية، وكيف يمكنك التخفيف من هذه الأسباب.
ملاحظة
لا توفر Azure Cognitive Services أي اتفاقية مستوى خدمة (SLA) فيما يتعلق بزمن الاستجابة.
الأسباب المحتملة لزمن الوصول
اتصال بطيء بين الخدمة المعرفية وعنوان URL البعيد
توفر بعض خدمات Azure المعرفية طرقا للحصول على البيانات من عنوان URL بعيد توفره. على سبيل المثال، عند استدعاء أسلوب DetectWithUrlAsync لخدمة الوجه، يمكنك تحديد عنوان URL لصورة تحاول فيها الخدمة اكتشاف الوجوه.
var faces = await client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1MzAyNzYzOTgxNTE0NTEz/john-f-kennedy---mini-biography.jpg");
يجب على خدمة Face بعد ذلك تنزيل الصورة من الخادم البعيد. إذا كان الاتصال من خدمة Face إلى الخادم البعيد بطيئا، فسيؤثر ذلك على وقت استجابة طريقة Detect.
للتخفيف من ذلك، ضع في اعتبارك تخزين الصورة في Azure Premium Blob Storage. على سبيل المثال:
var faces = await client.Face.DetectWithUrlAsync("https://csdx.blob.core.windows.net/resources/Face/Images/Family1-Daughter1.jpg");
حجم تحميل كبير
توفر بعض خدمات Azure المعرفية طرقا للحصول على البيانات من ملف تقوم بتحميله. على سبيل المثال، عند استدعاء أسلوب DetectWithStreamAsync لخدمة الوجه، يمكنك تحميل صورة تحاول فيها الخدمة اكتشاف الوجوه.
using FileStream fs = File.OpenRead(@"C:\images\face.jpg");
System.Collections.Generic.IList<DetectedFace> faces = await client.Face.DetectWithStreamAsync(fs, detectionModel: DetectionModel.Detection02);
إذا كان الملف المراد تحميله كبيرا ، فسيؤثر ذلك على وقت DetectWithStreamAsync استجابة الطريقة ، للأسباب التالية:
- يستغرق تحميل الملف وقتا أطول.
- تستغرق الخدمة وقتا أطول لمعالجة الملف ، بما يتناسب مع حجم الملف.
التخفيف:
- ضع في اعتبارك تخزين الصورة في Azure Premium Blob Storage. على سبيل المثال:
var faces = await client.Face.DetectWithUrlAsync("https://csdx.blob.core.windows.net/resources/Face/Images/Family1-Daughter1.jpg");
- فكر في تحميل ملف أصغر.
- راجع الإرشادات المتعلقة ببيانات الإدخال للكشف عن الوجهوبيانات الإدخال للتعرف على الوجه.
- للكشف عن الوجه ، عند استخدام نموذج
DetectionModel.Detection01الكشف ، سيؤدي تقليل حجم ملف الصورة إلى زيادة سرعة المعالجة. عند استخدام نموذجDetectionModel.Detection02الكشف ، فإن تقليل حجم ملف الصورة لن يؤدي إلا إلى زيادة سرعة المعالجة إذا كان ملف الصورة أصغر من 1920 × 1080. - للتعرف على الوجه ، لا يؤثر تقليل حجم الوجه إلى 200 × 200 بكسل على دقة نموذج التعرف.
- يعتمد أداء
DetectWithUrlAsyncوالأساليبDetectWithStreamAsyncأيضا على عدد الوجوه الموجودة في الصورة. يمكن لخدمة الوجه إرجاع ما يصل إلى 100 وجه للحصول على صورة. يتم ترتيب الوجوه حسب حجم مستطيل الوجه من الكبير إلى الصغير. - إذا كنت بحاجة إلى الاتصال بطرق خدمة متعددة ، ففكر في الاتصال بها بالتوازي إذا كان تصميم التطبيق الخاص بك يسمح بذلك. على سبيل المثال، إذا كنت بحاجة إلى اكتشاف الوجوه في صورتين لإجراء مقارنة بين الوجوه:
var faces_1 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1MzAyNzYzOTgxNTE0NTEz/john-f-kennedy---mini-biography.jpg");
var faces_2 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1NDY3OTIxMzExNzM3NjE3/john-f-kennedy---debating-richard-nixon.jpg");
Task.WaitAll (new Task<IList<DetectedFace>>[] { faces_1, faces_2 });
IEnumerable<DetectedFace> results = faces_1.Result.Concat (faces_2.Result);
اتصال بطيء بين مورد الحوسبة وخدمة Face
إذا كان جهاز الكمبيوتر الخاص بك لديه اتصال بطيء بخدمة Face، فسيؤثر ذلك على وقت استجابة أساليب الخدمة.
التخفيف:
- عند إنشاء اشتراكك في Face، تأكد من اختيار المنطقة الأقرب إلى المكان الذي يستضيف فيه تطبيقك.
- إذا كنت بحاجة إلى الاتصال بطرق خدمة متعددة ، ففكر في الاتصال بها بالتوازي إذا كان تصميم التطبيق الخاص بك يسمح بذلك. راجع القسم السابق للحصول على مثال.
- إذا كانت فترات التأخير الأطول تؤثر على تجربة المستخدم، فاختر حد مهلة (على سبيل المثال، 5 ثوان كحد أقصى) قبل إعادة محاولة استدعاء واجهة برمجة التطبيقات.
الخطوات التالية
في هذا الدليل، تعلمت كيفية تخفيف زمن الوصول عند استخدام خدمة الوجه. بعد ذلك، تعرف على كيفية التوسع من كائنات PersonGroup وFaceList الموجودة إلى كائنات LargePersonGroup وLargeFaceList على التوالي.