Sử dụng Python#
Chào mừng đến với tài liệu về Cách sử dụng Python của Ultralytics YOLO! Hướng dẫn này được thiết kế để giúp bạn tích hợp mượt mà Ultralytics YOLO vào các dự án Python của mình cho object detection, instance segmentation, semantic segmentation, depth estimation và classification. Tại đây, bạn sẽ học cách tải và sử dụng các model đã được huấn luyện sẵn, huấn luyện model mới và thực hiện dự đoán trên hình ảnh. Giao diện Python dễ sử dụng này là một nguồn tài nguyên quý giá cho bất kỳ ai muốn kết hợp YOLO vào các dự án Python của mình, cho phép bạn nhanh chóng triển khai các tính năng object detection nâng cao. Hãy bắt đầu ngay!
Watch: Mastering Ultralytics YOLO: Python
Ví dụ, người dùng có thể tải một model, huấn luyện nó, đánh giá hiệu năng trên tập validation và thậm chí export it to ONNX format chỉ với vài dòng code.
from ultralytics import YOLO
# Create a new YOLO model from scratch
model = YOLO("yolo26n.yaml")
# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo26n.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 (Train)#
Train mode được sử dụng để huấn luyện một YOLO model trên một dataset tùy chỉnh. Trong chế độ này, model được huấn luyện bằng dataset và các hyperparameter được chỉ định. Quá trình huấn luyện liên quan đến việc tối ưu hóa các tham số của model để nó có thể dự đoán chính xác các class và vị trí của các đối tượng trong một hình ảnh.
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # pass any model type
results = model.train(epochs=5)Val#
Val mode được sử dụng để validate một YOLO model sau khi nó đã được huấn luyện. Trong chế độ này, model được đánh giá trên tập validation để đo lường accuracy và hiệu năng tổng quát hóa của nó. Chế độ này có thể được sử dụng để điều chỉnh các hyperparameter của model nhằm cải thiện hiệu năng.
from ultralytics import YOLO
# Load a YOLO model
model = YOLO("yolo26n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=5)
# Validate on training data
model.val()Dự đoán (Predict)#
Predict mode được sử dụng để đưa ra dự đoán bằng một YOLO model đã được huấn luyện trên các hình ảnh hoặc video mới. Trong chế độ này, model được tải từ một file checkpoint và người dùng có thể cung cấp hình ảnh hoặc video để thực hiện inference. Model dự đoán các class và vị trí của các đối tượng trong các hình ảnh hoặc video đầu vào.
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])Xuất (Export)#
Export mode được sử dụng để export một YOLO model sang định dạng có thể dùng cho việc deployment. Trong chế độ này, model đượ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 khác hoặc thiết bị phần cứng. Chế độ này hữu ích khi triển khai model vào môi trường production.
Export một YOLO model chính thức sang ONNX với batch-size và image-size động.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)Theo dõi (Track)#
Track mode được sử dụng để tracking đối tượng theo thời gian thực bằng một YOLO model. Trong chế độ này, model được tải từ một file checkpoint và người dùng có thể cung cấp luồng video trực tiếp để thực hiện tracking đối tượng theo thời gian thực. Chế độ này hữu ích cho các ứng dụng như hệ thống giám sát hoặc self-driving cars.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official detection model
model = YOLO("yolo26n-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")Đánh giá hiệu năng (Benchmark)#
Benchmark mode được sử dụng để profiling tốc độ và accuracy của các định dạng export khác nhau cho YOLO. Các benchmark cung cấp thông tin về kích thước của định dạng được export, các chỉ số mAP50-95 của nó (đối với object detection và segmentation) hoặc các chỉ số accuracy_top1 (đối với classification), và thời gian inference tính bằng mili-giây trên mỗi hình ảnh qua các định dạng export khác nhau như ONNX, OpenVINO, TensorRT và các định dạng khác. Thông tin này có thể giúp người dùng chọn định dạng export 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à accuracy.
Đá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="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Sử dụng các lớp Trainer#
Class model YOLO đóng vai trò là một trình bao bọc cấp cao (high-level wrapper) cho các class Trainer. Mỗi tác vụ YOLO có trainer riêng, kế thừa từ BaseTrainer. Kiến trúc này cho phép tính linh hoạt và khả năng tùy chỉnh cao hơn trong các machine learning workflows của bạn.
from ultralytics.models.yolo.detect 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 Trainer để 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 module 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ạ hay tinh chỉnh các model hiện có để đạt hiệu năng tốt hơn.
Câu hỏi thường gặp#
Việc 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ột mô hình đã huấn luyện trước hoặc huấn luyện một 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("yolo26n.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 thêm các ví dụ chi tiết trong phần Predict Mode của chúng tôi.
Ultralytics YOLO cung cấp nhiều chế độ khác nhau để phục vụ cho các machine learning workflow khác nhau. Chúng bao gồm:
- Train: Huấn luyện một model sử dụng các dataset tùy chỉnh.
- Val: Validate hiệu năng model trên tập validation.
- Predict: Đưa ra dự đoán trên các hình ảnh hoặc luồng video mới.
- Export: Export model sang các định dạng khác nhau như ONNX và TensorRT.
- Track: Tracking đối tượng theo thời gian thực trong các luồng video.
- Benchmark: Benchmark hiệu năng model trên các cấu hình khác nhau.
Mỗi chế độ được thiết kế để cung cấp các tính năng toàn diện cho các giai đoạn khác nhau của model development and deployment.
Để huấn luyện một YOLO model tùy chỉnh, bạn cần chỉ định dataset của mình và các hyperparameter khác. Dưới đây là một ví dụ nhanh:
from ultralytics import YOLO # Load the YOLO model model = YOLO("yolo26n.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ề việc huấn luyện và các liên kết đến ví dụ sử dụng, hãy truy cập trang Train Mode của chúng tôi.
Việc export các YOLO model sang định dạng phù hợp cho việc deployment rất đơn giản với hàm
export. Ví dụ, bạn có thể export một model sang định dạng ONNX:from ultralytics import YOLO # Load the YOLO model model = YOLO("yolo26n.pt") # Export the model to ONNX format model.export(format="onnx")Đối với các tùy chọn export khác nhau, hãy tham khảo tài liệu Export Mode.
Có, việc kiểm chứng các mô hình YOLO trên các tập dữ liệu khác nhau là hoàn toàn khả thi. Sau khi huấn luyện, bạn có thể sử dụng chế độ kiểm chứng để đánh giá hiệu suất:
from ultralytics import YOLO # Load a YOLO model model = YOLO("yolo26n.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 Val Mode để xem các ví dụ chi tiết và cách sử dụng.