Chuyển đến nội dung

Mô hình YOLO-World

Mô hình YOLO-World giới thiệu một phương pháp Ultralytics YOLOv8 tiên tiến, theo thời gian thực dựa trên cho các tác 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 một 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 thị giác.



Xem: Quy trình huấn luyện YOLO World trên bộ dữ liệu tùy chỉnh

Tổng quan về kiến trúc Mô hình YOLO-World

Tổng quan

YOLO-World giải quyết những thách thức mà các mô hình phát hiện Open-Vocabulary truyền thống gặp phải, vốn thường dựa vào các mô hình Transformer cồng kềnh, đòi hỏi tài nguyên tính toán lớn. Sự phụ thuộc của các mô hình này vào các danh mục đối tượng được xác định trước cũng hạn chế tính hữu dụng của chúng trong các tình huống động. YOLO-World hồi sinh khung YOLOv8 với các khả năng phát hiện open-vocabulary, sử dụng mô hình hóa ngôn ngữ trực quan và huấn luyện trước trên các bộ dữ liệu mở rộng để vượt trội trong việc xác định một loạt các đối tượng trong các tình huống zero-shot với hiệu quả vô song.

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

  1. Giải pháp thời gian thực: Tận dụng tốc độ tính toán của CNN, YOLO-World cung cấp một giải pháp phát hiện open-vocabulary nhanh chóng, phục vụ cho các ngành công nghiệp có nhu cầu về kết quả tức thì.

  2. Hiệu quả và Hiệu suất: YOLO-World cắt giảm các yêu cầu về 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 "nhắc-rồi-phát hiện", sử dụng từ vựng ngoại tuyến để nâng cao hơn nữa hiệu quả. Cách tiếp cận này cho phép sử dụng các 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 hỗ trợ bởi YOLOv8: Được xây dựng 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 open-vocabulary với độ chính xác và tốc độ vô song.

  5. Hiệu suất Vượt trội: YOLO-World vượt trội hơn các trình phát hiện open-vocabulary hiện có, bao gồm các dòng MDETR và GLIP, về tốc độ và hiệu quả trên các chuẩn tiêu chuẩn, thể hiện khả năng vượt trội của YOLOv8 trên một NVIDIA V100 GPU duy nhất.

  6. Ứng dụng Đa năng: Cách tiếp cận sáng tạo của YOLO-World mở ra những khả năng mới cho vô số tác vụ thị giác, mang lại cải tiến tốc độ theo cấp số nhân so với các phương pháp hiện có.

Các mô hình hiện có, 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 huấn luyện trước cụ thể của chúng, các tác vụ 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, Huấn luyệnXuất, được biểu thị bằng ✅ cho các chế độ được hỗ trợ và ❌ cho các chế độ không được hỗ trợ.

Lưu ý

Tất cả các trọng số YOLOv8-World đã được di chuyển trực tiếp từ kho lưu trữ YOLO-World chính thức, làm nổi bật những đóng góp xuất sắc của họ.

Loại mô hình Trọng số được huấn luyện trước Các tác vụ được hỗ trợ Suy luận Xác thực Huấn luyện Xuất
YOLOv8s-world yolov8s-world.pt Phát Hiện Đối Tượng
YOLOv8s-worldv2 yolov8s-worldv2.pt Phát Hiện Đối Tượng
YOLOv8m-world yolov8m-world.pt Phát Hiện Đối Tượng
YOLOv8m-worldv2 yolov8m-worldv2.pt Phát Hiện Đối Tượng
YOLOv8l-world yolov8l-world.pt Phát Hiện Đối Tượng
YOLOv8l-worldv2 yolov8l-worldv2.pt Phát Hiện Đối Tượng
YOLOv8x-world yolov8x-world.pt Phát Hiện Đối Tượng
YOLOv8x-worldv2 yolov8x-worldv2.pt Phát Hiện Đối Tượng

Chuyển giao Zero-shot trên Bộ dữ liệu COCO

Hiệu suất

Loại mô hình mAP mAP50 mAP75
yolov8s-world 37.4 52.0 40.6
yolov8s-worldv2 37.7 52.2 41.0
yolov8m-world 42.0 57.0 45.6
yolov8m-worldv2 43.0 58.4 46.8
yolov8l-world 45.7 61.3 49.8
yolov8l-worldv2 45.8 61.3 49.8
yolov8x-world 47.0 63.0 51.2
yolov8x-worldv2 47.1 62.8 51.4

Ví dụ sử dụng

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

Sử dụng để huấn luyện

Mẹo

Chúng tôi đặc biệt khuyến nghị sử dụng yolov8-worldv2 mô hình để huấn luyện tùy chỉnh, vì nó hỗ trợ huấn luyện tất định và cũng dễ dàng xuất sang các định dạng khác, ví dụ: onnx/tensorrt.

Phát hiện đối tượng rất đơn giản với phương thức train , như được minh họa bên dưới:

Ví dụ

PyTorch đã được huấn luyện trước *.pt các mô hình cũng như cấu hình *.yaml các tệp có thể được chuyển đến YOLOWorld() class để 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

Sử dụng để dự đoán

Việc phát hiện đối tượng rất đơn giản với predict , như được minh họa bên dưới:

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 huấn luyện trước và chạy dự đoán trên một hình ảnh.

Sử dụng để xác thực

Việc xác thực mô hình trên một tập dữ liệu được thực hiện một cách đơn giản 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

Sử dụng để theo dõi

Theo dõi đối tượng với mô hình YOLO-World 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.mp4"

Lưu ý

Các mô hình YOLO-World do Ultralytics cung cấp đượ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, 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 các mô hình YOLOv8-World 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 cần thiết lập hoặc tùy chỉnh thêm.

Đặt lời nhắc

Tổng quan về tên lớp nhắc nhở YOLO-World

Khung YOLO-World cho phép chỉ định động các lớp thông qua các lời nhắc tùy chỉnh, cho phép người dùng điều chỉnh mô hình cho phù hợp với nhu cầu cụ thể của họ mà không cần huấn luyện lại. Tính năng này đặc biệt hữu ích để điều chỉnh mô hình cho phù hợp với các miền mới hoặc các tác vụ cụ thể mà ban đầu không thuộc dữ liệu huấn luyện. Bằng cách đặt các lời nhắc tùy chỉnh, người dùng có thể hướng sự tập trung của mô hình vào các đối tượng quan tâm, nâng cao mức độ liên quan và độ chính xác của kết quả phát hiện.

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 'người' và 'xe buýt', bạn có thể chỉ định trực tiếp các lớp này:

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 thiết lập 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 mô hình YOLO-World được chuyên biệt hóa cho trường hợp sử dụng cụ thể của bạn. Quá trình này nhúng trực tiếp các định nghĩa lớp tùy chỉnh của bạn vào tệp mô hình, giúp mô hình sẵn sàng để sử dụng với các lớp bạn đã chỉ định mà không cần điều chỉnh thêm. Hãy làm theo các bước sau để lưu và tải mô hình YOLOv8 tùy chỉnh của bạn:

Ví dụ

Đầu tiên, hãy tải một mô hình YOLO-World, thiết lập các lớp tùy chỉnh cho nó và lưu lại:

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ỳ mô hình YOLOv8 được huấn luyện trước nào khác, nhưng có một điểm khác biệt chính: giờ đây nó được tối ưu hóa để chỉ phát hiện các lớp mà 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 lưu với từ vựng tùy chỉnh

  • Hiệu quả: Tinh giản quy trình phát hiện bằng cách tập trung vào các đối tượng liên quan, giảm thiểu chi phí tính toán và tăng tốc suy luận.
  • Linh hoạt: Cho phép dễ dàng điều chỉnh mô hình cho các tác vụ phát hiện mới hoặc chuyên biệt mà không cần huấn luyện lại hoặc thu thập dữ liệu mở rộng.
  • Đơn giản: Đơn giản hóa việc triển khai bằng cách loại bỏ nhu cầu chỉ định lặp đi lặp lại các lớp tùy chỉnh tại thời điểm chạy, giúp mô hình có thể sử dụng trực tiếp với từ vựng được nhúng của nó.
  • Hiệu suất: Nâng cao độ chính xác phát hiện cho các lớp được chỉ định bằng cách tập trung sự chú ý và tài nguyên của mô hình vào việc nhận dạng các đối tượng đã xác định.

Phương pháp 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 tác vụ cụ thể, giúp AI tiên tiến trở nên dễ tiếp cận hơn và có thể áp dụng cho một loạt các ứng dụng thực tế.

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 huấn luyện
Bộ dữ liệu Loại Mẫu Hộp giới hạn Tệp chú thích
Objects365v1 Phát hiện vật thể 609k 9621k objects365_train.json
GQA Grounding 621k 3681k final_mixed_train_no_coco.json
Flickr30k Grounding 149k 641k final_flickr_separateGT_train.json
  • Dữ liệu Val
Bộ dữ liệu Loại Tệp chú thích
LVIS minival Phát hiện vật thể minival.txt

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

Lưu ý

WorldTrainerFromScratch được tùy chỉnh cao để cho phép huấn luyện đồng thời các mô hình yolo-world trên cả bộ dữ liệu phát hiện và bộ dữ liệu grounding. Để biết thêm chi tiết, vui lòng xem ultralytics.model.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="flickr30k/images",
                json_file="flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="GQA/images",
                json_file="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à ghi nhận

Chúng tôi xin bày tỏ lòng biết ơn đến Tencent AILab Computer Vision Center vì công trình tiên phong của họ trong lĩnh vực phát hiện đối tượng từ vựng mở theo thời gian thực với YOLO-World:

@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}
}

Để tìm hiểu thêm, bạn có thể tham khảo bài báo gốc về YOLO-World trên arXiv. Mã nguồn của dự án và các tài liệu khác có thể được truy cập thông qua kho lưu trữ GitHub. 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 giá trị của họ với cộng đồng.

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

Mô hình YOLO-World là gì và nó hoạt động như thế nào?

Mô hình YOLO-World là một phương pháp phát hiện đối tượng theo thời gian thực tiên tiến, dựa trên nền tảng Ultralytics YOLOv8. Nó vượt trội trong các tác vụ Phát hiện Từ vựng Mở (Open-Vocabulary Detection) bằng cách xác định các đối tượng trong ảnh dựa trên các đoạn văn bản mô tả. Sử dụng mô hình hóa ngôn ngữ thị giác và huấn luyện trước trên các tập 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ể, khiến nó trở nên lý tưởng cho các ứng dụng thời gian thực trong nhiều ngành công nghiệp khác nhau.

YOLO-World xử lý suy luận với các lệnh tùy chỉnh như thế nào?

YOLO-World hỗ trợ chiến lược "nhắc-rồi-phát hiện" (prompt-then-detect), sử dụng từ vựng ngoại tuyến để tăng cường hiệu quả. Các lời nhắc tùy chỉnh như chú thích hoặc các loại đố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 giúp đơn giản hóa quy trình phát hiện mà không cần phải huấn luyện lại. Bạn có thể đặt các lời nhắc 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ể, như được hiển thị bên dưới:

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-World thay vì 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 theo thời gian thực: 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 và hiệu quả.
  • Hiệu quả và yêu cầu tài nguyên thấp: YOLO-World duy trì hiệu suất cao trong khi giảm đáng kể nhu cầu về tính toán và tài nguyên.
  • Lời nhắc 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 huấn luyện lại.
  • Hiệu suất chuẩn xuất sắc: Nó vượt trội hơn các công cụ dò tìm từ vựng mở khác như MDETR và GLIP về tốc độ và hiệu quả trên các chuẩn mực tiêu chuẩn.

Làm cách nào để huấn luyện mô hình YOLO-World trên bộ dữ liệu của tôi?

Việc huấn luyện mô hình YOLO-World trên bộ dữ liệu của bạn rất đơn giản thông qua Python API hoặc các lệnh CLI được cung cấp. Dưới đây là cách bắt đầu huấn luyện bằ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

Các mô hình YOLO-World được huấn luyện trước nào hiện có và các tác vụ được hỗ trợ của chúng là gì?

Ultralytics cung cấp nhiều mô hình YOLO-World được huấn luyện trước, hỗ trợ các tác vụ và chế độ hoạt động khác nhau:

Loại mô hình Trọng số được huấn luyện trước Các tác vụ được hỗ trợ Suy luận Xác thực Huấn luyện Xuất
YOLOv8s-world yolov8s-world.pt Phát Hiện Đối Tượng
YOLOv8s-worldv2 yolov8s-worldv2.pt Phát Hiện Đối Tượng
YOLOv8m-world yolov8m-world.pt Phát Hiện Đối Tượng
YOLOv8m-worldv2 yolov8m-worldv2.pt Phát Hiện Đối Tượng
YOLOv8l-world yolov8l-world.pt Phát Hiện Đối Tượng
YOLOv8l-worldv2 yolov8l-worldv2.pt Phát Hiện Đối Tượng
YOLOv8x-world yolov8x-world.pt Phát Hiện Đối Tượng
YOLOv8x-worldv2 yolov8x-worldv2.pt Phá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-World từ đầu?

Để tái tạo các 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 quá trình huấn luyện bằng mã được cung cấp. Quy trình huấn luyện bao gồm việc tạo từ điển dữ liệu và chạy train phương thức với một trình huấn luyệ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": "flickr30k/images",
                "json_file": "flickr30k/final_flickr_separateGT_train.json",
            },
            {
                "img_path": "GQA/images",
                "json_file": "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)


📅 Đã tạo 1 năm trước ✏️ Cập nhật 2 tháng trước

Bình luận