Phát hiện đối tượng với Ultralytics YOLO#
Phát hiện đối tượng là một tác vụ bao gồm việc xác định vị trí và lớp của các đối tượng trong một hình ảnh hoặc luồng video.
Đầu ra của một model phát hiện đối tượng là một tập hợp các bounding box bao quanh các đối tượng trong hình ảnh, cùng với nhãn lớp và điểm độ tin cậy cho mỗi box. 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 một cảnh, nhưng không cần biết chính xác vị trí hoặc hình dạng của đối tượng.
Watch: Object Detection with Pretrained Ultralytics YOLO Model.
Các model Detect YOLO26 là các model YOLO26 mặc định, tức là yolo26n.pt, và được pretrained trên COCO.
Models#
Các model Detect YOLO26 pretrained được hiển thị tại đây. Các model Detect, Segment và Pose được pretrained trên tập dữ liệu COCO, các model Semantic được pretrained trên Cityscapes, còn các model Classify được pretrained trên tập dữ liệu ImageNet.
Các model được 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) | tham số (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 |
- mAPval values are for single-model single-scale on COCO val2017 dataset.
Reproduce byyolo val detect data=coco.yaml device=0. Addnms=Falseto reproduce the e2e column. - Tốc độ được tính trung bình trên các ảnh COCO val bằng một instance Amazon EC2 P4d.
Tái hiện bằngyolo val detect data=coco.yaml batch=1 device=0|cpu nms=False - Params and FLOPs values are for fused models after Conv/BatchNorm folding and removal of the unused detection branch. Pretrained checkpoints retain the full training architecture and may show higher counts.
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#
Train YOLO26n trên tập dữ liệu COCO8 trong 100 epoch với kích thước hình ảnh 640. Xem trang Configuration để biết danh sách đầy đủ các tham số hiện có.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Xem thông tin chi tiết đầy đủ về mode train trên trang Train. Các model phát hiện cũng có thể được train bằng tính năng cloud training của Ultralytics Platform.
Định dạng dataset#
Chi tiết về định dạng tập dữ liệu phát hiện YOLO có thể được tìm thấy trong Hướng dẫn Tập dữ liệu. Để chuyển đổi một tập dữ liệu JSON COCO hiện có sang định dạng YOLO, hãy sử dụng hàm convert_coco tích hợp được mô tả trong Hướng dẫn chuyển đổi COCO sang YOLO. Bạn cũng có thể chú thích và quản lý các tập dữ liệu phát hiện bằng công cụ chú thích hỗ trợ bởi AI của Ultralytics Platform.
Val#
Đánh giá độ chính xác của model YOLO26n đã train trên tập dữ liệu COCO8. Không cần tham số nào vì model giữ lại data và các tham số dùng khi train dưới dạng thuộc tính của model.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list containing mAP50-95 for each category
metrics.box.image_metrics # per-image metrics dictionary with precision, recall, F1, TP, FP, and FNPredict#
Sử dụng model YOLO26n đã train để chạy dự đoán trên hình ảnh.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
xywh = result.boxes.xywh # center-x, center-y, width, height
xywhn = result.boxes.xywhn # normalized
xyxy = result.boxes.xyxy # top-left-x, top-left-y, bottom-right-x, bottom-right-y
xyxyn = result.boxes.xyxyn # normalized
names = [result.names[cls.item()] for cls in result.boxes.cls.int()] # class name of each box
confs = result.boxes.conf # confidence score of each boxXem đầy đủ chi tiết về mode predict trên trang Predict.
Output kết quả#
Phát hiện đối tượng trả về một đối tượng Results cho mỗi hình ảnh. Trường dự đoán chính là result.boxes, chứa
tọa độ box, ID lớp và điểm độ tin cậy cho mỗi đối tượng được phát hiện.
| Thuộc tính | Kiểu | Shape | Mô tả |
|---|---|---|---|
result.boxes | Boxes | (N) | Các box của detection. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] thô, cùng track ID tùy chọn. |
result.boxes.xyxy | torch.float32 | (N,4) | Các box pixel xyxy. |
result.boxes.conf | torch.float32 | (N,) | Điểm độ tin cậy. |
result.boxes.cls | torch.float32 | (N,) | ID class; chuyển kiểu sang int để lấy tên. |
Để xem các field Results dành riêng cho từng task trên mọi task, hãy xem phần Predict Results by Task.
Export#
Export model YOLO26n sang một định dạng khác như ONNX, CoreML, v.v.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Các định dạng export YOLO26 hiện có được liệt kê trong bảng bên dưới. Bạn có thể export sang bất kỳ định dạng nào bằng tham số format, tức là format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc đánh giá trực tiếp trên các model đã export, tức là yolo predict model=yolo26n.onnx. Các ví dụ sử dụng dành cho model của bạn sẽ được hiển thị sau khi quá trình export hoàn tất.
| Định dạng | Argument format | Model | Metadata | Arguments |
|---|---|---|---|---|
| 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 |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, 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 |
| 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 |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
nms=None mặc định sử dụng đầu ra thô cho NMS bên ngoài. Thiết lập nms=False để chọn phần đầu không có NMS khả dụng; các định dạng không được hỗ trợ sẽ quay lại đường dẫn đầu ra gốc của chúng. Các mục nms ở trên xác định các định dạng có thể nhúng NMS bằng nms=True.
Xem đầy đủ chi tiết về export trên trang Export.
FAQ#
Có. Quickstart của Ultralytics Platform trình bày workflow trên trình duyệt để gán nhãn tập dữ liệu, train các model phát hiện trên cloud GPU và deploy chúng lên các inference endpoint.
Việc train một model YOLO26 trên tập dữ liệu tùy chỉnh bao gồm một vài bước:
- Chuẩn bị tập dữ liệu: Đảm bảo tập dữ liệu của bạn ở định dạng YOLO. Để được hướng dẫn, hãy tham khảo Dataset Guide của chúng tôi.
- Load model: Sử dụng thư viện Ultralytics YOLO để load một model pretrained hoặc tạo một model mới từ file YAML.
- Train model: Thực thi method
traintrong Python hoặc commandyolo detect traintrong CLI.
Ví dụfrom ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n.pt") # Train the model on your custom dataset 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 Configuration.
Ultralytics YOLO26 cung cấp nhiều model pretrained cho phát hiện đối tượng, instance segmentation, semantic segmentation và ước lượng tư thế. Các model này được pretrained trên tập dữ liệu COCO, Cityscapes cho các tác vụ semantic segmentation hoặc ImageNet cho các tác vụ classification. Dưới đâ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 phần Models.
Để đánh giá độ chính xác của model YOLO26 đã train, bạn có thể sử dụng method
.val()trong Python hoặc commandyolo 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 # Load the model model = YOLO("path/to/best.pt") # Validate the model metrics = model.val() print(metrics.box.map) # mAP50-95Để biết thêm chi tiết về việc đánh giá, hãy truy cập trang Val.
Ultralytics YOLO26 cho phép export model sang nhiều định dạng như ONNX, TensorRT, CoreML và nhiều định dạng khác nhằm đảm bảo khả năng tương thích trên các nền tảng và thiết bị khác nhau.
Ví dụfrom ultralytics import YOLO # Load the model model = YOLO("yolo26n.pt") # Export the model to ONNX format 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 Export.
Ultralytics YOLO26 được thiết kế để cung cấp hiệu năng tiên tiến cho phát hiện đối tượng, instance segmentation, semantic segmentation và ước lượng tư thế. Dưới đây là một số ưu điểm chính:
- Model pretrained: Sử dụng các model được pretrained trên những tập dữ liệu phổ biến như COCO và ImageNet để phát triển nhanh hơ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 theo thời gian thực, phù hợp với các ứng dụng yêu cầu xử lý nhanh.
- Tính linh hoạt: Export model sang nhiều định dạng như ONNX và TensorRT để deploy trên nhiều nền tảng.
Khám phá Blog của chúng tôi để xem các use case và câu chuyện thành công giới thiệu YOLO26 trong thực tế.