Ultralytics YOLO27:

YOLOv10: Phát hiện đối tượng đầu-cuối theo thời gian thực#

YOLOv10, được phát hành vào tháng 5 năm 2024 và xây dựng trên gói Python Ultralytics bởi 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 cho bài toán phát hiện đối tượng theo thời gian thực, giải quyết cả những hạn chế trong hậu xử lý và kiến trúc model của các phiên bản YOLO trước đó. Bằng cách loại bỏ triệt tiêu không cực đại (NMS) và tối ưu hóa nhiều thành phần của model, YOLOv10 đạt 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 phát hành. Thiết kế đầu-cuối không cần NMS của model đã tiên phong cho một hướng tiếp cận được phát triển thêm trong YOLO26.

Gán kép nhất quán của YOLOv10 cho quá trình huấn luyện không cần NMS



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 dự đoán chính xác các lớp và vị trí của đối tượng trong ả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 gán kép nhất quán cho quá trình huấn luyện không cần NMS và chiến lược thiết kế model toàn diện, định hướng bởi hiệu quả và độ chính xác.

Kiến trúc#

Kiến trúc của YOLOv10 kế thừa các ưu điểm của những model YOLO trước đây, đồng thời giới thiệu một số cải tiến then chốt. Kiến trúc model bao gồm các thành phần sau:

  1. Backbone: Chịu trách nhiệm trích xuất đặc trưng, backbone trong YOLOv10 sử dụng phiên bản nâng cao của Mạng một phần theo giai đoạn chéo (CSPNet) để cải thiện dòng gradient và giảm dư thừa tính toán.
  2. Neck: Neck được thiết kế để tổng hợp các đặc trưng từ nhiều tỷ lệ khác nhau và truyền chúng đến head. Thành phần này bao gồm các lớp Mạng tổng hợp đường dẫn (PAN) để hợp nhất đặc trưng đa tỷ lệ hiệu quả.
  3. Head One-to-Many: Tạo nhiều dự đoán cho mỗi đối tượng trong quá trình huấn luyện để cung cấp tín hiệu giám sát phong phú và cải thiện độ chính xác học.
  4. Head One-to-One: Tạo 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 sử dụng NMS, qua đó giảm độ trễ và cải thiện hiệu quả.

Tính năng chính#

  1. Huấn luyện không cần NMS: Sử dụng gán kép nhất quán để loại bỏ nhu cầu sử dụng NMS, giảm độ trễ suy luận.
  2. Thiết kế mô hình 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 năng và độ chính xác, bao gồm phần đầu phân loại nhẹ (lightweight classification heads), giảm mẫu tách rời không gian-kênh (spatial-channel decoupled downsampling), và thiết kế khối theo thứ hạng (rank-guided block design).
  3. Nâng cao năng lực model: Tích hợp tích chập kernel lớn và các module self-attention một phần để cải thiện hiệu suất mà không làm tăng đáng kể chi phí tính toán.

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 đa dạng:

  • YOLOv10n: Phiên bản Nano dành cho các môi trường cực kỳ hạn chế 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 cho mục đích sử dụng phổ thông.
  • YOLOv10b: Phiên bản cân bằng với độ rộng tăng để đạt độ chính xác cao hơn.
  • YOLOv10l: Phiên bản Large cho độ chính xác cao hơn, nhưng cần nhiều tài nguyên tính toá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 năng#

YOLOv10 vượt trội hơn các phiên bản YOLO trước đây và những model hiện đại nhất 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, còn YOLOv10b có độ trễ thấp hơn 46% và ít hơn 25% số tham số so với YOLOv9-C với cùng hiệu suất.

Hiệu năng

Độ trễ được đo bằng TensorRT FP16 trên GPU T4.

ModelKích thước đầu vàoAPvalFLOPs (G)Độ trễ (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Phương pháp#

Gán kép nhất quán cho quá trình huấn luyện không cần NMS#

YOLOv10 áp dụng phương pháp gán nhãn kép, kết hợp chiến lược một-nhiều và một-một trong quá trình huấn luyện nhằm đảm bảo giám sát phong phú và triển khai đầu cuối hiệu quả. Quá trình dự đoán và xác thực của Ultralytics mặc định sử dụng phần đầu một-nhiều kết hợp NMS; hãy thiết lập nms=False để chọn phần đầu không cần NMS. Thước đo khớp nhất quán giúp đồng bộ hóa quá trì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 inference.

Thiết kế model toàn diện định hướng theo hiệu quả-độ chính xác#

Cải tiến hiệu quả#

  1. 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 phép tích chập khả tách theo chiều sâu.
  2. Giảm mẫu tách rời không gian-kênh: Tách rời việc giảm không gian và điều chế kênh để giảm thiểu tối đa sự mất mát thông tin và chi phí tính toán.
  3. Thiết kế block định hướng theo thứ hạng: Điều chỉnh thiết kế block dựa trên mức độ dư thừa nội tại của từng giai đoạn, đảm bảo sử dụng tham số tối ưu.

Cải tiến độ chính xác#

  1. Tích chập kernel lớn: Mở rộng trường tiếp nhận để nâng cao khả năng trích xuất đặc trưng.
  2. Self-Attention một phần (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í bổ sung tối thiểu.

Thử 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, cho thấy hiệu suất và hiệu quả vượt trội. Model đạt kết quả hiện đại nhất trên nhiều biến thể khác nhau, thể hiện 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 cũng như những detector đương thời khác.

So sánh#

So sánh YOLOv10 với các detector đối tượng hiện đại nhất

So với các detector hiện đại nhất 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% số tham số và độ trễ thấp hơn 46% so với YOLOv9-C với cùng độ chính xác
  • YOLOv10l / x vượt qua YOLOv8l / x lần lượt 0,3 AP / 0,5 AP với số tham số ít hơn 1,8× / 2,3×
Hiệu năng

Các hình bên dưới được báo cáo trong bài báo về YOLOv10, được đo theo giao thức riêng của bài báo, vì vậy không thể so sánh trực tiếp với các giá trị trên các trang model của Ultralytics:

ModelSố tham số
(M)
FLOPs
(G)
mAPval
50-95
Độ trễ
(ms)
Độ trễ hướng tiến
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

Các giá trị Params và FLOPs áp dụng cho model đã hợp nhất sau model.fuse(), trong đó hợp nhất các lớp Conv và BatchNorm rồi loại bỏ head phát hiện one-to-many phụ trợ. Các checkpoint được huấn luyện trước 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ự đoán ảnh mới bằng YOLOv10. Các model cũng có thể được huấn luyện trên GPU đám mây thông qua Ultralytics Platform:

Ví dụ
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:

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)

Các task và mode được hỗ trợ#

Dòng model YOLOv10 cung cấp nhiều model, mỗi model được tối ưu hóa cho Phát hiện đối tượng hiệu suất cao. Các model này đáp ứng nhiều nhu cầu tính toán và yêu cầu độ chính xác khác nhau, phù hợp với nhiều ứng dụng.

ModelTên tệpTaskTrainingValidationInferenceExport
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.ptPhát hiện đối tượng

Xuất YOLOv10#

Do các toán tử mới được giới thiệu cùng YOLOv10, hiện chưa phải tất cả định dạng xuất do Ultralytics cung cấp đều được hỗ trợ. Bảng sau nêu rõ những định dạng đã được chuyển đổi thành công bằng Ultralytics cho YOLOv10. Bạn có thể mở một pull request nếu có thể đóng góp thay đổi để bổ sung hỗ trợ xuất các định dạng khác cho YOLOv10.

Định dạng xuấtHỗ trợ xuấtSuy luận model đã exportGhi 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.
CoreMLChỉ dành 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, thiết bị nhúng và trình duyệt (LiteRT.js).
TF Edge TPUDành riêng cho các thiết bị Edge TPU của Google.
PaddlePaddlePhổ biến tại Trung Quốc; ít được hỗ trợ trên toàn cầu hơn.
NCNNToán tử torch.topk không được hỗ trợ bởi runtime NCNN.

Kết luận#

YOLOv10 đã thiết lập một tiêu chuẩn mới cho bài toán phát hiện đối tượng theo thời gian thực ngay khi ra mắt, bằng cách khắc phục những hạn chế của các phiên bản YOLO trước đó và tích hợp các chiến lược thiết kế đổi mới. Phương pháp không cần NMS của model này đã tiên phong cho việc phát hiện đối tượng end-to-end trong họ YOLO. Để xem model Ultralytics mới nhất với hiệu năng được 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 đóng góp#

Chúng tôi xin ghi nhận các tác giả YOLOv10 tại Đại học Thanh Hoa vì những nghiên cứu chuyên sâu và đóng góp quan trọng của họ cho framework Ultralytics:

Trích dẫn
@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ề triển khai, các đổi mới trong 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 YOLOv10 và repository GitHub của nhóm Đại học Thanh Hoa.

FAQ#

  • 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ố đổi mới quan trọng cho bài toán phát hiện đối tượng theo thời gian thực. Model này loại bỏ nhu cầu sử dụng phép triệt tiêu không cực đại (NMS) bằng cách áp dụng cơ chế 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, mang lại hiệu năng vượt trội với chi phí tính toán thấp hơn. Để 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.

  • Để suy luận dễ dàng, bạn có thể sử dụng thư viện Ultralytics YOLO Python hoặc giao diện dòng lệnh (CLI). Dưới đây là các ví dụ dự đoán trê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.

  • 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 với các môi trường có tài nguyên cực kỳ hạn chế
    • YOLOv10s: Cân bằng giữa tốc độ và độ chính xác
    • YOLOv10m: Sử dụng cho mục đích chung
    • YOLOv10b: Độ chính xác cao hơn với độ rộng tăng lên
    • YOLOv10l: Độ chính xác cao, đánh đổi bằng chi phí tài nguyên tính toán
    • YOLOv10x: Độ chính xác và hiệu năng 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 phù hợp với nhiều ứng dụng. Hãy xem phần Các biến thể model để biết thêm thông tin.

  • YOLOv10 huấn luyện với các phép gán kép nhất quán để phần đầu một-đối-một tạo ra một dự đoán tốt nhất duy nhất cho mỗi đối tượng, qua đó loại bỏ nhu cầu sử dụng non-maximum suppression (NMS) ở giai đoạn suy luận. Các chức năng dự đoán và xác thực của Ultralytics mặc định sử dụng phần đầu một-đối-nhiều với NMS; hãy đặt nms=False để chọn phần đầu không cần NMS và bỏ qua bước NMS. Để 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 export, bao gồm TorchScript, ONNX, OpenVINO và TensorRT. Tuy nhiên, hiện tại không phải tất cả định dạng export do Ultralytics cung cấp đều được YOLOv10 hỗ trợ do model này sử dụng các operation mới. Để biết chi tiết về các định dạng được hỗ trợ và hướng dẫn export, hãy truy cập phần Export YOLOv10.

  • YOLOv10 vượt trội hơn các phiên bản YOLO trước đó và các model tiên tiến 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 AP tương đương trên bộ dữ liệu COCO. YOLOv10b có độ trễ thấp hơn 46% và ít hơn 25% số parameter so với YOLOv9-C nhưng vẫn đạt hiệu năng tương đương. Bạn có thể tìm thấy các benchmark chi tiết trong phần So sánh.

Bình luận