في هذه المقالة ، أود أن أتحدث عن استخدام خدمة Custom Vision للتعرف على صور العلامة البيئية من تطبيق الهاتف المحمول.
CustomVision جزء من الخدمات المعرفية المستندة إلى السحابة من Azure.
حول التقنيات التي يجب دراستها ، وكيفية العمل مع CustomVision ، وما هي وما الذي يسمح بتحقيقه - أبعد من ذلك.

ظهرت مهمة التعرف على العلامات البيئية قبل ثلاث سنوات عندما بدأت أنا وزوجتي مناقشة تطبيق الهاتف المحمول الذي أرادت منظمتها (وهي منظمة غير حكومية في مجال علم البيئة) أن تقوم بنشر معلومات حول العلامات البيئية.
ما هو وضع العلامات البيئية؟
التوسيم البيئي عبارة عن شهادة وشعار مناظر صادر عن منظمات الاعتماد التي تتحقق من منتجات أو خدمات الشركة المصنعة - المورد للتأكد من امتثالها لمعايير معينة تتعلق بدورة حياة خدمة المنتج وتركز على صداقتها البيئية. بعد التصديق ، يمكن للشركة المصنعة وضع الملصق البيئي على منتجاتها.
أيضا ، يمكن أن يعزى وضع العلامات البيئية إلى العلامات البلاستيكية من خلال تكوينها لتبسيط التحجيم والمعالجة وغيرها من العلامات المماثلة.
على سبيل المثال ، هنا علامة:

عملية اختيار تقنية الاعتراف
كان ينبغي أن تكون السمتان الرئيسيتان للتطبيق هما البحث عن متاجر مع منتجات صديقة للبيئة والتعرف على الملصقات البيئية. إذا كان كل شيء من الناحية التكنولوجية بسيطًا نسبيًا مع البحث عن المتاجر ، فعندئذٍ ليس من السهل جدًا التعرف عليه. الكلمة من المألوف ، ولكن كيفية جعلها غير واضحة. وبدأت بدراسة القضية.
إن شعارات الوسم موحدة وهي أشياء مثالية للاعتراف - وجه الهاتف إلى الصورة على عبوة البضائع ، والتقط صورة ، ويعطي التطبيق نوع العلامة التي يعنيها وما إذا كان يجب الوثوق بها.
بدأت أفكر في كيفية إجراء التعرف على الخيارات المختلفة وتحليلها - لقد جربت OpenCV باستخدام خوارزميات التعرف (Haar Cascades ، SWIFT ، مطابقة القوالب ، وما إلى ذلك) ولكن جودة التعرف لم تكن جيدة جدًا - لا تزيد عن 70٪ مع مجموعة تدريب تضم عدة عشرات من الصور .
ربما في مكان ما أساءت فهم شيء ما وفعلت شيئًا خاطئًا ، لكننا طلبنا أيضًا من صديق آخر التحقيق في هذا الموضوع ، وقال أيضًا إن 70٪ من شلالات Haar هي الحد الأقصى في مجموعة البيانات هذه.
بالتوازي مع ذلك ، بدأت المواد حول مختلف أطر الشبكات العصبية والاستخدام الناجح للشبكات العصبية لحل مثل هذه المشاكل في الظهور أكثر فأكثر. ولكن في كل مكان ، تومض بعض الأحجام المرعبة من مجموعات البيانات (مئات أو آلاف الصور لكل فئة) ، غير مألوفة بالنسبة لي Python ، TensorFlow ، الحاجة إلى الواجهة الخلفية - كل هذا كان مخيفًا إلى حد ما.
بصفتي مطور .NET ، نظرت إلى Accord.NET ولكن لم أجد شيئًا مناسبًا على الفور.
في هذا الوقت ، كنا مشغولين في وضع اللمسات الأخيرة على التطبيق والبدء في المنتج ، وقمت بتأجيل الإجراءات مع التقدير.
قبل حوالي عام ، صادفت مقالًا يصف المعاينة المبكرة لـ Microsoft Custom Vision ، وهي خدمة تصنيف الصور السحابية. لقد اختبرته على 3 أحرف وأعجبني - بوابة مفهومة حيث يمكنك تدريب المصنف واختباره دون معرفة تقنية ، وتدريب مجموعة من 100 صورة في 10-20 ثانية ، وجودة التصنيف أعلى من 90٪ حتى على 30 صورة لكل شخصية - ما هو المطلوب.
لقد قمت بمشاركة الاكتشاف مع زوجتي وبدأنا في عمل نسخة دولية أقل وظيفية من التطبيق ، والتي لا تحتوي على معلومات حول السلع والمتاجر ، ولكنها قادرة على التعرف على العلامات البيئية.
دعنا ننتقل إلى التفاصيل التقنية لتطبيق التعرف قيد التشغيل.
رؤية مخصصة
السيرة الذاتية هي جزء من الخدمات المعرفية في Azure. يمكن الآن إصدارها رسميًا ، وستدفع باشتراك Azure ، على الرغم من أنها لا تزال مدرجة في Preview.
وفقًا لذلك ، مثل أي منتج Azure آخر ، يتم عرض CognitiveServices وإدارته على بوابة Azure.
توفر السيرة الذاتية اثنين من واجهات برمجة التطبيقات REST ، أحدهما للتدريب والآخر للتنبؤ. بمزيد من التفصيل ، سأصف التفاعل مع التنبؤ بشكل أكبر
بالإضافة إلى بوابة Azure و API ، يمكن لمستخدمي السيرة الذاتية الوصول إلى بوابة customvision.ai ، حيث يكون من السهل جدًا والواضح تحميل الصور ووضع علامات عليها ، يمكنك رؤية الصور ونتائج التعرف التي مرت عبر واجهة برمجة التطبيقات.
يمكن بدء استخدام بوابة customvision.ai و API بدون أي ارتباط بـ Azure - لأغراض الاختبار ، يتم إنشاء المشروع حتى بدون اشتراك Azure. ولكن إذا كنت ترغب في إنشاء مشروع إنتاج من مشروعك الاختباري في المستقبل ، فمن الأفضل القيام بذلك على الفور ، وإلا اضطررنا إلى نسخ الصور يدويًا من مشروع الاختبار وإعادة وضع علامة عليها في الإنتاج.
من أجل إنشاء مشروع في Azure ، تحتاج إلى التسجيل هناك وإنشاء اشتراك. هذا أمر سهل نسبيًا ، لا يمكن أن تكون المشكلات إلا في إدخال البيانات من بطاقة الائتمان والتحقق من صحتها - يحدث ذلك في بعض الأحيان.
بعد التسجيل ، تحتاج إلى إنشاء مثيل ComputerVision من خلال بوابة Azure

بعد إنشاء الموارد في Azure ، ستكون متاحة في customvision.ai
في موقع البوابة customvision.ai يمكنك تحميل الصور ووضع علامة عليها - يمكن أن يكون هناك العديد من العلامات على صورة واحدة ، ولكن دون إبراز المناطق. أي أن الصورة تنتمي إلى عدة فئات ، ولكن في هذه المرحلة من تطوير الخدمة ، من المستحيل تحديد جزء معين في الصورة وتعيينه للفئة.
بعد وضع العلامات ، تحتاج إلى بدء التدريب بالضغط على زر القطار - تدريب نموذج من 70 علامة و 3 آلاف صورة يستمر حوالي 30 ثانية.
يتم تخزين نتائج التدريب في كيان التكرار. في الواقع ، تنفذ التكرار الإصدار.
يمكن استخدام كل تكرار بشكل مستقل - أي ، يمكنك إنشاء تكرار ، واختبار النتيجة وحذفها إذا لم تتناسب أو تترجم إلى الافتراضي واستبدال التكرار الافتراضي الحالي ، وبعد ذلك سيأتي كل التعرف من التطبيقات إلى النموذج من هذا التكرار.
يتم عرض جودة النموذج في شكل الدقة والاستدعاء (مزيد من التفاصيل هنا ) لكل الفئات في وقت واحد ، وبشكل منفصل.

هذا ما يبدو عليه المشروع مع الصور التي تم تحميلها بالفعل وتمريرها من خلال التدريب.

على البوابة الإلكترونية ، يمكنك تشغيل التعرف على الصور من قرص أو عنوان URL باستخدام الاختبار السريع والتعرف على الاختبار بواسطة صورة واحدة.
في علامة التبويب "التوقعات" ، يمكنك الاطلاع على نتائج أحدث عمليات التعرف - يتم عرض النسب المئوية للعلامات مباشرة في الصورة.

تساعد القدرة على رؤية جميع نتائج التعرف وإضافتها إلى مجموعة التدريب بنقرتين فقط على الماوس - يمكن لأي شخص القيام بذلك دون أي معرفة بالذكاء الاصطناعي أو البرمجة.
استخدام API
تتميز خدمة Custom Vision Service بواجهة برمجة تطبيقات REST بسيطة جدًا وبديهية للتدريب والتقدير.
يستخدم تطبيقنا فقط API التعرف وسأتحدث عن استخدامه
عنوان Url للاعتراف بهذا النوع:
https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction/ { GUID الخاص بمشروعك} / image
أين
southcentralus ** - اسم منطقة Azure حيث توجد الخدمة. الخدمة متاحة حتى الآن في منطقة جنوب وسط الولايات المتحدة فقط. هذا لا يعني أنه فقط يمكنك استخدامه! يعيش هناك فقط - يمكنك استخدامه من أي مكان يوجد فيه الإنترنت.
{مشروعك GUID} ** - معرف مشروعك. يمكنك رؤيته على customvision.ai المدخل
للاعتراف ، من الضروري إرسال الصورة عبر POST. يمكنك أيضًا إرسال عنوان URL للصورة يمكن الوصول إليه بشكل عام وستقوم الخدمة بتنزيله بنفسك.
بالإضافة إلى ذلك ، تحتاج إلى إضافة رأس "Prediction-Key" إلى الرؤوس التي يمكنك من خلالها نقل أحد مفاتيح الوصول التي سيتم إصدارها عند التسجيل - فهي متاحة على كل من بوابة customvision.ai وعلى بوابة Azure.
تحتوي النتيجة على الحقل التالي:
"Predictions":[ {"TagId":"35ac2ad0-e3ef-4e60-b81f-052a1057a1ca","Tag":"dog","Probability":0.102716163}, {"TagId":"28e1a872-3776-434c-8cf0-b612dd1a953c","Tag":"cat","Probability":0.02037274} ]
حيث تشير Probability إلى احتمال أن الصورة تنتمي إلى العلامة المحددة (الفئة).
في C # ، يبدو هذا
var client = new HttpClient(); client.DefaultRequestHeaders.Add("Prediction-Key", "{Acess key}"); string url = "https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Prediction/{Your project GUID}/image"; HttpResponseMessage response; List<RecognitionResult> recognitions = new List<RecognitionResult>(); using (var content = new ByteArrayContent(imageBytes)) { content.Headers.ContentType = new MediaTypeHeaderValue ("application/octet-stream"); response = await client.PostAsync(url, content); if (response.IsSuccessStatusCode) { string strRes = await response.Content.ReadAsStringAsync(); dynamic res = (dynamic) JsonConvert.DeserializeObject(strRes); foreach (var pr in res.predictions) { recognitions.Add( new RecognitionResult() { Tag = pr.tagName, RecognPercent = pr.probability }); } } else { Debug.WriteLine( "Non successful response. " + response.ToString()); } }
كما ترون - لا شيء معقد على الإطلاق. كل السحر يحدث في جانب الخدمة.
التطبيق وبعض المعلمات المختارة.
التطبيق بسيط للغاية ويتكون من قائمة التسميات البيئية ، ومعلومات حول ماهية التسميات البيئية ، وكيف يتم تقسيمها ، والماسح الضوئي نفسه.
الجزء الرئيسي مكتوب في Xamarin.Forms ، لكن نافذة الماسح الضوئي تعمل مع الكاميرا ويجب أن يتم تنفيذها وتقديمها لكل منصة على حدة
المستوى عندما يقرر التطبيق أن الملصق البيئي يتم التعرف عليه بالضبط> = 90٪ ، بينما يتم التعرف على جميع الصور تقريبًا إذا كانت ذات جودة مقبولة تقريبًا وليس هناك أي علامات أخرى في الصورة.
تم اشتقاق هذا الرقم بشكل تجريبي - بدأنا بـ 80 ، ولكننا أدركنا أن 90 يقلل من الإيجابيات الخاطئة. وهناك الكثير منها - العديد من العلامات متشابهة وتحتوي على عناصر متشابهة ويتم تحويل نظام الألوان إلى اللون الأخضر.
على سبيل المثال ، هذه ليست الصورة عالية الجودة التي تم التعرف عليها بشكل صحيح وبدقة 91٪

في نفس الوقت ، تم تدريب هذه الفئة على 45 صورة.
آمل أن تكون المقالة مفيدة وستسمح للقراء المهتمين بإلقاء نظرة على أدوات AI و ML الجديدة.