دليل خطوة بخطوة لتدريب نماذج YOLO26 باستخدام IBM Watsonx#
أصبحت حلول الرؤية الحاسوبية القابلة للتوسع أكثر شيوعًا في الوقت الحاضر، وهي تغيّر الطريقة التي نتعامل بها مع البيانات المرئية. ومن الأمثلة الرائعة على ذلك IBM Watsonx، وهي منصة متقدمة للذكاء الاصطناعي والبيانات تبسّط عملية تطوير نماذج الذكاء الاصطناعي ونشرها وإدارتها. وتوفر مجموعة متكاملة تغطي دورة حياة الذكاء الاصطناعي بأكملها، إلى جانب تكامل سلس مع خدمات IBM Cloud.
يمكنك تدريب نماذج Ultralytics YOLO26 باستخدام IBM Watsonx. ويُعد ذلك خيارًا جيدًا للمؤسسات المهتمة بـتدريب النماذج بكفاءة، وضبطها بدقة لمهام محددة، وتحسين أداء النماذج باستخدام أدوات قوية وإعداد سهل الاستخدام. في هذا الدليل، سنستعرض عملية تدريب YOLO26 باستخدام IBM Watsonx، بدءًا من إعداد بيئتك وصولًا إلى تقييم النماذج التي درّبتها. لنبدأ!
ما هو IBM Watsonx؟#
Watsonx هي منصة سحابية من IBM مصممة للذكاء الاصطناعي التوليدي التجاري والبيانات العلمية. وتتضافر مكونات IBM Watsonx الثلاثة - watsonx.ai وwatsonx.data وwatsonx.governance - لإنشاء منصة ذكاء اصطناعي موثوقة ومتكاملة من البداية إلى النهاية، يمكنها تسريع مشاريع الذكاء الاصطناعي الهادفة إلى حل مشكلات الأعمال. كما توفر أدوات قوية لإنشاء نماذج التعلم الآلي وتدريبها ونشرها، وتسهّل الاتصال بمصادر البيانات المختلفة.
تعمل واجهته سهلة الاستخدام وإمكاناته التعاونية على تبسيط عملية التطوير، وتساعد في إدارة النماذج ونشرها بكفاءة. وسواء كان الاستخدام للرؤية الحاسوبية أو التحليلات التنبؤية أو معالجة اللغة الطبيعية أو غيرها من تطبيقات الذكاء الاصطناعي، فإن IBM Watsonx يوفر الأدوات والدعم اللازمين لتعزيز الابتكار.
الميزات الرئيسية في IBM Watsonx#
يتكون IBM Watsonx من ثلاثة مكونات رئيسية: watsonx.ai وwatsonx.data وwatsonx.governance. ويوفر كل مكون ميزات تلائم جوانب مختلفة من إدارة الذكاء الاصطناعي والبيانات. لنلقِ نظرة أقرب عليها.
Watsonx.ai#
يوفر Watsonx.ai أدوات قوية لتطوير الذكاء الاصطناعي، ويتيح الوصول إلى نماذج مخصصة تدعمها IBM، ونماذج تابعة لجهات خارجية مثل Llama 3، ونماذج Granite الخاصة بـIBM. ويتضمن Prompt Lab لتجربة مطالبات الذكاء الاصطناعي، وTuning Studio لتحسين أداء النماذج باستخدام البيانات ذات التسميات، وFlows Engine لتبسيط تطوير تطبيقات الذكاء الاصطناعي التوليدي. كما يوفر أدوات شاملة لأتمتة دورة حياة نماذج الذكاء الاصطناعي والاتصال بمختلف واجهات API والمكتبات.
Watsonx.data#
يدعم Watsonx.data عمليات النشر السحابية والمحلية من خلال تكامل IBM Storage Fusion HCI. وتوفر وحدة التحكم سهلة الاستخدام وصولًا مركزيًا إلى البيانات عبر البيئات المختلفة، كما تسهّل استكشاف البيانات باستخدام SQL الشائع. ويعمل على تحسين أعباء العمل باستخدام محركات استعلام فعّالة مثل Presto وSpark، ويسرّع الحصول على الرؤى من البيانات باستخدام طبقة دلالية مدعومة بالذكاء الاصطناعي، ويتضمن قاعدة بيانات متجهية لملاءمة الذكاء الاصطناعي، ويدعم تنسيقات البيانات المفتوحة لتسهيل مشاركة بيانات التحليلات والذكاء الاصطناعي.
Watsonx.governance#
يُسهّل Watsonx.governance الامتثال من خلال تحديد التغييرات التنظيمية تلقائيًا وتطبيق السياسات. كما يربط المتطلبات ببيانات المخاطر الداخلية، ويوفر صحائف حقائق محدثة للذكاء الاصطناعي. وتساعد المنصة في إدارة المخاطر عبر التنبيهات والأدوات اللازمة لاكتشاف مشكلات مثل التحيز والانجراف. كما تؤتمت مراقبة دورة حياة الذكاء الاصطناعي وتوثيقها، وتنظم تطوير الذكاء الاصطناعي باستخدام جرد للنماذج، وتعزز التعاون عبر لوحات معلومات وأدوات إعداد تقارير سهلة الاستخدام.
كيفية تدريب YOLO26 باستخدام IBM Watsonx#
يمكنك استخدام IBM Watsonx لتسريع سير عمل تدريب نموذج YOLO26.
المتطلبات الأساسية#
تحتاج إلى حساب IBM Cloud لإنشاء مشروع watsonx.ai، وستحتاج أيضًا إلى حساب Kaggle لتحميل مجموعة البيانات.
الخطوة 1: إعداد بيئتك#
أولًا، ستحتاج إلى إعداد حساب IBM لاستخدام Jupyter Notebook. سجّل الدخول إلى watsonx.ai باستخدام حساب IBM Cloud الخاص بك.
بعد ذلك، أنشئ مشروع watsonx.ai وJupyter Notebook.
بمجرد الانتهاء من ذلك، ستُفتح لك بيئة دفتر ملاحظات لتحميل مجموعة البيانات. يمكنك استخدام الشيفرة البرمجية الواردة في هذا البرنامج التعليمي لتنفيذ مهمة بسيطة لتدريب نموذج كشف الأجسام.
الخطوة 2: تثبيت المكتبات ذات الصلة واستيرادها#
بعد ذلك، يمكنك تثبيت مكتبات Python اللازمة واستيرادها.
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headlessللحصول على تعليمات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت Ultralytics. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على الحلول والنصائح.
ثم يمكنك استيراد الحزم المطلوبة.
import ultralytics
ultralytics.checks()الخطوة 3: تحميل البيانات#
سنستخدم في هذا البرنامج التعليمي مجموعة بيانات النفايات البحرية المتاحة على Kaggle. وباستخدام مجموعة البيانات هذه، سندرّب نموذج YOLO26 تدريبًا مخصصًا لاكتشاف النفايات والأجسام البيولوجية وتصنيفها في الصور تحت الماء.
يمكننا تحميل مجموعة البيانات مباشرةً إلى دفتر الملاحظات باستخدام Kaggle API. أولًا، أنشئ حسابًا مجانيًا على Kaggle. بعد إنشاء الحساب، ستحتاج إلى إنشاء مفتاح API. ويمكن العثور على إرشادات إنشاء مفتاحك في وثائق Kaggle API ضمن قسم "بيانات اعتماد API".
انسخ اسم مستخدم Kaggle ومفتاح API والصقهما في الشيفرة البرمجية التالية. ثم شغّل الشيفرة لتثبيت API وتحميل مجموعة البيانات إلى 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، لذا يمكنك حذفه.
سنستخدم ملف config.yaml ومحتويات دليل مجموعة البيانات لتدريب نموذج كشف الأجسام. فيما يلي صورة نموذجية من مجموعة بيانات النفايات البحرية.
الخطوة 4: المعالجة المسبقة للبيانات#
لحسن الحظ، جميع التسميات في مجموعة بيانات النفايات البحرية منسقة مسبقًا على هيئة ملفات YOLO بصيغة .txt. ومع ذلك، نحتاج إلى إعادة ترتيب بنية أدلة الصور والتسميات لمساعدة نموذجنا في معالجة الصور والتسميات. ويتبع دليل مجموعة البيانات المحمّل حاليًا البنية التالية:
لكن نماذج YOLO تتطلب افتراضيًا صورًا وتسميات منفصلة في أدلة فرعية ضمن تقسيم train/val/test. نحتاج إلى إعادة تنظيم الدليل وفق البنية التالية:
لإعادة تنظيم دليل مجموعة البيانات، يمكننا تشغيل الشيفرة التالية:
# 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", ".png", ".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 الذي عرّفناه سابقًا، لذا تأكد من أنه يشير إلى مجموعة البيانات الخاصة بك قبل التنفيذ، واترك تعريفات الأدلة الفرعية train وval وtest دون تغيير.
# Contents of new config.yaml file
def update_yaml_file(file_path):
data = {
"path": f"{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.")الخطوة 5: تدريب نموذج YOLO26#
شغّل شيفرة سطر الأوامر التالية لضبط نموذج YOLO26 مُدرّب مسبقًا بالإعدادات الافتراضية.
!yolo detect train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=Trueإليك نظرةً أقرب على المعلمات في أمر تدريب النموذج:
- detect: مهمة الرؤية الحاسوبية التي تستخدم من أجلها نموذج YOLO المحدد ومجموعة البيانات.
- train: الوضع، والذي يرمز إلى الغرض الذي من أجله تقوم بتحميل النموذج المحدد وبيانات النموذج. لاحقاً، عندما نختبر أداء نموذجنا، سنستخدم
predict. - epochs: تحدد عدد المرات التي سيمر فيها YOLO26 عبر مجموعة البيانات بأكملها.
- batch: تحدد القيمة العددية أحجام دفعات التدريب. والدفعات هي عدد الصور التي يعالجها النموذج قبل تحديث معلماته.
- lr0: تحدد معدل التعلم الأولي للنموذج.
- plots: توجّه YOLO إلى إنشاء مخططات لمقاييس تدريب النموذج وتقييمه وحفظها.
لفهم عملية تدريب النموذج وأفضل الممارسات فهمًا تفصيليًا، راجع دليل تدريب نموذج YOLO26. سيساعدك هذا الدليل على تحقيق أقصى استفادة من تجاربك وضمان استخدام YOLO26 بفعالية.
الخطوة 6: اختبار النموذج#
يمكننا الآن تشغيل الاستدلال لاختبار أداء النموذج الذي ضبطناه بدقة:
!yolo detect 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ينشئ هذا البرنامج النصي الموجز تسميات متوقعة لكل صورة في مجموعة الاختبار، بالإضافة إلى ملفات صور إخراج جديدة تُظهر مربع الإحاطة المتوقع فوق الصورة الأصلية.
تُحفظ تسميات .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: تقييم النموذج#
يمكننا إنشاء تصورات مرئية لـالدقة والاستدعاء لكل فئة. تُحفظ هذه التصورات في دليل تشغيل التدريب ({work_dir}/runs/detect/train/). وتظهر درجة الدقة في BoxP_curve.png:
يوضح الرسم البياني زيادة أسية في الدقة مع ارتفاع مستوى ثقة النموذج في التنبؤات. ومع ذلك، لم تستقر دقة النموذج بعد عند مستوى ثقة معين بعد حقبتين من التدريب.
يعرض رسم الاستدعاء البياني (BoxR_curve.png) اتجاهًا عكسيًا:
على عكس الدقة، يتحرك الاستدعاء في الاتجاه المعاكس، إذ يُظهر استدعاءً أكبر عند الحالات منخفضة الثقة واستدعاءً أقل عند الحالات مرتفعة الثقة. وهذا مثال مناسب على المفاضلة بين الدقة والاستدعاء في نماذج التصنيف.
الخطوة 8: حساب التقاطع على الاتحاد#
يمكنك قياس دقة التنبؤ من خلال حساب IoU بين مربع إحاطة متوقع ومربع إحاطة للحقيقة الأساسية للكائن نفسه. راجع البرنامج التعليمي من IBM حول تدريب YOLO26 لمزيد من التفاصيل.
الملخص#
استكشفنا الميزات الرئيسية في IBM Watsonx، وكيفية تدريب نموذج YOLO26 باستخدام IBM Watsonx. كما رأينا كيف يمكن لـIBM Watsonx تحسين سير عمل الذكاء الاصطناعي لديك باستخدام أدوات متقدمة لبناء النماذج وإدارة البيانات والامتثال.
لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة الوثائق الرسمية لـIBM Watsonx.
احرص أيضًا على الاطلاع على صفحة دليل تكامل Ultralytics لمعرفة المزيد عن عمليات التكامل المتنوعة والمثيرة.
الأسئلة الشائعة#
لتدريب نموذج YOLO26 باستخدام IBM Watsonx، اتبع الخطوات التالية:
- إعداد البيئة: أنشئ حسابًا على IBM Cloud وأعدّ مشروعًا في Watsonx.ai. استخدم Jupyter Notebook كبيئة للبرمجة.
- تثبيت المكتبات: ثبّت المكتبات اللازمة مثل
torchوopencvوultralytics. - تحميل البيانات: استخدم Kaggle API لتحميل مجموعة البيانات إلى Watsonx.
- المعالجة المسبقة للبيانات: نظّم مجموعة البيانات وفق بنية الأدلة المطلوبة وحدّث ملف التهيئة
.yaml. - تدريب النموذج: استخدم واجهة سطر أوامر YOLO لتدريب النموذج باستخدام معلمات محددة مثل
epochsوbatch sizeوlearning rate. - الاختبار والتقييم: شغّل الاستدلال لاختبار النموذج وتقييم أدائه باستخدام مقاييس مثل الدقة والاستدعاء.
للحصول على تعليمات تفصيلية، راجع دليل تدريب نموذج YOLO26.
يوفر IBM Watsonx العديد من الميزات الرئيسية لتدريب نماذج الذكاء الاصطناعي:
- Watsonx.ai: يوفر أدوات لتطوير الذكاء الاصطناعي، بما في ذلك الوصول إلى نماذج مخصصة تدعمها IBM ونماذج تابعة لجهات خارجية مثل Llama 3. ويتضمن Prompt Lab وTuning Studio وFlows Engine لإدارة دورة حياة الذكاء الاصطناعي إدارةً شاملة.
- Watsonx.data: يدعم عمليات النشر السحابية والمحلية، ويوفر وصولًا مركزيًا إلى البيانات، ومحركات استعلام فعّالة مثل Presto وSpark، وطبقة دلالية مدعومة بالذكاء الاصطناعي.
- Watsonx.governance: يؤتمت الامتثال، ويدير المخاطر باستخدام التنبيهات، ويوفر أدوات لاكتشاف مشكلات مثل التحيز والانجراف. كما يتضمن لوحات معلومات وأدوات لإعداد التقارير بهدف تعزيز التعاون.
لمزيد من المعلومات، تفضل بزيارة الوثائق الرسمية لـIBM Watsonx.
يُعد IBM Watsonx خيارًا ممتازًا لتدريب نماذج Ultralytics YOLO26 بفضل مجموعته الشاملة من الأدوات التي تبسّط دورة حياة الذكاء الاصطناعي. وتشمل المزايا الرئيسية ما يلي:
- قابلية التوسع: وسّع نطاق تدريب نماذجك بسهولة باستخدام خدمات IBM Cloud.
- التكامل: أجرِ تكاملًا سلسًا مع مختلف مصادر البيانات وواجهات API.
- واجهة سهلة الاستخدام: تبسّط عملية التطوير من خلال واجهة تعاونية وبديهية.
- أدوات متقدمة: استفد من أدوات قوية مثل Prompt Lab وTuning Studio وFlows Engine لتحسين أداء النماذج.
تعرّف على المزيد حول Ultralytics YOLO26 وكيفية تدريب النماذج باستخدام IBM Watsonx في دليل التكامل.
لإجراء معالجة مسبقة لمجموعة بياناتك لتدريب YOLO26 على IBM Watsonx:
- تنظيم الأدلة: تأكد من أن مجموعة البيانات تتبع بنية أدلة YOLO، مع أدلة فرعية منفصلة للصور والتسميات ضمن تقسيم train/val/test.
- تحديث ملف .yaml: عدّل ملف التهيئة
.yamlليعكس بنية الأدلة الجديدة وأسماء الفئات. - تشغيل البرنامج النصي للمعالجة المسبقة: استخدم برنامجًا نصيًا مكتوبًا بلغة 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", ".png", ".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)لمزيد من التفاصيل، راجع دليل المعالجة المسبقة للبيانات.
قبل البدء في تدريب نموذج YOLO26 على IBM Watsonx، تأكد من توفر المتطلبات الأساسية التالية:
- حساب IBM Cloud: أنشئ حسابًا على IBM Cloud للوصول إلى Watsonx.ai.
- حساب Kaggle: لتحميل مجموعات البيانات، ستحتاج إلى حساب Kaggle ومفتاح API.
- Jupyter Notebook: أعد إعداد بيئة Jupyter Notebook داخل Watsonx.ai لكتابة التعليمات البرمجية وتدريب النموذج.
لمزيد من المعلومات حول إعداد بيئتك، راجع دليل تثبيت Ultralytics.