Bỏ để qua phần nội dung

YOLO-Người mẫu thế giới

Các YOLO-World Model giới thiệu một tiên tiến, thời gian thực Ultralytics YOLOv8-dựa trên cách tiếp cận cho các nhiệm vụ Phát hiện từ vựng mở. Sự đổi mới này cho phép phát hiện bất kỳ đối tượng nào trong hình ảnh dựa trên các văn bản mô tả. Bằng cách giảm đáng kể nhu cầu tính toán trong khi vẫn duy trì hiệu suất cạnh tranh, YOLO-World nổi lên như một công cụ linh hoạt cho nhiều ứng dụng dựa trên tầm nhìn.



Xem: YOLO Quy trình đào tạo thế giới về tập dữ liệu tùy chỉnh

YOLO-Tổng quan về kiến trúc mô hình thế giới

Tổng quan

YOLO-World tackles the challenges faced by traditional Open-Vocabulary detection models, which often rely on cumbersome Transformer models requiring extensive computational resources. These models' dependence on pre-defined object categories also restricts their utility in dynamic scenarios. YOLO-World revitalizes the YOLOv8 framework with open-vocabulary detection capabilities, employing vision-language modeling and pre-training on expansive datasets to excel at identifying a broad array of objects in zero-shot scenarios with unmatched efficiency.

Các tính năng chính

  1. Giải pháp thời gian thực: Khai thác tốc độ tính toán của CNN, YOLO-World cung cấp một giải pháp phát hiện từ vựng mở nhanh chóng, phục vụ cho các ngành công nghiệp cần kết quả ngay lập tức.

  2. Hiệu quả và hiệu suất: YOLO-Thế giới cắt giảm các yêu cầu tính toán và tài nguyên mà không làm giảm hiệu suất, cung cấp một giải pháp thay thế mạnh mẽ cho các mô hình như SAM nhưng với một phần nhỏ chi phí tính toán, cho phép các ứng dụng thời gian thực.

  3. Suy luận với Từ vựng ngoại tuyến: YOLO-World giới thiệu chiến lược "prompt-then-detect", sử dụng từ vựng ngoại tuyến để nâng cao hiệu quả hơn nữa. Cách tiếp cận này cho phép sử dụng lời nhắc tùy chỉnh được tính toán trước, bao gồm chú thích hoặc danh mục, được mã hóa và lưu trữ dưới dạng nhúng từ vựng ngoại tuyến, hợp lý hóa quy trình phát hiện.

  4. Được tài trợ bởi YOLOv8: Được xây dựng dựa trên Ultralytics YOLOv8, YOLO-World tận dụng những tiến bộ mới nhất trong phát hiện đối tượng thời gian thực để tạo điều kiện phát hiện từ vựng mở với độ chính xác và tốc độ vô song.

  5. Điểm chuẩn xuất sắc: YOLO-World vượt trội hơn các máy dò từ vựng mở hiện có, bao gồm dòng MDETR và GLIP, về tốc độ và hiệu quả trên các tiêu chuẩn tiêu chuẩn, thể hiện YOLOv8Khả năng vượt trội trên một đĩa đơn NVIDIA V100 GPU.

  6. Ứng dụng đa năng: YOLOCách tiếp cận sáng tạo của thế giới mở ra những khả năng mới cho vô số nhiệm vụ tầm nhìn, mang lại sự cải thiện tốc độ theo thứ tự cường độ so với các phương pháp hiện có.

Các kiểu máy có sẵn, tác vụ được hỗ trợ và chế độ hoạt động

Phần này trình bày chi tiết các mô hình có sẵn với trọng số được đào tạo trước cụ thể của chúng, các tác vụ mà chúng hỗ trợ và khả năng tương thích của chúng với các chế độ hoạt động khác nhau như Suy luận, Xác thực, Đào tạoXuất, được biểu thị bằng ✅ cho các chế độ được hỗ trợ và ❌ cho các chế độ không được hỗ trợ.

Ghi

Tất cả các YOLOv8-Trọng lượng thế giới đã được di chuyển trực tiếp từ chính thức YOLO-Kho lưu trữ thế giới , làm nổi bật những đóng góp tuyệt vời của họ.

Loại mô hìnhTrọng lượng được đào tạo trướcCác tác vụ được hỗ trợSuy luậnXác nhậnĐào tạoXuất khẩu
YOLOv8s-thế giớiyolov8s-world.ptPhát hiện đối tượng
YOLOv8s-Worldv2yolov8s-worldv2.ptPhát hiện đối tượng
YOLOv8m-thế giớiyolov8m-world.ptPhát hiện đối tượng
YOLOv8m-Worldv2yolov8m-worldv2.ptPhát hiện đối tượng
YOLOv8l-thế giớiyolov8l-world.ptPhát hiện đối tượng
YOLOv8l-Worldv2yolov8l-worldv2.ptPhát hiện đối tượng
YOLOv8x-thế giớiyolov8x-world.ptPhát hiện đối tượng
YOLOv8x-Worldv2yolov8x-worldv2.ptPhát hiện đối tượng

Truyền Zero-shot trên tập dữ liệu COCO

Loại mô hìnhbản đồmAP50mAP75
yolov8s-thế giới37.452.040.6
yolov8s-Worldv237.752.241.0
yolov8m-thế giới42.057.045.6
yolov8m-Worldv243.058.446.8
yolov8l-thế giới45.761.349.8
yolov8l-Worldv245.861.349.8
yolov8x-thế giới47.063.051.2
yolov8x-Worldv247.162.851.4

Ví dụ sử dụng

Các YOLO-Mô hình thế giới dễ dàng tích hợp vào Python Ứng dụng. Ultralytics Cung cấp thân thiện với người dùng Python API và CLI các lệnh để hợp lý hóa sự phát triển.

Sử dụng tàu

Mẹo

Chúng tôi thực sự khuyên bạn nên sử dụng yolov8-worldv2 Mô hình cho đào tạo tùy chỉnh, bởi vì nó hỗ trợ đào tạo xác định và cũng dễ dàng xuất các định dạng khác, tức là onnx/tensorrt.

Object detection is straightforward with the train Phương pháp, như minh họa dưới đây:

Ví dụ

PyTorch pretrained *.pt Mô hình cũng như cấu hình *.yaml Các tập tin có thể được chuyển đến YOLOWorld() lớp để tạo một thể hiện mô hình trong python:

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
# Load a pretrained YOLOv8s-worldv2 model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

Dự đoán mức sử dụng

Phát hiện đối tượng rất đơn giản với predict Phương pháp, như minh họa dưới đây:

Ví dụ

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()
# Perform object detection using a YOLO-World model
yolo predict model=yolov8s-world.pt source=path/to/image.jpg imgsz=640

Đoạn mã này thể hiện sự đơn giản của việc tải một mô hình được đào tạo trước và chạy dự đoán trên hình ảnh.

Sử dụng Val

Xác thực mô hình trên tập dữ liệu được sắp xếp hợp lý như sau:

Ví dụ

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Conduct model validation on the COCO8 example dataset
metrics = model.val(data="coco8.yaml")
# Validate a YOLO-World model on the COCO8 dataset with a specified image size
yolo val model=yolov8s-world.pt data=coco8.yaml imgsz=640

Theo dõi việc sử dụng

Theo dõi đối tượng với YOLO-Mô hình thế giới trên video/hình ảnh được sắp xếp hợp lý như sau:

Ví dụ

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Track with a YOLO-World model on a video
results = model.track(source="path/to/video.mp4")
# Track with a YOLO-World model on the video with a specified image size
yolo track model=yolov8s-world.pt imgsz=640 source="path/to/video/file.mp4"

Ghi

Các YOLO-Mô hình thế giới được cung cấp bởi Ultralytics được cấu hình sẵn với các danh mục tập dữ liệu COCO như một phần của từ vựng ngoại tuyến của chúng, nâng cao hiệu quả cho ứng dụng ngay lập tức. Sự tích hợp này cho phép YOLOv8Các mô hình thế giới để trực tiếp nhận dạng và dự đoán 80 danh mục tiêu chuẩn được xác định trong tập dữ liệu COCO mà không yêu cầu thiết lập hoặc tùy chỉnh bổ sung.

Đặt lời nhắc

YOLO-Tổng quan về tên lớp nhắc nhở thế giới

The YOLO-World framework allows for the dynamic specification of classes through custom prompts, empowering users to tailor the model to their specific needs without retraining. This feature is particularly useful for adapting the model to new domains or specific tasks that were not originally part of the training data. By setting custom prompts, users can essentially guide the model's focus towards objects of interest, enhancing the relevance and accuracy of the detection results.

Ví dụ: nếu ứng dụng của bạn chỉ yêu cầu phát hiện các đối tượng 'person' và 'bus', bạn có thể chỉ định các lớp này trực tiếp:

Ví dụ

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or choose yolov8m/l-world.pt

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

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

# Show results
results[0].show()

Bạn cũng có thể lưu mô hình sau khi đặt các lớp tùy chỉnh. Bằng cách này, bạn tạo ra một phiên bản của YOLO-Mô hình thế giới chuyên biệt cho trường hợp sử dụng cụ thể của bạn. Quá trình này nhúng các định nghĩa lớp tùy chỉnh của bạn trực tiếp vào tệp mô hình, làm cho mô hình sẵn sàng để sử dụng với các lớp được chỉ định của bạn mà không cần điều chỉnh thêm. Làm theo các bước sau để lưu và tải tùy chỉnh của bạn YOLOv8 mẫu:

Ví dụ

Tải đầu tiên a YOLO-Mô hình thế giới, đặt các lớp tùy chỉnh cho nó và lưu nó:

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt

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

# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")

Sau khi lưu, mô hình custom_yolov8s.pt hoạt động giống như bất kỳ khóa đào tạo trước nào khác YOLOv8 Mô hình nhưng với một sự khác biệt chính: Bây giờ nó được tối ưu hóa để chỉ phát hiện các lớp bạn đã xác định. Tùy chỉnh này có thể cải thiện đáng kể hiệu suất và hiệu quả phát hiện cho các tình huống ứng dụng cụ thể của bạn.

from ultralytics import YOLO

# Load your custom model
model = YOLO("custom_yolov8s.pt")

# Run inference to detect your custom classes
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

Lợi ích của việc tiết kiệm với từ vựng tùy chỉnh

  • Hiệu quả: Hợp lý hóa quy trình phát hiện bằng cách tập trung vào các đối tượng có liên quan, giảm chi phí tính toán và tăng tốc độ suy luận.
  • Tính linh hoạt: Cho phép dễ dàng điều chỉnh mô hình với các tác vụ phát hiện mới hoặc thích hợp mà không cần đào tạo lại hoặc thu thập dữ liệu rộng rãi.
  • Đơn giản: Đơn giản hóa việc triển khai bằng cách loại bỏ sự cần thiết phải liên tục chỉ định các lớp tùy chỉnh trong thời gian chạy, làm cho mô hình có thể sử dụng trực tiếp với từ vựng được nhúng của nó.
  • Performance: Enhances detection accuracy for specified classes by focusing the model's attention and resources on recognizing the defined objects.

Cách tiếp cận này cung cấp một phương tiện mạnh mẽ để tùy chỉnh các mô hình phát hiện đối tượng hiện đại cho các nhiệm vụ cụ thể, làm cho AI tiên tiến dễ tiếp cận hơn và áp dụng cho nhiều ứng dụng thực tế hơn.

Tái tạo kết quả chính thức từ đầu (Thử nghiệm)

Chuẩn bị bộ dữ liệu

  • Dữ liệu tàu hỏa
Tập dữ liệuKiểuMẫuHộpTệp chú thích
Đối tượng365v1Detection609k9621kobjects365_train.json
GQANền tảng621k3681kfinal_mixed_train_no_coco.json
Flickr30kNền tảng149k641kfinal_flickr_separateGT_train.json
  • Val data
Tập dữ liệuKiểuTệp chú thích
LVIS minivalDetectionminival.txt

Khởi chạy đào tạo từ đầu

Ghi

WorldTrainerFromScratch được tùy chỉnh cao để cho phép đào tạo yolo-mô hình thế giới trên cả bộ dữ liệu phát hiện và bộ dữ liệu nối đất đồng thời. Để biết thêm chi tiết, vui lòng thanh toán ultralytics.mẫu.yolo.world.train_world.py.

Ví dụ

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="../datasets/flickr30k/images",
                json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="../datasets/GQA/images",
                json_file="../datasets/GQA/final_mixed_train_no_coco.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)

Trích dẫn và xác nhận

Chúng tôi gửi lời cảm ơn đến Trung tâm Thị giác Máy tính Tencent AILab vì công việc tiên phong của họ trong việc phát hiện đối tượng từ vựng mở theo thời gian thực với YOLO-Thế giới:

@article{cheng2024yolow,
title={YOLO-World: Real-Time Open-Vocabulary Object Detection},
author={Cheng, Tianheng and Song, Lin and Ge, Yixiao and Liu, Wenyu and Wang, Xinggang and Shan, Ying},
journal={arXiv preprint arXiv:2401.17270},
year={2024}
}

Để đọc thêm, bản gốc YOLO-Giấy thế giới có sẵn trên arXiv. Mã nguồn của dự án và các tài nguyên bổ sung có thể được truy cập thông qua kho lưu trữ GitHub của họ. Chúng tôi đánh giá cao cam kết của họ trong việc thúc đẩy lĩnh vực này và chia sẻ những hiểu biết có giá trị của họ với cộng đồng.

FAQ

Cái gì YOLO-Mô hình thế giới và nó hoạt động như thế nào?

Các YOLOMô hình thế giới là một phương pháp phát hiện đối tượng tiên tiến, thời gian thực dựa trên Ultralytics YOLOv8 khuôn khổ. Nó vượt trội trong các nhiệm vụ Phát hiện từ vựng mở bằng cách xác định các đối tượng trong một hình ảnh dựa trên các văn bản mô tả. Sử dụng mô hình ngôn ngữ tầm nhìn và đào tạo trước trên các bộ dữ liệu lớn, YOLO-World đạt được hiệu quả và hiệu suất cao với nhu cầu tính toán giảm đáng kể, làm cho nó lý tưởng cho các ứng dụng thời gian thực trên các ngành công nghiệp khác nhau.

Làm thế nào YOLO-Thế giới xử lý suy luận với lời nhắc tùy chỉnh?

YOLO-World supports a "prompt-then-detect" strategy, which utilizes an offline vocabulary to enhance efficiency. Custom prompts like captions or specific object categories are pre-encoded and stored as offline vocabulary embeddings. This approach streamlines the detection process without the need for retraining. You can dynamically set these prompts within the model to tailor it to specific detection tasks, as shown below:

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.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()

Tại sao tôi nên chọn YOLO-Thế giới trên các mô hình phát hiện từ vựng mở truyền thống?

YOLO-World cung cấp một số lợi thế so với các mô hình phát hiện từ vựng mở truyền thống:

  • Hiệu suất thời gian thực: Nó tận dụng tốc độ tính toán của CNN để cung cấp khả năng phát hiện nhanh chóng, hiệu quả.
  • Hiệu quả và yêu cầu tài nguyên thấp: YOLO-Thế giới duy trì hiệu suất cao trong khi giảm đáng kể nhu cầu tính toán và tài nguyên.
  • Lời nhắc có thể tùy chỉnh: Mô hình hỗ trợ cài đặt lời nhắc động, cho phép người dùng chỉ định các lớp phát hiện tùy chỉnh mà không cần đào tạo lại.
  • Điểm chuẩn xuất sắc: Nó vượt trội hơn các máy dò từ vựng mở khác như MDETR và GLIP cả về tốc độ và hiệu quả trên các điểm chuẩn tiêu chuẩn.

Làm cách nào để đào tạo một YOLO-Mô hình thế giới trên tập dữ liệu của tôi?

Đào tạo một YOLO-Mô hình thế giới trên tập dữ liệu của bạn rất đơn giản thông qua việc cung cấp Python API hoặc CLI Lệnh. Dưới đây là cách bắt đầu đào tạo bằng cách sử dụng Python:

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Hoặc sử dụng CLI:

yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

Những gì có sẵn được đào tạo trước YOLO-Mô hình thế giới và các nhiệm vụ được hỗ trợ của họ?

Ultralytics Cung cấp nhiều khóa đào tạo dự bị YOLO-Các mô hình thế giới hỗ trợ các tác vụ và chế độ hoạt động khác nhau:

Loại mô hìnhTrọng lượng được đào tạo trướcCác tác vụ được hỗ trợSuy luậnXác nhậnĐào tạoXuất khẩu
YOLOv8s-thế giớiyolov8s-world.ptPhát hiện đối tượng
YOLOv8s-Worldv2yolov8s-worldv2.ptPhát hiện đối tượng
YOLOv8m-thế giớiyolov8m-world.ptPhát hiện đối tượng
YOLOv8m-Worldv2yolov8m-worldv2.ptPhát hiện đối tượng
YOLOv8l-thế giớiyolov8l-world.ptPhát hiện đối tượng
YOLOv8l-Worldv2yolov8l-worldv2.ptPhát hiện đối tượng
YOLOv8x-thế giớiyolov8x-world.ptPhát hiện đối tượng
YOLOv8x-Worldv2yolov8x-worldv2.ptPhát hiện đối tượng

Làm cách nào để tái tạo kết quả chính thức của YOLO-Thế giới từ đầu?

Để tái tạo kết quả chính thức từ đầu, bạn cần chuẩn bị các bộ dữ liệu và khởi chạy đào tạo bằng mã được cung cấp. Quy trình đào tạo liên quan đến việc tạo từ điển dữ liệu và chạy train Phương pháp với một huấn luyện viên tùy chỉnh:

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = {
    "train": {
        "yolo_data": ["Objects365.yaml"],
        "grounding_data": [
            {
                "img_path": "../datasets/flickr30k/images",
                "json_file": "../datasets/flickr30k/final_flickr_separateGT_train.json",
            },
            {
                "img_path": "../datasets/GQA/images",
                "json_file": "../datasets/GQA/final_mixed_train_no_coco.json",
            },
        ],
    },
    "val": {"yolo_data": ["lvis.yaml"]},
}

model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)
📅 Created 8 months ago ✏️ Updated 19 days ago

Ý kiến