Chuyển đến nội dung

YOLOv10: Nhận diệ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 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 để phát hiện đối tượng theo thời gian thực, giải quyết cả những thiếu sót trong quá trình xử lý hậu kỳ và kiến trúc mô hình được tìm thấy trong các phiên bản YOLO trước. 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 hiện đại 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 độ chính xác-độ trễ vượt trội của nó trên nhiều quy mô mô hình.

YOLOv10 nhất quán gán kép để huấn luyện không cần NMS



Xem: Cách huấn luyện YOLOv10 trên tập dữ liệu SKU-110k bằng Ultralytics | Tập 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. Dòng YOLO đã đ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, việc dựa vào NMS và sự 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 các phép gán kép nhất quán để huấn luyện không cần NMS và chiến lược thiết kế mô hình hướng đến độ chính xác-hiệu quả toàn diện.

Kiến trúc

Kiến trúc của YOLOv10 xây dựng dựa trên những điểm mạnh của các mô hình YOLO trước đó đồ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:

  1. Backbone (Mạng xương sống): 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 CSPNet (Cross Stage Partial Network) để cải thiện luồng gradient và giảm thiểu sự dư thừa tính toán.
  2. 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ả.
  3. 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.
  4. Head Một-Đối-Một: Tạo ra một dự đoán tốt nhất cho mỗi đối tượng trong quá trình suy luận để loại bỏ sự cần thiết của NMS, từ đó giảm độ trễ và cải thiện hiệu quả.

Các tính năng chính

  1. 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ỏ sự cần thiết của NMS, giảm độ trễ suy luận.
  2. 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.
  3. 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 quy mô mô hình 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 các phiên bản YOLO trước đó và các mô hình 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 tự trên bộ 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.

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 APval 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

Các phép gán kép nhất quán để huấn luyện không cần NMS

YOLOv10 sử dụng 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ả. Số liệu 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 Tổng Thể Tập Trung vào Hiệu Quả-Độ Chính Xác

Nâng cao 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 convolution tách lớp theo chiều sâu.
  2. 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.
  3. 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

  1. 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.
  2. 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 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ả hiện đại 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 trình dò tìm đương đại khác.

So sánh

So sánh YOLOv10 với các trình phát hiện đối tượng SOTA

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ó 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 với 0.3 AP / 0.5 AP cùng số lượng tham số ít hơn 1.8× / 2.3×

Hiệu suất

Dưới đây là so sánh chi tiết các biến thể YOLOv10 với các mô hình 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

Ví dụ sử dụng

Để dự đoán ảnh mới bằng 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

Để huấn luyện YOLOv10 trên một bộ 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ợ

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 hiệu suất cao về Phát hiện đối tượng. Các mô hình này đáp ứng 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 một loạt các ứng dụng.

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 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 do Ultralytics cung cấp hiện đều được hỗ trợ. Bảng sau đây trình bày các định dạng đã được chuyển đổi thành công bằng Ultralytics cho YOLOv10. Vui lòng mở một pull request nếu bạn có thể đóng góp thay đổi để 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 đặt ra một tiêu chuẩn mới trong 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 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. Khả năng cung cấp độ chính xác cao với chi phí tính toán thấp khiến nó trở thành một lựa chọn lý tưởng cho một loạt các ứng dụng thực tế bao gồm sản xuất, bán lẻxe tự hành.

Trích dẫn và ghi nhận

Chúng tôi xin ghi nhận công lao của các tác giả YOLOv10 từ Đại học Thanh Hoa vì những nghiên cứu sâu rộng và đó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 chi tiết về cách triển khai, các cải tiến về kiến trúc và kết quả thử nghiệm, vui lòng tham khảo bài nghiên cứu YOLOv10 và kho lưu trữ GitHub của nhóm Đại học Thanh Hoa.

Câu hỏi thường gặp

YOLOv10 là gì và nó khác với các phiên bản YOLO trước như thế nào?

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 cho việc phát hiện đối tượng theo thời gian thực. Nó loại bỏ sự cần thiết của non-maximum suppression (NMS) bằng cách sử dụng consistent dual assignments (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 để có 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 cách nào để bắt đầu chạy suy luận bằng YOLOv10?

Để dễ dàng suy luận, 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ụ về dự đoán hình ảnh mới bằ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.

YOLOv10 cung cấp những biến thể mô hình nào và trường hợp sử dụng của chúng là gì?

YOLOv10 cung cấp một số 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.

Cách tiếp cận không cần NMS trong YOLOv10 cải thiện hiệu suất như thế nào?

YOLOv10 loại bỏ sự cần thiết của non-maximum suppression (NMS) trong quá trình suy luận bằng cách sử dụng consistent dual assignments (gán kép nhất quán) để huấn luyện. Cách tiếp cận này làm 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 one-to-one head (đầu một-một) để 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 cho Huấn luyện Không cần NMS.

Tôi có thể tìm thấy các tùy chọn xuất cho các mô hình 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 hiện đều được hỗ trợ cho YOLOv10 do các hoạt động mới của nó. Để biết chi tiết về các định dạng được hỗ trợ và hướng dẫn về cách xuất, hãy truy cập phần Xuất YOLOv10.

Điểm chuẩn hiệu suất cho các mô hình YOLOv10 là gì?

YOLOv10 vượt trội hơn các phiên bản YOLO trước đó và các mô hình 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 tự trên bộ 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. Điểm chuẩn chi tiết có thể được tìm thấy trong phần So sánh.



📅 Đã tạo 1 năm trước ✏️ Cập nhật 5 tháng trước

Bình luận