شعار زيفيرنت

وضع العلامات على مجموعات البيانات الصناعية متعددة المصادر باستخدام Amazon SageMaker Ground Truth

التاريخ:

قبل استخدام أي نوع من خوارزمية التعلم الآلي الخاضعة للإشراف (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 هذه هي كما يلي:

0|96.19|1023|420|4.5|4.5|1|8
0.1|96.13|894|424|4.5|4.5|1|8
0.2|96.06|884|425|4.5|4.5|1|8
0.3|96.05|884|426|4.5|4.5|1|8
0.4|96.12|887|426|4.5|4.5|1|8
0.5|96.17|902|426|4.5|4.5|2|8
0.6|95.82|974|426|4.5|4.5|2|8
0.7|95.45|1304|426|4.5|4.5|3|8
0.8|95.15|1410|428|4.5|4.5|3|8
0.9|94.96|1446|428|4.5|4.5|3|8
1|94.79|1464|428|4.5|4.5|3|8
...

العمود الأول من البيانات هو طابع زمني بالمللي ثانية تم تطبيعه مع بداية عملية اللحام. يتكون كل صف من قيم مستشعر مختلفة مرتبطة بالطابع الزمني. الصف الأول هو موضع القطب ، والصف الثاني هو التيار ، والصف الثالث هو الجهد (القيم الأخرى غير ذات صلة هنا). على سبيل المثال ، الصف مع الطابع الزمني 1، بعد 100 مللي ثانية من بدء عملية اللحام ، يكون موضع القطب الكهربي 94.79، تيار 1464، والجهد 428.

نظرًا لأنه من الصعب على البشر إجراء تقييمات باستخدام بيانات CSV الأولية ، فقد أوضح أيضًا كيفية المعالجة المسبقة لمثل هذه البيانات سريعًا لوضع العلامات عليها وتحويلها إلى مؤامرات يمكن قراءتها بسهولة أكبر. بهذه الطريقة ، يمكن لخبراء اللحام مشاهدة الصور والمخططات لإجراء تقييمهم لعملية اللحام.

نشر نموذج CloudFormation

لتبسيط الإعداد والتكوينات المطلوبة في ما يلي ، قمت بإنشاء قالب CloudFormation يقوم بنشر العديد من الأسس في حساب AWS الخاص بك. لبدء هذه العملية ، أكمل الخطوات التالية:

  1. قم بتسجيل الدخول إلى حساب AWS الخاص بك.
  2. اختر أحد الروابط التالية ، بناءً على منطقة AWS التي تستخدمها:
  1. احتفظ بجميع المعلمات كما هي وحددها أقر بأن AWS CloudFormation قد تنشئ موارد IAM بأسماء مخصصة و أقر بأن AWS CloudFormation قد يتطلب القدرة التالية: CAPABILITY_AUTO_EXPAND.
  2. اختار إنشاء مكدس لبدء النشر.

يستغرق النشر حوالي 3-5 دقائق ، وخلال هذه الفترة تحتوي حاوية تحتوي على بيانات للتسمية ، وبعض وظائف AWS Lambda ، و إدارة الهوية والوصول AWS تم نشر دور (IAM). تكتمل العملية عندما تتحول حالة النشر إلى CREATE_COMPLETE.

النواتج تحتوي علامة التبويب على معلومات إضافية ، مثل مسار Amazon S3 إلى ملف البيان ، والذي تستخدمه خلال هذا المنشور. لذلك ، يوصى بإبقاء علامة تبويب المتصفح مفتوحة ومتابعة بقية المنشور في علامة تبويب أخرى.

خلق قوة عاملة في مجال وضع العلامات على الحقيقة الأرضية

تقدم Ground Truth ثلاثة خيارات للتعريف القوى العاملة التي تكمل وضع العلامات: الأمازون ميكانيكي ترك, القوى العاملة الخاصة بالبائعو القوى العاملة الخاصة. في هذا القسم ، نقوم بتكوين قوة عاملة خاصة لأننا نريد إكمال التصنيف بأنفسنا. أنشئ قوة عاملة خاصة باتباع الخطوات التالية:

  1. على وحدة تحكم Amazon SageMaker ، ضمن الحقيقة الأرضية، اختر القوى العاملة وضع العلامات.
  2. على خاص علامة التبويب، اختر إنشاء فريق خاص.

  1. أدخل اسمًا لقوة العمل المصنفة. بالنسبة لحالة الاستخدام الخاصة بنا ، أدخل خبراء اللحام.
  2. أختار دعوة عمال جدد عن طريق البريد الإلكتروني.
  3. أدخل عنوان بريدك الإلكتروني واسم المؤسسة والبريد الإلكتروني لجهة الاتصال (والذي قد يكون هو نفسه الذي أدخلته للتو).
  4. اختار إنشاء فريق خاص.

تؤكد وحدة التحكم إنشاء قوة عمل التسمية في الجزء العلوي من الشاشة. عند تحديث الصفحة ، تظهر القوى العاملة الجديدة على خاص علامة التبويب ، تحت فرق خاصة.

تتلقى أيضًا بريدًا إلكترونيًا يحتوي على تعليمات تسجيل الدخول ، بما في ذلك كلمة مرور مؤقتة ورابط لفتح صفحة تسجيل الدخول.

  1. اختر الرابط واستخدم بريدك الإلكتروني وكلمة المرور المؤقتة للمصادقة وتغيير كلمة المرور لتسجيل الدخول.

يوصى بإبقاء علامة تبويب المتصفح مفتوحة حتى لا تضطر إلى تسجيل الدخول مرة أخرى. يخلص هذا إلى جميع الخطوات اللازمة لإنشاء القوى العاملة الخاصة بك.

تكوين وظيفة تسمية مخصصة

في هذا القسم ، ننشئ وظيفة تصنيف ونستخدم هذه الوظيفة لشرح التفاصيل وتدفق البيانات لوظيفة تصنيف مخصصة.

  1. على وحدة تحكم Amazon SageMaker ، ضمن الحقيقة الأرضية، اختر وضع العلامات على الوظائف.
  2. اختار إنشاء وظيفة وضع العلامات.

  1. أدخل اسمًا لوظيفة وضع العلامات ، مثل WeldingLabelJob1.
  2. اختار إعداد البيانات اليدوي.
  3. في حالة موقع مجموعة بيانات الإدخال، أدخل قيمة ManifestS3Path من مكدس CloudFormation النواتج
  4. في حالة موقع مجموعة بيانات الإخراج، دخول ProposedOutputPath القيمة من مكدس CloudFormation النواتج
  5. في حالة دور IAM، اختر أدخل دور IAM المخصص ARN.
  6. أدخل SagemakerServiceRoleArn القيمة من مكدس CloudFormation النواتج
  7. لنوع المهمة ، اختر Custom.
  8. اختار التالى.

دور IAM هو دور مخصص تم إنشاؤه بواسطة قالب CloudFormation الذي يسمح لـ Ground Truth باستدعاء وظائف Lambda والوصول إلى Amazon S3.

  1. اختر استخدام قوة عاملة خاصة بوضع العلامات.
  2. من القائمة المنسدلة ، اختر القوى العاملة خبراء اللحام.
  3. بالنسبة لمهلة المهمة ووقت انتهاء صلاحية المهمة ، تكفي ساعة واحدة.
  4. عدد العاملين لكل كائن مجموعة بيانات هو 1.
  5. في مجلة وظائف لامدا القسم ل مهمة ما قبل الوسم Lambda وظيفة، اختر الوظيفة التي تبدأ بـ PreLabelingLambda-.
  6. في حالة وظيفة Lambda وظيفة اللاحق، اختر الوظيفة التي تبدأ بـ PostLabelingLambda-.
  7. أدخل الكود التالي في قسم القوالب. يحدد كود HTML هذا الواجهة التي يراها العمال في قوة العمل الخاصة عند تسمية العناصر. بالنسبة لحالة الاستخدام الخاصة بنا ، يعرض القالب أربع صور ، وتكون الفئات لتصنيف نتائج اللحام كما يلي:
    <script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
    <crowd-form> <crowd-classifier name="WeldingClassification" categories="['Good Weld', 'Burn Through', 'Contamination', 'Lack of Fusion', 'Lack of Shielding Gas', 'High Travel Speed', 'Not sure']" header="Please classify the welding process." > <classification-target> <div> <h3>Welding Image</h3> <p><strong>Welding Camera Image </strong>{{ task.input.image.title }}</p> <p><a href="{{ task.input.image.file | grant_read_access }}" target="_blank">Download Image</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.image.file | grant_read_access }}"/> </p> </div> <hr/> <div> <h3>Current Graph</h3> <p><strong>Current Graph </strong>{{ task.input.current.title }}</p> <p><a href="{{ task.input.current.file | grant_read_access }}" target="_blank">Download Current Plot</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.current.file | grant_read_access }}"/> </p> </div> <hr/> <div> <h3>Electrode Position Graph</h3> <p><strong>Electrode Position Graph </strong>{{ task.input.electrode.title }}</p> <p><a href="{{ task.input.electrode.file | grant_read_access }}" target="_blank">Download Electrode Position Plot</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.electrode.file | grant_read_access }}"/> </p> </div> <hr/> <div> <h3>Voltage Graph</h3> <p><strong>Voltage Graph </strong>{{ task.input.voltage.title }}</p> <p><a href="{{ task.input.voltage.file | grant_read_access }}" target="_blank">Download Voltage Plot</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.voltage.file | grant_read_access }}"/> </p> </div> </classification-target> <full-instructions header="Classification Instructions"> <p>Read the task carefully and inspect the image as well as the plots.</p> <p> The image is a picture taking during the welding process. The plots show the corresponding sensor data for the electrode position, the voltage and the current measured during the welding process. </p> </full-instructions> <short-instructions> <p>Read the task carefully and inspect the image as well as the plots</p> </short-instructions> </crowd-classifier>
    </crowd-form>
    

يحتوي معالج إنشاء وظيفة التسمية على وظيفة معاينة في القسم إعداد مهمة وضع العلامات المخصصة، والتي يمكنك استخدامها للتحقق مما إذا كانت جميع التكوينات تعمل بشكل صحيح.

  1. لمعاينة الواجهة ، اختر أرسال.

يؤدي ذلك إلى فتح علامة تبويب متصفح جديدة ويعرض إصدارًا تجريبيًا لواجهة وضع العلامات ، على غرار لقطة الشاشة التالية.

  1. لإنشاء وظيفة التسمية ، اختر إنشاء.

تقوم Ground Truth بإعداد وظيفة وضع العلامات على النحو المحدد ، وتعرض لوحة المعلومات حالتها.

تعيين التسميات

لإنهاء مهمة وضع العلامات التي قمت بتكوينها ، تقوم بتسجيل الدخول إلى بوابة العامل وتعيين تسميات لعناصر بيانات مختلفة تتكون من صور ومخططات بيانات. يتم شرح التفاصيل الخاصة بكيفية عمل المكونات المختلفة لوظيفة التصنيف معًا في القسم التالي.

  1. على وحدة تحكم Amazon SageMaker ، ضمن الحقيقة الأرضية، اختر القوى العاملة وضع العلامات.
  2. على خاص علامة التبويب ، اختر الارتباط لـ عنوان URL لتسجيل الدخول إلى بوابة وضع العلامات.

عندما تنتهي Ground Truth من إعداد وظيفة وضع العلامات ، يمكنك رؤيتها مدرجة في ملف المشــاريــع الجزء. إذا لم تظهر ، فانتظر بضع دقائق وقم بتحديث علامة التبويب.

  1. اختار بدء العمل.

يؤدي هذا إلى تشغيل واجهة المستخدم الخاصة بوضع العلامات ، والتي تتيح لك تعيين ملصقات لمجموعات البيانات المختلطة التي تتكون من صور اللحام والمؤامرات للتيار وموضع القطب والجهد.

بالنسبة لحالة الاستخدام هذه ، يمكنك تعيين سبع تسميات مختلفة لمجموعة بيانات واحدة. يتم تحديد هذه الفئات والتسميات المختلفة في HTML لواجهة المستخدم ، ولكن يمكنك أيضًا إدراجها ديناميكيًا باستخدام وظيفة Lambda قبل وضع العلامات (التي تمت مناقشتها في القسم التالي). نظرًا لأننا لا نستخدم البيانات المصنفة بالفعل لأغراض تعلم الآلة ، يمكنك تعيين التسميات بشكل عشوائي للعناصر الخمسة التي يتم عرضها بواسطة Ground Truth لوظيفة التصنيف هذه.

بعد تسمية جميع العناصر ، تعود واجهة المستخدم إلى القائمة بالوظائف المتاحة. يختتم هذا القسم الخاص بتكوين وظيفة التسمية وبدء تشغيلها. في القسم التالي ، سأشرح بالتفصيل آليات وظيفة وضع العلامات المخصصة وأتعمق أيضًا في العناصر المختلفة لواجهة HTML.

الغوص العميق في وضع العلامات المخصصة

تدمج وظيفة التسمية المخصصة البيانات المراد تسميتها بثلاثة مكونات لإنشاء سير عمل يسمح للعاملين من القوى العاملة الخاصة بوضع العلامات بتعيين تسميات لكل عنصر في مجموعة البيانات:

  • وظيفة لامدا قبل وضع العلامات - يولد المحتوى الذي سيتم عرضه على واجهة وضع العلامات باستخدام ملف البيان المحدد أثناء تكوين وظيفة وضع العلامات. بالنسبة لحالة الاستخدام هذه ، تقوم الوظيفة أيضًا بتحويل ملفات CSV إلى مخططات يمكن للبشر قراءتها وتخزين هذه المؤامرات كصور في دلو S3 تحت البادئة plots.
  • واجهة التسمية - يستخدم إخراج وظيفة الملصقات المسبقة لإنشاء واجهة مستخدم. بالنسبة لحالة الاستخدام هذه ، تعرض الواجهة أربع صور (الصورة التي تم التقاطها أثناء عملية اللحام والرسوم البيانية الثلاثة للتيار وموضع القطب الكهربائي والجهد) وشكل يسمح للعمال بتصنيف عملية اللحام.
  • توحيد التسمية لامدا وظيفة - يسمح لك بتنفيذ استراتيجيات مخصصة لدمج تصنيفات عامل واحد أو عدة عمال في استجابة واحدة. بالنسبة للقوى العاملة لدينا ، هذا أمر بسيط للغاية لأنه لا يوجد سوى عامل واحد يتم دمج تسمياته في ملف يتم تخزينه بواسطة Ground Truth في Amazon S3.

قبل أن نحلل هذه المكونات الثلاثة ، أقدم رؤى حول بنية ملف البيان ، الذي يصف مصادر البيانات لوظيفة وضع العلامات.

ملفات البيان ومجموعة البيانات

ملف البيان هو ملف يتوافق مع خطوط JSON ، حيث يمثل كل سطر عنصرًا واحدًا للتسمية. تتوقع Ground Truth إما مفتاحًا source or source-ref في كل سطر من الملف. لحالة الاستخدام هذه ، أستخدم source، ويجب أن تكون القيمة المعينة سلسلة تمثل مسار Amazon S3. بالنسبة إلى هذا المنشور ، نقوم بتسمية خمسة عناصر فقط ، وتشبه سطور JSON الكود التالي:

{"source": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/dataset/dataset-1.json"}

بالنسبة لحالة الاستخدام الخاصة بنا مع تنسيقات وملفات متعددة ، يشير كل سطر في البيان إلى ملف مجموعة بيانات يتم تخزينه أيضًا على Amazon S3. مجموعة البيانات الخاصة بنا هي مستند JSON ، والذي يحتوي على مراجع لصور اللحام وملف CSV مع بيانات المستشعر:

{ "sensor_data": {"s3Path": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/sensor_data/weld.1.csv"}, "image": {"s3Path": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/images/weld.1.png"}
}

تأخذ Ground Truth كل سطر من ملف البيان وتقوم بتشغيل وظيفة Lambda التي نناقشها مسبقًا ، والتي نناقشها بعد ذلك.

وظيفة لامدا قبل وضع العلامات

تقوم وظيفة Lambda سابقة التوسيم بإنشاء كائن JSON يتم استخدامه لملء الأجزاء الخاصة بالعنصر لواجهة وضع العلامات. لمزيد من المعلومات، راجع المعالجة باستخدام AWS Lambda.

قبل أن تعرض Ground Truth عنصرًا لتصنيفه للعامل ، فإنه يقوم بتشغيل وظيفة التسمية المسبقة وإعادة توجيه المعلومات الموجودة في سطر JSON الخاص بالبيان إلى الوظيفة. بالنسبة لحالة الاستخدام الخاصة بنا ، يكون الحدث الذي تم تمريره إلى الوظيفة كما يلي:

{ "version": "2018-10-06", "labelingJobArn": "arn:aws:sagemaker:eu-west-1:XXX:labeling-job/weldinglabeljob1", "dataObject": { "source": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/dataset/dataset-1.json" }
}

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

  1. قم بتنزيل الملف المشار إليه في ملف source مجال الإدخال (انظر الرمز السابق).
  2. قم بتنزيل ملف مجموعة البيانات المشار إليه في المصدر
  3. قم بتنزيل ملف CSV يحتوي على بيانات المستشعر. من المتوقع أن يحتوي ملف مجموعة البيانات على مرجع إلى ملف CSV هذا.
  4. إنشاء قطع للتيار ، وموضع القطب ، والجهد من محتويات ملف CSV.
  5. قم بتحميل ملفات المؤامرة إلى Amazon S3.
  6. قم بإنشاء كائن JSON يحتوي على الإشارات إلى ملفات الرسم المذكورة أعلاه وصورة اللحام المشار إليها في ملف مجموعة البيانات.

عند اكتمال هذه الخطوات ، تُرجع الدالة كائن JSON من جزأين:

  • المدخلات - كائن JSON قابل للتخصيص بالكامل يحتوي على معلومات ليتم عرضها على واجهة مستخدم التسمية.
  • هو HumanAnnotationRequired - سلسلة تمثل قيمة منطقية (True or False) ، والتي يمكنك استخدامها لاستبعاد الكائنات من تصنيفها من قبل البشر. لا أستخدم هذه العلامة لحالة الاستخدام هذه لأننا نريد تسمية جميع عناصر البيانات المقدمة.

لمزيد من المعلومات، راجع المعالجة باستخدام AWS Lambda.

نظرًا لأنني أرغب في عرض صور اللحام والرسوم البيانية الثلاثة للتيار وموضع القطب الكهربائي والجهد ، فإن نتيجة وظيفة Lambda هي كما يلي لمجموعة البيانات الأولى:

{ "taskInput": { "image": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/images/weld.1.png", "title": " from image at s3://iiot-custom-label-blog-bucket-unn4d0l4j0/images/weld.1.png" }, "voltage": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/plots/weld.1.csv-current.png", "title": " from file at plots/weld.1.csv-current.png" }, "electrode": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/plots/weld.1.csv-electrode_pos.png", "title": " from file at plots/weld.1.csv-electrode_pos.png" }, "current": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/plots/weld.1.csv-voltage.png", "title": " from file at plots/weld.1.csv-voltage.png" } }, "isHumanAnnotationRequired": "true"
}

في الكود السابق ، ملف 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 لواجهة مستخدم الوسم لعرض صورة اللحام:

<img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.image.file | grant_read_access }}"/>

grant_read_access تصفية مطلوب للملفات الموجودة في حاويات S3 التي لا يمكن الوصول إليها بشكل عام. يعمل هذا على التأكد من أن عنوان URL الذي تم تمريره إلى المتصفح يحتوي على رمز وصول قصير العمر للصورة ، وبالتالي يتجنب الاضطرار إلى جعل الموارد متاحة للجمهور لتصنيف الوظائف. غالبًا ما يكون هذا إلزاميًا لأن البيانات المراد تصنيفها ، مثل بيانات الجهاز ، سرية. نظرًا لأن وظيفة وضع العلامات المسبقة قد حولت أيضًا ملفات CSV إلى مؤامرات وصور ، فإن دمجها في واجهة المستخدم مماثل.

وظيفة Lambda توحيد التسمية

تعمل وظيفة Lambda الثانية التي تم تكوينها لوظيفة وضع العلامات المخصصة عندما يقوم جميع العمال بتسمية عنصر أو ملف المهلة تم الوصول إلى وظيفة وضع العلامات. تتمثل المهمة الرئيسية لهذه الوظيفة في اشتقاق تسمية واحدة من استجابات العمال. بالإضافة إلى ذلك ، يمكن أن تكون الوظيفة لأي نوع من المعالجة الإضافية للبيانات المصنفة ، مثل تخزينها على Amazon S3 بتنسيق مناسب بشكل مثالي لخط أنابيب ML الذي تستخدمه.

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

{ "version": "2018-10-06", "labelingJobArn": "arn:aws:sagemaker:eu-west-1:261679111194:labeling-job/weldinglabeljob1", "payload": { "s3Uri": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/output/WeldingLabelJob1/annotations/consolidated-annotation/consolidation-request/iteration-1/2020-09-15_16:16:11.json" }, "labelAttributeName": "WeldingLabelJob1", "roleArn": "arn:aws:iam::261679111194:role/AmazonSageMaker-Service-role-unn4d0l4j0", "outputConfig": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/output/WeldingLabelJob1/annotations", "maxHumanWorkersPerDataObject": 1 }

العنصر الرئيسي في هذا الحدث هو payloadوالذي يحتوي على s3Uri للإشارة إلى ملف مخزن على Amazon S3. يحتوي ملف الحمولة هذا على قائمة بمجموعات البيانات التي تم تصنيفها والتسميات المخصصة لها من قبل العمال. الكود التالي هو مثال على إدخال القائمة هذا:

{ "datasetObjectId": "4", "dataObject": { "s3Uri": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/dataset/dataset-5.json" }, "annotations": [ { "workerId": "private.eu-west-1.abd2ec3e354db315", "annotationData": { "content":"{"WeldingClassification":{"label":"Not sure"}}" } } ] }

بالإضافة إلى المعرّف الذي يمكنك استخدامه لتحديد العامل الذي قام بتسمية العنصر ، يسرد كل إدخال لكل مجموعة بيانات التسميات التي تم تعيينها. على سبيل المثال ، في حالة تعدد العمال ، هناك إدخالات متعددة في annotations. نظرًا لأنني أنشأت عاملًا واحدًا قام بتسمية جميع العناصر الخاصة بهذا المنشور ، فلا يوجد سوى إدخال واحد. الملف dataset-5.json تم تسميته بـ Not Sure للمصنف WeldingClassification.

يجب أن تقوم وظيفة دمج الملصقات بالتكرار على جميع إدخالات القائمة وتحديد تسمية لكل مجموعة بيانات لاستخدامها كحقيقة أساسية لتدريب ML تحت الإشراف. تتوقع Ground Truth أن تقوم الوظيفة بإرجاع قائمة تحتوي على إدخال لكل عنصر مجموعة بيانات بالبنية التالية:

{ "datasetObjectId": "4", "consolidatedAnnotation": { "content": { "WeldingLabelJob1": { "WeldingClassification": "Not sure" } } } }

يجب أن يحتوي كل إدخال في القائمة التي تم إرجاعها على الامتداد datasetObjectId للإدخال المقابل في ملف الحمولة وكائن JSON consolidatedAnnotationالذي يحتوي على كائن content. تتوقع Ground Truth أن يحتوي المحتوى على مفتاح يساوي اسم وظيفة التصنيف ، (لحالة الاستخدام الخاصة بنا ، WeldingLabelJob1). لمزيد من المعلومات، راجع المعالجة باستخدام AWS Lambda.
يمكنك تغيير هذا السلوك عند إنشاء وظيفة التصنيف عن طريق التحديد أريد تحديد اسم سمة التسمية مختلفًا عن اسم مهمة التصنيف وإدخال اسم سمة التسمية.

المحتوى الموجود داخل هذا المفتاح الذي يساوي اسم وظيفة وضع العلامات قابل للتكوين بحرية ويمكن أن يكون معقدًا بشكل تعسفي. بالنسبة لحالة الاستخدام الخاصة بنا ، يكفي إرجاع التسمية المخصصة Not Sure. إذا لم يتم استيفاء أي من متطلبات التنسيق هذه ، فإن Ground Truth تفترض أن وظيفة وضع العلامات لم تعمل بشكل صحيح وفشلت.

لأنني حددت output كبادئة مطلوبة أثناء إنشاء وظيفة وضع العلامات ، يتم استيفاء المتطلبات ، وتقوم Ground Truth بتحميل قائمة إدخالات JSON في الحاوية والبادئة المحددة أثناء إنشاء التسميات المدمجة ، ويتم تحميلها بالبادئة التالية:

output/WeldingLabelJob1/annotations/consolidated-annotation/consolidation-response/iteration-1/

يمكنك استخدام هذه الملفات لتدريب خوارزميات ML في Amazon SageMaker أو لمزيد من المعالجة.

تنظيف

لتجنب تكبد رسوم في المستقبل ، احذف جميع الموارد التي تم إنشاؤها لهذه المشاركة.

  1. في وحدة تحكم AWS CloudFormation ، اختر كومات.
  2. حدد المكدس iiot-custom-label-blog.
  3. اختار حذف.

تزيل هذه الخطوة جميع الملفات وحاوية S3 من حسابك. تستغرق العملية حوالي 3-5 دقائق.

وفي الختام

يتطلب ML الخاضع للإشراف بيانات مصنفة ، وتوفر Ground Truth نظامًا أساسيًا لإنشاء تدفقات عمل العلامات. أظهر هذا المنشور كيفية بناء سير عمل معقد لتصنيف IoT الصناعي ، حيث يجب أخذ البيانات من مصادر متعددة في الاعتبار عند تصنيف العناصر. أوضح المنشور كيفية إنشاء وظيفة تصنيف مخصصة وقدم تفاصيل حول الآليات التي تتطلبها Ground Truth لتنفيذ سير العمل هذا. للبدء في كتابة مهمة وضع العلامات المخصصة الخاصة بك ، ارجع إلى وثائق التسمية المخصصة الصفحة الخاصة بـ Ground Truth وربما إعادة نشر قالب CloudFormation لهذا المنشور للحصول على عينة من Lambdas قبل وضع العلامات والتوحيد. بالإضافة إلى ذلك ، فإن مشاركة المدونة "إنشاء وظائف مخصصة لوضع العلامات باستخدام AWS Lambda و Amazon SageMaker Ground Truth"رؤى إضافية حول إنشاء وظائف مخصصة لوضع العلامات.


عن المؤلف

بصفته مديرًا رئيسيًا لمشاركة النماذج الأولية ، الدكتور ماركوس بيستهورن مسؤول عن بناء نماذج أولية للأعمال مع عملاء AWS ، وهو متخصص في إنترنت الأشياء والتعلم الآلي. بدأت "حياته المهنية" عندما كان يبلغ من العمر 7 سنوات عندما وضع يديه على جهاز كمبيوتر به قرصين مرنين مقاس 5.25 بوصة ، بدون قرص صلب ، ولا ماوس ، حيث بدأ في كتابة BASIC ، ولاحقًا برامج C بالإضافة إلى C ++ . وهو حاصل على درجة الدكتوراه في علوم الكمبيوتر وجميع شهادات AWS المتاحة حاليًا. عندما لا يكون على الكمبيوتر ، يركض أو يتسلق الجبال.

المصدر: https://aws.amazon.com/blogs/machine-learning/labeling-mixed-source-industrial-datasets-with-amazon-sagemaker-ground-truth/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة