YOLOv10: Phát hiện đối tượng end-to-end theo thời gian thực
YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Tổng quan
Phát hiện đối tượng theo thời gian thực nhằm mục đích dự đoán chính xác các loại và vị trí đối tượng trong hình ảnh với độ trễ thấp. Dòng YOLO luôn đi đầu trong nghiên cứu này nhờ sự cân bằng giữa hiệu suất và tính hiệu quả. Tuy nhiên, việc phụ thuộc vào NMS và các điểm kém hiệu quả về kiến trúc đã cản trở hiệu suất tối ưu. YOLOv10 giải quyết những vấn đề này bằng cách giới thiệu consistent dual assignments cho training không cần NMS và chiến lược thiết kế model hướng tới sự cân bằng giữa hiệu quả và độ chính xác.
Kiến trúc
Kiến trúc của YOLOv10 kế thừa những ưu điểm từ các model YOLO trước đó đồng thời giới thiệu một số cải tiến quan trọng. Kiến trúc model bao gồm các thành phần sau:
- Backbone: Chịu trách nhiệm feature extraction, backbone trong YOLOv10 sử dụng phiên bản cải tiến của CSPNet (Cross Stage Partial Network) để cải thiện luồng gradient và giảm tính dư thừa trong tính toán.
- Neck: Neck được thiết kế để tổng hợp các đặc trưng từ các thang đo khác nhau và truyền chúng đến head. Nó bao gồm các lớp PAN (Path Aggregation Network) để hợp nhất đặc trưng đa thang đo hiệu quả.
- One-to-Many Head: Tạo ra nhiều dự đoán cho mỗi đối tượng trong quá trình training để cung cấp tín hiệu giám sát phong phú và cải thiện độ chính xác trong học tập.
- One-to-One Head: Tạo ra một dự đoán tốt nhất cho mỗi đối tượng trong quá trình inference để loại bỏ nhu cầu sử dụng NMS, từ đó giảm độ trễ và cải thiện hiệu suất.
Các tính năng chính
- NMS-Free Training: Sử dụng consistent dual assignments để loại bỏ nhu cầu sử dụng NMS, giúp giảm inference latency.
- Holistic Model Design: Tối ưu hóa toàn diện các thành phần khác nhau từ góc độ hiệu quả và độ chính xác, bao gồm classification head gọn nhẹ, down sampling tách biệt không gian-kênh, và thiết kế khối dựa trên xếp hạng (rank-guided).
- Enhanced Model Capabilities: Tích hợp các convolutions nhân lớn và các module partial self-attention để cải thiện hiệu suất mà không gây tốn kém chi phí tính toán đáng kể.
Các biến thể Model
YOLOv10 có nhiều quy mô model khác nhau để đáp ứng các nhu cầu ứng dụng khác nhau:
- YOLOv10n: Phiên bản Nano cho các môi trường bị hạn chế tài nguyên cực đoan.
- YOLOv10s: Phiên bản Small cân bằng giữa tốc độ và độ chính xác.
- YOLOv10m: Phiên bản Medium dùng cho mục đích chung.
- YOLOv10b: Phiên bản Balanced với độ rộng tăng lên để có độ chính xác cao hơn.
- YOLOv10l: Phiên bản Large cho độ chính xác cao hơn với chi phí tài nguyên tính toán tăng thêm.
- YOLOv10x: Phiên bản Extra-large cho độ chính xác và hiệu suất tối đa.
Hiệu suất
YOLOv10 vượt trội hơn các phiên bản YOLO trước đây và các model hiện đại khác về độ chính xác và hiệu quả. Ví dụ, YOLOv10s nhanh hơn 1,8 lần so với RT-DETR-R18 với AP tương đương trên tập dữ liệu COCO, và YOLOv10b có độ trễ thấp hơn 46% và số lượng tham số ít hơn 25% so với YOLOv9-C với hiệu suất tương đương.
Độ trễ được đo bằng TensorRT FP16 trên GPU T4.
| Model | Kích thước đầu vào | APval | FLOPs (G) | Độ trễ (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Phương pháp luận
Consistent Dual Assignments cho Training không cần NMS
YOLOv10 sử dụng dual label assignment, kết hợp các chiến lược one-to-many và one-to-one trong quá trình training để đảm bảo sự giám sát phong phú và triển khai end-to-end hiệu quả. Chỉ số khớp nhất quán giúp căn chỉnh sự giám sát giữa cả hai chiến lược, nâng cao chất lượng dự đoán trong quá trình inference.
Thiết kế Model toàn diện theo hướng Hiệu quả-Độ chính xác
Cải tiến hiệu quả
- Lightweight Classification Head: Giảm chi phí tính toán của classification head bằng cách sử dụng các depth-wise separable convolutions.
- Spatial-Channel Decoupled Down sampling: Tách biệt việc giảm không gian và điều biến kênh để giảm thiểu mất mát thông tin và chi phí tính toán.
- Rank-Guided Block Design: Điều chỉnh thiết kế khối dựa trên sự dư thừa nội tại của từng giai đoạn, đảm bảo việc sử dụng tham số tối ưu.
Cải tiến độ chính xác
- Large-Kernel Convolution: Mở rộng receptive field để tăng cường khả năng trích xuất đặc trưng.
- Partial Self-Attention (PSA): Tích hợp các module self-attention để cải thiện khả năng học biểu diễn toàn cục với chi phí phát sinh tối thiểu.
Thử nghiệm và Kết quả
YOLOv10 đã được thử nghiệm rộng rãi trên các chuẩn đo lường tiêu chuẩn như COCO, chứng minh hiệu suất và tính hiệu quả vượt trội. Model đạt được kết quả hàng đầu trên các biến thể khác nhau, cho thấy những cải tiến đáng kể về độ trễ và độ chính xác so với các phiên bản trước và các thiết bị dò tìm hiện đại khác.
So sánh

So với các thiết bị dò tìm hiện đại khác:
- YOLOv10s / x nhanh hơn 1,8 lần / 1,3 lần so với RT-DETR-R18 / R101 với độ chính xác tương đương
- YOLOv10b có số lượng tham số ít hơn 25% và độ trễ thấp hơn 46% so với YOLOv9-C ở cùng độ chính xác
- YOLOv10l / x vượt trội hơn YOLOv8l / x lần lượt là 0,3 AP / 0,5 AP với số lượng tham số ít hơn 1,8 lần / 2,3 lần
Dưới đây là bảng so sánh chi tiết các biến thể YOLOv10 với các model hiện đại khác:
| Model | Tham số (M) | FLOPs (G) | mAPval 50-95 | Độ trễ (ms) | Độ trễ-forward (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
| Gold-YOLO-N | 5.6 | 12.1 | 39.6 | 2.92 | 1.82 |
| YOLOv8n | 3.2 | 8.7 | 37.3 | 6.16 | 1.77 |
| YOLOv10n | 2.3 | 6.7 | 39.5 | 1.84 | 1.79 |
| YOLOv6-3.0-S | 18.5 | 45.3 | 44.3 | 3.42 | 2.35 |
| Gold-YOLO-S | 21.5 | 46.0 | 45.4 | 3.82 | 2.73 |
| YOLOv8s | 11.2 | 28.6 | 44.9 | 7.07 | 2.33 |
| YOLOv10s | 7.2 | 21.6 | 46.8 | 2.49 | 2.39 |
| RT-DETR-R18 | 20.0 | 60.0 | 46.5 | 4.58 | 4.49 |
| YOLOv6-3.0-M | 34.9 | 85.8 | 49.1 | 5.63 | 4.56 |
| Gold-YOLO-M | 41.3 | 87.5 | 49.8 | 6.38 | 5.45 |
| YOLOv8m | 25.9 | 78.9 | 50.6 | 9.50 | 5.09 |
| YOLOv10m | 15.4 | 59.1 | 51.3 | 4.74 | 4.63 |
| YOLOv6-3.0-L | 59.6 | 150.7 | 51.8 | 9.02 | 7.90 |
| Gold-YOLO-L | 75.1 | 151.7 | 51.8 | 10.65 | 9.78 |
| YOLOv8l | 43.7 | 165.2 | 52.9 | 12.39 | 8.06 |
| RT-DETR-R50 | 42.0 | 136.0 | 53.1 | 9.20 | 9.07 |
| YOLOv10l | 24.4 | 120.3 | 53.4 | 7.28 | 7.21 |
| YOLOv8x | 68.2 | 257.8 | 53.9 | 16.86 | 12.83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Các giá trị Params và FLOPs là dành cho model đã hợp nhất (fused) sau model.fuse(), giúp gộp các lớp Conv và BatchNorm cũng như loại bỏ head phát hiện one-to-many phụ. Các checkpoint tiền huấn luyện vẫn giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.
Ví dụ sử dụng
Dùng để dự đoán trên ảnh mới với YOLOv10. Các model cũng có thể được huấn luyện trên GPU đám mây thông qua Ultralytics Platform:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()Để huấn luyện YOLOv10 trên bộ dữ liệu tùy chỉnh:
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)Các tác vụ và chế độ được hỗ trợ
Dòng model YOLOv10 cung cấp nhiều tùy chọn model, mỗi model được tối ưu hóa cho tác vụ Object Detection hiệu năng cao. Các model này đáp ứng đa dạng các nhu cầu tính toán và yêu cầu về độ chính xác, giúp chúng trở nên linh hoạt cho nhiều ứng dụng khác nhau.
| Model | Tên tệp | Tác vụ | Inference | Validation | Training | Export |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Phát hiện đối tượng (Object Detection) | ✅ | ✅ | ✅ | ✅ |
Xuất YOLOv10
Do các thao tác mới được giới thiệu trong YOLOv10, không phải tất cả các định dạng xuất do Ultralytics cung cấp đều được hỗ trợ tại thời điểm này. Bảng dưới đây phác thảo các định dạng đã được chuyển đổi thành công bằng Ultralytics cho YOLOv10. Hãy thoải mái mở một pull request nếu bạn có thể đóng góp thay đổi để thêm hỗ trợ xuất cho các định dạng khác cho YOLOv10.
| Định dạng xuất | Hỗ trợ xuất | Suy luận model đã xuất | Ghi chú |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Định dạng model PyTorch tiêu chuẩn. |
| ONNX | ✅ | ✅ | Được hỗ trợ rộng rãi để triển khai. |
| OpenVINO | ✅ | ✅ | Được tối ưu hóa cho phần cứng Intel. |
| TensorRT | ✅ | ✅ | Được tối ưu hóa cho GPU NVIDIA. |
| CoreML | ✅ | ✅ | Giới hạn cho các thiết bị Apple. |
| TF SavedModel | ✅ | ✅ | Định dạng model tiêu chuẩn của TensorFlow. |
| TF GraphDef | ✅ | ✅ | Định dạng TensorFlow cũ. |
| TF Lite | ✅ | ✅ | Được tối ưu hóa cho thiết bị di động và nhúng. |
| TF Edge TPU | ✅ | ✅ | Dành riêng cho các thiết bị Edge TPU của Google. |
| TF.js | ✅ | ✅ | Môi trường JavaScript để sử dụng trên trình duyệt. |
| PaddlePaddle | ❌ | ❌ | Phổ biến tại Trung Quốc; ít hỗ trợ toàn cầu hơn. |
| NCNN | ✅ | ❌ | Layer torch.topk không tồn tại hoặc chưa được đăng ký |
Kết luận
YOLOv10 đã thiết lập một tiêu chuẩn mới trong việc phát hiện đối tượng thời gian thực khi ra mắt bằng cách khắc phục những thiếu sót của các phiên bản YOLO trước đó và kết hợp các chiến lược thiết kế sáng tạo. Cách tiếp cận NMS-free của nó đã tiên phong trong việc phát hiện đối tượng end-to-end trong hệ sinh thái YOLO. Để biết model Ultralytics mới nhất với hiệu suất được cải thiện và suy luận NMS-free, hãy xem YOLO26.
Trích dẫn và Ghi nhận
Chúng tôi xin ghi nhận các tác giả của YOLOv10 từ Tsinghua University vì nghiên cứu chuyên sâu và những đóng góp đáng kể của họ cho framework Ultralytics:
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}Để biết thông tin chi tiết về triển khai, các cải tiến kiến trúc và kết quả thực nghiệm, vui lòng tham khảo bài báo nghiên cứu và kho lưu trữ GitHub YOLOv10 của nhóm nghiên cứu tại Đại học Tsinghua.
Câu hỏi thường gặp (FAQ)
YOLOv10 là gì và nó khác biệt thế nào so với các phiên bản YOLO trước đó?
YOLOv10, được phát triển bởi các nhà nghiên cứu tại Tsinghua University, giới thiệu một số cải tiến quan trọng cho việc phát hiện đối tượng thời gian thực. Nó loại bỏ nhu cầu về non-maximum suppression (NMS) bằng cách sử dụng các phép gán nhất quán kép trong quá trình huấn luyện và các thành phần model được tối ưu hóa để mang lại hiệu suất vượt trội với chi phí tính toán giảm. Để biết thêm chi tiết về kiến trúc và các tính năng chính, hãy xem phần tổng quan về YOLOv10.
Làm thế nào để bắt đầu chạy suy luận với YOLOv10?
Để thực hiện suy luận dễ dàng, bạn có thể sử dụng thư viện Python Ultralytics YOLO hoặc giao diện dòng lệnh (CLI). Dưới đây là các ví dụ về việc dự đoán trên ảnh mới bằng YOLOv10:
from ultralytics import YOLO
# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()Để xem thêm các ví dụ sử dụng, hãy truy cập phần Ví dụ Sử dụng của chúng tôi.
YOLOv10 cung cấp những biến thể model nào và các trường hợp sử dụng của chúng là gì?
YOLOv10 cung cấp một số biến thể model để đáp ứng các trường hợp sử dụng khác nhau:
- YOLOv10n: Phù hợp cho các môi trường cực kỳ hạn chế về tài nguyên
- YOLOv10s: Cân bằng giữa tốc độ và độ chính xác
- YOLOv10m: Sử dụng cho mục đích đa năng
- YOLOv10b: Độ chính xác cao hơn với chiều rộng mạng lớn hơn
- YOLOv10l: Độ chính xác cao nhưng tiêu tốn tài nguyên tính toán
- YOLOv10x: Độ chính xác và hiệu suất tối đa
Mỗi biến thể được thiết kế cho các nhu cầu tính toán và yêu cầu độ chính xác khác nhau, giúp chúng trở nên linh hoạt cho nhiều ứng dụng. Xem phần Model Variants để biết thêm thông tin.
Cách tiếp cận không sử dụng NMS trong YOLOv10 cải thiện hiệu suất như thế nào?
YOLOv10 loại bỏ nhu cầu sử dụng NMS trong quá trình suy luận (inference) bằng cách áp dụng phương pháp gán kép nhất quán (consistent dual assignments) trong huấn luyện. Cách tiếp cận này giúp giảm độ trễ suy luận và tăng cường hiệu quả dự đoán. Kiến trúc này cũng bao gồm một đầu ra one-to-one cho suy luận, đảm bảo mỗi đối tượng chỉ nhận được một dự đoán tốt nhất. Để giải thích chi tiết, hãy xem phần Consistent Dual Assignments for NMS-Free Training.
Tôi có thể tìm thấy các tùy chọn xuất (export) cho các model YOLOv10 ở đâu?
YOLOv10 hỗ trợ một số định dạng xuất bao gồm TorchScript, ONNX, OpenVINO và TensorRT. Tuy nhiên, không phải tất cả các định dạng xuất do Ultralytics cung cấp đều được hỗ trợ cho YOLOv10 do các thao tác mới của nó. Để biết chi tiết về các định dạng được hỗ trợ và hướng dẫn xuất, hãy truy cập phần Exporting YOLOv10.
Các tiêu chuẩn hiệu năng (benchmarks) cho model YOLOv10 là gì?
YOLOv10 vượt trội hơn các phiên bản YOLO trước đây và các model hiện đại khác về cả độ chính xác lẫn hiệu quả. Ví dụ, YOLOv10s nhanh hơn 1.8 lần so với RT-DETR-R18 với chỉ số AP tương đương trên tập dữ liệu COCO. YOLOv10b cho thấy độ trễ thấp hơn 46% và số lượng tham số ít hơn 25% so với YOLOv9-C với cùng hiệu suất. Các tiêu chuẩn chi tiết có thể được tìm thấy trong phần Comparisons.