Zum Inhalt springen

Python Verwendung

Willkommen bei der YOLOv8 Python Nutzungsdokumentation! Diese Anleitung soll dir helfen, YOLOv8 nahtlos in deine Python Projekte zur Objekterkennung, Segmentierung und Klassifizierung zu integrieren. Hier erfährst du, wie du bereits trainierte Modelle lädst und verwendest, neue Modelle trainierst und Vorhersagen für Bilder machst. Die einfach zu bedienende Schnittstelle Python ist eine wertvolle Ressource für alle, die YOLOv8 in ihre Python Projekte einbinden möchten, um schnell fortgeschrittene Objekterkennungsfunktionen zu implementieren. Los geht's!



Pass auf: Mastering Ultralytics YOLOv8 : Python

So können Nutzer/innen mit nur wenigen Zeilen Code ein Modell laden, es trainieren, seine Leistung auf einem Validierungsset bewerten und es sogar in das Format ONNX exportieren.

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')

Zug

Der Train-Modus wird für das Training eines YOLOv8 Modells auf einem benutzerdefinierten Datensatz verwendet. In diesem Modus wird das Modell mit dem angegebenen Datensatz und den Hyperparametern trainiert. Beim Training werden die Parameter des Modells so optimiert, dass es die Klassen und Positionen der Objekte in einem Bild genau vorhersagen kann.

Zug

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)

Beispiele für Züge

Val

Der Val-Modus wird verwendet, um ein YOLOv8 Modell zu validieren, nachdem es trainiert worden ist. In diesem Modus wird das Modell anhand einer Validierungsmenge bewertet, um seine Genauigkeit und Generalisierungsleistung zu messen. In diesem Modus können die Hyperparameter des Modells angepasst werden, um seine Leistung zu verbessern.

Val

  from ultralytics import YOLO

  model = YOLO('yolov8n.yaml')
  model.train(data='coco8.yaml', epochs=5)
  model.val()  # It'll automatically evaluate the data you trained.
  from ultralytics import YOLO

  model = YOLO("model.pt")
  # It'll use the data YAML file in model.pt if you don't set data.
  model.val()
  # or you can set the data you want to val
  model.val(data='coco8.yaml')

Val Beispiele

Vorhersage

Der Modus "Vorhersage" wird verwendet, um mit einem trainierten YOLOv8 Modell Vorhersagen für neue Bilder oder Videos zu treffen. In diesem Modus wird das Modell aus einer Checkpoint-Datei geladen, und der Nutzer kann Bilder oder Videos zur Verfügung stellen, um Schlussfolgerungen zu ziehen. Das Modell sagt die Klassen und Orte der Objekte in den eingegebenen Bildern oder Videos voraus.

Vorhersage

from ultralytics import YOLO
from PIL import Image
import cv2

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()

Beispiele vorhersagen

exportieren

Der Exportmodus wird verwendet, um ein YOLOv8 Modell in ein Format zu exportieren, das für den Einsatz verwendet werden kann. In diesem Modus wird das Modell in ein Format umgewandelt, das von anderen Softwareanwendungen oder Hardwaregeräten verwendet werden kann. Dieser Modus ist nützlich, wenn das Modell in Produktionsumgebungen eingesetzt werden soll.

exportieren

Exportiere ein offizielles YOLOv8n Modell auf ONNX mit dynamischer Losgröße und Bildgröße.

  from ultralytics import YOLO

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

Exportiere ein offizielles YOLOv8n Modell nach TensorRT auf device=0 für die Beschleunigung auf CUDA Geräten.

  from ultralytics import YOLO

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

Beispiele exportieren

Track

Der Verfolgungsmodus wird für die Verfolgung von Objekten in Echtzeit mit einem YOLOv8 Modell verwendet. In diesem Modus wird das Modell aus einer Checkpoint-Datei geladen, und der Nutzer kann einen Live-Videostream bereitstellen, um eine Objektverfolgung in Echtzeit durchzuführen. Dieser Modus ist nützlich für Anwendungen wie Überwachungssysteme oder selbstfahrende Autos.

Track

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")

Track Beispiele

Benchmark

Der Benchmark-Modus wird verwendet, um ein Profil der Geschwindigkeit und Genauigkeit verschiedener Exportformate für YOLOv8 zu erstellen. Die Benchmarks liefern Informationen über die Größe des exportierten Formats, seine mAP50-95 Metriken (für Objekterkennung und Segmentierung) oder accuracy_top5 Metriken (für die Klassifizierung) und die Inferenzzeit in Millisekunden pro Bild für verschiedene Exportformate wie ONNX, OpenVINO, TensorRT und andere. Diese Informationen können den Nutzern helfen, das optimale Exportformat für ihren speziellen Anwendungsfall zu wählen, je nachdem, welche Anforderungen sie an Geschwindigkeit und Genauigkeit stellen.

Benchmark

Vergleiche ein offizielles YOLOv8n Modell mit allen Exportformaten.

from ultralytics.utils.benchmarks import benchmark

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

Benchmark Beispiele

Entdecker

Die Explorer API kann verwendet werden, um Datensätze mit erweiterten semantischen, Vektorähnlichkeits- und SQL-Suchfunktionen zu untersuchen. Sie ermöglicht auch die Suche nach Bildern auf der Grundlage ihres Inhalts mit natürlicher Sprache, indem sie die Leistung von LLMs nutzt. Mit der Explorer-API kannst du deine eigenen Notizbücher oder Skripte zur Erforschung von Datensätzen schreiben, um Einblicke in deine Datensätze zu erhalten.

Semantische Suche mit dem 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())

Entdecker

Einsatz von Trainern

YOLO Model-Klasse ist eine High-Level-Verschalung für die Trainer-Klassen. Jede YOLO Aufgabe hat ihren eigenen Trainer, der von BaseTrainer.

Beispiel für einen Detection Trainer

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

# 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)
```

Du kannst Trainer leicht anpassen, um eigene Aufgaben zu unterstützen oder Ideen für Forschung und Entwicklung zu entwickeln. Erfahre mehr über die Anpassung Trainers, Validators und Predictors im Abschnitt "Anpassung" an die Bedürfnisse deines Projekts anpassen.

Anpassungs-Tutorials



Erstellt 2023-11-12, Aktualisiert 2024-04-18
Autoren: glenn-jocher (9), AyushExel (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Kommentare