قبل استخدام أي نوع من خوارزمية التعلم الآلي الخاضعة للإشراف (ML) ، يجب تسمية البيانات. الحقيقة الأمازون SageMaker الأرض يبسط ويسرع هذه المهمة. تستخدم Ground Truth قوالب محددة مسبقًا لتعيينها التصنيفات التي تصنف محتوى الصور or أشرطة الفيديو or تحقق من التصنيفات الموجودة. تتيح لك Ground Truth تحديد مهام سير العمل لتصنيف أنواع مختلفة من البيانات ، مثل النص أو الفيديو أو الصور ، دون كتابة أي رمز. على الرغم من أن هذه القوالب قابلة للتطبيق على مجموعة واسعة من حالات الاستخدام التي تكون فيها البيانات المراد تصنيفها بتنسيق واحد أو من مصدر واحد ، إلا أن أعباء العمل الصناعية تتطلب غالبًا تصنيف البيانات من مصادر مختلفة وبتنسيقات مختلفة. يستكشف هذا المنشور حالة استخدام بيانات اللحام الصناعي التي تتكون من قراءات وصور المستشعرات لإظهار كيفية تنفيذ تدفقات عمل مخصصة ومعقدة ومختلطة المصدر باستخدام تقنية Ground Truth.
بالنسبة لهذا المنشور ، تقوم بنشر ملف تكوين سحابة AWS في حساب AWS الخاص بك لتوفير الموارد الأساسية للبدء في تنفيذ سير عمل وضع العلامات هذا. يوفر لك هذا خبرة عملية للمواضيع التالية:
- تكوين قوة عاملة خاصة في Ground Truth
- إنشاء وظيفة تسمية مخصصة باستخدام إطار عمل الحقيقة الأرضية بالمكونات التالية:
- تصميم ملصق مسبق AWS لامدا تعمل على سحب البيانات من مصادر مختلفة وتشغيل تحويل التنسيق عند الضرورة
- تنفيذ واجهة مستخدم مخصصة لوضع العلامات في Ground Truth باستخدام قوالب الحشد التي تقوم ديناميكيًا بتحميل البيانات الناتجة عن وظيفة Lambda الملصقة مسبقًا
- دمج الملصقات من عدة عمال باستخدام وظيفة Lambda بعد وضع العلامات المخصصة
- تكوين وظيفة تسمية مخصصة باستخدام Ground Truth بواجهة مخصصة لعرض أجزاء متعددة من البيانات التي يجب تصنيفها كعنصر واحد
قبل التعمق في التنفيذ ، أقدم مقدمة في حالة الاستخدام وأظهر كيف يسهّل إطار عمل وضع العلامات المخصص لـ Ground Truth تنفيذ عمليات سير عمل وضع العلامات المعقدة للغاية. للاستفادة الكاملة من هذا المنشور ، تحتاج إلى حساب AWS يمكنك من خلاله نشر قوالب CloudFormation. التكلفة الإجمالية المتكبدة على حسابك لمتابعة هذا المنشور أقل من 1 دولار.
وضع العلامات على مجموعات البيانات المعقدة لمراقبة جودة اللحام الصناعي
على الرغم من أن الآليات التي تمت مناقشتها في هذا المنشور قابلة للتطبيق بشكل عام على أي سير عمل وضع العلامات بتنسيقات بيانات مختلفة ، إلا أنني أستخدم بيانات من حالة استخدام مراقبة جودة اللحام. في حالة الاستخدام هذه ، تريد الشركة المصنعة التي تدير عملية اللحام أن تتنبأ بما إذا كانت نتيجة اللحام ستكون على ما يرام أو إذا حدث عدد من الحالات الشاذة أثناء العملية. لتنفيذ ذلك باستخدام نموذج ML الخاضع للإشراف ، تحتاج إلى الحصول على البيانات المصنفة لتدريب نموذج ML ، مثل مجموعات البيانات التي تمثل عمليات اللحام التي تحتاج إلى تصنيفها للإشارة إلى ما إذا كانت العملية طبيعية أم لا. نقوم بتنفيذ عملية وضع العلامات (وليس عملية ML أو النمذجة) باستخدام Ground Truth ، والتي تسمح لخبراء اللحام بإجراء تقييمات حول نتيجة اللحام وتعيين هذه النتيجة إلى مجموعة بيانات تتكون من صور وبيانات مستشعر.
يقوم قالب CloudFormation بإنشاء ملف خدمة تخزين أمازون البسيطة (Amazon S3) في حساب AWS الخاص بك الذي يحتوي على صور (بادئة images
) وملفات CSV (بادئة sensor_data
). تحتوي الصور على صور تم التقاطها أثناء عملية اللحام الصناعي المشابهة لما يلي ، حيث يتم تطبيق شعاع لحام على سطح معدني (لمصدر الصورة ، انظر تيج الفولاذ المقاوم للصدأ 304):
تحتوي ملفات CSV على بيانات مستشعر تمثل التيار ، وموضع القطب ، والجهد المقاس بواسطة أجهزة استشعار على آلة اللحام. للحصول على مجموعة البيانات الكاملة ، راجع ملف جيثب ريبو. عينة أولية من بيانات CSV هذه هي كما يلي:
العمود الأول من البيانات هو طابع زمني بالمللي ثانية تم تطبيعه مع بداية عملية اللحام. يتكون كل صف من قيم مستشعر مختلفة مرتبطة بالطابع الزمني. الصف الأول هو موضع القطب ، والصف الثاني هو التيار ، والصف الثالث هو الجهد (القيم الأخرى غير ذات صلة هنا). على سبيل المثال ، الصف مع الطابع الزمني 1
، بعد 100 مللي ثانية من بدء عملية اللحام ، يكون موضع القطب الكهربي 94.79
، تيار 1464
، والجهد 428
.
نظرًا لأنه من الصعب على البشر إجراء تقييمات باستخدام بيانات CSV الأولية ، فقد أوضح أيضًا كيفية المعالجة المسبقة لمثل هذه البيانات سريعًا لوضع العلامات عليها وتحويلها إلى مؤامرات يمكن قراءتها بسهولة أكبر. بهذه الطريقة ، يمكن لخبراء اللحام مشاهدة الصور والمخططات لإجراء تقييمهم لعملية اللحام.
نشر نموذج CloudFormation
لتبسيط الإعداد والتكوينات المطلوبة في ما يلي ، قمت بإنشاء قالب CloudFormation يقوم بنشر العديد من الأسس في حساب AWS الخاص بك. لبدء هذه العملية ، أكمل الخطوات التالية:
- قم بتسجيل الدخول إلى حساب AWS الخاص بك.
- اختر أحد الروابط التالية ، بناءً على منطقة AWS التي تستخدمها:
- احتفظ بجميع المعلمات كما هي وحددها أقر بأن AWS CloudFormation قد تنشئ موارد IAM بأسماء مخصصة و أقر بأن AWS CloudFormation قد يتطلب القدرة التالية: CAPABILITY_AUTO_EXPAND.
- اختار إنشاء مكدس لبدء النشر.
يستغرق النشر حوالي 3-5 دقائق ، وخلال هذه الفترة تحتوي حاوية تحتوي على بيانات للتسمية ، وبعض وظائف AWS Lambda ، و إدارة الهوية والوصول AWS تم نشر دور (IAM). تكتمل العملية عندما تتحول حالة النشر إلى CREATE_COMPLETE
.
• النواتج تحتوي علامة التبويب على معلومات إضافية ، مثل مسار Amazon S3 إلى ملف البيان ، والذي تستخدمه خلال هذا المنشور. لذلك ، يوصى بإبقاء علامة تبويب المتصفح مفتوحة ومتابعة بقية المنشور في علامة تبويب أخرى.
خلق قوة عاملة في مجال وضع العلامات على الحقيقة الأرضية
تقدم Ground Truth ثلاثة خيارات للتعريف القوى العاملة التي تكمل وضع العلامات: الأمازون ميكانيكي ترك, القوى العاملة الخاصة بالبائعو القوى العاملة الخاصة. في هذا القسم ، نقوم بتكوين قوة عاملة خاصة لأننا نريد إكمال التصنيف بأنفسنا. أنشئ قوة عاملة خاصة باتباع الخطوات التالية:
- على وحدة تحكم Amazon SageMaker ، ضمن الحقيقة الأرضية، اختر القوى العاملة وضع العلامات.
- على خاص علامة التبويب، اختر إنشاء فريق خاص.
- أدخل اسمًا لقوة العمل المصنفة. بالنسبة لحالة الاستخدام الخاصة بنا ، أدخل خبراء اللحام.
- أختار دعوة عمال جدد عن طريق البريد الإلكتروني.
- أدخل عنوان بريدك الإلكتروني واسم المؤسسة والبريد الإلكتروني لجهة الاتصال (والذي قد يكون هو نفسه الذي أدخلته للتو).
- اختار إنشاء فريق خاص.
تؤكد وحدة التحكم إنشاء قوة عمل التسمية في الجزء العلوي من الشاشة. عند تحديث الصفحة ، تظهر القوى العاملة الجديدة على خاص علامة التبويب ، تحت فرق خاصة.
تتلقى أيضًا بريدًا إلكترونيًا يحتوي على تعليمات تسجيل الدخول ، بما في ذلك كلمة مرور مؤقتة ورابط لفتح صفحة تسجيل الدخول.
- اختر الرابط واستخدم بريدك الإلكتروني وكلمة المرور المؤقتة للمصادقة وتغيير كلمة المرور لتسجيل الدخول.
يوصى بإبقاء علامة تبويب المتصفح مفتوحة حتى لا تضطر إلى تسجيل الدخول مرة أخرى. يخلص هذا إلى جميع الخطوات اللازمة لإنشاء القوى العاملة الخاصة بك.
تكوين وظيفة تسمية مخصصة
في هذا القسم ، ننشئ وظيفة تصنيف ونستخدم هذه الوظيفة لشرح التفاصيل وتدفق البيانات لوظيفة تصنيف مخصصة.
- على وحدة تحكم Amazon SageMaker ، ضمن الحقيقة الأرضية، اختر وضع العلامات على الوظائف.
- اختار إنشاء وظيفة وضع العلامات.
- أدخل اسمًا لوظيفة وضع العلامات ، مثل WeldingLabelJob1.
- اختار إعداد البيانات اليدوي.
- في حالة موقع مجموعة بيانات الإدخال، أدخل قيمة ManifestS3Path من مكدس CloudFormation النواتج
- في حالة موقع مجموعة بيانات الإخراج، دخول
ProposedOutputPath
القيمة من مكدس CloudFormation النواتج - في حالة دور IAM، اختر أدخل دور IAM المخصص ARN.
- أدخل
SagemakerServiceRoleArn
القيمة من مكدس CloudFormation النواتج - لنوع المهمة ، اختر Custom.
- اختار التالى.
دور IAM هو دور مخصص تم إنشاؤه بواسطة قالب CloudFormation الذي يسمح لـ Ground Truth باستدعاء وظائف Lambda والوصول إلى Amazon S3.
- اختر استخدام قوة عاملة خاصة بوضع العلامات.
- من القائمة المنسدلة ، اختر القوى العاملة خبراء اللحام.
- بالنسبة لمهلة المهمة ووقت انتهاء صلاحية المهمة ، تكفي ساعة واحدة.
- عدد العاملين لكل كائن مجموعة بيانات هو 1.
- في مجلة وظائف لامدا القسم ل مهمة ما قبل الوسم Lambda وظيفة، اختر الوظيفة التي تبدأ بـ
PreLabelingLambda-.
- في حالة وظيفة Lambda وظيفة اللاحق، اختر الوظيفة التي تبدأ بـ
PostLabelingLambda-
. - أدخل الكود التالي في قسم القوالب. يحدد كود HTML هذا الواجهة التي يراها العمال في قوة العمل الخاصة عند تسمية العناصر. بالنسبة لحالة الاستخدام الخاصة بنا ، يعرض القالب أربع صور ، وتكون الفئات لتصنيف نتائج اللحام كما يلي:
يحتوي معالج إنشاء وظيفة التسمية على وظيفة معاينة في القسم إعداد مهمة وضع العلامات المخصصة، والتي يمكنك استخدامها للتحقق مما إذا كانت جميع التكوينات تعمل بشكل صحيح.
- لمعاينة الواجهة ، اختر أرسال.
يؤدي ذلك إلى فتح علامة تبويب متصفح جديدة ويعرض إصدارًا تجريبيًا لواجهة وضع العلامات ، على غرار لقطة الشاشة التالية.
- لإنشاء وظيفة التسمية ، اختر إنشاء.
تقوم Ground Truth بإعداد وظيفة وضع العلامات على النحو المحدد ، وتعرض لوحة المعلومات حالتها.
تعيين التسميات
لإنهاء مهمة وضع العلامات التي قمت بتكوينها ، تقوم بتسجيل الدخول إلى بوابة العامل وتعيين تسميات لعناصر بيانات مختلفة تتكون من صور ومخططات بيانات. يتم شرح التفاصيل الخاصة بكيفية عمل المكونات المختلفة لوظيفة التصنيف معًا في القسم التالي.
- على وحدة تحكم Amazon SageMaker ، ضمن الحقيقة الأرضية، اختر القوى العاملة وضع العلامات.
- على خاص علامة التبويب ، اختر الارتباط لـ عنوان URL لتسجيل الدخول إلى بوابة وضع العلامات.
عندما تنتهي Ground Truth من إعداد وظيفة وضع العلامات ، يمكنك رؤيتها مدرجة في ملف المشــاريــع الجزء. إذا لم تظهر ، فانتظر بضع دقائق وقم بتحديث علامة التبويب.
- اختار بدء العمل.
يؤدي هذا إلى تشغيل واجهة المستخدم الخاصة بوضع العلامات ، والتي تتيح لك تعيين ملصقات لمجموعات البيانات المختلطة التي تتكون من صور اللحام والمؤامرات للتيار وموضع القطب والجهد.
بالنسبة لحالة الاستخدام هذه ، يمكنك تعيين سبع تسميات مختلفة لمجموعة بيانات واحدة. يتم تحديد هذه الفئات والتسميات المختلفة في HTML لواجهة المستخدم ، ولكن يمكنك أيضًا إدراجها ديناميكيًا باستخدام وظيفة Lambda قبل وضع العلامات (التي تمت مناقشتها في القسم التالي). نظرًا لأننا لا نستخدم البيانات المصنفة بالفعل لأغراض تعلم الآلة ، يمكنك تعيين التسميات بشكل عشوائي للعناصر الخمسة التي يتم عرضها بواسطة Ground Truth لوظيفة التصنيف هذه.
بعد تسمية جميع العناصر ، تعود واجهة المستخدم إلى القائمة بالوظائف المتاحة. يختتم هذا القسم الخاص بتكوين وظيفة التسمية وبدء تشغيلها. في القسم التالي ، سأشرح بالتفصيل آليات وظيفة وضع العلامات المخصصة وأتعمق أيضًا في العناصر المختلفة لواجهة HTML.
الغوص العميق في وضع العلامات المخصصة
تدمج وظيفة التسمية المخصصة البيانات المراد تسميتها بثلاثة مكونات لإنشاء سير عمل يسمح للعاملين من القوى العاملة الخاصة بوضع العلامات بتعيين تسميات لكل عنصر في مجموعة البيانات:
- وظيفة لامدا قبل وضع العلامات - يولد المحتوى الذي سيتم عرضه على واجهة وضع العلامات باستخدام ملف البيان المحدد أثناء تكوين وظيفة وضع العلامات. بالنسبة لحالة الاستخدام هذه ، تقوم الوظيفة أيضًا بتحويل ملفات CSV إلى مخططات يمكن للبشر قراءتها وتخزين هذه المؤامرات كصور في دلو S3 تحت البادئة
plots
. - واجهة التسمية - يستخدم إخراج وظيفة الملصقات المسبقة لإنشاء واجهة مستخدم. بالنسبة لحالة الاستخدام هذه ، تعرض الواجهة أربع صور (الصورة التي تم التقاطها أثناء عملية اللحام والرسوم البيانية الثلاثة للتيار وموضع القطب الكهربائي والجهد) وشكل يسمح للعمال بتصنيف عملية اللحام.
- توحيد التسمية لامدا وظيفة - يسمح لك بتنفيذ استراتيجيات مخصصة لدمج تصنيفات عامل واحد أو عدة عمال في استجابة واحدة. بالنسبة للقوى العاملة لدينا ، هذا أمر بسيط للغاية لأنه لا يوجد سوى عامل واحد يتم دمج تسمياته في ملف يتم تخزينه بواسطة Ground Truth في Amazon S3.
قبل أن نحلل هذه المكونات الثلاثة ، أقدم رؤى حول بنية ملف البيان ، الذي يصف مصادر البيانات لوظيفة وضع العلامات.
ملفات البيان ومجموعة البيانات
ملف البيان هو ملف يتوافق مع خطوط JSON ، حيث يمثل كل سطر عنصرًا واحدًا للتسمية. تتوقع Ground Truth إما مفتاحًا source or source-ref
في كل سطر من الملف. لحالة الاستخدام هذه ، أستخدم source
، ويجب أن تكون القيمة المعينة سلسلة تمثل مسار Amazon S3. بالنسبة إلى هذا المنشور ، نقوم بتسمية خمسة عناصر فقط ، وتشبه سطور JSON الكود التالي:
بالنسبة لحالة الاستخدام الخاصة بنا مع تنسيقات وملفات متعددة ، يشير كل سطر في البيان إلى ملف مجموعة بيانات يتم تخزينه أيضًا على Amazon S3. مجموعة البيانات الخاصة بنا هي مستند JSON ، والذي يحتوي على مراجع لصور اللحام وملف CSV مع بيانات المستشعر:
تأخذ Ground Truth كل سطر من ملف البيان وتقوم بتشغيل وظيفة Lambda التي نناقشها مسبقًا ، والتي نناقشها بعد ذلك.
وظيفة لامدا قبل وضع العلامات
تقوم وظيفة Lambda سابقة التوسيم بإنشاء كائن JSON يتم استخدامه لملء الأجزاء الخاصة بالعنصر لواجهة وضع العلامات. لمزيد من المعلومات، راجع المعالجة باستخدام AWS Lambda.
قبل أن تعرض Ground Truth عنصرًا لتصنيفه للعامل ، فإنه يقوم بتشغيل وظيفة التسمية المسبقة وإعادة توجيه المعلومات الموجودة في سطر JSON الخاص بالبيان إلى الوظيفة. بالنسبة لحالة الاستخدام الخاصة بنا ، يكون الحدث الذي تم تمريره إلى الوظيفة كما يلي:
على الرغم من أنني حذفت تفاصيل التنفيذ هنا (للمهتمين ، يتم نشر الكود مع قالب CloudFormation للمراجعة) ، تستخدم وظيفة وضع العلامات لدينا هذا الإدخال لإكمال الخطوات التالية:
- قم بتنزيل الملف المشار إليه في ملف
source
مجال الإدخال (انظر الرمز السابق). - قم بتنزيل ملف مجموعة البيانات المشار إليه في المصدر
- قم بتنزيل ملف CSV يحتوي على بيانات المستشعر. من المتوقع أن يحتوي ملف مجموعة البيانات على مرجع إلى ملف CSV هذا.
- إنشاء قطع للتيار ، وموضع القطب ، والجهد من محتويات ملف CSV.
- قم بتحميل ملفات المؤامرة إلى Amazon S3.
- قم بإنشاء كائن JSON يحتوي على الإشارات إلى ملفات الرسم المذكورة أعلاه وصورة اللحام المشار إليها في ملف مجموعة البيانات.
عند اكتمال هذه الخطوات ، تُرجع الدالة كائن JSON من جزأين:
- المدخلات - كائن JSON قابل للتخصيص بالكامل يحتوي على معلومات ليتم عرضها على واجهة مستخدم التسمية.
- هو HumanAnnotationRequired - سلسلة تمثل قيمة منطقية (
True or False
) ، والتي يمكنك استخدامها لاستبعاد الكائنات من تصنيفها من قبل البشر. لا أستخدم هذه العلامة لحالة الاستخدام هذه لأننا نريد تسمية جميع عناصر البيانات المقدمة.
لمزيد من المعلومات، راجع المعالجة باستخدام AWS Lambda.
نظرًا لأنني أرغب في عرض صور اللحام والرسوم البيانية الثلاثة للتيار وموضع القطب الكهربائي والجهد ، فإن نتيجة وظيفة Lambda هي كما يلي لمجموعة البيانات الأولى:
في الكود السابق ، ملف taskInput
قابل للتخصيص بالكامل ؛ تقوم الوظيفة بإرجاع مسارات Amazon S3 إلى الصور المراد عرضها ، وكذلك عنوانًا يحتوي على بعض النصوص غير الوظيفية. بعد ذلك ، سأوضح كيفية الوصول إلى هذه الأجزاء المختلفة من taskInput
كائن JSON عند إنشاء واجهة مستخدم مخصصة لوضع العلامات يتم عرضها للعمال بواسطة Ground Truth.
تسمية واجهة المستخدم: الوصول إلى محتوى الإدخال
تستخدم Ground Truth إخراج وظيفة Lambda لملء المحتوى في هيكل HTML الذي يتم توفيره عند إنشاء وظيفة وضع العلامات. بشكل عام ، محتويات ملف taskInput
يتم الوصول إلى كائن الإخراج باستخدام task.input
في كود HTML.
على سبيل المثال ، لاسترداد مسار Amazon S3 حيث يتم تخزين صورة اللحام من الإخراج ، تحتاج إلى الوصول إلى المسار taskInput/image/file
. لأن taskInput
الكائن من إخراج الوظيفة معين إلى task.input
في HTML ، المرجع المقابل لملف صورة اللحام هو task.input.image.file
. تم دمج هذا المرجع مباشرة في كود HTML لواجهة مستخدم الوسم لعرض صورة اللحام:
• grant_read_access
تصفية مطلوب للملفات الموجودة في حاويات S3 التي لا يمكن الوصول إليها بشكل عام. يعمل هذا على التأكد من أن عنوان URL الذي تم تمريره إلى المتصفح يحتوي على رمز وصول قصير العمر للصورة ، وبالتالي يتجنب الاضطرار إلى جعل الموارد متاحة للجمهور لتصنيف الوظائف. غالبًا ما يكون هذا إلزاميًا لأن البيانات المراد تصنيفها ، مثل بيانات الجهاز ، سرية. نظرًا لأن وظيفة وضع العلامات المسبقة قد حولت أيضًا ملفات CSV إلى مؤامرات وصور ، فإن دمجها في واجهة المستخدم مماثل.
وظيفة Lambda توحيد التسمية
تعمل وظيفة Lambda الثانية التي تم تكوينها لوظيفة وضع العلامات المخصصة عندما يقوم جميع العمال بتسمية عنصر أو ملف المهلة تم الوصول إلى وظيفة وضع العلامات. تتمثل المهمة الرئيسية لهذه الوظيفة في اشتقاق تسمية واحدة من استجابات العمال. بالإضافة إلى ذلك ، يمكن أن تكون الوظيفة لأي نوع من المعالجة الإضافية للبيانات المصنفة ، مثل تخزينها على Amazon S3 بتنسيق مناسب بشكل مثالي لخط أنابيب ML الذي تستخدمه.
على الرغم من وجود استراتيجيات مختلفة ممكنة لدمج الملصقات ، إلا أنني أركز على الركائز الأساسية لتنفيذ مثل هذه الوظيفة وأظهر كيف تترجم إلى حالة الاستخدام لدينا. يتم تشغيل وظيفة الدمج بواسطة حدث مشابه لرمز JSON التالي:
العنصر الرئيسي في هذا الحدث هو payload
والذي يحتوي على s3Uri
للإشارة إلى ملف مخزن على Amazon S3. يحتوي ملف الحمولة هذا على قائمة بمجموعات البيانات التي تم تصنيفها والتسميات المخصصة لها من قبل العمال. الكود التالي هو مثال على إدخال القائمة هذا:
بالإضافة إلى المعرّف الذي يمكنك استخدامه لتحديد العامل الذي قام بتسمية العنصر ، يسرد كل إدخال لكل مجموعة بيانات التسميات التي تم تعيينها. على سبيل المثال ، في حالة تعدد العمال ، هناك إدخالات متعددة في annotations
. نظرًا لأنني أنشأت عاملًا واحدًا قام بتسمية جميع العناصر الخاصة بهذا المنشور ، فلا يوجد سوى إدخال واحد. الملف dataset-5.json
تم تسميته بـ Not Sure
للمصنف WeldingClassification
.
يجب أن تقوم وظيفة دمج الملصقات بالتكرار على جميع إدخالات القائمة وتحديد تسمية لكل مجموعة بيانات لاستخدامها كحقيقة أساسية لتدريب ML تحت الإشراف. تتوقع Ground Truth أن تقوم الوظيفة بإرجاع قائمة تحتوي على إدخال لكل عنصر مجموعة بيانات بالبنية التالية: