YOLOv7 và YOLOX#
Sự phát triển của thị giác máy tính được đánh dấu bằng những tiến bộ nhanh chóng trong phát hiện vật thể thời gian thực. YOLOv7 và YOLOX là hai cột mốc quan trọng trong hành trình này. Cả hai model đều thúc đẩy giới hạn về tốc độ và độ chính xác, nhưng áp dụng những triết lý kiến trúc khác nhau để đạt được kết quả. Hướng dẫn này cung cấp so sánh kỹ thuật toàn diện giữa hai model mạnh mẽ, giúp bạn chọn kiến trúc phù hợp cho các dự án thị giác máy tính.
Giới thiệu các model#
Hiểu rõ nguồn gốc và các lựa chọn thiết kế chính của những model này là điều thiết yếu để triển khai chúng hiệu quả trong các quy trình vận hành machine learning hiện đại.
Thông tin YOLOv7#
Được phát triển bởi các nhà nghiên cứu từng duy trì kiến trúc CSPNet và Scaled-YOLOv4, YOLOv7 giới thiệu phương pháp “bag-of-freebies” có thể huấn luyện để tối đa hóa độ chính xác mà không làm tăng chi phí suy luận.
- Tác giả: Chien-Yao Wang, Alexey Bochkovskiy và Hong-Yuan Mark Liao
- Tổ chức: Viện Khoa học Thông tin, Academia Sinica, Đài Loan
- Ngày: 2022-07-06
- Arxiv: https://arxiv.org/abs/2207.02696
- GitHub: https://github.com/WongKinYiu/yolov7
- Tài liệu: Tài liệu Ultralytics YOLOv7
Thông tin chi tiết về YOLOX#
YOLOX chọn hướng đi khác khi đưa mô hình trở lại với phát hiện không anchor, đơn giản hóa đáng kể kiến trúc head trong khi vẫn duy trì hiệu năng mạnh mẽ.
- 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: Tài liệu chính thức của YOLOX
Khác biệt và cải tiến về kiến trúc#
Khác biệt cốt lõi giữa YOLOv7 và YOLOX nằm ở cách tiếp cận trích xuất đặc trưng, dự đoán hộp giới hạn và gán nhãn.
YOLOX: Tiên phong không cần anchor#
YOLOX đã tạo bước ngoặt cho dòng YOLO khi chuyển sang thiết kế không anchor. Các detector truyền thống dựa trên anchor cần tinh chỉnh heuristic phức tạp để phân cụm anchor box, và quá trình này có thể phụ thuộc nhiều vào dataset. Bằng cách loại bỏ anchor box, YOLOX giảm đáng kể số lượng tham số thiết kế. Ngoài ra, YOLOX sử dụng head tách biệt, phân chia tác vụ phân loại và định vị thành các nhánh mạng riêng. Cách này giải quyết xung đột vốn có giữa việc phân loại vật thể và hồi quy tọa độ không gian của vật thể. YOLOX cũng tích hợp các chiến lược gán nhãn tiên tiến như SimOTA, giúp phân bổ động các mẫu dương trong quá trình huấn luyện.
YOLOv7: Tổng hợp lớp hiệu quả mở rộng#
YOLOv7 quay lại các phương pháp dựa trên anchor nhưng giới thiệu mạng tổng hợp lớp hiệu quả mở rộng (E-ELAN). E-ELAN tối ưu độ dài đường truyền gradient, đảm bảo mạng học hiệu quả ở các độ sâu khác nhau. Kiến trúc này phụ thuộc nhiều vào kỹ thuật tái tham số hóa, hợp nhất các lớp convolution trong quá trình suy luận để tăng tốc mà không làm giảm độ chính xác. Chiến lược “bag-of-freebies” của YOLOv7 bao gồm các cải tiến như convolution tái tham số hóa có kế hoạch và gán nhãn có hướng dẫn từ lead theo kiểu coarse-to-fine, giúp Mean Average Precision của model đạt mức ấn tượng.
YOLOX đơn giản hóa pipeline triển khai bằng thiết lập không anchor, nhưng các kiến trúc Ultralytics hiện đại đã tiếp tục hoàn thiện phương pháp này, loại bỏ nhu cầu về các box được xác định trước trong những thế hệ mới hơn.
So sánh hiệu năng#
Khi đánh giá các model này cho môi trường production, việc cân bằng độ chính xác với hiệu quả tính toán là điều thiết yếu. Bảng dưới đây minh họa sự đánh đổi và in đậm các chỉ số có hiệu năng tốt nhất.
| Model | kích thước (pixel) | mAPval 50-95 | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| 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 |
Như trên đã trình bày, YOLOv7x đạt mAP cao nhất, rất chính xác trên các dataset phức tạp. Ngược lại, YOLOX-Nano được tối ưu cao cho môi trường bị giới hạn tài nguyên nghiêm ngặt. Tuy nhiên, so với các kiến trúc hiện đại, cả hai model đều có mức sử dụng bộ nhớ tương đối cao trong quá trình huấn luyện.
Phương pháp huấn luyện và hệ sinh thái#
Một yếu tố quan trọng đối với nhà nghiên cứu và nhà phát triển là mức độ dễ triển khai. Trước đây, các phiên bản YOLO cũ thường yêu cầu script C++ tùy biến sâu hoặc quản lý dependency phức tạp.
Lợi thế của hệ sinh thái Ultralytics#
YOLOv7 và YOLOX không được gói Python của Ultralytics hỗ trợ gốc; với các dự án mới, lựa chọn hiệu quả nhất là dùng model Ultralytics YOLO trong hệ sinh thái Ultralytics được bảo trì tốt. Ultralytics cung cấp Python API thống nhất, trực quan, giúp đơn giản hóa đáng kể việc huấn luyện, validation và triển khai.
- Dễ sử dụng: Chỉ với vài dòng code, bạn có thể bắt đầu vòng lặp huấn luyện, giảm bớt độ khó khi làm quen với các triển khai PyTorch thuần.
- Hiệu quả huấn luyện: Các model Ultralytics YOLO vốn sử dụng ít bộ nhớ hơn trong quá trình huấn luyện so với các model Transformer nặng như RT-DETR. Nhờ đó, nhà phát triển có thể tối đa hóa batch size trên phần cứng phổ thông.
- Tính linh hoạt: Ngoài hộp giới hạn cơ bản, hệ sinh thái còn dễ dàng mở rộng sang các tác vụ như phân đoạn đối tượng và ước tính tư thế.
Dưới đây là ví dụ có thể chạy hoàn toàn, minh họa cách huấn luyện model bằng API Ultralytics:
from ultralytics import YOLO
# Tải model đã huấn luyện trước
model = YOLO("yolov8n.pt") # Trọng số có sẵn để nhanh chóng thực hiện transfer learning
# Huấn luyện model hiệu quả trên dữ liệu tùy chỉnh của bạn
results = model.train(
data="coco8.yaml",
epochs=100,
imgsz=640,
batch=16,
device="0", # Sử dụng cơ chế quản lý bộ nhớ CUDA tối ưu
)
# Export liền mạch sang ONNX hoặc TensorRT
model.export(format="onnx")Bằng cách chuẩn hóa pipeline export, nhà phát triển có thể dễ dàng chuyển trọng số sang các định dạng như TensorRT hoặc ONNX, đảm bảo suy luận tốc độ cao trên phần cứng mục tiêu.
Trường hợp sử dụng lý tưởng và ứng dụng thực tế#
Việc lựa chọn giữa YOLOX và YOLOv7 phần lớn phụ thuộc vào mục tiêu triển khai:
- YOLOX cho Edge AI: Các biến thể YOLOX-Nano và YOLOX-Tiny rất phù hợp để triển khai trên các thiết bị tiêu thụ ít điện năng. Nếu bạn đang xây dựng camera an ninh thông minh trên Raspberry Pi, các phép tích chập không anchor đơn giản của YOLOX dễ dàng chuyển đổi sang các bộ tăng tốc biên.
- YOLOv7 cho phân tích độ trung thực cao: Nếu bạn đang xử lý ảnh vệ tinh độ phân giải cao hoặc thực hiện kiểm soát chất lượng sản xuất phức tạp, mAP cao của YOLOv7x, được hỗ trợ bởi GPU NVIDIA cao cấp, đảm bảo phát hiện được cả những bất thường nhỏ nhất.
Tương lai: Nâng cấp lên Ultralytics YOLO26#
Dù YOLOv7 và YOLOX đã tạo bước đột phá khi mới ra mắt, lĩnh vực thị giác máy tính đã có những tiến bộ đáng kể. Với các lần triển khai mới, nhà phát triển nên cân nhắc Ultralytics YOLO26, ra mắt vào tháng 1 năm 2026. Model tiên tiến này kết hợp những lý thuyết kiến trúc tốt nhất thành hệ thống tối ưu, sẵn sàng cho môi trường production.
Dưới đây là lý do bạn nên nâng cấp:
- Thiết kế end-to-end không cần NMS: Head one-to-one tùy chọn của YOLO26 (
nms=False) loại bỏ Non-Maximum Suppression (NMS) trong quá trình hậu xử lý. Kỹ thuật này lần đầu được tiên phong trong YOLOv10, giúp duy trì độ trễ thấp ổn định và đơn giản hóa việc triển khai trên các thiết bị không hỗ trợ NMS bằng phần cứng. - Loại bỏ DFL: Bằng cách loại bỏ Distribution Focal Loss, YOLO26 cải thiện đáng kể khả năng tương thích với các thiết bị biên tiêu thụ ít điện năng và đơn giản hóa việc xuất ONNX.
- Bộ tối ưu MuSGD: Lấy cảm hứng từ những đổi mới trong huấn luyện LLM, YOLO26 sử dụng bộ tối ưu MuSGD lai, giúp hội tụ nhanh hơn và đảm bảo động lực huấn luyện cực kỳ ổn định.
- Suy luận CPU nhanh hơn đến 43%: Được tối ưu mạnh mẽ cho phần cứng thực tế, YOLO26 hoạt động hiệu quả trên CPU tiêu chuẩn mà không cần hạ tầng GPU đắt đỏ.
- ProgLoss + STAL: Progressive Loss và Small-Target-Aware Label Assignment cải thiện đáng kể khả năng nhận diện vật thể nhỏ, một tính năng quan trọng đối với kiểm tra bằng drone trên không và các mạng IoT tinh vi.
Đối với nhà phát triển muốn đạt sự cân bằng hiệu năng tốt nhất trong phát hiện vật thể, phân đoạn và nhiều tác vụ khác, triển khai model thông qua Ultralytics Platform mang lại trải nghiệm vượt trội, không rườm rà.
Kết luận#
YOLOX và YOLOv7 đều giới thiệu những kỹ thuật then chốt định hình hướng phát triển của AI thị giác mã nguồn mở. YOLOX chứng minh tính khả thi của các head tách rời không anchor, còn YOLOv7 cho thấy sức mạnh to lớn của việc tái tham số hóa đường đi gradient. Ngày nay, hệ sinh thái Ultralytics cho phép bạn phát triển dựa trên những ý tưởng này bằng các model Ultralytics YOLO hiện đại và chuyển đổi liền mạch sang YOLO26 tiên tiến nhất để đảm bảo ứng dụng thị giác máy tính tiếp theo của bạn luôn phù hợp trong tương lai.