YOLOE: Nhìn thấy mọi thứ theo thời gian thực

Giới thiệu

Tùy chọn gợi ý của YOLOE

YOLOE (Real-Time Seeing Anything) là một bước tiến mới trong các mô hình YOLO zero-shot có thể gợi ý (promptable), được thiết kế cho phát hiện và phân đoạn từ vựng mở (open-vocabulary). Không giống như các mô hình YOLO trước đây bị giới hạn trong các danh mục cố định, YOLOE sử dụng các gợi ý bằng văn bản, hình ảnh hoặc từ vựng nội bộ, cho phép phát hiện theo thời gian thực bất kỳ lớp đối tượng nào. Được xây dựng dựa trên YOLOv10 và lấy cảm hứng từ YOLO-World, YOLOE đạt được hiệu suất zero-shot tiên tiến nhất mà vẫn giữ được tác động tối thiểu đến tốc độ và độ chính xác.



Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀

So với các mô hình YOLO trước đó, YOLOE cải thiện đáng kể hiệu suất và độ chính xác. Nó đạt mức tăng +3.5 AP so với YOLO-Worldv2 trên LVIS trong khi chỉ sử dụng một phần ba tài nguyên huấn luyện và đạt tốc độ suy luận nhanh gấp 1.4 lần. Được tinh chỉnh trên COCO, YOLOE-v8-large vượt qua YOLOv8-L với 0.1 mAP mà tốn gần 4 lần ít thời gian huấn luyện hơn. Điều này chứng minh sự cân bằng vượt trội của YOLOE về độ chính xác, hiệu quả và tính linh hoạt. Các phần dưới đây sẽ khám phá kiến trúc, so sánh điểm chuẩn và khả năng tích hợp của YOLOE với khung làm việc Ultralytics.

Tổng quan về kiến trúc

YOLOE Architecture

YOLOE duy trì cấu trúc YOLO tiêu chuẩn—một backbone tích chập (ví dụ: CSP-Darknet) để trích xuất đặc trưng, một neck (ví dụ: PAN-FPN) để kết hợp đa quy mô, và một head phát hiện không sử dụng anchor, tách rời (như trong YOLOv8/YOLO11) để dự đoán tính đối tượng, các lớp và hộp giới hạn một cách độc lập. YOLOE giới thiệu ba module mới cho phép phát hiện từ vựng mở:

  • Re-parameterizable Region-Text Alignment (RepRTA): Hỗ trợ phát hiện bằng gợi ý văn bản bằng cách tinh chỉnh các embeddings văn bản (ví dụ: từ CLIP) thông qua một mạng phụ trợ nhỏ. Tại thời điểm suy luận, mạng này được tích hợp vào mô hình chính, đảm bảo không có chi phí bổ sung. Nhờ vậy, YOLOE phát hiện được các đối tượng gắn nhãn văn bản tùy ý (ví dụ: "đèn giao thông" chưa thấy trước đây) mà không bị phạt về tốc độ khi chạy thực tế.

  • Semantic-Activated Visual Prompt Encoder (SAVPE): Cho phép phát hiện bằng gợi ý hình ảnh thông qua một nhánh embedding gọn nhẹ. Với một hình ảnh tham chiếu, SAVPE mã hóa các đặc trưng ngữ nghĩa và kích hoạt, giúp mô hình phát hiện các đối tượng tương tự về mặt thị giác—một khả năng phát hiện một lần (one-shot) hữu ích cho logo hoặc các bộ phận cụ thể.

  • Lazy Region-Prompt Contrast (LRPC): Trong chế độ không cần gợi ý (prompt-free mode), YOLOE thực hiện nhận diện tập mở bằng cách sử dụng các embeddings nội bộ đã được huấn luyện trên các từ vựng lớn (hơn 1200 danh mục từ LVIS và Objects365). Không cần các gợi ý hoặc bộ mã hóa bên ngoài, YOLOE xác định đối tượng thông qua việc tra cứu độ tương đồng embedding, xử lý hiệu quả các không gian nhãn lớn khi suy luận.

Ngoài ra, YOLOE tích hợp phân đoạn instance thời gian thực bằng cách mở rộng head phát hiện với một nhánh dự đoán mặt nạ (giống như YOLACT hoặc YOLOv8-Seg), với chi phí bổ sung tối thiểu.

Quan trọng là, các module thế giới mở của YOLOE không làm tăng chi phí suy luận khi được sử dụng như một YOLO đóng tiêu chuẩn. Sau khi huấn luyện, các tham số của YOLOE có thể được tái tham số hóa (re-parameterized) thành một head YOLO chuẩn, giữ nguyên các chỉ số FLOPs và tốc độ (ví dụ: hoàn toàn khớp với YOLO11).

Các model khả dụng, tác vụ được hỗ trợ và chế độ vận hành

Phần này trình bày chi tiết các mô hình có sẵn cùng với trọng số pretrained cụ thể của chúng, các tác vụ mà chúng hỗ trợ và khả năng tương thích với các chế độ vận hành khác nhau như Inference, Validation, Training, và Export, được ký hiệu bằng ✅ cho các chế độ được hỗ trợ và ❌ cho các chế độ không được hỗ trợ.

Các mô hình Gợi ý Văn bản/Hình ảnh

Loại ModelWeights Tiền huấn luyệnTác vụ được hỗ trợInferenceValidationTrainingExport
YOLOE-11Syoloe-11s-seg.ptInstance Segmentation
YOLOE-11Myoloe-11m-seg.ptInstance Segmentation
YOLOE-11Lyoloe-11l-seg.ptInstance Segmentation
YOLOE-v8Syoloe-v8s-seg.ptInstance Segmentation
YOLOE-v8Myoloe-v8m-seg.ptInstance Segmentation
YOLOE-v8Lyoloe-v8l-seg.ptInstance Segmentation
YOLOE-26Nyoloe-26n-seg.ptInstance Segmentation
YOLOE-26Syoloe-26s-seg.ptInstance Segmentation
YOLOE-26Myoloe-26m-seg.ptInstance Segmentation
YOLOE-26Lyoloe-26l-seg.ptInstance Segmentation
YOLOE-26Xyoloe-26x-seg.ptInstance Segmentation

Các mô hình Không dùng gợi ý (Prompt Free)

Loại ModelWeights Tiền huấn luyệnTác vụ được hỗ trợInferenceValidationTrainingExport
YOLOE-11S-PFyoloe-11s-seg-pf.ptInstance Segmentation
YOLOE-11M-PFyoloe-11m-seg-pf.ptInstance Segmentation
YOLOE-11L-PFyoloe-11l-seg-pf.ptInstance Segmentation
YOLOE-v8S-PFyoloe-v8s-seg-pf.ptInstance Segmentation
YOLOE-v8M-PFyoloe-v8m-seg-pf.ptInstance Segmentation
YOLOE-v8L-PFyoloe-v8l-seg-pf.ptInstance Segmentation
YOLOE-26N-PFyoloe-26n-seg-pf.ptInstance Segmentation
YOLOE-26S-PFyoloe-26s-seg-pf.ptInstance Segmentation
YOLOE-26M-PFyoloe-26m-seg-pf.ptInstance Segmentation
YOLOE-26L-PFyoloe-26l-seg-pf.ptInstance Segmentation
YOLOE-26X-PFyoloe-26x-seg-pf.ptInstance Segmentation
Hiệu suất YOLOE-26

Để biết các chuẩn hiệu suất chi tiết của các mô hình YOLOE-26, hãy xem Tài liệu YOLO26.

Ví dụ sử dụng

Các mô hình YOLOE rất dễ tích hợp vào các ứng dụng Python của bạn. Ultralytics cung cấp Python APIlệnh CLI thân thiện với người dùng để đơn giản hóa quá trình phát triển.

Sử dụng Training

Tinh chỉnh trên tập dữ liệu tùy chỉnh

Bạn có thể tinh chỉnh bất kỳ mô hình YOLOE đã được huấn luyện sẵn nào trên tập dữ liệu YOLO tùy chỉnh của mình cho cả tác vụ phát hiện và phân đoạn instance.



Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Ví dụ

Phân đoạn instance

Việc tinh chỉnh checkpoint YOLOE đã huấn luyện sẵn chủ yếu tuân theo quy trình huấn luyện YOLO tiêu chuẩn. Điểm khác biệt chính là việc truyền trực tiếp YOLOEPESegTrainer làm tham số trainer cho model.train():

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer

model = YOLOE("yoloe-26s-seg.pt")

# Fine-tune on your segmentation dataset
results = model.train(
    data="coco128-seg.yaml",  # Segmentation dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPESegTrainer,  # <- Important: use segmentation trainer
)

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

Tất cả các mô hình YOLOE đã được huấn luyện sẵn đều thực hiện phân đoạn instance theo mặc định. Để sử dụng các checkpoint này cho việc huấn luyện một mô hình phát hiện, hãy khởi tạo một mô hình phát hiện từ đầu bằng cấu hình YAML, sau đó tải checkpoint phân đoạn đã được huấn luyện sẵn cùng quy mô. Lưu ý rằng chúng ta sử dụng YOLOEPETrainer thay vì YOLOEPESegTrainer vì chúng ta đang huấn luyện một mô hình phát hiện:

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer

# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")

# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")

# Fine-tune on your detection dataset
results = model.train(
    data="coco128.yaml",  # Detection dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPETrainer,  # <- Important: use detection trainer
)

Cách sử dụng Dự đoán (Predict)

YOLOE hỗ trợ cả gợi ý dựa trên văn bản và hình ảnh. Việc sử dụng các gợi ý rất đơn giản—chỉ cần truyền chúng qua phương thức predict như dưới đây:

Ví dụ

Các gợi ý văn bản cho phép bạn chỉ định các lớp bạn muốn phát hiện thông qua mô tả văn bản. Mã sau đây cho thấy cách bạn có thể sử dụng YOLOE để phát hiện người và xe buýt trong một hình ảnh:

from ultralytics import YOLOE

# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Cách sử dụng Val

Validation mô hình trên một tập dữ liệu được tinh giản như sau:

Ví dụ
from ultralytics import YOLOE

# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")

Cách sử dụng xuất (Export)

Quy trình xuất tương tự như các mô hình YOLO khác, với tính linh hoạt bổ sung trong việc xử lý các gợi ý văn bản và thị giác:

Các mô hình đã xuất là tĩnh

Các lớp được cấu hình bằng set_classes() (hoặc qua refer_image cho các gợi ý thị giác) được đóng gói vào các trọng số đã xuất. Sau khi xuất, mô hình không còn có thể chấp nhận các gợi ý mới: việc gọi set_classes() hoặc truyền visual_prompts=... vào predict() trên một mô hình đã xuất sẽ thất bại. Để thay đổi các lớp được phát hiện, hãy xuất lại từ checkpoint .pt gốc với các gợi ý mới đã được cấu hình. File đã xuất hoạt động như một bộ phát hiện YOLO tiêu chuẩn và cũng có thể được tải bằng YOLO() thay vì YOLOE().

Ví dụ
from ultralytics import YOLOE

# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")

# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])

export_model = model.export(format="onnx")
model = YOLOE(export_model)

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Huấn luyện các mô hình chính thức

Chuẩn bị các tập dữ liệu

Lưu ý

Việc huấn luyện các mô hình YOLOE chính thức cần các chú thích phân đoạn (segment annotations) cho dữ liệu huấn luyện, đây là script do đội ngũ chính thức cung cấp giúp chuyển đổi các tập dữ liệu thành chú thích phân đoạn, được hỗ trợ bởi các mô hình SAM2.1. Hoặc bạn có thể trực tiếp tải xuống Processed Segment Annotations trong bảng dưới đây do đội ngũ chính thức cung cấp.

  • Dữ liệu huấn luyện
  • Dữ liệu Validation
Tập dữ liệuLoạiTệp chú thích
LVIS minivalDetectionminival.txt

Khởi chạy huấn luyện từ đầu

Lưu ý

Các mô hình Visual Prompt được tinh chỉnh dựa trên các mô hình Text Prompt đã được huấn luyện kỹ lưỡng.

Ví dụ
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch

# Option 1: Use Python dictionary
data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="flickr/full_images/",
                json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
            ),
            dict(
                img_path="mixed_grounding/gqa/images",
                json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)

# Option 2: Use YAML file (yoloe_data.yaml)
# train:
#   yolo_data:
#     - Objects365.yaml
#   grounding_data:
#     - img_path: flickr/full_images/
#       json_file: flickr/annotations/final_flickr_separateGT_train_segm.json
#     - img_path: mixed_grounding/gqa/images
#       json_file: mixed_grounding/annotations/final_mixed_train_no_coco_segm.json
# val:
#   yolo_data:
#     - lvis.yaml

model = YOLOE("yoloe-26l-seg.yaml")
model.train(
    data=data,  # or data="yoloe_data.yaml" if using YAML file
    batch=128,
    epochs=30,
    close_mosaic=2,
    optimizer="AdamW",
    lr0=2e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOESegTrainerFromScratch,
    device="0,1,2,3,4,5,6,7",
)

So sánh hiệu năng YOLOE

YOLOE đạt hoặc vượt độ chính xác của các mô hình YOLO đóng (closed-set) trên các chuẩn đánh giá tiêu chuẩn như COCO và LVIS mà không ảnh hưởng đến tốc độ hoặc kích thước mô hình. Bảng dưới đây so sánh YOLOE-L (dựa trên YOLO11) và YOLOE26-L (dựa trên YOLO26) với các mô hình đóng tương ứng:

ModelCOCO mAP50-95LVIS mAP50-95Tốc độ suy luận (T4)Tham sốGFLOPs (640px)
YOLOv8-L (đóng)52,9%-9.06 ms (110 FPS)43.7 M165.2 B
YOLO11-L (đóng)53.5%-6.2 ms (161 FPS)26.2 M86.9 B
YOLOE-L (mở)52.6%35.2%6.2 ms (161 FPS)26.2 M86.9 B
YOLOE26-L (mở)-36.8%6.2 ms (161 FPS)32.3 M88.3 B

YOLOE-L chia sẻ kiến trúc của YOLO11-L và YOLOE26-L chia sẻ kiến trúc của YOLO26-L, mang lại tốc độ suy luận và GFLOPs tương đương.

YOLOE26-L đạt 36.8% LVIS mAP với 32.3M tham số88.3B FLOPs, xử lý ảnh 640×640 ở tốc độ 6.2 ms (161 FPS) trên GPU T4. Điều này cải thiện so với 35.2% LVIS mAP của YOLOE-L trong khi vẫn duy trì cùng tốc độ suy luận. Quan trọng hơn, các module từ vựng mở (open-vocabulary) của YOLOE không tốn chi phí suy luận, minh chứng cho thiết kế "không có sự đánh đổi miễn phí" (no free lunch trade-off)."

Đối với các tác vụ zero-shot, YOLOE26 vượt trội đáng kể so với các bộ phát hiện từ vựng mở trước đây: trên LVIS, YOLOE26-S đạt 29.9% mAP, vượt qua YOLO-World-S với +11.4 AP, trong khi YOLOE26-L đạt 36.8% mAP, vượt qua YOLO-World-L với +10.0 AP. YOLOE26 duy trì tốc độ suy luận hiệu quả ở mức 161 FPS trên GPU T4, lý tưởng cho các ứng dụng từ vựng mở thời gian thực.

Lưu ý

Điều kiện đánh giá: Kết quả YOLOE được lấy từ các mô hình đã tiền huấn luyện trên Objects365, GoldG và LVIS, sau đó tinh chỉnh (fine-tuned) hoặc đánh giá trên COCO. Lợi thế mAP nhỏ của YOLOE so với YOLOv8 đến từ việc tiền huấn luyện mở rộng. Nếu không có quá trình huấn luyện từ vựng mở này, YOLOE tương đương với các mô hình YOLO có cùng kích thước, khẳng định độ chính xác SOTA và tính linh hoạt trong thế giới mở mà không làm giảm hiệu năng.

So sánh với các mô hình trước đây

YOLOE giới thiệu những tiến bộ đáng chú ý so với các mô hình YOLO và bộ phát hiện từ vựng mở trước đây:

  • YOLOE so với YOLOv5: YOLOv5 mang lại sự cân bằng tốt giữa tốc độ và độ chính xác nhưng yêu cầu huấn luyện lại cho các lớp (class) mới và sử dụng các head dựa trên neo (anchor-based). Ngược lại, YOLOE là không dựa trên neo (anchor-free) và tự động phát hiện các lớp mới một cách linh hoạt. Dựa trên những cải tiến của YOLOv8, YOLOE đạt độ chính xác cao hơn (52.6% so với ~50% mAP của YOLOv5 trên COCO) và tích hợp phân đoạn thực thể (instance segmentation), điều mà YOLOv5 không có.

  • YOLOE so với YOLOv8: YOLOE mở rộng kiến trúc đã được thiết kế lại của YOLOv8, đạt độ chính xác tương đương hoặc vượt trội (52.6% mAP với ~26M tham số so với 52.9% với ~44M tham số của YOLOv8-L). Nó giảm đáng kể thời gian huấn luyện nhờ tiền huấn luyện mạnh mẽ hơn. Bước tiến chính là khả năng thế giới mở của YOLOE, cho phép phát hiện các đối tượng chưa từng thấy (ví dụ: "bird scooter" hoặc "peace symbol") thông qua gợi ý (prompts), khác với thiết kế đóng của YOLOv8.

  • YOLOE so với YOLO11: YOLO11 cải thiện so với YOLOv8 với hiệu suất nâng cao và ít tham số hơn (giảm ~22%). YOLOE kế thừa trực tiếp những cải tiến này, khớp với tốc độ suy luận và số lượng tham số của YOLO11 (~26M tham số), đồng thời bổ sung phát hiện và phân đoạn từ vựng mở. Trong các kịch bản đóng, YOLOE tương đương với YOLO11, nhưng quan trọng hơn là nó bổ sung khả năng thích ứng để phát hiện các lớp chưa thấy, đạt được YOLO11 + khả năng thế giới mở mà không làm giảm tốc độ.

  • YOLOE26 so với YOLOE (dựa trên YOLO11): YOLOE26 được xây dựng trên kiến trúc của YOLO26, kế thừa thiết kế end-to-end không cần NMS để suy luận nhanh hơn. Trên LVIS, YOLOE26-L đạt 36.8% mAP, cải thiện so với 35.2% mAP của YOLOE-L. YOLOE26 cung cấp cả năm quy mô mô hình (N/S/M/L/X) so với ba quy mô (S/M/L) của YOLOE, mang lại sự linh hoạt hơn cho các kịch bản triển khai khác nhau.

  • YOLOE26 so với các bộ phát hiện từ vựng mở trước đó: Các mô hình từ vựng mở trước đây (GLIP, OWL-ViT, YOLO-World) phụ thuộc nhiều vào các transformer tầm nhìn-ngôn ngữ, dẫn đến suy luận chậm. Trên LVIS, YOLOE26-S đạt 29.9% mAP (+11.4 AP so với YOLO-World-S) và YOLOE26-L đạt 36.8% mAP (+10.0 AP so với YOLO-World-L), đồng thời duy trì suy luận thời gian thực ở mức 161 FPS trên GPU T4. So với các phương pháp dựa trên transformer (ví dụ: GLIP), YOLOE26 cung cấp tốc độ suy luận nhanh hơn hàng chục lần, thu hẹp hiệu quả khoảng cách giữa độ chính xác và hiệu quả trong phát hiện tập mở.

Tóm lại, YOLOE và YOLOE26 duy trì tốc độ và hiệu quả nổi tiếng của YOLO, vượt qua các mô hình tiền nhiệm về độ chính xác, tích hợp phân đoạn và giới thiệu khả năng phát hiện thế giới mở mạnh mẽ. YOLOE26 nâng cao hơn nữa kiến trúc với suy luận end-to-end không NMS từ YOLO26, làm cho nó trở nên lý tưởng cho các ứng dụng từ vựng mở thời gian thực.

Các trường hợp sử dụng và ứng dụng

Khả năng phát hiện và phân đoạn từ vựng mở của YOLOE cho phép các ứng dụng đa dạng vượt xa các mô hình lớp cố định truyền thống:

  • Phát hiện đối tượng thế giới mở: Lý tưởng cho các kịch bản động như robotics, nơi robot nhận biết các đối tượng chưa từng thấy bằng cách sử dụng gợi ý, hoặc hệ thống an ninh nhanh chóng thích nghi với các mối đe dọa mới (ví dụ: vật dụng nguy hiểm) mà không cần huấn luyện lại.

  • Phát hiện Few-Shot và One-Shot: Sử dụng gợi ý trực quan (SAVPE), YOLOE nhanh chóng học các đối tượng mới từ các ảnh tham chiếu đơn lẻ—hoàn hảo cho kiểm tra công nghiệp (xác định các bộ phận hoặc lỗi ngay lập tức) hoặc giám sát tùy chỉnh, cho phép tìm kiếm trực quan với thiết lập tối thiểu.

  • Nhận diện từ vựng lớn & Long-Tail: Được trang bị từ vựng hơn 1000 lớp, YOLOE vượt trội trong các tác vụ như giám sát đa dạng sinh học (phát hiện các loài hiếm), bộ sưu tập bảo tàng, quản lý kho bán lẻ hoặc thương mại điện tử, xác định đáng tin cậy nhiều lớp mà không cần huấn luyện chuyên sâu cho từng lớp.

  • Phát hiện và phân đoạn tương tác: YOLOE hỗ trợ các ứng dụng tương tác thời gian thực như truy xuất video/ảnh có thể tìm kiếm, thực tế tăng cường (AR)chỉnh sửa ảnh trực quan, dựa trên các đầu vào tự nhiên (văn bản hoặc gợi ý trực quan). Người dùng có thể cô lập, xác định hoặc chỉnh sửa đối tượng một cách linh hoạt và chính xác bằng cách sử dụng mặt nạ phân đoạn.

  • Gán nhãn và khởi tạo dữ liệu tự động: YOLOE tạo điều kiện tạo tập dữ liệu nhanh chóng bằng cách cung cấp các chú thích hộp bao (bbox) và phân đoạn ban đầu, giảm đáng kể nỗ lực gán nhãn của con người. Đặc biệt có giá trị trong việc phân tích các bộ sưu tập phương tiện lớn, nơi nó có thể tự động xác định các đối tượng hiện có, hỗ trợ xây dựng các mô hình chuyên biệt nhanh hơn.

  • Phân đoạn cho bất kỳ đối tượng nào: Mở rộng khả năng phân đoạn cho các đối tượng tùy ý thông qua gợi ý—đặc biệt có lợi cho hình ảnh y tế, kính hiển vi hoặc phân tích hình ảnh vệ tinh, tự động xác định và phân đoạn chính xác các cấu trúc mà không cần mô hình tiền huấn luyện chuyên biệt. Khác với các mô hình như SAM, YOLOE đồng thời nhận diện và phân đoạn đối tượng tự động, hỗ trợ trong các tác vụ như tạo nội dung hoặc hiểu ngữ cảnh.

Trong tất cả các trường hợp sử dụng này, lợi thế cốt lõi của YOLOE là tính linh hoạt, cung cấp một mô hình thống nhất cho việc phát hiện, nhận diện và phân đoạn trên các kịch bản động. Hiệu quả của nó đảm bảo hiệu năng thời gian thực trên các thiết bị hạn chế tài nguyên, lý tưởng cho robot, xe tự lái, quốc phòng và hơn thế nữa.

Mẹo

Chọn chế độ của YOLOE dựa trên nhu cầu của bạn:

  • Chế độ đóng (Closed-set): Cho các tác vụ lớp cố định (tốc độ và độ chính xác tối đa).
  • Chế độ gợi ý (Prompted): Thêm đối tượng mới nhanh chóng qua văn bản hoặc gợi ý trực quan.
  • Chế độ tập mở không gợi ý (Prompt-free): Phát hiện chung trên nhiều danh mục (lý tưởng cho việc lập danh mục và khám phá).

Thông thường, việc kết hợp các chế độ—ví dụ: khám phá không gợi ý theo sau là các gợi ý mục tiêu—sẽ tận dụng tối đa tiềm năng của YOLOE.

Huấn luyện và Suy luận

YOLOE tích hợp liền mạch với Ultralytics Python APICLI, tương tự như các mô hình YOLO khác (YOLOv8, YOLO-World). Dưới đây là cách bắt đầu nhanh chóng:

Huấn luyện và suy luận với YOLOE
from ultralytics import YOLO

# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)

# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save()  # save annotated output

Tại đây, YOLOE mặc định hoạt động như một bộ phát hiện tiêu chuẩn nhưng dễ dàng chuyển sang phát hiện theo gợi ý bằng cách chỉ định các lớp (set_classes). Kết quả chứa các hộp bao, mặt nạ và nhãn.

Các tác vụ được hỗ trợ khác

  • Đánh giá: Đánh giá độ chính xác dễ dàng với model.val() hoặc yolo val.
  • Xuất: Xuất các mô hình YOLOE (model.export()) sang ONNX, TensorRT, v.v., tạo điều kiện cho việc triển khai.
  • Theo dõi: YOLOE hỗ trợ theo dõi đối tượng (yolo track) khi được tích hợp, hữu ích cho việc theo dõi các lớp gợi ý trong video.
Lưu ý

YOLOE tự động bao gồm mặt nạ phân đoạn trong kết quả suy luận (results[0].masks), đơn giản hóa các tác vụ chính xác đến từng pixel như trích xuất đối tượng hoặc đo lường mà không cần các mô hình riêng biệt.

Bắt đầu

Thiết lập YOLOE nhanh chóng với Ultralytics bằng cách làm theo các bước sau:

  1. Cài đặt: Cài đặt hoặc cập nhật gói Ultralytics:

    pip install -U ultralytics
  2. Tải xuống Trọng số YOLOE: Các mô hình YOLOE tiền huấn luyện (ví dụ: YOLOE-v8-S/L, các biến thể YOLOE-11) có sẵn từ các bản phát hành YOLOE GitHub. Chỉ cần tải xuống tệp .pt mong muốn để tải vào lớp YOLO của Ultralytics.

  3. Yêu cầu phần cứng:

    • Suy luận: Khuyến nghị GPU (NVIDIA với ≥4-8GB VRAM). Các mô hình nhỏ chạy hiệu quả trên GPU biên (ví dụ: Jetson) hoặc CPU ở độ phân giải thấp hơn. Để suy luận hiệu năng cao trên các trạm làm việc nhỏ gọn, hãy xem hướng dẫn NVIDIA DGX Spark của chúng tôi.
    • Huấn luyện: Tinh chỉnh YOLOE trên dữ liệu tùy chỉnh thường chỉ yêu cầu một GPU. Tiền huấn luyện từ vựng mở mở rộng (LVIS/Objects365) được các tác giả sử dụng yêu cầu tài nguyên tính toán đáng kể (8× RTX 4090 GPUs).
  4. Cấu hình: Các cấu hình YOLOE sử dụng các tệp YAML tiêu chuẩn của Ultralytics. Các cấu hình mặc định (ví dụ: yoloe-26s-seg.yaml) thường là đủ, nhưng bạn có thể sửa đổi backbone, các lớp hoặc kích thước ảnh tùy ý.

  5. Chạy YOLOE:

    • Suy luận nhanh (không gợi ý):

      yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg"
    • Phát hiện theo gợi ý (ví dụ gợi ý văn bản):

      from ultralytics import YOLO
      
      model = YOLO("yoloe-26s-seg.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
  6. Mẹo tích hợp:

    • Tên lớp: Các đầu ra mặc định của YOLOE sử dụng danh mục LVIS; sử dụng set_classes() để chỉ định nhãn của riêng bạn.
    • Tốc độ: YOLOE không có chi phí bổ sung trừ khi sử dụng gợi ý. Các gợi ý văn bản có tác động tối thiểu; các gợi ý trực quan có tác động lớn hơn một chút.
    • Hành vi NMS: YOLOE tự động sử dụng agnostic_nms=True trong quá trình dự đoán, hợp nhất các hộp chồng chéo giữa các lớp. Điều này ngăn chặn việc phát hiện trùng lặp khi cùng một đối tượng khớp với nhiều danh mục trong từ vựng lớn của YOLOE (hơn 1200 lớp LVIS). Bạn có thể ghi đè điều này bằng cách chuyển agnostic_nms=False một cách rõ ràng.
    • Suy luận theo lô (Batch inference): Được hỗ trợ trực tiếp (model.predict([img1, img2])). Đối với các gợi ý cụ thể cho hình ảnh, hãy chạy hình ảnh riêng lẻ.

Tài liệu Ultralytics cung cấp thêm tài nguyên. YOLOE cho phép bạn dễ dàng khám phá các khả năng thế giới mở mạnh mẽ trong hệ sinh thái YOLO quen thuộc.

Mẹo

Mẹo chuyên nghiệp: Để tối đa hóa độ chính xác zero-shot của YOLOE, hãy tinh chỉnh từ các checkpoint được cung cấp thay vì huấn luyện từ đầu. Sử dụng các từ gợi ý phù hợp với các nhãn huấn luyện phổ biến (xem danh mục LVIS) để cải thiện độ chính xác phát hiện.

Trích dẫn và Ghi nhận

Nếu YOLOE đã đóng góp cho nghiên cứu hoặc dự án của bạn, vui lòng trích dẫn bài báo gốc bởi Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han và Guiguang Ding từ Đại học Thanh Hoa:

Trích dẫn
@misc{wang2025yoloerealtimeseeing,
      title={YOLOE: Real-Time Seeing Anything},
      author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.07465},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.07465},
}

Để đọc thêm, bài báo gốc YOLOE có sẵn trên arXiv. Mã nguồn và các tài nguyên bổ sung của dự án có thể được truy cập qua kho lưu trữ GitHub của họ.

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

YOLOE khác với YOLO-World như thế nào?

Mặc dù cả YOLOE và YOLO-World đều cho phép phát hiện từ vựng mở, YOLOE cung cấp một số lợi thế. YOLOE đạt độ chính xác cao hơn +3.5 AP trên LVIS trong khi sử dụng ít tài nguyên huấn luyện hơn 3 lần và chạy nhanh hơn 1.4 lần so với YOLO-Worldv2. YOLOE cũng hỗ trợ ba chế độ gợi ý (văn bản, trực quan và từ vựng nội bộ), trong khi YOLO-World chủ yếu tập trung vào các gợi ý văn bản. Ngoài ra, YOLOE bao gồm các khả năng phân đoạn thực thể tích hợp sẵn, cung cấp các mặt nạ chính xác đến từng pixel cho các đối tượng được phát hiện mà không cần thêm chi phí phụ.

Tôi có thể sử dụng YOLOE như một mô hình YOLO thông thường không?

Có, YOLOE có thể hoạt động chính xác như một mô hình YOLO tiêu chuẩn mà không làm giảm hiệu năng. Khi được sử dụng ở chế độ đóng (không có gợi ý), các module từ vựng mở của YOLOE được tham số lại thành head phát hiện tiêu chuẩn, mang lại tốc độ và độ chính xác giống hệt các mô hình YOLO11 tương đương. Điều này làm cho YOLOE cực kỳ linh hoạt—bạn có thể sử dụng nó như một bộ phát hiện truyền thống để đạt tốc độ tối đa và sau đó chuyển sang chế độ từ vựng mở chỉ khi cần thiết.

Tôi có thể sử dụng các loại gợi ý nào với YOLOE?

YOLOE hỗ trợ ba loại gợi ý:

  1. Gợi ý văn bản: Chỉ định các lớp đối tượng bằng ngôn ngữ tự nhiên (ví dụ: "person", "traffic light", "bird scooter")
  2. Gợi ý trực quan: Cung cấp các ảnh tham chiếu của các đối tượng bạn muốn phát hiện
  3. Từ vựng nội bộ: Sử dụng từ vựng hơn 1200 danh mục được tích hợp sẵn của YOLOE mà không cần gợi ý bên ngoài

Sự linh hoạt này cho phép bạn thích ứng YOLOE với các kịch bản khác nhau mà không cần huấn luyện lại mô hình, làm cho nó đặc biệt hữu ích cho các môi trường động nơi các yêu cầu phát hiện thay đổi thường xuyên.

YOLOE xử lý phân đoạn thực thể như thế nào?

YOLOE tích hợp phân đoạn thực thể trực tiếp vào kiến trúc của nó bằng cách mở rộng head phát hiện với một nhánh dự đoán mặt nạ. Phương pháp này tương tự như YOLOv8-Seg nhưng hoạt động cho bất kỳ lớp đối tượng nào được gợi ý. Các mặt nạ phân đoạn được tự động đưa vào kết quả suy luận và có thể được truy cập qua results[0].masks. Phương pháp thống nhất này loại bỏ nhu cầu cho các mô hình phát hiện và phân đoạn riêng biệt, hợp lý hóa các quy trình công việc cho các ứng dụng đòi hỏi ranh giới đối tượng chính xác đến từng pixel.

YOLOE xử lý suy luận với các gợi ý tùy chỉnh như thế nào?

Tương tự như YOLO-World, YOLOE hỗ trợ chiến lược "gợi ý-sau đó-phát hiện" sử dụng từ vựng ngoại tuyến để nâng cao hiệu quả. Các gợi ý tùy chỉnh như chú thích hoặc các danh mục đối tượng cụ thể được mã hóa trước và lưu trữ dưới dạng embedding từ vựng ngoại tuyến. Cách tiếp cận này hợp lý hóa quá trình phát hiện mà không yêu cầu huấn luyện lại. Bạn có thể thiết lập các gợi ý này một cách linh hoạt trong mô hình để điều chỉnh nó cho các tác vụ phát hiện cụ thể:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Bình luận