Chuyển đến nội dung

Sử dụng Python

Chào mừng bạn đến với tài liệu Hướng dẫn sử dụng Ultralytics YOLO Python! Hướng dẫn này được thiết kế để giúp bạn tích hợp liền mạch Ultralytics YOLO vào các dự án Python của mình để phát hiện đối tượng, phân đoạnphân loại. Tại đây, bạn sẽ tìm hiểu cách tải và sử dụng các mô hình đã được huấn luyện trước, huấn luyện các mô hình mới và thực hiện dự đoán trên hình ảnh. Giao diện Python dễ sử dụng là một nguồn tài nguyên có giá trị cho bất kỳ ai muốn kết hợp YOLO vào các dự án Python của họ, 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. Hãy bắt đầu nào!



Xem: Làm chủ Ultralytics YOLO: Python

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

Python

from ultralytics import YOLO

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

# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo11n.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")

Huấn luyện

Chế độ Train (Huấn luyện) được sử dụng để huấn luyện mô hình YOLO trên một bộ dữ liệu tùy chỉnh. Ở chế độ này, mô hình được huấn luyện bằng cách sử dụng bộ dữ liệu và các siêu tham số (hyperparameters) đã chỉ định. Quá trình huấn luyện bao gồm 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.

Huấn luyện

from ultralytics import YOLO

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

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

Ví dụ về Train (Huấn luyện)

Val

Chế độ Val được sử dụng để xác thực mô hình YOLO sau khi nó đã được huấn luyện. Ở chế độ này, mô hình được đánh giá trên một tập dữ liệu xác thực để đ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 YOLO model
model = YOLO("yolo11n.yaml")

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

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

# Load a YOLO model
model = YOLO("yolo11n.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 (Xác thực)

Dự đoán

Chế độ dự đoán được sử dụng để đưa ra các dự đoán bằng mô hình YOLO đã được huấn luyện trên hình ảnh hoặc video mới. Ở chế độ này, mô hình được tải từ một tập tin checkpoint 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()

Ví dụ về Predict (Dự đoán)

Xuất

Chế độ xuất (Export mode) được sử dụng để xuất mô hình YOLO sang đị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 hữu ích khi triển khai mô hình vào môi trường sản xuất.

Xuất

Xuất mô hình YOLO chính thức sang ONNX với kích thước lô và kích thước ảnh động.

from ultralytics import YOLO

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

Xuất mô hình YOLO chính thức sang TensorRT trên device=0 để tăng tốc trên các thiết bị CUDA.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="engine", device=0)

Ví dụ về Export (Xuất)

Theo dõi

Chế độ Track (Theo dõi) được sử dụng để theo dõi các đối tượng trong thời gian thực bằng mô hình YOLO. Ở chế độ này, mô hình được tải từ một tập tin checkpoint 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 trong 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.

Theo dõi

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official detection model
model = YOLO("yolo11n-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ụ về Track (Theo dõi)

Điểm chuẩn

Chế độ đánh giá hiệu năng đượ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 YOLO. Các điểm chuẩn cung cấp thông tin về kích thước của định dạng đã xuất, mAP50-95 các metrics (để phát hiện đối tượng và phân đoạn) hoặc accuracy_top5 các số liệu (đối với 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 thứ 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 các yêu cầu về tốc độ và độ chính xác.

Điểm chuẩn

Đánh giá hiệu năng một mô hình YOLO chính thức trên tất cả các định dạng xuất.

from ultralytics.utils.benchmarks import benchmark

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

Ví dụ về Benchmark (Đánh giá hiệu năng)

Sử dụng Trình huấn luyện

Hàm YOLO model class đóng vai trò như một trình bao cấp cao cho các Trainer class. Mỗi tác vụ YOLO có trình huấn luyện riêng, được kế thừa từ BaseTrainer. Kiến trúc này cho phép linh hoạt và tùy chỉnh cao hơn trong quy trình làm việc máy học.

Ví dụ về Detection Trainer

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 = DetectionTrainer(overrides=overrides)

Bạn có thể dễ dàng tùy chỉnh Trainers để hỗ trợ các tác vụ tùy chỉnh hoặc khám phá các ý tưởng nghiên cứu và phát triển. Thiết kế dạng mô-đun của Ultralytics YOLO cho phép bạn điều chỉnh framework cho các nhu cầu cụ thể của mình, cho dù bạn đang làm việc trên một tác vụ computer vision mới lạ hoặc tinh chỉnh các model hiện có để có hiệu suất tốt hơn.

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

Câu hỏi thường gặp

Làm cách nào để tích hợp YOLO vào dự án Python của tôi để phát hiện đối tượng?

Tích hợp Ultralytics YOLO vào các dự án Python của bạn rất đơn giản. Bạn có thể tải mô hình được huấn luyện trước hoặc huấn luyện mô hình mới từ đầu. Dưới đây là cách bắt đầu:

from ultralytics import YOLO

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

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

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

Xem các ví dụ chi tiết hơn trong phần Chế độ Dự đoán của chúng tôi.

Các chế độ khác nhau có sẵn trong YOLO là gì?

Ultralytics YOLO cung cấp nhiều chế độ khác nhau để phục vụ cho các quy trình máy học khác nhau. Chúng bao gồm:

  • Huấn luyện: Huấn luyện mô hình bằng cách sử dụng bộ dữ liệu tùy chỉnh.
  • Xác thực: Xác thực hiệu suất của mô hình trên bộ xác thực.
  • Dự đoán: Đưa ra dự đoán trên hình ảnh hoặc luồng video mới.
  • Xuất (Export): Xuất các mô hình sang nhiều định dạng khác nhau như ONNX và TensorRT.
  • Theo dõi: Theo dõi đối tượng theo thời gian thực trong luồng video.
  • Đánh giá hiệu năng: Đánh giá hiệu năng của mô hình trên các cấu hình khác nhau.

Mỗi chế độ được thiết kế để cung cấp các chức năng toàn diện cho các giai đoạn khác nhau của quá trình phát triển và triển khai mô hình.

Làm cách nào để huấn luyện một mô hình YOLO tùy chỉnh bằng bộ dữ liệu của tôi?

Để huấn luyện một mô hình YOLO tùy chỉnh, bạn cần chỉ định bộ dữ liệu và các siêu tham số khác. Dưới đây là một ví dụ nhanh:

from ultralytics import YOLO

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

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

Để biết thêm chi tiết về huấn luyện và các liên kết đến ví dụ sử dụng, hãy truy cập trang Chế độ Huấn luyện của chúng tôi.

Làm cách nào để xuất các mô hình YOLO để triển khai?

Việc xuất các mô hình YOLO ở định dạng phù hợp để triển khai rất đơn giản với export chức năng. Ví dụ: bạn có thể xuất một mô hình sang định dạng ONNX:

from ultralytics import YOLO

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

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

Để biết các tùy chọn xuất khác nhau, hãy tham khảo tài liệu Chế độ Xuất.

Tôi có thể xác thực mô hình YOLO của mình trên các bộ dữ liệu khác nhau không?

Có, có thể xác thực các mô hình YOLO trên các bộ dữ liệu khác nhau. Sau khi huấn luyện, bạn có thể sử dụng chế độ xác thực để đánh giá hiệu suất:

from ultralytics import YOLO

# Load a YOLO model
model = YOLO("yolo11n.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")

Kiểm tra trang Chế độ Xác thực để biết các ví dụ chi tiết và cách sử dụng.



📅 Đã tạo 1 năm trước ✏️ Cập nhật 5 tháng trước

Bình luận