Phát hiện đối tượng với Ultralytics YOLO#
Phát hiện đối tượng là tác vụ xác định vị trí và lớp của đối tượng trong ảnh hoặc luồng video.
Đầu ra của bộ phát hiện đối tượng là tập hợp các hộp giới hạn bao quanh đối tượng trong ảnh, cùng với nhãn lớp và điểm tin cậy cho từng hộp. Phát hiện đối tượng là lựa chọn phù hợp khi bạn cần xác định các đối tượng quan tâm trong cảnh nhưng không cần biết hình dạng chính xác của đối tượng.
Xem: Phát hiện đối tượng bằng model Ultralytics YOLO được huấn luyện trước.
Model YOLO26 Detect là các model YOLO26 mặc định, tức là yolo26n.pt, và được huấn luyện trước trên COCO.
Model#
Các model YOLO26 Detect được huấn luyện trước trên dataset COCO được liệt kê bên dưới.
Model sẽ tự động tải xuống từ bản phát hành Ultralytics mới nhất trong lần sử dụng đầu tiên.
| Model | kích thước (pixel) | mAPval 50-95 | mAPval 50-95(e2e) | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n | 640 | 40.9 | 40.1 | 38.9 ± 0.7 | 1.7 ± 0.0 | 2.4 | 5.5 |
| YOLO26s | 640 | 48.6 | 47.8 | 87.2 ± 0.9 | 2.5 ± 0.0 | 9.5 | 20.9 |
| YOLO26m | 640 | 53.1 | 52.5 | 220.0 ± 1.4 | 4.7 ± 0.1 | 20.4 | 68.4 |
| YOLO26l | 640 | 55.0 | 54.4 | 286.2 ± 2.0 | 6.2 ± 0.2 | 24.8 | 86.8 |
| YOLO26x | 640 | 57.5 | 56.9 | 525.8 ± 4.0 | 11.8 ± 0.2 | 55.7 | 194.4 |
- Các giá trị mAPval được tính cho một model, một scale trên dataset COCO val2017.
Tái tạo kết quả bằngyolo detect val data=coco.yaml device=0. Thêmnms=Falseđể tái tạo cột e2e. - Tốc độ là mức trung bình trên các ảnh COCO val, sử dụng ONNX trên CPU và TensorRT10 trên GPU NVIDIA T4.
Tái tạo kết quả bằngyolo detect val data=coco.yaml batch=1 device=0|cpu nms=False - Các giá trị Params và FLOPs được tính cho model đã hợp nhất sau khi gộp Conv/BatchNorm và loại bỏ nhánh phát hiện không sử dụng. Checkpoint được huấn luyện trước vẫn giữ nguyên kiến trúc huấn luyện đầy đủ nên có thể hiển thị số liệu cao hơn.
Xem bản xem trước YOLO27 chưa phát hành để biết kết quả phát hiện COCO sơ bộ.
Huấn luyện#
Huấn luyện YOLO26n trên dataset COCO8 trong 100 epoch với kích thước ảnh 640. Để xem danh sách đầy đủ các đối số hiện có, hãy truy cập trang Cấu hình.
from ultralytics import YOLO
# Tải model
model = YOLO("yolo26n.yaml") # tạo model mới từ YAML
model = YOLO("yolo26n.pt") # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # tạo từ YAML và chuyển trọng số
# Huấn luyện model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Xem chi tiết đầy đủ về chế độ train trên trang Huấn luyện. Bạn cũng có thể huấn luyện model phát hiện bằng dịch vụ huấn luyện đám mây của Ultralytics Platform.
Định dạng dataset#
Bạn có thể tìm hiểu chi tiết định dạng dataset phát hiện YOLO trong Hướng dẫn về Dataset. Để chuyển đổi dataset COCO JSON hiện có sang định dạng YOLO, hãy dùng hàm tích hợp sẵn convert_coco được mô tả trong hướng dẫn chuyển đổi COCO sang YOLO. Bạn cũng có thể gán nhãn và quản lý dataset phát hiện bằng các công cụ gán nhãn có AI hỗ trợ của Ultralytics Platform.
Đánh giá#
Đánh giá độ chính xác của model YOLO26n đã huấn luyện. Không cần đối số nào vì model lưu lại data dùng trong quá trình huấn luyện cùng các đối số dưới dạng thuộc tính của model: path/to/best.pt trong ví dụ Huấn luyện sẽ đánh giá trên COCO8. Trọng số chính thức ghi lại đường dẫn dataset huấn luyện không tồn tại trên máy của bạn, nên chúng sẽ chuyển sang coco8.yaml mặc định của tác vụ và đưa ra cảnh báo. Truyền data để đánh giá trên dataset khác.
from ultralytics import YOLO
# Tải model
model = YOLO("yolo26n.pt") # tải model chính thức
model = YOLO("path/to/best.pt") # tải model tùy chỉnh
# Xác thực model
metrics = model.val() # không cần đối số, dataset và cài đặt đã được ghi nhớ
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # danh sách chứa mAP50-95 cho từng danh mục
metrics.box.image_metrics # dictionary metric theo từng ảnh, gồm precision, recall, F1, TP, FP và FNDự đoán#
Sử dụng model YOLO26n đã huấn luyện để chạy dự đoán trên ảnh.
from ultralytics import YOLO
# Tải model
model = YOLO("yolo26n.pt") # tải model chính thức
model = YOLO("path/to/best.pt") # tải model tùy chỉnh
# Dự đoán bằng model
results = model("https://ultralytics.com/images/bus.jpg") # dự đoán trên một ảnh
# Truy cập kết quả
for result in results:
xywh = result.boxes.xywh # tâm-x, tâm-y, chiều rộng, chiều cao
xywhn = result.boxes.xywhn # normalized
xyxy = result.boxes.xyxy # trên-trái-x, trên-trái-y, dưới-phải-x, dưới-phải-y
xyxyn = result.boxes.xyxyn # normalized
names = [result.names[cls.item()] for cls in result.boxes.cls.int()] # tên lớp của từng hộp
confs = result.boxes.conf # điểm tin cậy của từng hộpXem chi tiết đầy đủ về chế độ predict trên trang Dự đoán.
Đầu ra kết quả#
Phát hiện đối tượng trả về một đối tượng Results cho mỗi ảnh. Trường dự đoán chính là result.boxes, chứa tọa độ hộp, ID lớp và điểm tin cậy cho từng đối tượng được phát hiện.
| Thuộc tính | Kiểu | Hình dạng | Mô tả |
|---|---|---|---|
result.boxes | Boxes | (N) | Các bounding box phát hiện. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] thô, cùng ID track tùy chọn. |
result.boxes.xyxy | torch.float32 | (N,4) | Các bounding box pixel xyxy. |
result.boxes.conf | torch.float32 | (N,) | Điểm độ tin cậy. |
result.boxes.cls | torch.float32 | (N,) | ID lớp; chuyển kiểu sang int để lấy tên. |
Để xem các trường Results dành riêng cho từng tác vụ trên tất cả tác vụ, hãy tham khảo mục Kết quả dự đoán theo tác vụ.
Export#
Xuất model YOLO26n sang định dạng khác như ONNX, CoreML, v.v.
from ultralytics import YOLO
# Tải model
model = YOLO("yolo26n.pt") # tải model chính thức
model = YOLO("path/to/best.pt") # tải model tùy chỉnh
# # Xuất model
model.export(format="onnx")Các định dạng xuất YOLO26 hiện có được liệt kê trong bảng bên dưới. Bạn có thể xuất sang bất kỳ định dạng nào bằng đối số format, chẳng hạn format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc đánh giá trực tiếp trên model đã xuất, chẳng hạn yolo predict model=yolo26n.onnx. Ví dụ sử dụng cho model sẽ hiển thị sau khi quá trình xuất hoàn tất.
| Định dạng | Đối số format | Model | Metadata | Đối số |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None mặc định xuất đầu ra thô cho NMS bên ngoài. Đặt nms=False để chọn một head không dùng NMS hiện có; các định dạng không được hỗ trợ sẽ chuyển về luồng đầu ra gốc. Các mục nms ở trên xác định những định dạng có thể tích hợp NMS với nms=True.
Xem chi tiết đầy đủ về export trên trang Export.
Câu hỏi thường gặp#
Có. Hướng dẫn bắt đầu nhanh của Ultralytics Platform giới thiệu quy trình làm việc trên trình duyệt để gán nhãn dataset, huấn luyện model phát hiện trên GPU đám mây và triển khai model lên các endpoint suy luận.
Để huấn luyện model YOLO26 trên dataset tùy chỉnh, hãy thực hiện một số bước sau:
- Chuẩn bị dataset: Đảm bảo dataset của bạn ở định dạng YOLO. Để được hướng dẫn, hãy tham khảo Hướng dẫn về Dataset của chúng tôi.
- Tải model: Sử dụng thư viện Ultralytics YOLO để tải model đã huấn luyện trước hoặc tạo model mới từ tệp YAML.
- Huấn luyện model: Chạy phương thức
traintrong Python hoặc lệnhyolo detect traintrong CLI.
Ví dụfrom ultralytics import YOLO # Tải model pretrained model = YOLO("yolo26n.pt") # Huấn luyện model trên dataset tùy chỉnh của bạn model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)Để biết các tùy chọn cấu hình chi tiết, hãy truy cập trang Cấu hình.
Ultralytics YOLO26 cung cấp nhiều model đã huấn luyện trước cho phát hiện đối tượng, phân đoạn thực thể, phân đoạn ngữ nghĩa, ước lượng độ sâu, phân loại, ước lượng tư thế và hộp giới hạn có định hướng. Các model này được huấn luyện trước trên dataset COCO, Cityscapes cho phân đoạn ngữ nghĩa, tập hợp nhiều dataset cho ước lượng độ sâu, ImageNet cho phân loại hoặc DOTAv1 cho OBB. Sau đây là một số model hiện có:
Để xem danh sách chi tiết và các chỉ số hiệu năng, hãy tham khảo mục Model.
Để đánh giá độ chính xác của model YOLO26 đã huấn luyện, bạn có thể dùng phương thức
.val()trong Python hoặc lệnhyolo detect valtrong CLI. Thao tác này sẽ cung cấp các chỉ số như mAP50-95, mAP50 và nhiều chỉ số khác.Ví dụfrom ultralytics import YOLO # Tải model model = YOLO("path/to/best.pt") # Xác thực model metrics = model.val() print(metrics.box.map) # mAP50-95Để biết thêm chi tiết về đánh giá, hãy truy cập trang Val.
Ultralytics YOLO26 cho phép xuất model sang nhiều định dạng như ONNX, TensorRT, CoreML và nhiều định dạng khác để đảm bảo khả năng tương thích trên nhiều nền tảng và thiết bị.
Ví dụfrom ultralytics import YOLO # Tải model model = YOLO("yolo26n.pt") # # Xuất model sang định dạng ONNX model.export(format="onnx")Xem danh sách đầy đủ các định dạng được hỗ trợ và hướng dẫn trên trang Xuất.
Ultralytics YOLO26 được thiết kế để mang lại hiệu năng tiên tiến nhất cho phát hiện đối tượng, phân đoạn thực thể, phân đoạn ngữ nghĩa và ước lượng tư thế. Dưới đây là một số ưu điểm chính:
- Model huấn luyện trước: Sử dụng các model được huấn luyện trước trên những dataset phổ biến như COCO và ImageNet để đẩy nhanh quá trình phát triển.
- Độ chính xác cao: Đạt điểm mAP ấn tượng, đảm bảo khả năng phát hiện đối tượng đáng tin cậy.
- Tốc độ: Được tối ưu cho suy luận thời gian thực, phù hợp với các ứng dụng cần xử lý nhanh.
- Tính linh hoạt: Xuất model sang nhiều định dạng như ONNX và TensorRT để triển khai trên nhiều nền tảng.
Khám phá Blog của chúng tôi để xem các trường hợp sử dụng và câu chuyện thành công minh họa YOLO26 trong thực tế.