دليل خطوة بخطوة لتدريب نماذج 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.
بعد إتمام ذلك، ستُفتح لك بيئة دفتر ملاحظات لتحميل مجموعة البيانات. يمكنك استخدام الشيفرة الواردة في هذا البرنامج التعليمي لتنفيذ مهمة بسيطة لتدريب نموذج اكتشاف أجسام.
الخطوة 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".
انسخ اسم المستخدم ومفتاح API الخاصين بك في Kaggle والصقهما في الشيفرة التالية. ثم شغّل الشيفرة لتثبيت 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 plots=Trueإليك نظرة عن كثب على المعلمات في أمر تدريب النموذج:
- detect: مهمة الرؤية الحاسوبية التي تستخدم لها نموذج YOLO ومجموعة البيانات المحددين.
- train: الوضع الذي يحدد الغرض من تحميل النموذج والبيانات المحددين. لاحقًا، عندما نختبر أداء نموذجنا، سنستخدم
predict. - epochs: يحدد هذا عدد المرات التي سيمر فيها YOLO26 على مجموعة البيانات بأكملها.
- batch: تحدد القيمة العددية أحجام دفعات التدريب. والدفعات هي عدد الصور التي يعالجها النموذج قبل تحديث معلماته.
- 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.