YOLOX so với YOLOv10: So sánh khả năng phát hiện vật thể thời gian thực không cần Anchor và không cần NMS
Sự phát triển của các model thị giác máy tính thời gian thực được đánh dấu bởi những bước nhảy vọt đáng kể về kiến trúc. Hai cột mốc quan trọng trong hành trình này là YOLOX và YOLOv10. Được ra mắt vào năm 2021, YOLOX đã kết nối thành công khoảng cách giữa nghiên cứu học thuật và ứng dụng công nghiệp bằng cách giới thiệu một thiết kế không cần Anchor (anchor-free) cực kỳ hiệu quả. Ba năm sau, YOLOv10 đã cách mạng hóa lĩnh vực này bằng cách loại bỏ nhu cầu về Non-Maximum Suppression (NMS) trong quá trình hậu xử lý, đẩy giới hạn về hiệu suất và tốc độ lên tầm cao mới.
Bản so sánh kỹ thuật toàn diện này khám phá các kiến trúc, các chỉ số hiệu năng và các trường hợp sử dụng lý tưởng cho cả hai model, cung cấp những thông tin chuyên sâu giúp bạn chọn công cụ phù hợp cho dự án phát hiện vật thể tiếp theo của mình.
Nguồn gốc và Siêu dữ liệu Model
Việc hiểu rõ nguồn gốc của các model này mang lại bối cảnh cho những lựa chọn về kiến trúc và môi trường triển khai dự định của chúng.
Chi tiết về YOLOX
Tác giả: Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, và Jian Sun
Tổ chức: Megvii
Ngày: 2021-07-18
Arxiv: https://arxiv.org/abs/2107.08430
GitHub: https://github.com/Megvii-BaseDetection/YOLOX
Tài liệu: https://yolox.readthedocs.io/en/latest/
Chi tiết về YOLOv10
Tác giả: Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han, và Guiguang Ding
Tổ chức: Đại học Thanh Hoa
Ngày: 2024-05-23
Arxiv: https://arxiv.org/abs/2405.14458
GitHub: https://github.com/THU-MIG/yolov10
Tài liệu: https://docs.ultralytics.com/models/yolov10/
Đổi mới kiến trúc
Những khác biệt cốt lõi giữa YOLOX và YOLOv10 nằm ở cách chúng xử lý các dự đoán bounding box và hậu xử lý.
YOLOX: Tiên phong trong thiết kế không cần Anchor
YOLOX đã tạo nên làn sóng khi chuyển đổi dòng YOLO sang kiến trúc không cần Anchor. Bằng cách dự đoán tâm của vật thể thay vì dựa vào các anchor box được xác định trước, YOLOX đã giảm đáng kể số lượng tham số thiết kế và việc tinh chỉnh theo kinh nghiệm cần thiết cho các tập dữ liệu tùy chỉnh. Hơn nữa, nó còn giới thiệu một head phân tách (decoupled head), tách biệt các tác vụ phân loại và hồi quy thành các luồng riêng biệt. Cách tiếp cận này giải quyết xung đột giữa việc xác định vật thể là gì và ở đâu, dẫn đến sự cải thiện rõ rệt về tốc độ hội tụ và độ chính xác.
YOLOv10: Cuộc cách mạng không cần NMS
Mặc dù YOLOX đã đơn giản hóa head phát hiện, nó vẫn dựa vào NMS để lọc ra các dự đoán bounding box dư thừa. YOLOv10 đã giải quyết nút thắt cơ bản này. 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, YOLOv10 đạt được khả năng phát hiện end-to-end tự nhiên. Nó sử dụng head one-to-many trong quá trình huấn luyện để đảm bảo tín hiệu giám sát phong phú, đồng thời sử dụng head one-to-one trong quá trình suy luận để xuất trực tiếp các dự đoán cuối cùng. Thiết kế hướng đến hiệu quả-độ chính xác toàn diện này loại bỏ hoàn toàn NMS, giảm đáng kể độ trễ suy luận trên các chip nhúng.
Non-Maximum Suppression thường là một thao tác phức tạp để tăng tốc trên các Neural Processing Units (NPU). Bằng cách loại bỏ nó, YOLOv10 cho phép toàn bộ đồ thị model thực thi trơn tru trên phần cứng chuyên dụng, cải thiện đáng kể khả năng tương thích với các framework tối ưu hóa như OpenVINO và TensorRT.
Chỉ số hiệu suất và So sánh
Khi đánh giá các model cho sản xuất, việc cân bằng giữa độ chính xác và chi phí tính toán là rất quan trọng. Bảng dưới đây minh họa các sự đánh đổi giữa nhiều quy mô khác nhau của YOLOX và YOLOv10.
| Model | kích thước (pixels) | mAPval 50-95 | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | tham số (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.4 |
Phân tích dữ liệu
Các chỉ số chứng minh rõ ràng bước nhảy vọt về thế hệ của YOLOv10. Ví dụ, YOLOv10-S đạt mean Average Precision là 46,7% so với 46,9% của YOLOX-m, nhưng thực hiện điều đó với ít hơn một phần ba số tham số (7,2 triệu so với 25,3 triệu) và ít FLOP hơn đáng kể. Hơn nữa, model YOLOv10-X hàng đầu đẩy mAP lên 54,4%, khiến nó trở nên cạnh tranh cao cho các tác vụ đòi hỏi độ chính xác cao trong khi vẫn nhanh hơn kiến trúc YOLOX-x cũ.
Lợi thế của hệ sinh thái Ultralytics
Trong khi YOLOX vẫn là một bản triển khai nghiên cứu mã nguồn mở mạnh mẽ, việc sử dụng YOLOv10 mang lại khả năng tiếp cận ngay lập tức với hệ sinh thái được duy trì tốt do Ultralytics cung cấp. Việc chọn một model được Ultralytics hỗ trợ đảm bảo trải nghiệm người dùng hợp lý, đặc trưng bởi một API đơn giản và tài liệu mở rộng.
Các lập trình viên hưởng lợi rất nhiều từ các yêu cầu bộ nhớ của framework; việc huấn luyện các model Ultralytics thường tiêu tốn ít bộ nhớ CUDA hơn nhiều so với các giải pháp thay thế dựa trên Transformer nặng nề như RT-DETR. Dung lượng huấn luyện hiệu quả này cho phép các batch size lớn hơn trên phần cứng tiêu dùng, đẩy nhanh thời gian từ thu thập dữ liệu đến triển khai model. Hơn nữa, framework cung cấp sự linh hoạt tuyệt vời, cho phép người dùng chuyển đổi liền mạch giữa phát hiện vật thể, phân đoạn instance, và ước tính tư thế với những thay đổi code tối thiểu.
Ví dụ về Huấn luyện và Suy luận
API thống nhất giúp việc xác thực ý tưởng trở nên cực kỳ nhanh chóng. Đoạn code sau minh họa cách bạn có thể huấn luyện và triển khai một model YOLOv10 dễ dàng như thế nào bằng cách sử dụng backend PyTorch:
from ultralytics import YOLO
# Load a pre-trained YOLOv10 nano model
model = YOLO("yolov10n.pt")
# Train the model on the COCO8 dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on a sample image
predictions = model.predict("https://ultralytics.com/images/bus.jpg")
# Export the model for edge deployment
model.export(format="engine", half=True)Bằng cách tận dụng các quy trình xuất có sẵn, việc chuyển đổi model sang các định dạng như TensorRT hoặc ONNX chỉ yêu cầu một dòng code, bỏ qua hoàn toàn các rào cản biên dịch phức tạp.
Các trường hợp sử dụng lý tưởng và kịch bản triển khai
Việc lựa chọn giữa các kiến trúc này phụ thuộc phần lớn vào các ràng buộc phần cứng và yêu cầu miền cụ thể của bạn.
Phân tích video thời gian thực
Đối với các ứng dụng yêu cầu độ trễ cực thấp, chẳng hạn như lái xe tự động hoặc giám sát giao thông thời gian thực, YOLOv10 là lựa chọn vượt trội. Thiết kế end-to-end không cần NMS đảm bảo thời gian thực thi xác định, điều này rất quan trọng đối với các hệ thống an toàn nơi không thể chấp nhận độ trễ hậu xử lý thay đổi. Các model dễ dàng đạt tốc độ khung hình cao trên các thiết bị như dòng NVIDIA Jetson.
Các tiêu chuẩn học thuật và vi điều khiển biên
YOLOX vẫn giữ giá trị trong môi trường học thuật, nơi các nhà nghiên cứu muốn một baseline head-decoupled sạch sẽ để thử nghiệm với các chiến lược gán nhãn. Ngoài ra, YOLOX-Nano cực nhỏ (dưới 1 triệu tham số) có thể được đưa vào các vi điều khiển biên bị giới hạn cao, nơi bộ nhớ được đo bằng kilobyte, với điều kiện phần cứng có thể hỗ trợ các thao tác chập (convolution) tiêu chuẩn.
Tiêu chuẩn tối thượng: Ultralytics YOLO26
Mặc dù YOLOv10 đã đánh dấu một bước nhảy vọt lớn bằng cách loại bỏ NMS, lĩnh vực thị giác máy tính vẫn tiến bộ rất nhanh. Đối với các lập trình viên muốn triển khai hiệu suất tốt nhất trong phân khúc hiện nay, chúng tôi đặc biệt khuyến nghị khám phá YOLO26.
Được ra mắt như tiêu chuẩn mới nhất trong Vision AI, YOLO26 lấy những ý tưởng nền tảng của các thế hệ tiền nhiệm và tối ưu hóa chúng. Nó mang lại sự cân bằng hiệu suất tối thượng, hỗ trợ tự nhiên các tác vụ phát hiện, phân đoạn, tư thế và bounding box có hướng.
Đây là lý do tại sao YOLO26 là lựa chọn được khuyến nghị cho các quy trình thị giác máy tính hiện đại:
- Thiết kế End-to-End không cần NMS: Xây dựng dựa trên những đột phá của YOLOv10, YOLO26 là end-to-end một cách tự nhiên, đảm bảo thời gian suy luận nhanh hơn, mang tính xác định mà không gặp các nút thắt hậu xử lý.
- Tốc độ suy luận CPU nhanh hơn tới 43%: Nó được tối ưu hóa đặc biệt cho điện toán biên, đảm bảo hiệu suất vượt trội trên các bộ xử lý di động và các thiết bị thiếu GPU rời.
- Trình tối ưu hóa MuSGD: Lấy cảm hứng từ quá trình huấn luyện Large Language Model (cụ thể là Kimi K2 của Moonshot AI), YOLO26 sử dụng sự kết hợp giữa SGD và Muon để huấn luyện cực kỳ ổn định và hội tụ nhanh chóng.
- ProgLoss + STAL: Các hàm loss tiên tiến này mang lại những cải tiến đáng chú ý trong việc nhận diện vật thể nhỏ, điều rất quan trọng cho các lĩnh vực đòi hỏi khắt khe như hình ảnh trên không và điều hướng drone.
- Loại bỏ DFL: Bằng cách loại bỏ Distribution Focal Loss, YOLO26 đơn giản hóa đồ thị model để xuất dữ liệu không ma sát sang các thiết bị biên và thiết bị năng lượng thấp.
- Cải tiến theo tác vụ: Cho dù bạn đang sử dụng Residual Log-Likelihood Estimation (RLE) cho ước tính tư thế hay loss góc chuyên biệt cho OBB, YOLO26 đều được tinh chỉnh cho mọi tác vụ thị giác chính.
Đối với các lập trình viên đã sẵn sàng nâng cấp quy trình của mình với các công cụ huấn luyện và triển khai hiệu quả nhất hiện có, việc chuyển sang Ultralytics Platform và tận dụng YOLO26 đảm bảo bạn luôn đứng ở vị trí tiên phong của trí tuệ nhân tạo. Người dùng quan tâm đến các kiến trúc cũ hơn nhưng ổn định cũng có thể xem xét YOLO11 hoặc YOLOv8 để nhận được sự hỗ trợ cộng đồng rộng rãi và sự bền bỉ đã được kiểm chứng.