Phát hiện đối tượng

YOLO object detection with bounding boxes

Phát hiện đối tượng là một tác vụ liên quan đến việc xác định vị trí và lớp của các đối tượng trong hình ảnh hoặc luồng video.

Đầu ra của một bộ 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 các nhãn lớp và điểm tin cậy cho mỗi box. Phát hiện đối tượng là một lựa chọn tốt 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ụ thể của đối tượng đó.



Watch: Object Detection with Pretrained Ultralytics YOLO Model.
Mẹo

Các model YOLO26 Detect là các model YOLO26 mặc định, ví dụ: yolo26n.pt, và được huấn luyện trước trên COCO.

Models

Các model Detect đã được huấn luyện trước của YOLO26 được hiển thị tại đây. Các model Detect, Segment, và Pose được huấn luyện trước trên tập dữ liệu COCO, trong khi các model Classify được huấn luyện trước trên tập dữ liệu ImageNet.

Models được tự động tải xuống từ release mới nhất của Ultralytics trong lần sử dụng đầu tiên.

Modelkích thước
(pixels)
mAPval
50-95
mAPval
50-95(e2e)
Tốc độ
CPU ONNX
(ms)
Tốc độ
T4 TensorRT10
(ms)
tham số
(M)
FLOPs
(B)
YOLO26n64040.940.138.9 ± 0.71.7 ± 0.02.45.4
YOLO26s64048.647.887.2 ± 0.92.5 ± 0.09.520.7
YOLO26m64053.152.5220.0 ± 1.44.7 ± 0.120.468.2
YOLO26l64055.054.4286.2 ± 2.06.2 ± 0.224.886.4
YOLO26x64057.556.9525.8 ± 4.011.8 ± 0.255.7193.9
  • Các giá trị mAPval dành cho model đơn ở thang đo đơn trên tập dữ liệu COCO val2017.
    Tái lập bằng lệnh yolo val detect data=coco.yaml device=0
  • Tốc độ (Speed) được tính trung bình trên các hình ảnh COCO val bằng cách sử dụng instance Amazon EC2 P4d.
    Tái lập bằng lệnh yolo val detect data=coco.yaml batch=1 device=0|cpu
  • Các giá trị ParamsFLOPs dành cho model đã được hợp nhất sau khi chạy model.fuse(), giúp gộp các layer Conv và BatchNorm, đồng thời đối với các model end2end, nó loại bỏ phần head phát hiện one-to-many phụ. Các checkpoint đã huấn luyện trước vẫn giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.

Train

Huấn luyện YOLO26n trên tập dữ liệu COCO8 trong 100 epochs với kích thước ảnh là 640. Để xem danh sách đầy đủ các tham số khả dụng, hãy xem trang Cấu hình.

Ví dụ
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 chi tiết đầy đủ về chế độ train tại trang Train. Các model phát hiện cũng có thể được huấn luyện trên GPU đám mây thông qua Ultralytics Platform.

Định dạng tập dữ liệu

Định dạng tập dữ liệu phát hiện YOLO có thể được tìm thấy chi tiết trong Hướng dẫn về tập dữ liệu. Để chuyển đổi tập dữ liệu hiện có của bạn từ các định dạng khác (như COCO, v.v.) sang định dạng YOLO, vui lòng sử dụng công cụ JSON2YOLO của Ultralytics. Bạn cũng có thể gán nhãn và quản lý các tập dữ liệu phát hiện trực tiếp trên Ultralytics Platform bằng các công cụ gán nhãn hỗ trợ bởi AI.

Val

Xác thực độ chính xác của model YOLO26n đã huấn luyện trên tập dữ liệu COCO8. Không cần tham số nào vì model vẫn giữ lại các thuộc tính data và các tham số huấn luyện của nó.

Ví dụ
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 FN

Dự đoán (Predict)

Sử dụng một model YOLO26n đã được huấn luyện để chạy dự đoán trên các hình ảnh.

Ví dụ
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 box

Xem chi tiết đầy đủ về chế độ predict tại trang Predict.

Export

Xuất một model YOLO26n sang định dạng khác như ONNX, CoreML, v.v.

Ví dụ
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 xuất YOLO26 khả dụng được liệt kê trong bảng dưới đây. Bạn có thể xuất sang bất kỳ định dạng nào bằng cách sử dụng tham số format, ví dụ: format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc xác thực trực tiếp trên các model đã xuất, ví dụ: yolo predict model=yolo26n.onnx. Các ví dụ sử dụng được hiển thị cho model của bạn sau khi quá trình xuất hoàn tất.

Định dạngĐối số formatModelMetadataĐối số
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n_deepx_model/imgsz, int8, data, optimize, device

Xem chi tiết đầy đủ về export trong trang Export.

Câu hỏi thường gặp (FAQ)

Tôi có thể huấn luyện và triển khai các model phát hiện mà không cần lập trình không?

Có. Ultralytics Platform cung cấp quy trình làm việc trên trình duyệt để gán nhãn tập dữ liệu, huấn luyện các model phát hiện trên GPU đám mây và triển khai chúng tới các điểm cuối (endpoints) suy luận. Hãy xem Platform quickstart để bắt đầu.

Làm cách nào để huấn luyện một model YOLO26 trên tập dữ liệu tùy chỉnh của tôi?

Việc huấn luyện một model YOLO26 trên tập dữ liệu tùy chỉnh bao gồm một vài bước:

  1. 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 Hướng dẫn về tập dữ liệu của chúng tôi.
  2. Tải model: Sử dụng thư viện Ultralytics YOLO để tải một model đã được huấn luyện trước hoặc tạo một model mới từ tệp YAML.
  3. Huấn luyện model: Chạy phương thức train trong Python hoặc lệnh yolo detect train trong 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 Cấu hình.

Những model nào được huấn luyện trước có sẵn trong YOLO26?

Ultralytics YOLO26 cung cấp nhiều model được huấn luyện trước để phát hiện đối tượng, phân đoạn và ước tính tư thế. Các model này được huấn luyện trước trên tập dữ liệu COCO hoặc ImageNet cho các tác vụ phân loại. Dưới đây là một số model có sẵn:

Để có danh sách chi tiết và các chỉ số hiệu suất, hãy tham khảo phần Models.

Làm cách nào để tôi có thể xác thực độ chính xác của model YOLO đã huấn luyện?

Để xác thực độ chính xác của model YOLO26 đã huấn luyện, bạn có thể sử dụng phương thức .val() trong Python hoặc lệnh yolo detect val trong CLI. Điều 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ề xác thực, hãy truy cập trang Val.

Tôi có thể xuất model YOLO26 sang những định dạng nào?

Ultralytics YOLO26 cho phép xuất model sang nhiều định dạng khác nhau như ONNX, TensorRT, CoreML, và nhiều định dạng khác để đảm bảo tính 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")

Kiểm tra danh sách đầy đủ các định dạng được hỗ trợ và hướng dẫn trên trang Export.

Tại sao tôi nên sử dụng Ultralytics YOLO26 cho phát hiện đối tượng?

Ultralytics YOLO26 được thiết kế để mang lại hiệu suất tối ưu cho phát hiện đối tượng, phân đoạn và ước tính tư thế. Dưới đây là một số ưu điểm chính:

  1. Model được huấn luyện trước: Tận dụng các model được huấn luyện trước trên các tập dữ liệu phổ biến như COCOImageNet để phát triển nhanh hơn.
  2. Độ chính xác cao: Đạt được điểm mAP ấn tượng, đảm bảo khả năng phát hiện đối tượng đáng tin cậy.
  3. Tốc độ: Được tối ưu hóa cho suy luận thời gian thực, khiến nó trở nên lý tưởng cho các ứng dụng đòi hỏi xử lý nhanh chóng.
  4. Tính linh hoạt: Xuất model sang nhiều định dạng khác nhau 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 giới thiệu YOLO26 trong thực tế.

Bình luận