YOLOv10: Phát hiện vật thể End-to-End thời gian thực#
YOLOv10, phát hành vào tháng 5 năm 2024 và được xây dựng dựa trên Ultralytics Python package bởi các nhà nghiên cứu tại Tsinghua University, giới thiệu một phương pháp mới cho phát hiện đối tượng thời gian thực, khắc phục cả những điểm yếu về xử lý hậu kỳ và kiến trúc mô hình trong các phiên bản YOLO trước đây. Bằng cách loại bỏ non-maximum suppression (NMS) và tối ưu hóa các thành phần mô hình khác nhau, YOLOv10 đã đạt được hiệu suất xuất sắc với chi phí tính toán giảm đáng kể tại thời điểm ra mắt. Thiết kế đầu cuối không cần NMS của nó đã tiên phong cho một cách tiếp cận tiếp tục được phát triển trong YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Tổng quan#
Phát hiện đối tượng thời gian thực nhằm mục đích dự đoán chính xác các danh mục 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à hiệu quả. Tuy nhiên, sự phụ thuộc vào NMS và những điểm kém hiệu quả trong kiến trúc đã cản trở 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 consistent dual assignments cho việc huấn luyện không cần NMS và chiến lược thiết kế mô hình hướng đến hiệu suất-độ chính xác toàn diện.
Kiế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: Chịu trách nhiệm trích xuất đặc trưng, phần 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 sự trùng lặp 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.
Tí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 về NMS, qua đó giảm độ trễ suy luận.
- 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 lực mô hình nâng cao: Kết hợp các phép chập kernel lớn và các module tự chú ý một phần để cải thiện hiệu suất mà không tốn kém chi phí tính toán đáng kể.
Cá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.
Hiệu suất#
YOLOv10 vượt trội hơn các phiên bản YOLO trước đây và các mô hình tiên tiến 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 tự trên tập dữ liệu COCO, và YOLOv10b có độ trễ ít hơn 46% và ít hơn 25% tham số so với YOLOv9-C với cùng hiệu suất.
Độ 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 |
Phương pháp luận#
Gán kép nhất quán cho huấn luyện không cần NMS#
YOLOv10 sử dụng các phép gán nhãn kép, kết hợp các chiến lược một-nhiều và một-một trong quá trình huấn luyện để đảm bảo giám sát phong phú và triển khai đầu cuối hiệu quả. Thức đo khớp nhất quán 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 suy luận.
Thiết kế mô hình hướng đến Hiệu suất-Độ chính xác Toàn diện#
Cả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ố.
Cải tiến độ chính xác#
- Phép chập Kernel lớn: Mở rộng vùng tiếp nhận để nâng cao 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.
Thực nghiệm và Kết quả#
YOLOv10 đã được kiểm thử rộng rãi trên các benchmark tiêu chuẩn như COCO, thể hiện hiệu suất và hiệu quả vượt trội. Mô hình đạt được kết quả tiên tiến trên các biến thể khác nhau, cho thấy những cải thiện đáng kể về độ trễ và độ chính xác so với các phiên bản trước và các bộ dò tìm đương đại khác.
So 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 0.3 AP / 0.5 AP với số lượng tham số ít hơn 1.8× / 2.3×
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 mô hình đã hợp nhất sau model.fuse(), thao tác này gộp các lớp Conv và BatchNorm lại và loại bỏ phần đầu dò tìm một-nhiều phụ trợ. Các checkpoint tiền huấn luyệ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ự đoán hình ảnh mới bằng YOLOv10. Các mô hình 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)Các tác vụ và chế độ được hỗ trợ#
Dòng mô hình YOLOv10 cung cấp một loạt các mô hình, mỗi mô hình được tối ưu hóa cho Phát hiện đối tượng hiệu suất cao. Các mô hình này phục vụ 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 một loạt các ứng dụng.
| Mô hình | Tên tệp | Tác vụ | Huấn luyện | Validation | Suy luận | Xuất (Export) |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
Xuất YOLOv10#
Do các thao tác mới được giới thiệu 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ợ hiện tại. Bảng sau phác thảo những định dạng nào đã được chuyển đổi thành công bằng cách sử dụng Ultralytics cho YOLOv10. Hãy thoải mái tạo một pull request nếu bạn có thể cung cấp thay đổi đóng góp để bổ sung hỗ trợ xuất cho các định dạng bổ sung đối với YOLOv10.
| Định dạng xuất | Hỗ trợ xuất | Inference model đã xuất | Lưu ý |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Định dạng mô hình 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 mô hình 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ý |
Kế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 tại thời điểm 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. Cách tiếp cận không cần NMS của nó đã tiên phong trong việc phát hiện đối tượng đầu cuối trong gia đình YOLO. Đối với mô hình Ultralytics mới nhất với hiệu suất cải thiện và suy luận không cần NMS, hãy xem YOLO26.
Trí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ừ Tsinghua University 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 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 về YOLOv10 của nhóm nghiên cứu Tsinghua University.
Câu hỏi thường gặp#
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 đối với 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 kép nhất quán trong quá trình huấn luyện và các thành phần mô hình đượ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 của nó, hãy xem phần tổng quan về 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:
Ví dụ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 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ác nhau. Khám phá phần Biến thể mô hình để biết thêm thông tin.
YOLOv10 loại bỏ nhu cầu về non-maximum suppression (NMS) trong quá trình suy luận bằng cách áp dụng các phép 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ễ suy luận và nâng cao hiệu quả dự đoán. Kiến trúc này cũng bao gồm một đầu một-vối-một (one-to-one head) cho suy luận, đảm bảo rằng 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 Consistent Dual Assignments for NMS-Free Training.
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 hiện tại 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.
YOLOv10 vượt trội hơn các phiên bản YOLO trước đây và các mô hình tiên tiến khác ở 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 tự trên tập dữ liệu COCO. YOLOv10b cho thấy độ trễ ít hơn 46% và ít hơn 25% tham số so với YOLOv9-C với cùng hiệu suất. Các benchmark chi tiết có thể được tìm thấy trong phần So sánh.