YOLOX so với YOLOv10#
Quá trình phát triển của các model computer vision thời gian thực được đánh dấu bằng những bước tiến kiến trúc đáng kể. Hai cột mốc quan trọng trong hành trình này là YOLOX và YOLOv10. Được phát hành vào năm 2021, YOLOX đã thu hẹp 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 thiết kế anchor-free có tính hiệu quả cao. 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 sử dụng Non-Maximum Suppression (NMS) trong quá trình post-processing, mở rộng giới hạn về hiệu suất và tốc độ.
Bản so sánh kỹ thuật toàn diện này phân tích kiến trúc, các metric hiệu năng và những trường hợp sử dụng lý tưởng của cả hai model, cung cấp thông tin giúp bạn lựa chọn công cụ phù hợp cho dự án object detection tiếp theo.
Nguồn gốc và metadata của model#
Việc tìm hiểu nguồn gốc của các model này giúp làm rõ cơ sở cho những lựa chọn kiến trúc và môi trường triển khai dự kiến của chúng.
Chi tiết 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://github.com/Megvii-BaseDetection/YOLOX/tree/main/docs
Chi tiết 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
- Docs: https://docs.ultralytics.com/models/yolov10
Các cải tiến về 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à post-processing.
YOLOX: Thiết kế Anchor-Free Tiên Phong#
YOLOX đã tạo ra bước đột phá khi chuyển dòng YOLO sang kiến trúc anchor-free. Bằng cách dự đoán tâm của một đối tượng thay vì phụ thuộc vào các anchor box được định nghĩa trước, YOLOX đã giảm đáng kể số lượng tham số thiết kế và công đoạn tinh chỉnh heuristic cần thiết cho các dataset tùy chỉnh. Ngoài ra, model này giới thiệu một head tách biệt, phân chia các tác vụ classification và regression thành những luồng riêng biệt. Phương pháp này giải quyết xung đột giữa việc xác định một đối tượng là gì và xác định nó ở đâu, từ đó giúp tăng đáng kể tốc độ hội tụ và độ chính xác.
YOLOv10: Cuộc Cách Mạng Không NMS#
Mặc dù YOLOX đã đơn giản hóa detection head, model này vẫn dựa vào NMS để lọc 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ơ chế gán kép nhất quán trong quá trình training, YOLOv10 đạt được khả năng detection end-to-end nguyên bản. Model sử dụng head one-to-many trong quá trình training để bảo đảm các tín hiệu giám sát phong phú, đồng thời sử dụng head one-to-one trong quá trình inference để trực tiếp xuất ra các dự đoán cuối cùng. Thiết kế tối ưu toàn diện giữa hiệu suất và độ chính xác này loại bỏ hoàn toàn NMS, giúp giảm đáng kể độ trễ inference trên các chip nhúng.
Non-Maximum Suppression thường là một thao tác phức tạp khi tăng tốc trên Neural Processing Units (NPUs). Bằng cách loại bỏ thao tác này, YOLOv10 cho phép toàn bộ model graph thực thi liền mạch 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.
Các chỉ số và so sánh hiệu năng#
Khi đánh giá model cho môi trường production, việc cân bằng độ chính xác với overhead tính toán là yếu tố then chốt. Bảng dưới đây minh họa sự đánh đổi giữa các phiên bản quy mô khác nhau của YOLOX và YOLOv10.
| Model | kích thước (pixel) | 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 metric cho thấy rõ bước tiến thế hệ của YOLOv10. Chẳng hạn, YOLOv10-S đạt độ chính xác trung bình 46.7% so với 46.9% của YOLOX-m, nhưng sử dụng chưa đến một phần ba số lượng tham số (7.2M so với 25.3M) và FLOPs ít hơn đáng kể. Ngoài ra, model YOLOv10-X cao cấp nhất nâng mAP lên 54.4%, khiến model này có tính cạnh tranh cao trong các tác vụ đòi hỏi độ chính xác, đồng thời vẫn nhanh hơn kiến trúc YOLOX-x cũ.
Lợi thế từ hệ sinh thái Ultralytics#
Mặc dù YOLOX vẫn là một implementation nghiên cứu open-source mạnh mẽ, việc sử dụng YOLOv10 mang lại quyền truy cập ngay vào hệ sinh thái được Ultralytics duy trì tốt. Lựa chọn model được Ultralytics hỗ trợ bảo đảm trải nghiệm người dùng tinh gọn, với API đơn giản và tài liệu toàn diện.
Developer được hưởng lợi đáng kể từ yêu cầu bộ nhớ của framework; việc training các model Ultralytics thường tiêu thụ ít CUDA memory hơn nhiều so với các lựa chọn nặng dựa trên Transformer như RT-DETR. Footprint training hiệu quả này cho phép sử dụng batch size lớn hơn trên phần cứng cấp độ consumer, rút ngắn thời gian từ khi thu thập dữ liệu đến khi triển khai model. Ngoài ra, framework cung cấp tính linh hoạt vượt trội, cho phép người dùng chuyển đổi liền mạch giữa object detection, instance segmentation và ước lượng tư thế với số thay đổi code tối thiểu.
Ví dụ về Training và Inference#
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ể dễ dàng training và triển khai một model YOLOv10 bằ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", quantize=16)Bằng cách tận dụng các routine export tích hợp sẵn, việc chuyển đổi model sang các format như TensorRT hoặc ONNX chỉ cần một dòng code, hoàn toàn tránh được những trở ngại phức tạp trong quá trình biên dịch.
Các trường hợp sử dụng và kịch bản triển khai lý tưởng#
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 những hạn chế về phần cứng và yêu cầu cụ thể của domain.
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 NMS bảo đảm thời gian thực thi có tính xác định, yếu tố then chốt đối với các hệ thống an toàn, nơi không thể chấp nhận độ trễ post-processing thay đổi. Các model dễ dàng đạt frame rate cao trên những thiết bị như dòng NVIDIA Jetson.
Baseline Học Thuật và Vi Điều Khiển Edge#
YOLOX vẫn có giá trị trong môi trường học thuật, nơi các nhà nghiên cứu cần một baseline decoupled-head rõ ràng để thử nghiệm các chiến lược gán nhãn. Ngoài ra, YOLOX-Nano có kích thước đặc biệt nhỏ (dưới 1 triệu tham số) có thể được triển khai trên các vi điều khiển edge bị giới hạn nghiêm ngặt, nơi bộ nhớ được tính bằng kilobyte, với điều kiện phần cứng hỗ trợ các phép convolution tiêu chuẩn.
Tiêu Chuẩn Tối Thượng: Ultralytics YOLO26#
Mặc dù YOLOv10 đã tạo ra bước tiến lớn bằng cách loại bỏ NMS, lĩnh vực computer vision vẫn phát triển nhanh chóng. Đối với các developer muốn triển khai hiệu năng tốt nhất tuyệt đối hiện nay, chúng tôi đặc biệt khuyến nghị khám phá YOLO26.
Được phát hành như tiêu chuẩn mới nhất trong lĩnh vực vision AI, YOLO26 kế thừa những ý tưởng nền tảng của các phiên bản tiền nhiệm và nâng cấp chúng mạnh mẽ. Model này mang lại sự cân bằng hiệu năng tối ưu, hỗ trợ nguyên bản detection, segmentation, pose và oriented bounding box.
Dưới đây là lý do YOLO26 là lựa chọn được khuyến nghị cho các pipeline computer vision hiện đại:
- Thiết kế End-to-End Không NMS: Kế thừa những đột phá của YOLOv10, YOLO26 có kiến trúc end-to-end nguyên bản, bảo đảm thời gian inference nhanh hơn, có tính xác định mà không gặp các nút thắt post-processing.
- Inference trên CPU Nhanh hơn Tới 43%: Model được tối ưu đặc biệt cho edge computing, bảo đảm hiệu năng vượt trội trên các bộ xử lý di động và thiết bị không có GPU rời.
- Optimizer MuSGD: Lấy cảm hứng từ quá trình training Large Language Model (cụ thể là Kimi K2 của Moonshot AI), YOLO26 sử dụng phương pháp kết hợp SGD và Muon để đạt training cực kỳ ổn định và hội tụ nhanh.
- ProgLoss + STAL: Các hàm loss nâng cao này mang lại cải thiện đáng kể trong việc nhận diện đối tượng nhỏ, yếu tố then chốt đối với những domain đòi hỏi cao như ảnh chụp từ 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 model graph để export liền mạch sang các thiết bị edge và thiết bị công suất thấp.
- Cải tiến Theo Từng Tác vụ: Dù bạn sử dụng Residual Log-Likelihood Estimation (RLE) cho pose estimation hay angle loss chuyên biệt cho OBB, YOLO26 đều được fine-tune cho mọi tác vụ vision chính.
Đối với các developer sẵn sàng nâng cấp pipeline bằng những công cụ training và deployment hiệu quả nhất hiện có, việc chuyển sang Ultralytics Platform và tận dụng YOLO26 bảo đảm bạn luôn đi đầu trong lĩnh vực artificial intelligence. 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ợ rộng rãi từ cộng đồng và độ ổn định đã được kiểm chứng.