Khám phá Ultralytics YOLOv8
Tổng quan
YOLOv8 được Ultralytics phát hành vào ngày 10 tháng 1 năm 2023, mang lại hiệu suất vượt trội về độ chính xác và tốc độ. Dựa trên những tiến bộ của các phiên bản YOLO trước, YOLOv8 giới thiệu các tính năng và tối ưu hóa mới, khiến nó trở thành một lựa chọn lý tưởng cho nhiều tác vụ phát hiện đối tượng trong nhiều ứng dụng.
Xem: Tổng quan về Mô hình Ultralytics YOLOv8
Các tính năng chính của YOLOv8
- Kiến trúc Backbone và Neck nâng cao: YOLOv8 sử dụng các kiến trúc backbone và neck hiện đại, giúp cải thiện hiệu suất trích xuất đặc trưng và phát hiện đối tượng.
- Head Ultralytics tách rời không neo: YOLOv8 áp dụng head Ultralytics tách rời không neo, giúp cải thiện độ chính xác và quy trình phát hiện hiệu quả hơn so với các phương pháp dựa trên neo.
- Tối ưu hóa sự đánh đổi giữa Độ chính xác và Tốc độ: Với trọng tâm duy trì sự cân bằng tối ưu giữa độ chính xác và tốc độ, YOLOv8 phù hợp cho các tác vụ phát hiện đối tượng theo thời gian thực trong các lĩnh vực ứng dụng đa dạng.
- Đa dạng các Mô hình được Huấn luyện trước: YOLOv8 cung cấp một loạt các mô hình được huấn luyện trước để phục vụ cho các tác vụ và yêu cầu hiệu suất khác nhau, giúp bạn dễ dàng tìm thấy mô hình phù hợp cho trường hợp sử dụng cụ thể của mình.
Các Tác vụ và Chế độ được Hỗ trợ
Dòng YOLOv8 cung cấp một loạt các mô hình đa dạng, mỗi mô hình được chuyên biệt hóa cho các tác vụ cụ thể trong thị giác máy tính. Các mô hình này được thiết kế để đáp ứng các yêu cầu khác nhau, từ phát hiện đối tượng đến các tác vụ phức tạp hơn như phân đoạn thể hiện, phát hiện dáng/điểm chính, phát hiện đối tượng theo hướng và phân loại.
Mỗi biến thể của dòng YOLOv8 được tối ưu hóa cho tác vụ tương ứng của nó, đảm bảo hiệu suất và độ chính xác cao. Ngoài ra, các mô hình này tương thích với nhiều chế độ hoạt động khác nhau bao gồm Suy luận, Xác thực, Huấn luyện và Xuất, tạo điều kiện thuận lợi cho việc sử dụng chúng trong các giai đoạn triển khai và phát triển khác nhau.
Mô hình | Tên tập tin | Tác vụ | Suy luận | Xác thực | Huấn luyện | Xuất |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt |
Phát hiện vật thể | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt |
Phân đoạn thực thể | ✅ | ✅ | ✅ | ✅ |
YOLOv8-pose | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt |
Tư thế/Điểm chính | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt |
Phát hiện theo hướng (Oriented Detection) | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt |
Phân loại (Classification) | ✅ | ✅ | ✅ | ✅ |
Bảng này cung cấp tổng quan về các biến thể mô hình YOLOv8, nêu bật khả năng áp dụng của chúng trong các tác vụ cụ thể và khả năng tương thích của chúng với các chế độ hoạt động khác nhau như Suy luận, Xác thực, Huấn luyện và Xuất. Nó thể hiện tính linh hoạt và mạnh mẽ của dòng YOLOv8, làm cho chúng phù hợp với nhiều ứng dụng khác nhau trong thị giác máy tính.
Các chỉ số hiệu suất
Hiệu suất
Tham khảo Tài liệu về Nhận diện để xem các ví dụ sử dụng với những mô hình này, được huấn luyện trên COCO, bao gồm 80 lớp đã được huấn luyện trước.
Mô hình | Kích thước (pixels) |
mAPval 50-95 |
Tốc độ CPU ONNX (ms) |
Tốc độ A100 TensorRT (ms) |
Tham số (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
Xem Tài liệu Phát hiện để biết các ví dụ sử dụng với các mô hình này được huấn luyện trên Open Image V7, bao gồm 600 lớp được huấn luyện trước.
Mô hình | Kích thước (pixels) |
mAPval 50-95 |
Tốc độ CPU ONNX (ms) |
Tốc độ A100 TensorRT (ms) |
Tham số (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
Tham khảo Tài liệu về Phân đoạn để xem các ví dụ sử dụng với những mô hình này, được huấn luyện trên COCO, bao gồm 80 lớp đã được huấn luyện trước.
Mô hình | Kích thước (pixels) |
mAPbox 50-95 |
mAPmask 50-95 |
Tốc độ CPU ONNX (ms) |
Tốc độ A100 TensorRT (ms) |
Tham số (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
Tham khảo Tài liệu về Phân loại để xem các ví dụ sử dụng với những mô hình này, được huấn luyện trên ImageNet, bao gồm 1000 lớp đã được huấn luyện trước.
Mô hình | Kích thước (pixels) |
acc top1 |
acc top5 |
Tốc độ CPU ONNX (ms) |
Tốc độ A100 TensorRT (ms) |
Tham số (M) |
FLOPs (B) ở 224 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 0.5 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 1.7 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 5.3 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 12.3 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 19.0 |
Tham khảo Tài liệu về Ước tính tư thế để xem các ví dụ sử dụng với những mô hình này, được huấn luyện trên COCO, bao gồm 1 lớp đã được huấn luyện trước, 'person'.
Mô hình | Kích thước (pixels) |
mAPpose 50-95 |
mAPpose 50 |
Tốc độ CPU ONNX (ms) |
Tốc độ A100 TensorRT (ms) |
Tham số (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-pose | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-pose | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-pose | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-pose | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-pose | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
Tham khảo Tài liệu về Nhận diện có hướng để xem các ví dụ sử dụng với những mô hình này, được huấn luyện trên DOTAv1, bao gồm 15 lớp đã được huấn luyện trước.
Mô hình | Kích thước (pixels) |
mAPtest 50 |
Tốc độ CPU ONNX (ms) |
Tốc độ A100 TensorRT (ms) |
Tham số (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
Ví dụ sử dụng YOLOv8
Ví dụ này cung cấp các ví dụ đơn giản về huấn luyện và suy luận YOLOv8. Để có tài liệu đầy đủ về các chế độ này và các chế độ khác, hãy xem các trang tài liệu Dự đoán, Huấn luyện, Đánh giá và Xuất.
Lưu ý ví dụ dưới đây dành cho các mô hình Phát hiện YOLOv8 để phát hiện đối tượng. Để biết thêm các tác vụ được hỗ trợ, hãy xem tài liệu Phân đoạn, Phân loại, OBB và tài liệu Tư thế.
Ví dụ
PyTorch đã được huấn luyện trước *.pt
các mô hình cũng như cấu hình *.yaml
các tệp có thể được chuyển đến YOLO()
class để tạo một thể hiện mô hình trong python:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Các lệnh CLI có sẵn để chạy trực tiếp các mô hình:
# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo predict model=yolov8n.pt source=path/to/bus.jpg
Trích dẫn và ghi nhận
Ấn phẩm Ultralytics YOLOv8
Ultralytics chưa công bố bài báo nghiên cứu chính thức nào cho YOLOv8 do tính chất phát triển nhanh chóng của các mô hình. Chúng tôi tập trung vào việc nâng cao công nghệ và giúp công nghệ này dễ sử dụng hơn, thay vì tạo ra tài liệu tĩnh. Để biết thông tin cập nhật nhất về kiến trúc, tính năng và cách sử dụng YOLO, vui lòng tham khảo kho lưu trữ GitHub và tài liệu của chúng tôi.
Nếu bạn sử dụng mô hình YOLOv8 hoặc bất kỳ phần mềm nào khác từ kho lưu trữ này trong công việc của bạn, vui lòng trích dẫn nó theo định dạng sau:
@software{yolov8_ultralytics,
author = {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
title = {Ultralytics YOLOv8},
version = {8.0.0},
year = {2023},
url = {https://github.com/ultralytics/ultralytics},
orcid = {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
license = {AGPL-3.0}
}
Xin lưu ý rằng DOI đang chờ xử lý và sẽ được thêm vào trích dẫn sau khi có sẵn. Các mô hình YOLOv8 được cung cấp theo giấy phép AGPL-3.0 và giấy phép Doanh nghiệp.
Câu hỏi thường gặp
YOLOv8 là gì và nó khác với các phiên bản YOLO trước như thế nào?
YOLOv8 được thiết kế để cải thiện hiệu suất phát hiện đối tượng theo thời gian thực với các tính năng nâng cao. Không giống như các phiên bản trước, YOLOv8 kết hợp đầu Ultralytics phân tách không neo, kiến trúc backbone và neck hiện đại, đồng thời cung cấp sự đánh đổi độ chính xác - tốc độ được tối ưu hóa, làm cho nó trở nên lý tưởng cho các ứng dụng đa dạng. Để biết thêm chi tiết, hãy xem các phần Tổng quan và Các tính năng chính.
Làm cách nào tôi có thể sử dụng YOLOv8 cho các tác vụ thị giác máy tính khác nhau?
YOLOv8 hỗ trợ nhiều tác vụ thị giác máy tính, bao gồm phát hiện đối tượng, phân đoạn thể hiện, phát hiện tư thế/điểm chính, phát hiện đối tượng theo hướng và phân loại. Mỗi biến thể mô hình được tối ưu hóa cho tác vụ cụ thể của nó và tương thích với các chế độ hoạt động khác nhau như Suy luận, Xác thực, Huấn luyện và Xuất. Tham khảo phần Các tác vụ và Chế độ được Hỗ trợ để biết thêm thông tin.
Các số liệu hiệu suất cho các mô hình YOLOv8 là gì?
Các mô hình YOLOv8 đạt được hiệu suất hàng đầu trên nhiều bộ dữ liệu chuẩn khác nhau. Ví dụ: mô hình YOLOv8n đạt mAP (độ chính xác trung bình) là 37,3 trên bộ dữ liệu COCO và tốc độ 0,99 ms trên A100 TensorRT. Thông tin chi tiết về hiệu suất của từng biến thể mô hình trên các tác vụ và bộ dữ liệu khác nhau có thể được tìm thấy trong phần Số liệu Hiệu suất.
Làm cách nào để huấn luyện một mô hình YOLOv8?
Bạn có thể huấn luyện mô hình YOLOv8 bằng Python hoặc CLI. Dưới đây là các ví dụ về cách huấn luyện mô hình bằng mô hình YOLOv8 đã được huấn luyện trước trên COCO trên bộ dữ liệu COCO8 trong 100 epochs:
Ví dụ
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
Để biết thêm chi tiết, hãy truy cập tài liệu Huấn luyện.
Tôi có thể đánh giá hiệu năng của các mô hình YOLOv8 không?
Có, các mô hình YOLOv8 có thể được đánh giá hiệu năng về tốc độ và độ chính xác trên các định dạng xuất khác nhau. Bạn có thể sử dụng PyTorch, ONNX, TensorRT và các công cụ khác để đánh giá. Dưới đây là các lệnh ví dụ để đánh giá bằng Python và CLI:
Ví dụ
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
Để biết thêm thông tin, hãy xem phần Số liệu Hiệu suất.