انتقل إلى المحتوى

A Step-by-Step Guide to Training YOLO11 Models with IBM Watsonx

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

You can train Ultralytics YOLO11 models using IBM Watsonx. It's a good option for enterprises interested in efficient model training, fine-tuning for specific tasks, and improving model performance with robust tools and a user-friendly setup. In this guide, we'll walk you through the process of training YOLO11 with IBM Watsonx, covering everything from setting up your environment to evaluating your trained models. Let's get started!

ما هي شركة IBM Watsonx؟

Watsonx is IBM's cloud-based platform designed for commercial generative AI and scientific data. IBM Watsonx's three components - watsonx.ai, watsonx.data, and watsonx.governance - come together to create an end-to-end, trustworthy AI platform that can accelerate AI projects aimed at solving business problems. It provides powerful tools for building, training, and deploying machine learning models and makes it easy to connect with various data sources.

نظرة عامة على IBM Watsonx

Its user-friendly interface and collaborative capabilities streamline the development process and help with efficient model management and deployment. Whether for computer vision, predictive analytics, natural language processing, or other AI applications, IBM Watsonx provides the tools and support needed to drive innovation.

الميزات الرئيسية لـ IBM Watsonx

يتكون نظام IBM Watsonx من ثلاثة مكونات رئيسية: watsonx.ai، وWattsonx.data، وWattsonx.governance. يقدم كل مكون ميزات تلبي جوانب مختلفة من الذكاء الاصطناعي وإدارة البيانات. دعنا نلقي نظرة فاحصة عليها.

Watsonx.ai

يوفر Watsonx.ai أدوات قوية لتطوير الذكاء الاصطناعي ويوفر إمكانية الوصول إلى النماذج المخصصة المدعومة من IBM، ونماذج الطرف الثالث مثل Llama 3، ونماذج Granite الخاصة بشركة IBM. ويتضمن مختبر المطالبات لتجربة مطالبات الذكاء الاصطناعي، واستوديو الضبط لتحسين أداء النموذج مع البيانات المصنفة، ومحرك التدفقات لتبسيط تطوير تطبيقات الذكاء الاصطناعي التوليدي. كما أنه يوفر أدوات شاملة لأتمتة دورة حياة نموذج الذكاء الاصطناعي والاتصال بمختلف واجهات برمجة التطبيقات والمكتبات.

بيانات Watsonx.data

يدعم Watsonx.data كلاً من عمليات النشر السحابية والمحلية من خلال تكامل IBM Storage Fusion HCI. توفر وحدة التحكم سهلة الاستخدام وصولًا مركزيًا إلى البيانات عبر البيئات وتجعل استكشاف البيانات أمرًا سهلاً باستخدام SQL الشائعة. يعمل على تحسين أعباء العمل باستخدام محركات استعلام فعالة مثل Presto وSpark، ويسرّع رؤى البيانات باستخدام طبقة دلالية مدعومة بالذكاء الاصطناعي، ويتضمن قاعدة بيانات متجهة لملاءمة الذكاء الاصطناعي، ويدعم تنسيقات البيانات المفتوحة لسهولة مشاركة التحليلات وبيانات الذكاء الاصطناعي.

واتسونx.الحكم

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

How to Train YOLO11 Using IBM Watsonx

You can use IBM Watsonx to accelerate your YOLO11 model training workflow.

المتطلبات المسبقه

تحتاج إلى حساب IBM Cloud لإنشاء مشروع watsonx.ai، وستحتاج أيضًا إلى حساب Kaggle لتحميل مجموعة البيانات.

الخطوة 1: قم بإعداد بيئتك

أولاً، ستحتاج إلى إعداد حساب IBM لاستخدام دفتر Jupyter Notebook. قم بتسجيل الدخول إلى watsonx.ai باستخدام حساب IBM Cloud الخاص بك.

بعد ذلك، قم بإنشاء مشروع watsonx.ai، ودفتر ملاحظات Jupyter.

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

الخطوة 2: تثبيت المكتبات ذات الصلة واستيرادها

بعد ذلك، يمكنك تثبيت مكتبات Python الضرورية واستيرادها.

تركيب

# Install the required packages
pip install torch torchvision torchaudio
pip install opencv-contrib-python-headless
pip install ultralytics==8.0.196

For detailed instructions and best practices related to the installation process, check our Ultralytics Installation guide. While installing the required packages for YOLO11, if you encounter any difficulties, consult our Common Issues guide for solutions and tips.

بعد ذلك، يمكنك استيراد الحزم المطلوبة.

استيراد المكتبات ذات الصلة

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

الخطوة 3: تحميل البيانات

For this tutorial, we will use a marine litter dataset available on Kaggle. With this dataset, we will custom-train a YOLO11 model to detect and classify litter and biological objects in underwater images.

يمكننا تحميل مجموعة البيانات مباشرةً في دفتر الملاحظات باستخدام واجهة برمجة تطبيقات Kaggle. أولاً، قم بإنشاء حساب Kaggle مجاني. بمجرد إنشاء حساب، ستحتاج إلى إنشاء مفتاح API. يمكن العثور على إرشادات إنشاء مفتاحك في وثائق K aggle API تحت قسم "بيانات اعتماد واجهة برمجة التطبيقات".

انسخ والصق اسم مستخدم Kaggle ومفتاح واجهة برمجة التطبيقات في الكود التالي. ثم قم بتشغيل الكود لتثبيت واجهة برمجة التطبيقات وتحميل مجموعة البيانات في Watsonx.

تركيب

# Install kaggle
pip install kaggle

بعد تثبيت Kaggle، يمكننا تحميل مجموعة البيانات إلى Watsonx.

تحميل البيانات

# Replace "username" string with your username
os.environ["KAGGLE_USERNAME"] = "username"
# Replace "apiKey" string with your key
os.environ["KAGGLE_KEY"] = "apiKey"

# Load dataset
os.system("kaggle datasets download atiqishrak/trash-dataset-icra19 --unzip")

# Store working directory path as work_dir
work_dir = os.getcwd()

# Print work_dir path
print(os.getcwd())

# Print work_dir contents
print(os.listdir(f"{work_dir}"))

# Print trash_ICRA19 subdirectory contents
print(os.listdir(f"{work_dir}/trash_ICRA19"))

بعد تحميل مجموعة البيانات، قمنا بطباعة دليل العمل وحفظه. كما قمنا بطباعة محتويات دليل العمل لدينا للتأكد من تحميل مجموعة البيانات "trash_ICRA19" بشكل صحيح.

إذا رأيت "trash_ICRA19" بين محتويات الدليل، فهذا يعني أنه تم تحميله بنجاح. يجب أن ترى ثلاثة ملفات/مجلدات: أ config.yaml ملف، أ videos_for_testing الدليل، و dataset الدليل. سنتجاهل دليل videos_for_testing الدليل، لذا لا تتردد في حذفه.

We will use the config.yaml file and the contents of the dataset directory to train our object detection model. Here is a sample image from our marine litter data set.

القمامة البحرية مع صندوق الارتباط

الخطوة 4: المعالجة المسبقة للبيانات

لحسن الحظ، فإن جميع التسميات في مجموعة بيانات القمامة البحرية منسقة بالفعل كملفات YOLO .txt. ومع ذلك، نحن بحاجة إلى إعادة ترتيب بنية أدلة الصور والتسميات من أجل مساعدة نموذجنا على معالجة الصورة والتسميات. في الوقت الحالي، يتبع دليل مجموعة البيانات المحملة لدينا هذه البنية:

دليل مجموعة البيانات المحملة

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

Yolo هيكل الدليل

لإعادة تنظيم دليل مجموعة البيانات، يمكننا تشغيل البرنامج النصي التالي:

المعالجة المسبقة للبيانات

# Function to reorganize dir
def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        # Create image and label subdirs if non-existent
        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        # Move images and labels to respective subdirs
        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
            # Delete .xml files
            elif filename.endswith(".xml"):
                os.remove(os.path.join(subdir_path, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

بعد ذلك، نحتاج إلى تعديل ملف .yaml لمجموعة البيانات. هذا هو الإعداد الذي سنستخدمه في ملف .yaml الخاص بنا. تبدأ أرقام معرّفات الفئات من 0:

path: /path/to/dataset/directory # root directory for dataset
train: train/images # train images subdirectory
val: train/images # validation images subdirectory
test: test/images # test images subdirectory

# Classes
names:
    0: plastic
    1: bio
    2: rov

قم بتشغيل النص البرمجي التالي لحذف المحتويات الحالية من config.yaml واستبدالها بالمحتويات أعلاه التي تعكس بنية دليل مجموعة البيانات الجديدة. تأكد من استبدال جزء work_dir من مسار الدليل الجذر في السطر 4 بمسار دليل العمل الذي استرجعناه سابقًا. اترك تعريفات الدليل الفرعي للقطار و val و test الفرعية. أيضًا، لا تغير {work_dir} في السطر 23 من الكود.

تحرير ملف .yaml

# Contents of new confg.yaml file
def update_yaml_file(file_path):
    data = {
        "path": "work_dir/trash_ICRA19/dataset",
        "train": "train/images",
        "val": "train/images",
        "test": "test/images",
        "names": {0: "plastic", 1: "bio", 2: "rov"},
    }

    # Ensures the "names" list appears after the sub/directories
    names_data = data.pop("names")
    with open(file_path, "w") as yaml_file:
        yaml.dump(data, yaml_file)
        yaml_file.write("\n")
        yaml.dump({"names": names_data}, yaml_file)


if __name__ == "__main__":
    file_path = f"{work_dir}/trash_ICRA19/config.yaml"  # .yaml file path
    update_yaml_file(file_path)
    print(f"{file_path} updated successfully.")

Step 5: Train the YOLO11 model

Run the following command-line code to fine tune a pretrained default YOLO11 model.

Train the YOLO11 model

!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo11n.pt epochs=2 batch=32 lr0=.04 plots=True

إليك نظرة فاحصة على المعلمات في أمر تدريب النموذج:

  • task: It specifies the computer vision task for which you are using the specified YOLO model and data set.
  • الوضع: يشير إلى الغرض الذي تقوم بتحميل النموذج والبيانات المحددة من أجله. بما أننا نقوم بتدريب نموذج، يتم ضبطه على "تدريب". لاحقًا، عندما نختبر أداء النموذج، سنضبطه على "تنبؤ".
  • epochs: This delimits the number of times YOLO11 will pass through our entire data set.
  • batch: The numerical value stipulates the training batch sizes. Batches are the number of images a model processes before it updates its parameters.
  • lr0: Specifies the model's initial learning rate.
  • المؤامرات: يوجه YOLO لإنشاء وحفظ المخططات الخاصة بمقاييس التدريب والتقييم الخاصة بالنموذج.

For a detailed understanding of the model training process and best practices, refer to the YOLO11 Model Training guide. This guide will help you get the most out of your experiments and ensure you're using YOLO11 effectively.

الخطوة 6: اختبار النموذج

يمكننا الآن تشغيل الاستدلال لاختبار أداء نموذجنا المضبوط بدقة:

Test the YOLO11 model

!yolo task=detect mode=predict source={work_dir}/trash_ICRA19/dataset/test/images model={work_dir}/runs/detect/train/weights/best.pt conf=0.5 iou=.5 save=True save_txt=True

This brief script generates predicted labels for each image in our test set, as well as new output image files that overlay the predicted bounding box atop the original image.

يتم حفظ التسميات .txt المتوقعة لكل صورة عبر save_txt=True ويتم إنشاء صور الإخراج مع تراكبات المربع المحدود من خلال وسيطة save=True جدال.
المتغير conf=0.5 يُعلم النموذج بتجاهل جميع التنبؤات التي يقل مستوى الثقة فيها عن 50%.

وأخيراً, iou=.5 يوجه النموذج لتجاهل المربعات في نفس الفئة بتداخل 50% أو أكثر. يساعد على تقليل المربعات المكررة المحتملة التي تم إنشاؤها لنفس الكائن.
يمكننا تحميل الصور مع تراكبات المربعات المحدودة المتوقعة لعرض كيفية أداء نموذجنا على عدد قليل من الصور.

تنبؤات العرض

# Show the first ten images from the preceding prediction task
for pred_dir in glob.glob(f"{work_dir}/runs/detect/predict/*.jpg")[:10]:
    img = Image.open(pred_dir)
    display(img)

يعرض الرمز أعلاه عشر صور من مجموعة الاختبار مع المربعات المحدودة المتوقعة لها، مصحوبة بتسميات أسماء الفئات ومستويات الثقة.

الخطوة 7: تقييم النموذج

We can produce visualizations of the model's precision and recall for each class. These visualizations are saved in the home directory, under the train folder. The precision score is displayed in the P_curve.png:

منحنى الثقة الدقيقة

The graph shows an exponential increase in precision as the model's confidence level for predictions increases. However, the model precision has not yet leveled out at a certain confidence level after two epochs.

The recall graph (R_curve.png) displays an inverse trend:

منحنى الثقة في التذكر

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

Step 8: Calculating Intersection Over Union

You can measure the prediction accuracy by calculating the IoU between a predicted bounding box and a ground truth bounding box for the same object. Check out IBM's tutorial on training YOLO11 for more details.

ملخص

We explored IBM Watsonx key features, and how to train a YOLO11 model using IBM Watsonx. We also saw how IBM Watsonx can enhance your AI workflows with advanced tools for model building, data management, and compliance.

لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة وثائق IBM Watsonx الرسمية.

تأكد أيضا من إطلاعك على ملف Ultralytics صفحة دليل التكامل ، لمعرفة المزيد حول عمليات الدمج المثيرة المختلفة.

الأسئلة المتداولة

How do I train a YOLO11 model using IBM Watsonx?

To train a YOLO11 model using IBM Watsonx, follow these steps:

  1. قم بإعداد بيئتك: أنشئ حساب IBM Cloud وقم بإعداد مشروع Watsonx.ai. استخدم Jupyter Notebook لبيئة البرمجة الخاصة بك.
  2. تثبيت المكتبات: تثبيت المكتبات الضرورية مثل torch, opencvو ultralytics.
  3. تحميل البيانات: استخدم واجهة برمجة تطبيقات Kaggle API لتحميل مجموعة بياناتك إلى Watsonx.
  4. بيانات ما قبل المعالجة: قم بتنظيم مجموعة البيانات الخاصة بك في بنية الدليل المطلوبة وقم بتحديث .yaml ملف التكوين.
  5. تدريب النموذج: استخدم واجهة سطر الأوامر YOLO لتدريب نموذجك بمعلمات محددة مثل epochs, batch sizeو learning rate.
  6. الاختبار والتقييم: قم بإجراء الاستدلال لاختبار النموذج وتقييم أدائه باستخدام مقاييس مثل الدقة والاستدعاء.

For detailed instructions, refer to our YOLO11 Model Training guide.

ما هي الميزات الرئيسية لبرنامج IBM Watsonx لتدريب نماذج الذكاء الاصطناعي؟

يقدم IBM Watsonx العديد من الميزات الرئيسية لتدريب نماذج الذكاء الاصطناعي:

  • Watsonx.ai: يوفر أدوات لتطوير الذكاء الاصطناعي، بما في ذلك الوصول إلى النماذج المخصصة المدعومة من IBM ونماذج الطرف الثالث مثل Llama 3. ويتضمن مختبر Prompt Lab، واستوديو الضبط، ومحرك التدفقات لإدارة دورة حياة الذكاء الاصطناعي الشاملة.
  • Watsonx.data: يدعم عمليات النشر السحابية والمحلية، ويوفر وصولاً مركزيًا إلى البيانات، ومحركات استعلام فعالة مثل Presto وSpark، وطبقة دلالية مدعومة بالذكاء الاصطناعي.
  • Watsonx.governance: يعمل على أتمتة الامتثال، ويدير المخاطر من خلال التنبيهات، ويوفر أدوات لاكتشاف المشكلات مثل التحيز والانحراف. كما يتضمن أيضاً لوحات المعلومات وأدوات إعداد التقارير للتعاون.

لمزيد من المعلومات، قم بزيارة الوثائق الرسمية لـ IBM Watsonx.

Why should I use IBM Watsonx for training Ultralytics YOLO11 models?

IBM Watsonx is an excellent choice for training Ultralytics YOLO11 models due to its comprehensive suite of tools that streamline the AI lifecycle. Key benefits include:

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

Learn more about Ultralytics YOLO11 and how to train models using IBM Watsonx in our integration guide.

How can I preprocess my dataset for YOLO11 training on IBM Watsonx?

To preprocess your dataset for YOLO11 training on IBM Watsonx:

  1. تنظيم الدلائل: تأكد من أن مجموعة البيانات الخاصة بك تتبع بنية الدليل YOLO مع وجود دلائل فرعية منفصلة للصور والتسميات داخل تقسيم القطار/التقييم/الاختبار.
  2. تحديث ملف .yaml: تعديل .yaml ملف التكوين ليعكس بنية الدليل وأسماء الفئات الجديدة.
  3. تشغيل البرنامج النصي للمعالجة المسبقة: استخدم برنامجًا نصيًا Python لإعادة تنظيم مجموعة البيانات وتحديث .yaml الملف وفقًا لذلك.

إليك نموذج برنامج نصي لتنظيم مجموعة البيانات الخاصة بك:

import os
import shutil


def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

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

What are the prerequisites for training a YOLO11 model on IBM Watsonx?

Before you start training a YOLO11 model on IBM Watsonx, ensure you have the following prerequisites:

  • حساب IBM Cloud: أنشئ حساباً على IBM Cloud للوصول إلى Watsonx.ai.
  • حساب Kaggle: لتحميل مجموعات البيانات، ستحتاج إلى حساب Kaggle ومفتاح API.
  • دفتر جوبيتر: قم بإعداد بيئة Jupyter Notebook داخل Watsonx.ai للترميز والتدريب على النماذج.

لمزيد من المعلومات حول إعداد بيئتك، تفضل بزيارة دليل التثبيتUltralytics .


📅 Created 2 months ago ✏️ Updated 12 days ago

التعليقات