Link to this sectionYOLOv10: Phát hiện vật thể End-to-End 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
Link to this sectionTổng quan#
Phát hiện vật thể thời gian thực hướng tới việc dự đoán chính xác các danh mục và vị trí của vật thể trong ảnh với độ trễ thấp. Dòng model YOLO đã đi đầu trong lĩnh vực nghiên cứu này nhờ sự cân bằng giữa hiệu suất và hiệu quả. Tuy nhiên, sự phụ thuộc vào NMS và các thiếu sót về kiến trúc đã cản trở việc đạt hiệu suất tối ưu. YOLOv10 giải quyết các vấn đề này bằng cách giới thiệu phương pháp gán kép nhất quán cho huấn luyện không cần NMS và chiến lược thiết kế model dựa trên sự cân bằng giữa hiệu quả và độ chính xác.
Link to this sectionKiến trúc#
Kiến trúc của YOLOv10 kế thừa các ưu điểm của 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: Đảm nhận vai trò trích xuất đặc trưng, backbone trong YOLOv10 sử dụng phiên bản nâng cao của CSPNet (Cross Stage Partial Network) để cải thiện luồng gradient và giảm sự 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 quy mô khác nhau và truyền chúng đến head. Nó bao gồm các lớp PAN (Path Aggregation Network) để tối ưu hóa quá trình hợp nhất đặc trưng đa quy mô.
- One-to-Many Head: Tạo ra nhiều dự đoán cho mỗi vật thể trong quá trình huấn luyện nhằm 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ối ưu duy nhất cho mỗi vật thể 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.
Link to this sectionTính năng chính#
- Huấn luyện không cần NMS: Sử dụng các phép gán kép nhất quán để loại bỏ nhu cầu sử dụng NMS, giúp giảm độ trễ inference.
- Thiết kế Model toàn diện: 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 các classification head gọn nhẹ, kỹ thuật down sampling phân tách không gian-kênh và thiết kế block dựa trên thứ hạng (rank-guided).
- Nâng cao năng lực Model: Tích hợp tích chập với kernel lớn và các mô-đun partial self-attention để cải thiện hiệu suất mà không làm tăng đáng kể chi phí tính toán.
Link to this sectionCác biến thể Model#
YOLOv10 có sẵn ở nhiều quy mô model khác nhau để đáp ứng các nhu cầu ứng dụng đa dạng:
- YOLOv10n: Phiên bản Nano cho các môi trường bị hạn chế nghiêm ngặt về tài nguyên.
- 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 phổ thông.
- YOLOv10b: Phiên bản Balanced (cân bằng) với độ rộng (width) tăng lên để đạt độ 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 lớn hơn.
- YOLOv10x: Phiên bản Extra-large cho độ chính xác và hiệu suất tối đa.
Link to this sectionHiệ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 gấp 1.8 lần RT-DETR-R18 với chỉ số AP tương đương trên tập dữ liệu COCO, và YOLOv10b có độ trễ thấp hơn 46% và ít tham số hơn 25% so với YOLOv9-C trong khi đạt hiệu suất tương đương.
Độ trễ được đo bằng TensorRT FP16 trên GPU T4.
| Mô hình | 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 |
Link to this sectionPhương pháp luận#
Link to this sectionGán kép nhất quán cho huấn luyện không cần NMS#
YOLOv10 sử dụng phương pháp gán nhãn kép, kết hợp giữa chiến lược one-to-many và one-to-one trong quá trình huấn luyện để đả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, qua đó nâng cao chất lượng dự đoán trong inference.
Link to this sectionThiết kế Model toàn diện dựa trên hiệu quả-Độ chính xác#
Link to this sectionCải tiến hiệu suất#
- Lightweight Classification Head: Giảm chi phí tính toán của classification head bằng cách sử dụng các phép tích chập tách biệt theo chiều sâu (depth-wise separable convolutions).
- Spatial-Channel Decoupled Down sampling: Tách biệt việc giảm không gian và điều chế 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ế block dựa trên sự dư thừa nội tại của từng giai đoạn, đảm bảo tối ưu hóa việc sử dụng tham số.
Link to this sectionCải tiến độ chính xác#
- Large-Kernel Convolution: Mở rộng vùng nhận cảm để tăng cường khả năng trích xuất đặc trưng.
- Partial Self-Attention (PSA): Tích hợp các mô-đun self-attention để cải thiện việc học biểu diễn toàn cục với chi phí tối thiểu.
Link to this sectionThực nghiệm và Kết quả#
YOLOv10 đã được kiểm thử rộng rãi trên các chuẩn mực như COCO, chứng minh hiệu suất và 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, thể hiện 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 máy dò (detectors) đương đại khác.
Link to this sectionSo sánh#

So với các máy dò 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ó ít tham số hơn 25% và độ trễ thấp hơn 46% so với YOLOv9-C tại cùng độ chính xác
- YOLOv10l / x vượt trội hơn YOLOv8l / x lần lượt 0.3 AP / 0.5 AP với số 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:
| Mô hình | 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 dành cho model đã được hợp nhất 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ụ trợ. Các checkpoint được huấn luyện trước giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.
Link to this sectionVí dụ Sử dụng#
Để dự đoán các hình ả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 tập 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)Link to this sectionCác tác vụ và chế độ được hỗ trợ#
Series model YOLOv10 cung cấp nhiều lựa chọn model, mỗi model đều được tối ưu hóa cho Object Detection hiệu suất cao. Các model này đáp ứng những 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 đa dạng.
| Mô hình | Tên tệp | Tác vụ | Suy luận | Validation | Huấn luyện | Xuất (Export) |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
Link to this sectionXuất YOLOv10#
Do các thao tác mới được giới thiệu cùng với 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 | Inference model đã xuất | Lưu ý |
|---|---|---|---|
| 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ũ. |
| LiteRT | ✅ | ✅ | Được tối ưu hóa cho thiết bị di động, hệ thống nhúng và trình duyệt (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Dành riêng cho các thiết bị Edge TPU của Google. |
| PaddlePaddle | ❌ | ❌ | Phổ biến tại Trung Quốc; ít hỗ trợ toàn cầu hơn. |
| NCNN | ✅ | ❌ | Lớp torch.topk không tồn tại hoặc chưa được đăng ký |
Link to this sectionKết luận#
YOLOv10 đã thiết lập một tiêu chuẩn mới trong phát hiện đối tượng thời gian thực khi ra mắt bằng cách giải quyết các 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. Phương pháp không dùng NMS của nó đã tiên phong trong việc phát hiện đối tượng end-to-end trong họ YOLO. Để biết model mới nhất của Ultralytics với hiệu suất cải thiện và inference không dùng NMS, hãy xem YOLO26.
Link to this sectionTrích dẫn và Ghi nhận#
Chúng tôi muốn gửi lời cảm ơn đến các tác giả YOLOv10 từ Đại học Thanh Hoa vì nghiên cứu sâu rộng và những đóng góp đáng kể của họ cho framework Ultralytics:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Để biết chi tiết về quá trình triển khai, các đổi mới về 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à repository GitHub của YOLOv10 từ nhóm Đại học Thanh Hoa.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionYOLOv10 là gì và nó khác biệt thế nào so với các phiên bản YOLO trước đây?#
YOLOv10, được phát triển bởi các nhà nghiên cứu tại Đại học Thanh Hoa, giới thiệu một vài đổi mới quan trọng trong phát hiện đối tượng thời gian thực. Nó loại bỏ nhu cầu về NMS bằng cách sử dụng phương pháp gán kép nhất quán trong quá trình huấn luyện và các thành phần model được tối ưu hóa để đạt 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.
Link to this sectionLàm thế nào để bắt đầu chạy inference với YOLOv10?#
Để thực hiện inference 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ề dự đoán hình ả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()Để biết 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.
Link to this sectionYOLOv10 cung cấp những biến thể model nào và trường hợp sử dụng của chúng là gì?#
YOLOv10 cung cấp một vài biến thể model để phục vụ 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 mục đích chung
- YOLOv10b: Độ chính xác cao hơn với chiều rộng tăng
- YOLOv10l: Độ chính xác cao với chi phí tài nguyên tính toán lớn hơ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. Khám phá phần Biến thể model để biết thêm thông tin.
Link to this sectionCách tiếp cận không dùng NMS trong YOLOv10 cải thiện hiệu suất như thế nào?#
YOLOv10 loại bỏ nhu cầu về NMS trong quá trình inference bằng cách sử dụng gán kép nhất quán cho việc huấn luyện. Phương pháp này làm giảm độ trễ inference và tăng cường hiệu quả dự đoán. Kiến trúc cũng bao gồm một đầu ra one-to-one cho inference, đảm bảo mỗi đối tượng nhận được một dự đoán tốt nhất duy nhất. Để có giải thích chi tiết, hãy xem phần Gán kép nhất quán cho huấn luyện không dùng NMS.
Link to this sectionTôi có thể tìm các tùy chọn xuất cho model YOLOv10 ở đâu?#
YOLOv10 hỗ trợ một vài đị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 Xuất YOLOv10.
Link to this sectionCác benchmark hiệu suất cho model YOLOv10 là gì?#
YOLOv10 vượt trội hơn các phiên bản YOLO trước đó và các model hiện đại khác về cả độ 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. YOLOv10b cho thấy độ trễ thấp hơn 46% và ít hơn 25% tham số so với YOLOv9-C với cùng một hiệu suất. Các benchmark chi tiết có thể được tìm thấy trong phần So sánh.