YOLOv8 và YOLOv7#
Lĩnh vực computer vision không ngừng phát triển, với các kiến trúc mới liên tục mở rộng giới hạn của phát hiện vật thể thời gian thực. Trong bài phân tích chuyên sâu này, chúng tôi so sánh hai model có tầm ảnh hưởng lớn: Ultralytics YOLOv8 và YOLOv7. Cả hai model đều tác động đáng kể đến cộng đồng nhà phát triển và nghiên cứu học thuật, đồng thời cung cấp những cách tiếp cận riêng để giải quyết các tác vụ thị giác phức tạp.
Việc hiểu rõ khác biệt về cấu trúc và phương pháp giữa hai model này là yếu tố thiết yếu đối với các kỹ sư machine learning muốn tối ưu hóa pipeline triển khai. Trong khi YOLOv7 giới thiệu cách tiếp cận "bag-of-freebies" mạnh mẽ, được thiết kế để tối đa hóa thông lượng thô, Ultralytics YOLOv8 tập trung xây dựng một hệ sinh thái toàn diện, dễ sử dụng, cân bằng độ chính xác cao với mức tiêu thụ bộ nhớ thấp và tính linh hoạt đa nhiệm.
Ultralytics YOLOv8: Chuẩn mực hệ sinh thái linh hoạt#
Ra mắt bởi Ultralytics vào đầu năm 2023, YOLOv8 đánh dấu sự thay đổi lớn về kiến trúc so với các phiên bản tiền nhiệm. Model được thiết kế ngay từ đầu để làm nhiều hơn một bộ phát hiện vật thể thời gian thực; đây là framework thống nhất có thể xử lý nhiều tác vụ thị giác ngay khi cài đặt.
- Tác giả: Glenn Jocher, Ayush Chaurasia và Jing Qiu
- Tổ chức: Ultralytics
- Ngày: 2023-01-10
- GitHub: ultralytics/ultralytics
- Tài liệu: Tài liệu YOLOv8
Các cải tiến kiến trúc#
YOLOv8 giới thiệu head phát hiện không anchor mang tính đổi mới. Thiết kế này đơn giản hóa đáng kể quy trình huấn luyện bằng cách loại bỏ nhu cầu cấu hình thủ công anchor box dựa trên phân bố cụ thể của dataset tùy chỉnh. Lựa chọn thiết kế này giúp model có độ ổn định cao và dễ tổng quát hóa hơn trong nhiều môi trường.
Ngoài ra, kiến trúc có module C2f (nút thắt Cross-Stage Partial với hai phép tích chập), một cải tiến về cấu trúc giúp cải thiện luồng gradient và cho phép mạng neural học các biểu diễn đặc trưng phong phú hơn mà không làm tăng đáng kể chi phí tính toán. Nhờ đó, model đạt hiệu quả cao khi chạy suy luận bằng các framework deep learning tiêu chuẩn như PyTorch.
Các model Ultralytics YOLO được thiết kế để đạt hiệu quả huấn luyện tối đa. So với các kiến trúc dựa trên Transformer hoặc CNN nặng hơn, chúng thường cần ít bộ nhớ CUDA hơn đáng kể trong quá trình huấn luyện. Nhờ vậy, bạn có thể huấn luyện với batch size lớn hơn trên phần cứng phổ thông, đẩy nhanh chu kỳ phát triển.
YOLOv7: Cách tiếp cận "Bag-of-Freebies"#
YOLOv7 được giới thiệu vào giữa năm 2022 và nhanh chóng trở thành baseline phổ biến trong giới học thuật. Model tập trung nhiều vào tái tham số hóa kiến trúc và tối ưu hóa đường dẫn gradient để nâng cao giới hạn phát hiện vật thể thời gian thực trên GPU cao cấp.
- 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: 2207.02696
- GitHub: WongKinYiu/yolov7
Các cải tiến kiến trúc#
YOLOv7 sử dụng Mạng tổng hợp lớp hiệu quả mở rộng (E-ELAN), cho phép model liên tục học được nhiều đặc trưng đa dạng hơn. Model phụ thuộc nhiều vào phương pháp dựa trên anchor và giới thiệu một "bag-of-freebies" có thể huấn luyện — tập hợp các phương pháp tối ưu hóa giúp cải thiện độ chính xác mà không làm tăng chi phí suy luận.
YOLOv7 đạt hiệu năng xuất sắc trên các benchmark học thuật tiêu chuẩn như dataset MS COCO, nhưng kiến trúc được tối ưu hóa chủ yếu cho các bộ tăng tốc cấp máy chủ. So với các framework hiện đại, tinh gọn hơn, việc xuất và triển khai các model này lên thiết bị edge đôi khi đòi hỏi cấu hình thủ công nhiều hơn.
So sánh hiệu năng chi tiết#
Khi đánh giá các model này, sự đánh đổi giữa tốc độ, độ chính xác và kích thước model là yếu tố cần cân nhắc hàng đầu. Bảng dưới đây nêu bật các chỉ số của cả hai model.
| Model | kích thước (pixel) | mAPval 50-95 | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.1 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
Như dữ liệu cho thấy, YOLOv8x đạt độ chính xác tuyệt đối cao nhất (53.9 mAP), trong khi biến thể nano (YOLOv8n) có tốc độ suy luận vượt trội và dung lượng cực nhẹ. Sự đa dạng này giúp YOLOv8 thích ứng tốt hơn nhiều với các môi trường phần cứng hạn chế.
Lợi thế của Ultralytics: Dễ sử dụng và hệ sinh thái#
Dù YOLOv7 có các chỉ số phát hiện thô mạnh mẽ, Ultralytics YOLOv8 vượt trội hơn đáng kể về trải nghiệm nhà phát triển, tích hợp hệ sinh thái và khả năng đa nhiệm.
Tính linh hoạt vượt trội#
YOLOv7 chủ yếu là model phát hiện, với các nhánh thử nghiệm cho những tác vụ khác. Ngược lại, YOLOv8 hỗ trợ sẵn Phát hiện vật thể, Phân đoạn instance, Phân loại ảnh, Ước tính tư thế và Bounding box định hướng (OBB). Cách tiếp cận thống nhất này giúp nhóm chỉ cần tìm hiểu một API rồi triển khai cho nhiều yêu cầu dự án hoàn toàn khác nhau.
Triển khai và tích hợp được tinh giản#
Xuất model cho môi trường production thường có thể trở thành nút thắt. Gói Ultralytics cho phép nhà phát triển xuất model sang các định dạng như ONNX, TensorRT và CoreML chỉ bằng một dòng code Python. Cách này tránh được các vấn đề hỗ trợ operator đôi khi gặp phải khi xuất các đồ thị phức tạp dựa trên anchor.
Ngoài ra, YOLOv8 tích hợp liền mạch với các công cụ MLOps. Dù bạn theo dõi thử nghiệm bằng Weights & Biases hay kiểm thử triển khai trên Hugging Face Spaces, hệ sinh thái Ultralytics đều đảm nhiệm phần lớn công việc phức tạp.
Ví dụ code: Huấn luyện và xuất YOLOv8#
Đoạn code sau minh họa sự đơn giản của Python API Ultralytics. Bạn có thể khởi tạo model, huấn luyện rồi xuất model để triển khai trên edge chỉ với chưa đến mười dòng code.
from ultralytics import YOLO
# Tải model YOLOv8 nano đã huấn luyện trước để suy luận nhanh
model = YOLO("yolov8n.pt")
# Huấn luyện model trên bộ dữ liệu COCO8
# API tự động xử lý việc tải dữ liệu, tăng cường dữ liệu và ghi log
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Chạy inference trên ảnh kiểm thử
predictions = model("https://ultralytics.com/images/bus.jpg")
# Export model đã huấn luyện sang định dạng ONNX để triển khai
model.export(format="onnx")Sử dụng hàm model.export() tạo cầu nối trực tiếp đến các inference engine hiệu năng cao, cho phép bạn dễ dàng tích hợp YOLOv8 vào ứng dụng di động, hệ thống nhúng hoặc máy chủ cloud thông lượng cao.
Các trường hợp sử dụng thực tế#
Sự khác biệt về kiến trúc giữa hai model quyết định các kịch bản triển khai phù hợp nhất.
Khi nào nên chọn YOLOv8:
- AI edge và thiết bị IoT: Sự sẵn có của các model Nano và Small cực nhanh giúp YOLOv8 phù hợp hoàn hảo với phần cứng có năng lực tính toán hạn chế, chẳng hạn như camera thông minh hoặc drone.
- Dự án đa nhiệm: Nếu pipeline của bạn cần theo dõi khớp cơ thể người (Ước tính tư thế) đồng thời lập bản đồ chướng ngại vật (Phân đoạn), YOLOv8 xử lý được cả hai tác vụ.
- Từ tạo prototype nhanh đến production: Tài liệu Ultralytics phong phú cùng Python API dễ sử dụng giúp các nhóm đưa sản phẩm ra thị trường nhanh hơn.
Khi nào nên cân nhắc YOLOv7:
- Đánh giá benchmark học thuật: Các nhà nghiên cứu nghiên cứu tác động của kỹ thuật tái tham số hóa thường dùng YOLOv7 làm baseline tiêu chuẩn, thể hiện qua mức độ phổ biến của model trên Hugging Face Papers.
- Pipeline máy chủ cũ: Nếu pipeline hiện có yêu cầu tính toán cao đã được tối ưu chặt chẽ cho đầu ra anchor riêng của YOLOv7, việc duy trì pipeline có thể là lựa chọn thiết thực trong ngắn hạn.
Hướng tới tương lai: Thế hệ tiếp theo#
YOLOv8 vẫn là một giải pháp đa năng mạnh mẽ, nhưng lĩnh vực AI phát triển nhanh chóng. Với các nhóm bắt đầu dự án mới, chúng tôi đặc biệt khuyến nghị khám phá những tiến bộ mới nhất trong dòng model Ultralytics.
Thế hệ mới nhất, YOLO26, đại diện cho đỉnh cao hiện tại của AI thị giác. Model có tùy chọn Thiết kế end-to-end không cần NMS (nms=False), bỏ qua bước hậu xử lý Non-Maximum Suppression để triển khai đơn giản và nhanh hơn. Nhờ loại bỏ Distribution Focal Loss (DFL) và giới thiệu Optimizer MuSGD lấy cảm hứng từ LLM, YOLO26 mang lại quá trình huấn luyện ổn định hơn và tốc độ suy luận trên CPU nhanh hơn tới 43%. Các hàm loss ProgLoss + STAL tiên tiến cải thiện đáng kể khả năng nhận diện vật thể nhỏ, đưa model trở thành lựa chọn tối ưu cho điện toán edge hiện đại và ảnh chụp từ trên không.
Đối với người dùng chuyển đổi từ các hệ thống cũ, YOLO11 mạnh mẽ và YOLOv5 kinh điển vẫn được hỗ trợ đầy đủ trong hệ sinh thái Ultralytics thống nhất. Nhờ đó, bất kể giới hạn phần cứng của bạn là gì, luôn có một model hiệu năng cao, dễ triển khai sẵn sàng để sử dụng.