نقل التعلم لنماذج اكتشاف كائن TensorFlow في Amazon SageMaker

الأمازون SageMaker يوفر مجموعة من خوارزميات مدمجة, نماذج مدربة مسبقًاو قوالب الحلول الجاهزة لمساعدة علماء البيانات وممارسي التعلم الآلي (ML) على البدء في التدريب ونشر نماذج التعلم الآلي بسرعة. يمكنك استخدام هذه الخوارزميات والنماذج لكل من التعلم الخاضع للإشراف وغير الخاضع للإشراف. يمكنهم معالجة أنواع مختلفة من بيانات الإدخال ، بما في ذلك الجدول والصورة والنص.

هذا المنشور هو الثاني في سلسلة حول الخوارزميات المدمجة الجديدة في SageMaker. في ال أول مشاركةلقد أظهرنا كيف يوفر SageMaker خوارزمية مدمجة لتصنيف الصور. نعلن اليوم أن SageMaker يوفر خوارزمية مدمجة جديدة لاكتشاف الكائنات باستخدام TensorFlow. تدعم خوارزمية التعلم الخاضع للإشراف نقل التعلم للعديد من النماذج المدربة مسبقًا والمتوفرة في TensorFlow. يأخذ صورة كمدخل ويخرج الكائنات الموجودة في الصورة مع المربعات المحيطة. يمكنك ضبط هذه النماذج المدربة مسبقًا باستخدام نقل التعلم حتى في حالة عدم توفر عدد كبير من صور التدريب. إنه متاح من خلال SageMaker خوارزميات مدمجة وكذلك من خلال واجهة المستخدم SageMaker JumpStart in أمازون ساجميكر ستوديو. لمزيد من المعلومات ، يرجى الرجوع إلى كشف الكائنات Tensorflow والمفكرة النموذجية مقدمة إلى SageMaker Tensorflow – اكتشاف الكائنات.

يوفر اكتشاف الكائنات باستخدام TensorFlow في SageMaker نقل التعلم على العديد من النماذج المدربة مسبقًا والمتوفرة في TensorFlow Hub. وفقًا لعدد تسميات الفصل في بيانات التدريب، يحل رأس اكتشاف الكائنات الجديد الذي تمت تهيئته عشوائيًا محل الرأس الحالي لنموذج TensorFlow. يمكن ضبط الشبكة بأكملها، بما في ذلك النموذج المُدرب مسبقًا، أو الطبقة العليا فقط (رأس اكتشاف الكائنات) على بيانات التدريب الجديدة. في وضع التعلم النقلي هذا، يمكنك تحقيق التدريب حتى باستخدام مجموعة بيانات أصغر.

كيفية استخدام خوارزمية الكشف عن الكائنات TensorFlow الجديدة

يصف هذا القسم كيفية استخدام خوارزمية الكشف عن الكائنات TensorFlow مع SageMaker بيثون SDK. للحصول على معلومات حول كيفية استخدامه من Studio UI ، راجع سيج ميكر جومب ستارت.

تدعم الخوارزمية نقل التعلم للنماذج المدربة مسبقًا المدرجة في نماذج TensorFlow. يتم تحديد كل نموذج من قبل فريد model_id. يوضح التعليمة البرمجية التالية كيفية ضبط نموذج ResNet50 V1 FPN المحدد بواسطة model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 على مجموعة بيانات تدريب مخصصة. لكل model_id، من أجل إطلاق وظيفة تدريب SageMaker من خلال مقدر فئة SageMaker Python SDK، فأنت بحاجة إلى جلب URI لصورة Docker، وURI للبرنامج النصي للتدريب، وURI النموذجي المُدرب مسبقًا من خلال وظائف الأداة المساعدة المتوفرة في SageMaker. يحتوي URI النصي للتدريب على جميع التعليمات البرمجية اللازمة لمعالجة البيانات وتحميل النموذج المُدرب مسبقًا وتدريب النموذج وحفظ النموذج المُدرب للاستدلال. يحتوي نموذج URI المُدرب مسبقًا على تعريف بنية النموذج المُدرب مسبقًا ومعلمات النموذج. لاحظ أن URI لصورة Docker وURI للبرنامج النصي للتدريب هما نفسهما بالنسبة لجميع نماذج اكتشاف الكائنات TensorFlow. يعد URI للنموذج المُدرب مسبقًا خاصًا بنموذج معين. تم تنزيل كرات القطران النموذجية المدربة مسبقًا من TensorFlow وحفظها بتوقيع النموذج المناسب في خدمة تخزين أمازون البسيطة حاويات (Amazon S3) ، مثل أن وظيفة التدريب تعمل بمعزل عن الشبكة. انظر الكود التالي:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

باستخدام هذه الأدوات التدريبية الخاصة بالنموذج ، يمكنك إنشاء كائن من مقدر صف دراسي:

# Create SageMaker Estimator instance
tf_od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

بعد ذلك ، لنقل التعلم على مجموعة البيانات المخصصة الخاصة بك ، قد تحتاج إلى تغيير القيم الافتراضية لمعلمات التدريب التشعبية المدرجة في معلمات هايبر. يمكنك إحضار قاموس Python لهذه المعلمات التشعبية بقيمها الافتراضية عن طريق الاتصال hyperparameters.retrieve_default، قم بتحديثها حسب الحاجة ، ثم قم بتمريرها إلى فئة المقدر. لاحظ أن القيم الافتراضية لبعض المعلمات التشعبية تختلف باختلاف الطرز. بالنسبة للنماذج الكبيرة ، يكون حجم الدُفعة الافتراضي أصغر ويكون حجم train_only_top_layer تم تعيين المعلمة التشعبية على True. المعلمة الفائقة train_only_top_layer يحدد معلمات النموذج التي تتغير أثناء عملية الضبط الدقيق. إذا train_only_top_layer is True، تتغير معلمات طبقات التصنيف وتبقى باقي المعلمات ثابتة أثناء عملية الضبط الدقيق. من ناحية أخرى ، إذا train_only_top_layer is False، يتم ضبط جميع معلمات النموذج بدقة. انظر الكود التالي:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

نحن نقدم مجموعة بيانات PennFudanPed كمجموعة بيانات افتراضية لضبط النماذج. تحتوي مجموعة البيانات على صور للمشاة. توفر التعليمات البرمجية التالية مجموعة بيانات التدريب الافتراضية المستضافة في مجموعات S3:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

أخيرًا ، لبدء تشغيل وظيفة تدريب SageMaker من أجل ضبط النموذج بدقة ، اتصل .fit على كائن فئة المقدر ، أثناء اجتياز موقع S3 لمجموعة بيانات التدريب:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

واجهة الإدخال/الإخراج لخوارزمية الكشف عن الكائنات TensorFlow

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

  • إدخال - دليل يحتوي على صور الدليل الفرعي وملف annotations.json.
  • الناتج - هناك نوعان من المخرجات. الأول هو نموذج دقيق، يمكن نشره للاستدلال أو التدريب عليه بشكل أكبر باستخدام التدريب المتزايد. الثاني هو الملف الذي يقوم بتعيين فهارس الفئة إلى تسميات الفئة؛ يتم حفظ هذا مع النموذج.

يجب أن يبدو دليل الإدخال كالمثال التالي:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

annotations.json يجب أن يحتوي الملف على معلومات عن bounding_boxes والتسميات الطبقية الخاصة بهم. يجب أن يكون لديه قاموس مع المفاتيح "images" و "annotations". القيمة ل "images" يجب أن يكون المفتاح عبارة عن قائمة إدخالات، واحدة لكل صورة من صور النموذج {"file_name": image_name, "height": height, "width": width, "id": image_id}. قيمة "annotations" يجب أن يكون المفتاح عبارة عن قائمة إدخالات، واحدة لكل مربع محيط بالنموذج {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

الاستدلال باستخدام خوارزمية الكشف عن الكائنات TensorFlow

يمكن استضافة النماذج التي تم إنشاؤها للاستدلال ودعم تنسيقات الصور .jpg و .jpeg و .png المشفرة مثل application/x-image نوع المحتوى. يتم تغيير حجم الصورة المدخلة تلقائيًا. يحتوي الإخراج على المربعات والفئات المتوقعة والنتائج لكل توقع. يعالج نموذج الكشف عن الكائنات TensorFlow صورة واحدة لكل طلب ويخرج سطرًا واحدًا فقط في JSON. فيما يلي مثال للاستجابة في JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept ومن المقرر أن application/json، ثم يقوم النموذج بإخراج المربعات والفئات والنتائج المتوقعة فقط. لمزيد من التفاصيل حول التدريب والاستدلال، راجع نموذج دفتر الملاحظات مقدمة إلى SageMaker TensorFlow - اكتشاف الكائنات.

استخدم خوارزميات SageMaker المضمنة من خلال JumpStart UI

يمكنك أيضًا استخدام اكتشاف الكائنات SageMaker TensorFlow وأي من الخوارزميات المضمنة الأخرى ببضع نقرات عبر واجهة مستخدم JumpStart. JumpStart هي إحدى ميزات SageMaker التي تتيح لك تدريب ونشر الخوارزميات المضمنة والنماذج المدربة مسبقًا من أطر تعلم الآلة المختلفة ومحاور النماذج من خلال واجهة رسومية. كما يسمح لك أيضًا بنشر حلول تعلم الآلة الكاملة التي تجمع نماذج تعلم الآلة مع العديد من خدمات AWS الأخرى لحل حالة الاستخدام المستهدفة.

فيما يلي مقطعا فيديو يوضحان كيف يمكنك تكرار نفس عملية الضبط والنشر التي مررنا بها للتو ببضع نقرات عبر واجهة مستخدم JumpStart.

صقل النموذج المدرَّب مسبقًا

فيما يلي عملية ضبط نفس نموذج الكشف عن الكائنات المدرب مسبقًا.

نشر النموذج النهائي

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

وفي الختام

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

لمزيد من المعلومات، راجع توثيق و سبيل المثال دفتر.


عن المؤلفين

نقل التعلم لنماذج اكتشاف الكائنات TensorFlow في Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.الدكتور فيفيك مادان هو عالم تطبيقي مع فريق Amazon SageMaker JumpStart. حصل على درجة الدكتوراه من جامعة إلينوي في أوربانا شامبين وكان باحثًا بعد الدكتوراه في جامعة جورجيا للتكنولوجيا. وهو باحث نشط في التعلم الآلي وتصميم الخوارزميات وقد نشر أوراقًا بحثية في مؤتمرات EMNLP وICLR وCOLT وFOCS وSODA.

نقل التعلم لنماذج اكتشاف الكائنات TensorFlow في Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.جواو مورا هو مهندس حلول متخصص في AI / ML في Amazon Web Services. يركز في الغالب على حالات استخدام البرمجة اللغوية العصبية ومساعدة العملاء على تحسين التدريب على نموذج التعلم العميق ونشره. وهو أيضًا مؤيد نشط لحلول ML ذات التعليمات البرمجية المنخفضة والأجهزة المتخصصة في ML.

نقل التعلم لنماذج اكتشاف الكائنات TensorFlow في Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.د. أشيش خيتان هو عالم تطبيقي أقدم مع خوارزميات Amazon SageMaker المضمنة ويساعد في تطوير خوارزميات التعلم الآلي. حصل على درجة الدكتوراه من جامعة إلينوي في أوربانا شامبين. وهو باحث نشط في التعلم الآلي والاستدلال الإحصائي وقد نشر العديد من الأوراق البحثية في مؤتمرات NeurIPS و ICML و ICLR و JMLR و ACL و EMNLP.

الطابع الزمني:

اكثر من التعلم الآلي من AWS