YOLOv10 : Phát hiện đối tượng đầu cuối theo thời gian thực
YOLOv10 , được xây dựng trên gói Python Ultralytics của các nhà nghiên cứu tại Đại học Thanh Hoa , giới thiệu một phương pháp mới để phát hiện đối tượng theo thời gian thực, giải quyết cả những thiếu sót về hậu xử lý và kiến trúc mô hình được tìm thấy trong các nghiên cứu trước đây YOLO phiên bản. Bằng cách loại bỏ sự ức chế không tối đa ( NMS ) và tối ưu hóa các thành phần mô hình khác nhau, YOLOv10 đạt hiệu suất tiên tiến với chi phí tính toán giảm đáng kể. Các thử nghiệm mở rộng chứng minh sự đánh đổi giữa độ chính xác và độ trễ vượt trội của nó trên nhiều quy mô mô hình.

Xem: Cách huấn luyện YOLOv10 trên Bộ dữ liệu SKU-110k sử dụng Ultralytics | Bộ dữ liệu bán lẻ
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 danh mục và vị trí đối tượng trong hình ảnh với độ trễ thấp. YOLO Dòng sản phẩm này đã đi đầu trong nghiên cứu này do 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à sự thiếu hiệu quả về mặt 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 các nhiệm vụ kép nhất quán cho NMS - đào tạo miễn phí và chiến lược thiết kế mô hình toàn diện hướng đến hiệu quả và độ chính xác.
Kiến trúc
Kiến trúc của YOLOv10 xây dựng dựa trên thế mạnh của trước đó YOLO các mô hình đồng thời giới thiệu một số cải tiến quan trọng. Kiến trúc mô hình bao gồm các thành phần sau:
- Xương sống : Chịu trách nhiệm trích xuất tính năng , xương sống trong YOLOv10 sử dụng phiên bản nâng cao của CSPNet (Mạng cục bộ nhiều giai đoạn) để cải thiện luồng gradient và giảm sự dư thừa tính toán.
- Neck (Cổ): Neck được thiết kế để tổng hợp các đặc trưng từ các tỷ lệ khác nhau và chuyển chúng đến head. Nó bao gồm các lớp PAN (Path Aggregation Network) để hợp nhất các đặc trưng đa tỷ lệ một cách hiệu quả.
- One-to-Many Head (Đầu một-nhiều): Tạo ra nhiều dự đoán cho mỗi đối tượng trong quá trình huấn luyện để cung cấp các tín hiệu giám sát phong phú và cải thiện độ chính xác học tập.
- Đầu một-một : Tạo ra một dự đoán tốt nhất duy nhất cho mỗi đối tượng trong quá trình suy luận để loại bỏ nhu cầu NMS , do đó giảm độ trễ và cải thiện hiệu quả.
Các tính năng chính
- NMS - Đào tạo miễn phí : Sử dụng các nhiệm vụ kép nhất quán để loại bỏ nhu cầu NMS , giảm độ trễ suy luận .
- Thiết Kế Mô Hình Tổng Thể: Tối ưu hóa toàn diện các thành phần khác nhau từ cả góc độ hiệu quả và độ chính xác, bao gồm các head phân loại nhẹ, giảm mẫu tách rời không gian-kênh và thiết kế khối có hướng dẫn xếp hạng.
- Nâng cao khả năng của mô hình: Kết hợp các tích chập kernel lớn và các mô-đun tự chú ý một phần để cải thiện hiệu suất mà không tốn nhiều chi phí tính toán.
Các biến thể mô hình
YOLOv10 có nhiều mẫu mã 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 cực kỳ hạn chế về tài nguyên.
- YOLOv10s: Phiên bản nhỏ cân bằng giữa tốc độ và độ chính xác.
- YOLOv10m: Phiên bản trung bình để sử dụng cho mục đích đa năng.
- YOLOv10b: Phiên bản cân bằng với độ rộng tăng lên để có độ chính xác cao hơn.
- YOLOv10l: Phiên bản lớn cho độ chính xác cao hơn với chi phí tài nguyên tính toán tăng lên.
- YOLOv10x: Phiên bản cực lớn cho độ chính xác và hiệu suất tối đa.
Hiệu suất
YOLOv10 vượt trội hơn trước đó YOLO các phiên bản 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 RT-DETR -R18 1,8 lần với tốc độ tương tự. AP trên COCO tập dữ liệu và YOLOv10b có độ trễ ít hơn 46% và ít tham số hơn 25% so với YOLOv9 -C với cùng hiệu suất.
Hiệu suất
Độ trễ được đo bằng TensorRT FP16 trên T4 GPU.
| Mô hình | Kích Thước Đầu Vào | AP giá trị | FLOPs (G) | Độ Trễ (ms) |
|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | 6.7 | 1.84 |
| YOLOv10s | 640 | 46.3 | 21.6 | 2.49 |
| YOLOv10m | 640 | 51.1 | 59.1 | 4.74 |
| YOLOv10b | 640 | 52.5 | 92.0 | 5.74 |
| YOLOv10l | 640 | 53.2 | 120.3 | 7.28 |
| YOLOv10x | 640 | 54.4 | 160.4 | 10.70 |
Phương pháp luận
Bài tập kép nhất quán cho NMS - Đào tạo miễn phí
YOLOv10 sử dụng phương 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 toàn diện và triển khai hiệu quả từ đầu đến cuối. Chỉ số khớp lệnh nhất quán sẽ điều chỉnh 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 Tổng Thể Tập Trung vào Hiệu Quả-Độ Chính Xác
Nâng cao hiệu quả
- Head Phân Loại Nhẹ: Giảm chi phí tính toán của head phân loại bằng cách sử dụng các convolution tách lớp theo chiều sâu.
- Giảm Mẫu Tách Rời Không Gian-Kênh: Tách rời 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.
- Thiết Kế Khối Có Hướng Dẫn Xếp Hạng: Điều chỉnh thiết kế khối dựa trên tính dư thừa giai đoạn vốn có, đảm bảo sử dụng tham số tối ưu.
Nâng cao độ chính xác
- Convolution với Kernel Lớn: Mở rộng trường đón nhận (receptive field) để tăng cường khả năng trích xuất đặc trưng.
- Tự Chú Ý Từng Phần (PSA): Kết hợp các mô-đun tự chú ý để cải thiện khả năng học biểu diễn toàn cục với chi phí tối thiểu.
Các thí nghiệm và kết quả
YOLOv10 đã được thử nghiệm 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. Mô hình đạt được kết quả tiên tiến trên nhiều 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 máy dò hiện đại khác.
So sánh

So với các detector hiện đại khác:
- YOLOv10s / x nhanh hơn 1.8× / 1.3× so với RT-DETR-R18 / R101 với độ chính xác tương đương
- YOLOv10b có ít hơn 25% tham số và độ trễ thấp hơn 46% so với YOLOv9 -C có cùng độ chính xác
- YOLOv10l / x vượt trội hơn YOLOv8l / x 0,3 AP / 0,5 AP với ít hơn 1,8× / 2,3× số tham số
Hiệu suất
Sau đây là một so sánh chi tiết của YOLOv10 các biến thể với các mô hình hiện đại khác:
| Mô hình | Tham Số (M) | FLOPs (G) | mAP giá trị 50-95 | Độ Trễ (ms) | Độ Trễ-forward (ms) |
|---|---|---|---|---|---|
| YOLOv6 -3.0-Bắc | 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ít | 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 |
Ví dụ sử dụng
Để dự đoán hình ảnh mới với YOLOv10 :
Ví dụ
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg
Để đào tạo YOLOv10 trên một tập dữ liệu tùy chỉnh:
Ví dụ
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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg
Các Tác vụ và Chế độ được Hỗ trợ
Các YOLOv10 Dòng sản phẩm này cung cấp nhiều model, mỗi model đều được tối ưu hóa cho khả năng phát hiện đối tượng hiệu suất cao. Các model này đáp ứng 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 linh hoạt cho nhiều ứng dụng khác nhau.
| Mô hình | Tên tập tin | Nhiệm vụ | Suy luận | Xác thực | Huấn luyện | Xuất |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Phát Hiện Đối Tượng | ✅ | ✅ | ✅ | ✅ |
Xuất khẩu YOLOv10
Do các hoạt động mới được giới thiệu với YOLOv10 , không phải tất cả các định dạng xuất khẩu được cung cấp bởi Ultralytics hiện đang được hỗ trợ. Bảng sau đây 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 vì YOLOv10 . Hãy thoải mái mở yêu cầu kéo nếu bạn có thể cung cấp thay đổi đóng góp để thêm hỗ trợ xuất các định dạng bổ sung cho YOLOv10 .
| Định dạng xuất | Hỗ trợ xuất | Suy luận mô hình đã xuất | Ghi chú |
|---|---|---|---|
| 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 NVIDIA GPU. |
| 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ũ. |
| 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ị Google Edge TPU. |
| TF.js | ✅ | ✅ | Môi trường JavaScript để sử dụng trên trình duyệt. |
| PaddlePaddle | ❌ | ❌ | Phổ biến ở Trung Quốc; ít được hỗ trợ trên 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 việc phát hiện đối tượng theo thời gian thực bằng cách giải quyết những thiếu sót của các tiêu chuẩn trước đây YOLO các phiên bản và kết hợp các chiến lược thiết kế sáng tạo. Khả năng mang lại độ chính xác cao với chi phí tính toán thấp khiến nó trở thành lựa chọn lý tưởng cho nhiều ứng dụng thực tế, bao gồm sản xuất , bán lẻ và xe tự hành .
Trích dẫn và Lời cảm ơn
Chúng tôi muốn ghi nhận YOLOv10 các tác giả từ Đại học Thanh Hoa vì nghiên cứu sâu rộng và những đóng góp quan trọng của họ cho khuôn khổ 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ề việc triển khai, cải tiến kiến trúc và kết quả thử nghiệm, vui lòng tham khảo YOLOv10 bài nghiên cứu và kho lưu trữ GitHub của nhóm Đại học Thanh Hoa.
Câu hỏi thường gặp
Là gì YOLOv10 và nó khác với trước đây như thế nào YOLO phiên bản?
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 số cải tiến quan trọng trong việc phát hiện đối tượng theo thời gian thực. Nó loại bỏ nhu cầu triệt tiêu không tối đa ( 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à tối ưu hóa các thành phần mô hình để đạt hiệu suất vượt trội với chi phí tính toán giảm thiểu. Để biết thêm chi tiết về kiến trúc và các tính năng chính, vui lòng xem phần tổng quan về YOLOv10 .
Làm thế nào tôi có thể bắt đầu chạy suy luận bằng cách sử dụng YOLOv10 ?
Để suy luận dễ dàng, bạn có thể sử dụng Ultralytics YOLO Python thư viện 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 cách sử dụng YOLOv10 :
Ví dụ
from ultralytics import YOLO
# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg
Để có thêm các ví dụ về cách sử dụng, hãy truy cập phần Ví dụ Sử dụng của chúng tôi.
Những biến thể mô hình nào YOLOv10 cung cấp và trường hợp sử dụng của chúng là gì?
YOLOv10 cung cấp nhiều biến thể mô hình để phục vụ cho 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 độ rộng tăng lên
- YOLOv10l: Độ chính xác cao với chi phí 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, làm cho chúng trở nên linh hoạt cho nhiều ứng dụng. Khám phá phần Các biến thể Mô hình để biết thêm thông tin.
Làm thế nào để NMS -cách tiếp cận miễn phí trong YOLOv10 cải thiện hiệu suất?
YOLOv10 loại bỏ nhu cầu ức chế không tối đa ( NMS ) trong quá trình suy luận bằng cách sử dụng các phép gán kép nhất quán để 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-một cho suy luận, đảm bảo mỗi đối tượng nhận được một dự đoán tốt nhất duy nhất. Để biết thêm chi tiết, hãy xem phần Phép gán kép nhất quán cho NMS - Huấn luyện miễn phí .
Tôi có thể tìm thấy các tùy chọn xuất khẩu ở đâu? YOLOv10 mô hình?
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 khẩu được cung cấp bởi Ultralytics hiện đang được hỗ trợ cho YOLOv10 do các hoạt động mới. Để 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 .
Tiêu chuẩn hiệu suất cho là gì? YOLOv10 mô hình?
YOLOv10 vượt trội hơn trước đó YOLO và các mô hình tiên tiến 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 một tương tự AP trên COCO tập dữ liệu. YOLOv10b cho thấy độ trễ ít hơn 46% và ít hơn 25% tham số so với YOLOv9 -C có cùng hiệu suất. Điểm chuẩn chi tiết có thể được tìm thấy trong phần So sánh .