Meet YOLO26: next-gen vision AI.

Link to this sectionتدريب YOLOv5 على بيانات مخصصة#

📚 يشرح هذا الدليل كيفية تدريب مجموعة بيانات مخصصة خاصة بك باستخدام نموذج YOLOv5 🚀. يعد تدريب النماذج المخصصة خطوة أساسية لتكييف حلول الرؤية الحاسوبية مع تطبيقات محددة في العالم الحقيقي تتجاوز مجرد اكتشاف الكائنات العام.

Link to this sectionقبل البدء#

أولاً، تأكد من إعداد البيئة اللازمة. قم باستنساخ مستودع YOLOv5 وتثبيت التبعيات المطلوبة من requirements.txt. بيئة Python>=3.8.0 مع PyTorch>=1.8 ضرورية. يتم تنزيل النماذج ومجموعات البيانات تلقائياً من أحدث إصدار لـ YOLOv5 إذا لم يتم العثور عليها محلياً.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

Link to this sectionالتدريب على بيانات مخصصة#

مخطط حلقة التعلم النشط من Ultralytics

يعد تطوير نموذج اكتشاف كائنات مخصص عملية تكرارية:

  1. جمع وتنظيم الصور: اجمع الصور ذات الصلة بمهمتك المحددة. البيانات المتنوعة عالية الجودة ضرورية. راجع دليلنا حول جمع البيانات وتصنيفها.
  2. تصنيف الكائنات: قم بتصنيف الكائنات محل الاهتمام داخل صورك بدقة.
  3. تدريب نموذج: استخدم البيانات المصنفة لـ تدريب نموذج YOLOv5 الخاص بك. استفد من التعلم بنقل المعرفة بالبدء بأوزان مدربة مسبقاً.
  4. النشر والتنبؤ: استخدم النموذج المدرب لإجراء استدلال على بيانات جديدة لم يتم رؤيتها من قبل.
  5. جمع الحالات الحرجة: حدد السيناريوهات التي يكون أداء النموذج فيها ضعيفاً (حالات حرجة) وأضف بيانات مماثلة إلى مجموعة بياناتك لتحسين المتانة. كرر الدورة.

توفر منصة Ultralytics حلاً مبسطاً بدون كود لدورة عمليات تعلم الآلة (MLOps) الكاملة هذه، بما في ذلك إدارة مجموعة البيانات، وتدريب النماذج، والنشر.

الترخيص

توفر Ultralytics خيارين للترخيص لتلبية سيناريوهات الاستخدام المتنوعة:

  • ترخيص AGPL-3.0: هذا الترخيص مفتوح المصدر المعتمد من OSI مثالي للطلاب، والباحثين، والمتحمسين المهتمين بالتعاون المفتوح ومشاركة المعرفة. يتطلب مشاركة الأعمال المشتقة تحت نفس الترخيص. راجع ملف LICENSE للحصول على التفاصيل الكاملة.
  • ترخيص المؤسسات (Enterprise License): للاستخدام في التطوير والإنتاج، يتيح هذا الترخيص التكامل السلس لبرمجيات Ultralytics ونماذج AI في منتجات وخدمات الأعمال، بما في ذلك الأدوات الداخلية، وسير العمل المؤتمت، وعمليات النشر في الإنتاج، متجاوزاً متطلبات المصدر المفتوح لـ AGPL-3.0. للبدء، يرجى الاتصال بنا عبر ترخيص Ultralytics.

استكشف خيارات الترخيص الخاصة بنا بشكل أكبر على صفحة ترخيص Ultralytics.

قبل بدء التدريب، يعد إعداد مجموعة البيانات أمراً ضرورياً.

Link to this sectionإنشاء مجموعة بيانات#

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

Link to this section1.1 إنشاء dataset.yaml#

يوضح ملف تكوين مجموعة البيانات (مثل coco128.yaml) هيكل مجموعة البيانات، وأسماء الفئات، ومسارات أدلة الصور. تعمل COCO128 كمجموعة بيانات تجريبية صغيرة، تتكون من أول 128 صورة من مجموعة بيانات COCO الواسعة. إنها مفيدة لاختبار خط أنابيب التدريب بسرعة وتشخيص المشكلات المحتملة مثل الإفراط في التخصيص (overfitting).

يتضمن هيكل ملف dataset.yaml ما يلي:

  • path: الدليل الجذر الذي يحتوي على مجموعة البيانات.
  • train, val, test: مسارات نسبية من path إلى الأدلة التي تحتوي على الصور أو ملفات نصية تسرد مسارات الصور لمجموعات التدريب، والتحقق، والاختبار.
  • names: قاموس يربط مؤشرات الفئات (بدءاً من 0) بأسمائها المقابلة.

يمكنك ضبط path إما على دليل مطلق (مثل /home/user/datasets/coco128) أو مسار نسبي مثل ../datasets/coco128 عند بدء التدريب من جذر مستودع YOLOv5.

فيما يلي هيكل coco128.yaml (عرض على GitHub):

# Dataset root directory relative to the yolov5 directory
path: coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

Link to this section1.2 الاستفادة من النماذج للتصنيف المؤتمت#

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

  • Google Gemini: تمتلك النماذج متعددة الوسائط الكبيرة مثل Gemini قدرات قوية في فهم الصور. يمكن توجيهها لتحديد وتحديد مواقع الكائنات داخل الصور، وإنشاء مربعات محيطة أو أوصاف يمكن تحويلها إلى تصنيفات بتنسيق YOLO. استكشف إمكاناتها في دفتر الملاحظات التعليمي المقدم.
  • SAM2 (Segment Anything Model 2): يمكن للنماذج التأسيسية التي تركز على التجزئة، مثل SAM2، تحديد وتخطيط الكائنات بدقة عالية. على الرغم من أنها مخصصة بشكل أساسي للتجزئة، غالباً ما يمكن تحويل الأقنعة الناتجة إلى تصنيفات مربعات محيطة مناسبة لمهام اكتشاف الكائنات.
  • YOLOWorld: يوفر هذا النموذج قدرات اكتشاف مفتوحة المفردات. يمكنك تقديم أوصاف نصية للكائنات التي تهتم بها، ويمكن لـ YOLOWorld تحديد مواقعها في الصور بدون تدريب مسبق على تلك الفئات المحددة. يمكن استخدام هذا كنقطة انطلاق لإنشاء تصنيفات أولية، والتي يمكن بعد ذلك تحسينها.

يمكن أن يوفر استخدام هذه النماذج خطوة "ما قبل التصنيف"، مما يقلل من الجهد اليدوي المطلوب. ومع ذلك، من الضروري مراجعة وتنقيح التصنيفات التي يتم إنشاؤها تلقائياً لضمان الدقة والاتساق، حيث تؤثر الجودة بشكل مباشر على أداء نموذج YOLOv5 المدرب الخاص بك. بعد إنشاء (وربما تنقيح) تصنيفاتك، تأكد من التزامها بـ تنسيق YOLO: ملف *.txt واحد لكل صورة، مع تمثيل كل سطر لكائن كـ class_index x_center y_center width height (إحداثيات مطبعة، الفئة تبدأ من الصفر). إذا كانت الصورة لا تحتوي على كائنات ذات اهتمام، فلا حاجة إلى ملف *.txt مقابل.

مواصفات ملف تصنيف تنسيق YOLO *.txt دقيقة:

  • صف واحد لكل مربع محيط لكائن.
  • يجب أن يحتوي كل صف على: class_index x_center y_center width height.
  • يجب أن تكون الإحداثيات مُطبعة (normalized) في نطاق يتراوح بين 0 و 1. لتحقيق ذلك، قم بقسمة قيم البكسل لـ x_center و width على العرض الإجمالي للصورة، وقسمة y_center و height على الارتفاع الإجمالي للصورة.
  • مؤشرات الفئات تبدأ من الصفر (أي أن الفئة الأولى يتم تمثيلها بـ 0، والثانية بـ 1، وهكذا).

Example image with two persons and a tie annotated

سيبدو ملف التصنيف المقابل للصورة أعلاه، الذي يحتوي على كائنين من نوع 'شخص' (مؤشر الفئة 0) وكائن واحد من نوع 'ربطة عنق' (مؤشر الفئة 27)، كالتالي:

YOLO format label file content example

Link to this section1.3 تنظيم الأدلة#

نظم دليل مجموعات البيانات كما هو موضح أدناه. افتراضياً، يتوقع YOLOv5 أن يكون دليل مجموعة البيانات (مثل /coco128) موجوداً داخل مجلد /datasets واقعاً بجوار دليل مستودع /yolov5.

يقوم YOLOv5 تلقائياً بتحديد موقع التصنيفات لكل صورة عن طريق استبدال آخر مثيل لـ /images/ في مسار الصورة بـ /labels/. على سبيل المثال:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

هيكل الدليل الموصى به هو:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

YOLOv5 recommended dataset directory structure

Link to this sectionاختيار نموذج#

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

Comparison chart of YOLOv5 models showing size, speed, and accuracy

Link to this sectionتدريب#

ابدأ تدريب النموذج باستخدام البرنامج النصي train.py. تشمل الوسائط الأساسية:

  • --img: يحدد حجم صورة الإدخال (على سبيل المثال، --img 640). تؤدي الأحجام الأكبر عموماً إلى دقة أفضل ولكنها تتطلب ذاكرة GPU أكبر.
  • --batch: يحدد حجم الدفعة (batch size) (على سبيل المثال، --batch 16). اختر أكبر حجم يمكن لـ GPU الخاص بك التعامل معه.
  • --epochs: يحدد العدد الإجمالي لـ دورات (epochs) التدريب (على سبيل المثال، --epochs 100). تمثل الدورة الواحدة تمريرة كاملة على كامل مجموعة بيانات التدريب.
  • --data: مسار إلى ملف dataset.yaml الخاص بك (على سبيل المثال، --data coco128.yaml).
  • --weights: مسار إلى ملف الأوزان الأولية. يوصى بشدة باستخدام أوزان مدربة مسبقاً (على سبيل المثال، --weights yolov5s.pt) لتقارب أسرع ونتائج متفوقة. للتدريب من الصفر (لا ينصح به إلا إذا كانت لديك مجموعة بيانات ضخمة جداً واحتياجات محددة)، استخدم --weights '' --cfg yolov5s.yaml.

يتم تنزيل الأوزان المدربة مسبقاً تلقائياً من أحدث إصدار لـ YOLOv5 إذا لم يتم العثور عليها محلياً.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
تحسين سرعة التدريب

💡 استخدم --cache ram أو --cache disk لتخزين صور مجموعة البيانات مؤقتاً في RAM أو القرص المحلي، على التوالي. هذا يسرع التدريب بشكل كبير، خاصة عندما تكون عمليات الإدخال/الإخراج (I/O) لمجموعة البيانات عنق زجاجة. لاحظ أن هذا يتطلب مساحة كبيرة في RAM أو القرص.

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

💡 قم دائماً بالتدريب باستخدام مجموعات بيانات مخزنة محلياً. يمكن أن يكون الوصول إلى البيانات من محركات أقراص الشبكة (مثل Google Drive) أو التخزين عن بُعد أبطأ بشكل ملحوظ ويعيق أداء التدريب. نسخ مجموعة بياناتك إلى SSD محلي هو غالباً أفضل ممارسة.

يتم حفظ جميع مخرجات التدريب، بما في ذلك الأوزان والسجلات، في دليل runs/train/. تنشئ كل جلسة تدريب دليلاً فرعياً جديداً (مثل runs/train/exp, runs/train/exp2, إلخ). للحصول على تجربة تفاعلية وعملية، استكشف قسم التدريب في دفاتر الملاحظات التعليمية الرسمية الخاصة بنا: Open In Colab Open In Kaggle

Link to this sectionتصور#

يتكامل YOLOv5 بسلاسة مع أدوات مختلفة لتصور تقدم التدريب، وتقييم النتائج، ومراقبة الأداء في الوقت الفعلي.

Link to this sectionتسجيل وتصور Comet#

Comet متكامل بالكامل لتتبع التجارب الشامل. تصور المقاييس مباشرة، واحفظ المعلمات الفائقة (hyperparameters)، وقم بإدارة مجموعات البيانات ونقاط تفتيش النماذج، وحلل تنبؤات النموذج باستخدام لوحات Comet المخصصة التفاعلية.

البدء مباشر:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

تعمق أكثر في الميزات المدعومة في دليل تكامل Comet. تعرف على المزيد حول قدرات Comet من توثيقهم الرسمي. جرب دفتر ملاحظات Comet Colab لعرض تجريبي مباشر: Open In Colab

Comet UI showing YOLOv5 training metrics and visualizations

Link to this sectionتسجيل وأتمتة ClearML#

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

  • تثبيت الحزمة: pip install clearml
  • قم بتهيئة ClearML: شغّل clearml-init لمرة واحدة للاتصال بخادم ClearML الخاص بك (سواء كان مستضافاً ذاتياً أو عبر الخطة المجانية).

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

ClearML experiment management UI for YOLOv5

Link to this sectionالتسجيل المحلي#

يتم تسجيل نتائج التدريب تلقائياً باستخدام TensorBoard وحفظها كملفات CSV داخل دليل التجربة المحدد (مثل runs/train/exp). تتضمن البيانات المسجلة:

  • خسارة التدريب والتحقق ومقاييس الأداء.
  • صور عينة تظهر التعزيزات المطبقة (مثل الفسيفساء).
  • تصنيفات الحقيقة الأرضية (Ground truth) جنباً إلى جنب مع تنبؤات النموذج للفحص البصري.
  • مقاييس التقييم الرئيسية مثل منحنيات الدقة-الاستدعاء (PR).
  • مصفوفات الارتباك لتحليل الأداء المفصل لكل فئة.
YOLOv5 local logging results with charts and mosaics

يتم تحديث ملف results.csv بعد كل دورة ويتم رسمه كـ results.png بمجرد انتهاء التدريب. يمكنك أيضاً رسم أي ملف results.csv يدوياً باستخدام دالة الأداة المساعدة المقدمة:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

YOLOv5 results.png training metrics plot

Link to this sectionالخطوات التالية#

عند الانتهاء بنجاح من التدريب، يتم حفظ نقطة تفتيش النموذج ذات الأداء الأفضل (best.pt) وتكون جاهزة للنشر أو مزيد من التنقيح. تشمل الخطوات التالية المحتملة:

  • إجراء استدلال على صور أو فيديوهات جديدة باستخدام النموذج المدرب عبر CLI أو Python.
  • إجراء التحقق لتقييم دقة النموذج وقدرات التعميم على تقسيمات بيانات مختلفة (مثل مجموعة اختبار محتجزة).
  • تصدير النموذج إلى تنسيقات نشر متنوعة مثل ONNX، أو TensorFlow SavedModel، أو TensorRT لتحقيق استدلال محسن على منصات متنوعة.
  • استخدام تقنيات ضبط المعلمات الفائقة لتحقيق مكاسب إضافية في الأداء.
  • مواصلة تحسين نموذجك باتباع نصائحنا لأفضل نتائج التدريب وإضافة المزيد من البيانات المتنوعة والصعبة بشكل تكراري بناءً على تحليل الأداء.

Link to this sectionالبيئات المدعومة#

توفر Ultralytics بيئات جاهزة للاستخدام ومجهزة بتبعيات أساسية مثل CUDA، وcuDNN، وPython، وPyTorch، مما يسهل بداية سلسة.

Link to this sectionحالة المشروع#

YOLOv5 Continuous Integration Status Badge

تشير هذه الشارة إلى أن جميع اختبارات GitHub Actions لـ التكامل المستمر (CI) في YOLOv5 تجتاز الاختبار بنجاح. تغطي اختبارات CI الدقيقة هذه الوظائف الأساسية، بما في ذلك التدريب، والتحقق، والاستدلال، والتصدير، والمقاييس المرجعية، عبر أنظمة تشغيل macOS وWindows وUbuntu. يتم تنفيذ الاختبارات تلقائياً كل 24 ساعة وعند كل عملية إرسال للكود (commit)، مما يضمن استقراراً مستمراً وأداءً مثالياً.

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يمكنني تدريب YOLOv5 على مجموعة بياناتي المخصصة؟#

يتضمن تدريب YOLOv5 على مجموعة بيانات مخصصة عدة خطوات أساسية:

  1. تجهيز مجموعة البيانات الخاصة بك: اجمع الصور وقم بتعليقها (annotate). تأكد من أن التعليقات بصيغة YOLO format المطلوبة. قم بتنظيم الصور والملصقات في أدلة train/ وval/ (اختياريًا test/). فكر في استخدام نماذج مثل Google Gemini، أو SAM2، أو YOLOWorld للمساعدة في عملية وضع الملصقات أو أتمتتها (انظر القسم 1.2).
  2. إعداد بيئتك: استنسخ مستودع YOLOv5 وقم بتثبيت التبعيات باستخدام pip install -r requirements.txt.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
  3. إنشاء تكوين مجموعة البيانات: حدد مسارات مجموعة البيانات، وعدد الفئات، وأسماء الفئات في ملف dataset.yaml.
  4. بدء التدريب: نفذ البرنامج النصي train.py مع توفير مسارات ملف dataset.yaml الخاص بك، والأوزان المدربة مسبقًا المطلوبة (مثل yolov5s.pt)، وحجم الصورة، وحجم الدفعة (batch size)، وعدد الدورات (epochs).
    python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt

Link to this sectionلماذا يجب علي استخدام Ultralytics Platform لتدريب نماذج YOLO الخاصة بي؟#

Ultralytics Platform عبارة عن منصة شاملة مصممة لتبسيط دورة حياة تطوير نموذج YOLO بالكامل، غالبًا دون الحاجة إلى كتابة أي كود. تشمل الفوائد الرئيسية ما يلي:

  • تدريب مبسط: درب النماذج بسهولة باستخدام بيئات معدة مسبقًا وواجهة مستخدم بديهية.
  • إدارة متكاملة للبيانات: قم برفع البيانات والتحكم في إصداراتها وإدارتها بكفاءة داخل المنصة.
  • مراقبة في الوقت الفعلي: تتبع تقدم التدريب وقم بتمثيل مقاييس الأداء مرئيًا باستخدام أدوات متكاملة مثل Comet أو TensorBoard.
  • ميزات التعاون: تسهيل العمل الجماعي من خلال الموارد المشتركة وأدوات إدارة المشاريع ومشاركة النماذج بسهولة.
  • النشر بدون كود: انشر النماذج المدربة مباشرة إلى وجهات مختلفة.

للحصول على شرح عملي، تحقق من منشور مدونتنا: كيفية تدريب نماذجك المخصصة باستخدام Ultralytics Platform.

Link to this sectionكيف يمكنني تحويل بياناتي المعلقة إلى صيغة YOLOv5؟#

سواء كنت تضع التعليقات يدويًا أو تستخدم أدوات مؤتمتة (مثل تلك المذكورة في القسم 1.2)، يجب أن تكون الملصقات النهائية بصيغة YOLO format المحددة المطلوبة بواسطة YOLOv5:

  • أنشئ ملف .txt واحدًا لكل صورة. يجب أن يطابق اسم الملف اسم ملف الصورة (مثال: image1.jpg يقابل image1.txt). ضع هذه الملفات في دليل labels/ موازٍ لدليل images/ الخاص بك (مثال: ../datasets/mydataset/labels/train/).
  • يمثل كل سطر داخل ملف .txt تعليق كائن واحد ويتبع التنسيق: class_index center_x center_y width height.
  • يجب أن تكون الإحداثيات (center_x وcenter_y وwidth وheight) مُطبعة (normalized) (قيم بين 0.0 و 1.0) بالنسبة لأبعاد الصورة.
  • فهارس الفئات تبدأ من الصفر (الفئة الأولى هي 0، والثانية هي 1، إلخ).

توفر العديد من أدوات التعليق اليدوي تصديرًا مباشرًا إلى صيغة YOLO. إذا كنت تستخدم نماذج مؤتمتة، فستحتاج إلى نصوص برمجية أو عمليات لتحويل مخرجاتها (مثل إحداثيات الصندوق المحيط، وأقنعة التجزئة) إلى هذا التنسيق النصي المحدد والمُطبع. تأكد من أن هيكل مجموعة البيانات النهائية يلتزم بالمثال الوارد في الدليل. لمزيد من التفاصيل، راجع دليل جمع البيانات والتعليق عليها.

Link to this sectionما هي خيارات الترخيص لاستخدام YOLOv5 في التطبيقات التجارية؟#

توفر Ultralytics تراخيص مرنة مصممة خصيصًا لاحتياجات مختلفة:

  • ترخيص AGPL-3.0: ترخيص مفتوح المصدر مناسب للبحث الأكاديمي، والمشاريع الشخصية، والحالات التي يكون فيها الامتثال للمصادر المفتوحة مقبولًا. يفرض هذا الترخيص أن تكون التعديلات والأعمال المشتقة مفتوحة المصدر أيضًا بموجب AGPL-3.0. راجع تفاصيل ترخيص AGPL-3.0.
  • ترخيص المؤسسات (Enterprise License): ترخيص تجاري مصمم للشركات التي تدمج YOLOv5 في منتجات أو خدمات مملوكة. يزيل هذا الترخيص التزامات المصدر المفتوح الخاصة بـ AGPL-3.0، مما يسمح بالتوزيع مغلق المصدر. قم بزيارة صفحة الترخيص الخاصة بنا للحصول على مزيد من التفاصيل أو لطلب ترخيص مؤسسة.

اختر الترخيص الذي يتوافق بشكل أفضل مع متطلبات مشروعك ونموذج التوزيع الخاص بك.

التعليقات