Bỏ để qua phần nội dung

Python Sử dụng

Chào mừng bạn đến với YOLOv8 Python Tài liệu hướng dẫn sử dụng! Hướng dẫn này được thiết kế để giúp bạn tích hợp liền mạch YOLOv8 vào Python các dự án phát hiện, phân đoạn và phân loại đối tượng. Tại đây, bạn sẽ học cách tải và sử dụng các mô hình được đào tạo trước, đào tạo các mô hình mới và thực hiện dự đoán trên hình ảnh. Dễ sử dụng Python Giao diện là một nguồn tài nguyên quý giá cho bất kỳ ai muốn kết hợp YOLOv8 vào của họ Python dự án, cho phép bạn nhanh chóng triển khai các khả năng phát hiện đối tượng nâng cao. Bắt đầu nào!



Xem: Mastering Ultralytics YOLOv8: Python

Ví dụ: người dùng có thể tải một mô hình, đào tạo nó, đánh giá hiệu suất của nó trên một bộ xác thực và thậm chí xuất nó sang ONNX định dạng chỉ với một vài dòng mã.

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

Xe lửa

Chế độ tàu được sử dụng để đào tạo một YOLOv8 mô hình trên tập dữ liệu tùy chỉnh. Trong chế độ này, mô hình được đào tạo bằng cách sử dụng tập dữ liệu và siêu tham số được chỉ định. Quá trình đào tạo liên quan đến việc tối ưu hóa các tham số của mô hình để nó có thể dự đoán chính xác các lớp và vị trí của các đối tượng trong một hình ảnh.

Xe lửa

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)

Ví dụ về tàu hỏa

Val

Chế độ Val được sử dụng để xác thực một YOLOv8 mô hình sau khi nó đã được đào tạo. Trong chế độ này, mô hình được đánh giá trên một bộ xác nhận để đo lường độ chính xác và hiệu suất khái quát hóa của nó. Chế độ này có thể được sử dụng để điều chỉnh các siêu tham số của mô hình để cải thiện hiệu suất của nó.

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

Ví dụ về Val

Dự đoán

Chế độ dự đoán được sử dụng để đưa ra dự đoán bằng cách sử dụng chế độ đã qua đào tạo YOLOv8 Mô hình hóa trên hình ảnh hoặc video mới. Trong chế độ này, mô hình được tải từ tệp điểm kiểm tra và người dùng có thể cung cấp hình ảnh hoặc video để thực hiện suy luận. Mô hình dự đoán các lớp và vị trí của các đối tượng trong hình ảnh hoặc video đầu vào.

Dự đoán

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

Dự đoán ví dụ

Xuất khẩu

Chế độ xuất được sử dụng để xuất một YOLOv8 Mô hình hóa thành một định dạng có thể được sử dụng để triển khai. Trong chế độ này, mô hình được chuyển đổi sang định dạng có thể được sử dụng bởi các ứng dụng phần mềm hoặc thiết bị phần cứng khác. Chế độ này rất hữu ích khi triển khai mô hình cho môi trường sản xuất.

Xuất khẩu

Xuất quan chức YOLOv8n Mô hình để ONNX với kích thước hàng loạt và kích thước hình ảnh động.

from ultralytics import YOLO

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

Xuất quan chức YOLOv8n Mô hình để TensorRT trên device=0 để tăng tốc trên các thiết bị CUDA.

from ultralytics import YOLO

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

Ví dụ xuất khẩu

Rãnh

Chế độ theo dõi được sử dụng để theo dõi các đối tượng trong thời gian thực bằng cách sử dụng YOLOv8 mẫu. Trong chế độ này, mô hình được tải từ tệp điểm kiểm tra và người dùng có thể cung cấp luồng video trực tiếp để thực hiện theo dõi đối tượng theo thời gian thực. Chế độ này rất hữu ích cho các ứng dụng như hệ thống giám sát hoặc xe tự lái.

Rãnh

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

Ví dụ theo dõi

Chuẩn

Chế độ điểm chuẩn được sử dụng để lập hồ sơ tốc độ và độ chính xác của các định dạng xuất khác nhau cho YOLOv8. Các điểm chuẩn cung cấp thông tin về kích thước của định dạng đã xuất, của nó mAP50-95 số liệu (để phát hiện và phân đoạn đối tượng) hoặc accuracy_top5 số liệu (để phân loại) và thời gian suy luận tính bằng mili giây trên mỗi hình ảnh trên các định dạng xuất khác nhau như ONNX, OpenVINO, TensorRT và những người khác. Thông tin này có thể giúp người dùng chọn định dạng xuất tối ưu cho trường hợp sử dụng cụ thể của họ dựa trên yêu cầu của họ về tốc độ và độ chính xác.

Chuẩn

Điểm chuẩn một quan chức YOLOv8n mô hình trên tất cả các định dạng xuất.

from ultralytics.utils.benchmarks import benchmark

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

Ví dụ điểm chuẩn

Explorer

API Explorer có thể được sử dụng để khám phá các bộ dữ liệu với ngữ nghĩa nâng cao, tương tự vectơ và tìm kiếm SQL trong số các tính năng khác. Nó cũng cho phép tìm kiếm hình ảnh dựa trên nội dung của chúng bằng ngôn ngữ tự nhiên bằng cách sử dụng sức mạnh của LLM. API Explorer cho phép bạn viết sổ ghi chép hoặc tập lệnh khám phá tập dữ liệu của riêng mình để hiểu rõ hơn về tập dữ liệu của bạn.

Tìm kiếm ngữ nghĩa bằng 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())

Explorer

Sử dụng giảng viên

YOLO lớp mô hình là một wrapper cấp cao trên các lớp Trainer. Mỗi YOLO Nhiệm vụ có huấn luyện viên riêng kế thừa từ BaseTrainer.

Ví dụ về máy bay huấn luyện phát hiện

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

Bạn có thể dễ dàng tùy chỉnh Giảng viên để hỗ trợ các tác vụ tùy chỉnh hoặc khám phá các ý tưởng R &D. Tìm hiểu thêm về Tùy chỉnh Trainers, ValidatorsPredictors để phù hợp với nhu cầu dự án của bạn trong Phần Tùy chỉnh.

Hướng dẫn tùy chỉnh



Created 2023-11-12, Updated 2024-06-09
Authors: IvorZhu331 (1), glenn-jocher (12), AyushExel (1), RizwanMunawar (1), Laughing-q (1)

Ý kiến