YOLOv5 so với EfficientDet#
Khi bắt đầu một dự án thị giác máy tính mới, việc chọn kiến trúc mạng neural phù hợp là một trong những quyết định quan trọng nhất bạn sẽ đưa ra. Hướng dẫn này cung cấp so sánh kỹ thuật chuyên sâu giữa Ultralytics YOLOv5 và EfficientDet của Google. Qua phân tích kiến trúc, các chỉ số hiệu năng và hệ sinh thái huấn luyện, chúng tôi hướng đến việc giúp nhà phát triển và nhà nghiên cứu xác định model phát hiện đối tượng phù hợp nhất với môi trường triển khai cụ thể.
EfficientDet giới thiệu những ý tưởng mới về mở rộng hợp thành và hợp nhất đặc trưng, còn YOLOv5 đã cách mạng hóa ngành bằng cách phổ cập AI hiệu năng cao thông qua cách triển khai PyTorch cực kỳ trực quan, trải nghiệm người dùng tinh gọn và sự cân bằng vượt trội giữa tốc độ và độ chính xác.
Ultralytics YOLOv5: Tiêu chuẩn ngành về khả năng tiếp cận#
Ra mắt vào mùa hè năm 2020, YOLOv5 đánh dấu bước chuyển quan trọng trong dòng YOLO. Chuyển từ framework Darknet dựa trên C sang PyTorch nguyên bản, YOLOv5 trở thành kiến trúc được ưu tiên cho các nhà phát triển muốn nhanh chóng xây dựng, huấn luyện và triển khai model.
- Tác giả: Glenn Jocher
- Tổ chức: Ultralytics
- Ngày: 2020-06-26
- GitHub: https://github.com/ultralytics/yolov5
- Tài liệu: https://docs.ultralytics.com/models/yolov5
Các cải tiến kiến trúc#
YOLOv5 nổi bật nhờ kiến trúc được tối ưu cao, chú trọng toàn bộ vòng đời machine learning liền mạch. YOLOv5 sử dụng backbone CSPDarknet53 đã được sửa đổi, kết hợp với neck Path Aggregation Network (PANet), giúp cải thiện đáng kể khả năng truyền đặc trưng qua nhiều tỷ lệ không gian.
Các cải tiến chính gồm:
- Tăng cường dữ liệu Mosaic: Kỹ thuật huấn luyện này ghép bốn ảnh huấn luyện riêng biệt thành một ảnh mosaic. Cách làm này buộc model học cách nhận diện đối tượng trong ngữ cảnh không gian phức tạp và cải thiện đáng kể khả năng phát hiện mục tiêu nhỏ.
- Tự động học anchor box: Trước khi bắt đầu huấn luyện, YOLOv5 phân tích dữ liệu huấn luyện tùy chỉnh của bạn và tự động tính kích thước anchor box tối ưu bằng phân cụm k-means.
- Hiệu quả bộ nhớ: So với các model nặng dựa trên Transformer, YOLOv5 duy trì mức sử dụng bộ nhớ thấp hơn đáng kể trong cả huấn luyện lẫn inference, cho phép model vận hành mượt mà trên phần cứng phổ thông.
EfficientDet: Phát hiện đối tượng có khả năng mở rộng#
Được Google Research giới thiệu năm 2019, EfficientDet hướng đến việc cung cấp một họ model phát hiện đối tượng có khả năng mở rộng. Model dựa trên backbone phân loại hình ảnh EfficientNet và giới thiệu một cơ chế hợp nhất đặc trưng mới.
- Tác giả: Mingxing Tan, Ruoming Pang và Quoc V. Le
- Tổ chức: Google
- Ngày: 2019-11-20
- arXiv: https://arxiv.org/abs/1911.09070
- GitHub: https://github.com/google/automl/tree/master/efficientdet
- Tài liệu: https://github.com/google/automl/tree/master/efficientdet#readme
Các cải tiến kiến trúc#
Điểm cốt lõi của EfficientDet nằm ở phương pháp tiếp cận có hệ thống trong việc mở rộng và tổng hợp đặc trưng:
- BiFPN (mạng kim tự tháp đặc trưng hai chiều): Khác với FPN truyền thống chỉ truyền thông tin từ trên xuống, BiFPN cho phép hợp nhất đặc trưng đa tỷ lệ nhanh và dễ dàng bằng cách đưa vào các trọng số có thể học để xác định mức độ quan trọng của từng đặc trưng đầu vào.
- Mở rộng hợp thành: EfficientDet đồng thời mở rộng độ phân giải, độ sâu và độ rộng của backbone, mạng đặc trưng cũng như các mạng dự đoán box/lớp, tạo ra các model từ D0 gọn nhẹ đến D7 khổng lồ.
EfficientDet phụ thuộc nhiều vào hệ sinh thái TensorFlow và các thư viện AutoML, trong khi YOLOv5 hoạt động nguyên bản trong PyTorch, mang đến quy trình làm việc mà nhiều nhà phát triển thấy trực quan, tự nhiên theo phong cách Python và dễ gỡ lỗi hơn.
So sánh hiệu năng và chỉ số#
Khi so sánh các model này, việc đánh giá hiệu năng trên các benchmark tiêu chuẩn như dataset COCO là rất quan trọng. Bảng dưới đây nêu bật sự đánh đổi giữa kích thước, nhu cầu tính toán (FLOPs) và tốc độ inference.
| Model | kích thước (pixel) | mAPval 50-95 | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | - | 1.12 | 1.9 | 4.5 |
| YOLOv5s | 640 | 37.4 | - | 1.92 | 7.2 | 16.5 |
| YOLOv5m | 640 | 45.4 | - | 4.03 | 21.2 | 49.0 |
| YOLOv5l | 640 | 49.0 | - | 6.61 | 46.5 | 109.1 |
| YOLOv5x | 640 | 50.7 | - | 11.89 | 86.7 | 205.7 |
| EfficientDet-d0 | 640 | 34.6 | 10.2 | 3.92 | 3.9 | 2.54 |
| EfficientDet-d1 | 640 | 40.5 | 13.5 | 7.31 | 6.6 | 6.1 |
| EfficientDet-d2 | 640 | 43.0 | 17.7 | 10.92 | 8.1 | 11.0 |
| EfficientDet-d3 | 640 | 47.5 | 28.0 | 19.59 | 12.0 | 24.9 |
| EfficientDet-d4 | 640 | 49.7 | 42.8 | 33.55 | 20.7 | 55.2 |
| EfficientDet-d5 | 640 | 51.5 | 72.5 | 67.86 | 33.7 | 130.0 |
| EfficientDet-d6 | 640 | 52.6 | 92.8 | 89.29 | 51.9 | 226.0 |
| EfficientDet-d7 | 640 | 53.7 | 122.0 | 128.07 | 51.9 | 325.0 |
Phân tích cân bằng#
YOLOv5 nổi bật nhờ tính linh hoạt khi triển khai và khả năng tương thích với tăng tốc phần cứng. Hãy chú ý đến tốc độ TensorRT cực nhanh trên GPU T4. Nhờ đó, YOLOv5 đặc biệt phù hợp với các quy trình phân tích video thông lượng cao và inference thời gian thực. Hơn nữa, hệ sinh thái Ultralytics cho phép xuất sang các định dạng như ONNX, CoreML và TensorRT chỉ bằng một lệnh.
EfficientDet có hiệu quả sử dụng parameter rất tốt. Với cùng số lượng parameter, EfficientDet thường đạt độ chính xác trung bình (mAP) cao. Tuy nhiên, hiệu quả lý thuyết này không phải lúc nào cũng chuyển thành thời gian inference thực tế nhanh hơn trên GPU biên, do định tuyến phức tạp của lớp BiFPN có thể bị giới hạn bởi băng thông bộ nhớ thay vì năng lực tính toán.
Hệ sinh thái và tính dễ sử dụng#
Lợi thế nổi bật khi chọn model Ultralytics nằm ở hệ sinh thái hỗ trợ. YOLOv5 thuộc một kho lưu trữ được duy trì tích cực và phát triển liên tục, với sự hỗ trợ lớn từ cộng đồng.
Với sự ra mắt của Ultralytics Platform, người dùng có thể chuyển đổi liền mạch từ thu thập dữ liệu đến triển khai. Nền tảng này hỗ trợ sẵn gán nhãn tự động, huấn luyện trên cloud và giám sát model. Ngược lại, huấn luyện EfficientDet thường đòi hỏi xử lý sự phức tạp của các API phát hiện đối tượng TensorFlow cũ, dẫn đến đường cong học tập khá dốc khi cần tạo mẫu nhanh.
Hơn nữa, tính linh hoạt của YOLOv5 không chỉ giới hạn ở bounding box. Thông qua các bản cập nhật liên tục, framework Ultralytics hỗ trợ nguyên bản phân đoạn instance và phân loại hình ảnh, cung cấp API thống nhất cho nhiều tác vụ thị giác máy tính.
Các trường hợp sử dụng phù hợp nhất#
- Chọn YOLOv5 khi: Bạn cần tạo mẫu nhanh, trải nghiệm huấn luyện liền mạch và triển khai biên được tối ưu cao. YOLOv5 lý tưởng cho drone, phân tích bán lẻ và ứng dụng di động cần độ trễ thấp.
- Chọn EfficientDet khi: Bạn chỉ hoạt động trong môi trường Google Cloud/TensorFlow AutoML và cần độ chính xác tối đa trên mỗi parameter mà không bị giới hạn nghiêm ngặt về độ trễ thời gian thực.
Thế hệ tiếp theo: Đón nhận YOLO26#
Dù YOLOv5 vẫn là model đáng tin cậy, lĩnh vực thị giác máy tính đã phát triển vượt bậc. Với các nhà phát triển muốn sử dụng công nghệ tiên tiến nhất năm 2026, YOLO26 là đỉnh cao mới trong dòng model Ultralytics.
Kế thừa nền tảng của các thế hệ trước (như YOLOv8 và YOLO11), YOLO26 giới thiệu những cải tiến mang tính đột phá:
- Thiết kế end-to-end không cần NMS: Head một-một tùy chọn của YOLO26 (
nms=False) loại bỏ nhu cầu hậu xử lý Non-Maximum Suppression. Điều này giảm đáng kể biến động độ trễ và đơn giản hóa kiến trúc triển khai. - Inference CPU nhanh hơn đến 43%: Được tối ưu mạnh cho AI biên, YOLO26 mang lại tốc độ chưa từng có trên thiết bị biên công suất thấp và CPU tiêu chuẩn không có GPU chuyên dụng.
- Bộ tối ưu hóa MuSGD: Lấy cảm hứng từ các kỹ thuật huấn luyện Mô hình Ngôn ngữ Lớn (LLM), phương pháp kết hợp SGD và Muon này đảm bảo quá trình huấn luyện ổn định và hội tụ nhanh.
- Các hàm loss nâng cao: Việc tích hợp ProgLoss và STAL cải thiện đáng kể khả năng nhận diện mục tiêu nhỏ, yếu tố thiết yếu đối với ảnh drone chụp ở độ cao lớn và robotics.
- Loại bỏ DFL: Bằng cách loại bỏ Distribution Focal Loss, quy trình xuất model được tinh giản, đồng thời tăng khả năng tương thích với nhiều bộ tăng tốc phần cứng.
Người dùng muốn tìm hiểu các kiến trúc mới khác trong hệ sinh thái Ultralytics cũng có thể so sánh các model như YOLOv10 hoặc RT-DETR.
Python API của Ultralytics được thiết kế để tương thích ngược và xuôi. Nâng cấp từ YOLOv5 lên YOLO26 đơn giản đúng nghĩa chỉ bằng cách thay đổi chuỗi trọng số model trong mã của bạn!
Ví dụ mã: Huấn luyện và suy luận#
Để minh họa khả năng sử dụng dễ dàng vượt trội của hệ sinh thái Ultralytics, dưới đây là cách huấn luyện và chạy inference bằng một model YOLO hiện đại. Mã này có thể chạy nguyên vẹn và tự động xử lý việc tải dataset, vòng lặp huấn luyện và xác thực.
from ultralytics import YOLO
# Tải một model hiện đại (Thay 'yolov5su.pt' bằng 'yolo26n.pt' để thử kiến trúc mới nhất!)
model = YOLO("yolov5su.pt") # YOLOv5u: weight YOLOv5 không anchor dành cho package ultralytics
# Huấn luyện model trên dataset mẫu COCO8 trong 20 epoch
results = model.train(data="coco8.yaml", epochs=20, imgsz=640)
# Chạy suy luận trên ảnh từ web
inference_results = model("https://ultralytics.com/images/bus.jpg")
# Hiển thị hình ảnh với bounding box
inference_results[0].show()Bằng cách ưu tiên trải nghiệm người dùng, duy trì hệ sinh thái mạnh mẽ và liên tục mở rộng giới hạn khả năng với các bản cập nhật như YOLO26, Ultralytics đảm bảo nhà phát triển luôn có sẵn những công cụ tốt nhất để giải quyết các thách thức thực tế về trí tuệ thị giác.