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

Python استخدام

مرحبا بكم في YOLOv8 Python وثائق الاستخدام! تم تصميم هذا الدليل لمساعدتك على الاندماج بسلاسة YOLOv8 في الخاص بك Python مشاريع للكشف عن الكائنات وتجزئتها وتصنيفها. هنا ، ستتعلم كيفية تحميل النماذج المدربة مسبقا واستخدامها ، وتدريب نماذج جديدة ، وإجراء تنبؤات على الصور. سهل الاستخدام Python الواجهة هي مورد قيم لأي شخص يتطلع إلى الدمج YOLOv8 في بهم Python المشاريع ، مما يتيح لك تنفيذ إمكانات الكشف عن الكائنات المتقدمة بسرعة. هيا بنا نبدأ!



شاهد: اتقان Ultralytics YOLOv8: Python

على سبيل المثال ، يمكن للمستخدمين تحميل نموذج وتدريبه وتقييم أدائه على مجموعة التحقق من الصحة وحتى تصديره إلى ONNX التنسيق مع بضعة أسطر من التعليمات البرمجية.

Python

from ultralytics import YOLO

# Create a new YOLO model from scratch
model = YOLO("yolov8n.yaml")

# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolov8n.pt")

# Train the model using the 'coco8.yaml' dataset for 3 epochs
results = model.train(data="coco8.yaml", epochs=3)

# Evaluate the model's performance on the validation set
results = model.val()

# Perform object detection on an image using the model
results = model("https://ultralytics.com/images/bus.jpg")

# Export the model to ONNX format
success = model.export(format="onnx")

قطار

يستخدم وضع القطار لتدريب أ YOLOv8 نموذج على مجموعة بيانات مخصصة. في هذا الوضع ، يتم تدريب النموذج باستخدام مجموعة البيانات المحددة والمعلمات الفائقة. تتضمن عملية التدريب تحسين معلمات النموذج بحيث يمكنه التنبؤ بدقة بفئات ومواقع الكائنات في الصورة.

قطار

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # pass any model type
results = model.train(epochs=5)
from ultralytics import YOLO

model = YOLO("yolov8n.yaml")
results = model.train(data="coco8.yaml", epochs=5)
model = YOLO("last.pt")
results = model.train(resume=True)

أمثلة القطار

فال

يستخدم وضع Val للتحقق من صحة YOLOv8 نموذج بعد تدريبه. في هذا الوضع ، يتم تقييم النموذج على مجموعة التحقق من الصحة لقياس دقته وأداء التعميم. يمكن استخدام هذا الوضع لضبط المعلمات الفائقة للنموذج لتحسين أدائه.

فال

from ultralytics import YOLO

# Load a YOLOv8 model
model = YOLO("yolov8n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=5)

# Validate on training data
model.val()
from ultralytics import YOLO

# Load a YOLOv8 model
model = YOLO("yolov8n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=5)

# Validate on separate data
model.val(data="path/to/separate/data.yaml")

أمثلة فال

تنبأ

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

تنبأ

import cv2
from PIL import Image

from ultralytics import YOLO

model = YOLO("model.pt")
# accepts all formats - image/dir/Path/URL/video/PIL/ndarray. 0 for webcam
results = model.predict(source="0")
results = model.predict(source="folder", show=True)  # Display preds. Accepts all YOLO predict arguments

# from PIL
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True)  # save plotted images

# from ndarray
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # save predictions as labels

# from list of PIL/ndarray
results = model.predict(source=[im1, im2])
# results would be a list of Results object including all the predictions by default
# but be careful as it could occupy a lot memory when there're many images,
# especially the task is segmentation.
# 1. return as a list
results = model.predict(source="folder")

# results would be a generator which is more friendly to memory by setting stream=True
# 2. return as a generator
results = model.predict(source=0, stream=True)

for result in results:
    # Detection
    result.boxes.xyxy  # box with xyxy format, (N, 4)
    result.boxes.xywh  # box with xywh format, (N, 4)
    result.boxes.xyxyn  # box with xyxy format but normalized, (N, 4)
    result.boxes.xywhn  # box with xywh format but normalized, (N, 4)
    result.boxes.conf  # confidence score, (N, 1)
    result.boxes.cls  # cls, (N, 1)

    # Segmentation
    result.masks.data  # masks, (N, H, W)
    result.masks.xy  # x,y segments (pixels), List[segment] * N
    result.masks.xyn  # x,y segments (normalized), List[segment] * N

    # Classification
    result.probs  # cls prob, (num_class, )

# Each result is composed of torch.Tensor by default,
# in which you can easily use following functionality:
result = result.cuda()
result = result.cpu()
result = result.to("cpu")
result = result.numpy()

توقع الأمثلة

تصدير

يستخدم وضع التصدير لتصدير ملف YOLOv8 نموذج لتنسيق يمكن استخدامه للنشر. في هذا الوضع ، يتم تحويل النموذج إلى تنسيق يمكن استخدامه بواسطة تطبيقات البرامج أو الأجهزة الأخرى. يكون هذا الوضع مفيدا عند نشر النموذج في بيئات الإنتاج.

تصدير

تصدير مسؤول YOLOv8n نموذج ل ONNX مع حجم الدفعة الديناميكي وحجم الصورة.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", dynamic=True)

تصدير مسؤول YOLOv8n نموذج ل TensorRT على device=0 للتسريع على أجهزة CUDA .

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="onnx", device=0)

أمثلة التصدير

المسار

يستخدم وضع المسار لتتبع الكائنات في الوقت الفعلي باستخدام ملف YOLOv8 نموذج. في هذا الوضع ، يتم تحميل النموذج من ملف نقطة تفتيش ، ويمكن للمستخدم توفير دفق فيديو مباشر لإجراء تتبع الكائن في الوقت الفعلي. هذا الوضع مفيد لتطبيقات مثل أنظمة المراقبة أو السيارات ذاتية القيادة.

المسار

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official detection model
model = YOLO("yolov8n-seg.pt")  # load an official segmentation model
model = YOLO("path/to/best.pt")  # load a custom model

# Track with the model
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")

أمثلة المسار

المعيار

يستخدم الوضع القياسي لتحديد سرعة ودقة تنسيقات التصدير المختلفة ل YOLOv8. توفر المعايير معلومات عن حجم التنسيق المصدر ، mAP50-95 المقاييس (لاكتشاف الكائنات وتقسيمها) أو accuracy_top5 المقاييس (للتصنيف) ، ووقت الاستدلال بالمللي ثانية لكل صورة عبر تنسيقات تصدير مختلفة مثل ONNX, OpenVINO, TensorRT وغيرها. يمكن أن تساعد هذه المعلومات المستخدمين في اختيار تنسيق التصدير الأمثل لحالة الاستخدام الخاصة بهم بناء على متطلباتهم للسرعة والدقة.

المعيار

قياس المسؤول YOLOv8n نموذج عبر جميع تنسيقات التصدير.

from ultralytics.utils.benchmarks import benchmark

# Benchmark
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)

أمثلة معيارية

مستكشف

يمكن استخدام واجهة برمجة تطبيقات Explorer لاستكشاف مجموعات البيانات ذات الدلالات المتقدمة وتشابه المتجهات والبحث في SQL من بين ميزات أخرى. كما مكن من البحث عن الصور بناء على محتواها باستخدام اللغة الطبيعية من خلال الاستفادة من قوة LLMs. تتيح لك واجهة برمجة تطبيقات Explorer كتابة دفاتر ملاحظات أو نصوص استكشافية لمجموعة البيانات الخاصة بك للحصول على رؤى حول مجموعات البيانات الخاصة بك.

البحث الدلالي باستخدام المستكشف

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco8.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(
    img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"], limit=10
)
print(similar.head())
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco8.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(idx=1, limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head())

مستكشف

استخدام المدربين

YOLO فئة النموذج عبارة عن غلاف عالي المستوى في فصول المدرب. كل YOLO المهمة لها مدربها الخاص الذي يرث من BaseTrainer.

مثال على مدرب الكشف

```python
from ultralytics.models.yolo import DetectionPredictor, DetectionTrainer, DetectionValidator

# trainer
trainer = DetectionTrainer(overrides={})
trainer.train()
trained_model = trainer.best

# Validator
val = DetectionValidator(args=...)
val(model=trained_model)

# predictor
pred = DetectionPredictor(overrides={})
pred(source=SOURCE, model=trained_model)

# resume from last weight
overrides["resume"] = trainer.last
trainer = detect.DetectionTrainer(overrides=overrides)
```

يمكنك بسهولة تخصيص المدربين لدعم المهام المخصصة أو استكشاف أفكار البحث والتطوير. تعرف على المزيد حول التخصيص Trainers, Validators و Predictors لتناسب احتياجات مشروعك في قسم التخصيص.

دروس التخصيص

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

كيف يمكنني دمج YOLOv8 في مشروع Python الخاص بي لاكتشاف الكائنات؟

يعد دمج Ultralytics YOLOv8 في مشاريعك Python أمرًا بسيطًا. يمكنك تحميل نموذج مدرب مسبقاً أو تدريب نموذج جديد من البداية. إليك كيفية البدء:

from ultralytics import YOLO

# Load a pretrained YOLO model
model = YOLO("yolov8n.pt")

# Perform object detection on an image
results = model("https://ultralytics.com/images/bus.jpg")

# Visualize the results
for result in results:
    result.show()

راجع المزيد من الأمثلة التفصيلية في قسم وضع التنبؤ.

ما هي الأوضاع المختلفة المتوفرة في YOLOv8 ؟

Ultralytics YOLOv8 أنماطًا مختلفة لتلبية احتياجات سير عمل التعلّم الآلي المختلفة. وتشمل هذه الأوضاع:

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

تم تصميم كل وضع لتوفير وظائف شاملة لمراحل مختلفة من تطوير النموذج ونشره.

كيف يمكنني تدريب نموذج YOLOv8 مخصص باستخدام مجموعة البيانات الخاصة بي؟

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

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolov8n.yaml")

# Train the model with custom dataset
model.train(data="path/to/your/dataset.yaml", epochs=10)

لمزيد من التفاصيل حول التدريب والارتباطات التشعبية لأمثلة على الاستخدام، تفضل بزيارة صفحة " وضع التدريب ".

كيف يمكنني تصدير نماذج YOLOv8 للنشر؟

يعد تصدير النماذج YOLOv8 بتنسيق مناسب للنشر أمرًا سهلاً ومباشرًا باستخدام export وظيفة. على سبيل المثال، يمكنك تصدير نموذج إلى تنسيق ONNX :

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolov8n.pt")

# Export the model to ONNX format
model.export(format="onnx")

للاطلاع على خيارات التصدير المختلفة، راجع وثائق وضع التصدير.

هل يمكنني التحقق من صحة نموذج YOLOv8 الخاص بي على مجموعات بيانات مختلفة؟

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

from ultralytics import YOLO

# Load a YOLOv8 model
model = YOLO("yolov8n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=5)

# Validate the model on a different dataset
model.val(data="path/to/separate/data.yaml")

راجع صفحة وضع فال للحصول على أمثلة مفصلة واستخدامات مفصلة.



تم الإنشاء 2023-11-12، تم التحديث 2024-07-04
المؤلفون: جلين-جوتشر (13)، إيفور زو 331 (1)، أيوش إكسل (1)، رضوان منور (1)، الضحك-ق (1)

التعليقات