دليل خطوة بخطوة لتدريب نماذج 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 تبسيط تطوير تطبيقات الذكاء الاصطناعي التوليدي. كما أنه يقدم أدوات شاملة لأتمتة دورة حياة نموذج الذكاء الاصطناعي والاتصال بمختلف واجهات برمجة التطبيقات والمكتبات.
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
import ultralytics
ultralytics.checks()
# Import packages to retrieve and display image filesالخطوة 3: تحميل البيانات#
لهذا البرنامج التعليمي، سنستخدم مجموعة بيانات مخلفات البحر المتوفرة على Kaggle. باستخدام مجموعة البيانات هذه، سنقوم بتدريب نموذج YOLO26 مخصص لاكتشاف وتصنيف المخلفات والكائنات البيولوجية في الصور تحت الماء.
يمكننا تحميل مجموعة البيانات مباشرة إلى الدفتر (notebook) باستخدام Kaggle API. أولاً، أنشئ حساب Kaggle مجانياً. بمجرد إنشاء الحساب، ستحتاج إلى إنشاء مفتاح API. يمكن العثور على إرشادات لإنشاء مفتاحك في توثيق Kaggle API تحت قسم "API credentials".
انسخ والصق اسم مستخدم 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: المعالجة المسبقة للبيانات#
لحسن الحظ، تم تنسيق جميع التصنيفات في مجموعة بيانات نفايات البحر بالفعل كملفات .txt الخاصة بـ YOLO. ومع ذلك، نحتاج إلى إعادة ترتيب هيكل أدلة الصور والتصنيفات لمساعدة نموذجنا على معالجة الصور والتصنيفات. في الوقت الحالي، يتبع دليل مجموعة البيانات المحملة لدينا هذا الهيكل:
لكن، تتطلب نماذج 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 task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 lr0=.04 plots=Trueإليك نظرة فاحصة على المعلمات في أمر تدريب النموذج:
- task: يحدد مهمة الرؤية الحاسوبية التي تستخدم من أجلها نموذج YOLO ومجموعة البيانات المحددين.
- mode: يشير إلى الغرض الذي تقوم من أجله بتحميل النموذج والبيانات المحددة. نظراً لأننا ندرب نموذجاً، يتم ضبطه على "train". لاحقاً، عندما نختبر أداء نموذجنا، سنضبطه على "predict".
- epochs: يحدد هذا عدد المرات التي سيمر فيها YOLO26 عبر مجموعة البيانات الكاملة الخاصة بنا.
- batch: تشير القيمة الرقمية إلى أحجام الدفعات للتدريب. الدفعات هي عدد الصور التي يعالجها النموذج قبل تحديث معلماته.
- lr0: يحدد معدل التعلم الأولي للنموذج.
- plots: يوجه YOLO لإنشاء وحفظ مخططات لمقاييس التدريب والتقييم الخاصة بنموذجنا.
للحصول على فهم مفصل لعملية تدريب النموذج وأفضل الممارسات، راجع دليل تدريب نموذج YOLO26. سيساعدك هذا الدليل في تحقيق أقصى استفادة من تجاربك ويضمن استخدامك لـ YOLO26 بفعالية.
الخطوة 6: اختبار النموذج#
يمكننا الآن تشغيل الاستدلال لاختبار أداء نموذجنا المضبوط بدقة:
!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ينشئ هذا البرنامج النصي الموجز تسميات متوقعة لكل صورة في مجموعة الاختبار الخاصة بنا، بالإضافة إلى ملفات صور إخراج جديدة تضع صندوق الإحاطة المتوقع فوق الصورة الأصلية.
يتم حفظ تسميات .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:
يوضح الرسم البياني زيادة أسيّة في الدقة كلما زاد مستوى ثقة النموذج للتوقعات. ومع ذلك، لم تستقر دقة النموذج حتى الآن عند مستوى ثقة معين بعد دورتين (epochs).
يعرض رسم بياني الاستدعاء (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.
- التكامل: التكامل السلس مع مصادر البيانات وواجهات برمجة التطبيقات (APIs) المختلفة.
- واجهة سهلة الاستخدام: تبسط عملية التطوير بواجهة تعاونية وبديهية.
- أدوات متقدمة: الوصول إلى أدوات قوية مثل مختبر المطالبات (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 الخاص بنا.