YOLO -Mô hình thế giới
Các YOLO -World Model giới thiệu một phương pháp tiếp cận tiên tiến, thời gian thực dựa trên YOLOv8 của Ultralytics 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 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ụ đa năng cho nhiều ứng dụng dựa trên tầm nhìn.
Đồng hồ: YOLO Quy trình đào tạo thế giới về tập dữ liệu tùy chỉnh
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 phải đối mặt, thường dựa vào các mô hình Transformer cồng kềnh đòi hỏi nhiều tài nguyên tính toá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ế tiện ích của chúng trong các tình huống động. YOLO - Thế giới hồi sinh YOLOv8 khuôn khổ với khả năng phát hiện từ vựng mở, sử dụng mô hình ngôn ngữ thị giác và đào tạo trước trên các tập dữ liệu mở rộng để có thể xác định hiệu quả nhiều đối tượng trong các tình huống không cần xử lý với hiệu quả vô song.
Các tính năng chính
-
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 giải pháp phát hiện từ vựng mở nhanh chóng, đáp ứng các ngành công nghiệp cần kết quả ngay lập tức.
-
Hiệu suất và hiệu suất: YOLO -World cắt giảm 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 chỉ tốn một phần nhỏ chi phí tính toán, cho phép ứng dụng thời gian thực.
-
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 để tăng hiệu quả hơn nữa. 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.
-
Được hỗ 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 theo 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.
-
Tiêu 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 chuẩn mực, thể hiện YOLOv8 khả năng vượt trội của một NVIDIA V100 GPU .
-
Ứng dụng đa năng: YOLO - Phương pháp tiếp cận sáng tạo của World mở ra những khả năng mới cho vô số nhiệm vụ thị giác, mang lại sự cải thiện tốc độ gấp nhiều lần so với các phương pháp hiện có.
Các mô hình có sẵn, nhiệm 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ác tác vụ mà chúng hỗ trợ và khả năng tương thích của chúng với nhiều chế độ vận hành khác nhau như Suy luận , Xác thực , Đào tạo và Xuấ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 chú
Tất cả các YOLOv8 -Trọng số thế giới đã đượ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 tuyệt vời của họ.
Kiểu mẫu | Tạ đã được tập luyện trước | Nhiệm vụ được hỗ trợ | Suy luận | Xác thực | Đào tạo | Xuất khẩu |
---|---|---|---|---|---|---|
YOLOv8s -thế giới | yolov8s -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8s -worldv2 | yolov8s -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
YOLOv8m -thế giới | yolov8m -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8m -worldv2 | yolov8m -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
YOLOv8l -thế giới | yolov8l -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8l -worldv2 | yolov8l -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
YOLOv8x -thế giới | yolov8x -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8x -worldv2 | yolov8x -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
Chuyển Zero-shot trên Bộ dữ liệu COCO
Kiểu mẫu | bản đồ | mAP50 | mAP75 |
---|---|---|---|
yolov8s -thế giới | 37.4 | 52.0 | 40.6 |
yolov8s -worldv2 | 37.7 | 52.2 | 41.0 |
yolov8m -thế giới | 42.0 | 57.0 | 45.6 |
yolov8m -worldv2 | 43.0 | 58.4 | 46.8 |
yolov8l -thế giới | 45.7 | 61.3 | 49.8 |
yolov8l -worldv2 | 45.8 | 61.3 | 49.8 |
yolov8x -thế giới | 47.0 | 63.0 | 51.2 |
yolov8x -worldv2 | 47.1 | 62.8 | 51.4 |
Ví dụ sử dụng
Các YOLO - Các 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 lệnh để hợp lý hóa quá trình phát triển.
Sử dụng tàu hỏa
Mẹo
Chúng tôi đặc biệt khuyên bạn nên sử dụng yolov8-worldv2
mô hình cho đào tạo tùy chỉnh, 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 .
Phát hiện đối tượng là thẳng thắn với train
phương pháp, như minh họa dưới đây:
Ví dụ
PyTorch được đào tạo trước *.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")
Dự đoán sử dụng
Phát hiện đối tượng là đơ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()
Đoạn mã này chứng minh tính đơ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 một hình ảnh.
Sử dụng Val
Việc xác thực mô hình trên một tập dữ liệu được sắp xếp hợp lý như sau:
Ví dụ
Theo dõi 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ụ
Ghi chú
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, 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 YOLOv8 - Các mô hình thế giới để nhận dạng và dự đoán trực tiếp 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 bổ sung.
Đặt lời nhắc
Các YOLO -World framework 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 tùy chỉnh mô hình theo nhu cầu cụ thể của họ mà không cần đào tạo lại . Tính năng này đặc biệt hữu ích để điều chỉnh mô hình cho các miền mới hoặc các tác vụ cụ thể vốn không phải là một phần của dữ liệu đào tạo ban đầu. Bằng cách đặt lời nhắc tùy chỉnh, về cơ bản người dùng có thể hướng trọng tâm của mô hình vào các đối tượng quan tâm, tăng cường tính 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ột 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 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, giúp 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. Thực hiện theo các bước sau để lưu và tải tùy chỉnh của bạn YOLOv8 người mẫu:
Ví dụ
Đầu tiên tải một YOLO -Mô hình thế giới, thiết lập 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ỳ mô hình nào được đào tạo trước YOLOv8 mô hình 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 bạn đã xác định. Tùy chỉnh này có thể cải thiện đáng kể hiệu suất phát hiện và hiệu quả cho các tình huống ứng dụng cụ thể của bạn.
Lợi ích của việc lưu với Từ vựng tùy chỉnh
- Hiệu quả : Tối ưu 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 cho các nhiệm vụ phát hiện mới hoặc chuyên biệt mà không cần phải đào tạo lại hoặc thu thập dữ liệu nhiều.
- Tính đơn giản : Đơn giản hóa việc triển khai bằng cách loại bỏ nhu cầu phải chỉ định nhiều lần các lớp tùy chỉnh khi chạy, giúp mô hình có thể sử dụng trực tiếp với vốn từ vựng được nhúng sẵn.
- Hiệu suất : Nâng cao độ chính xác phát hiện cho các lớp cụ thể bằng cách tập trung sự chú ý và nguồn lực 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 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 tiên tiến cho các nhiệm vụ cụ thể, giúp AI tiên tiến dễ tiếp cận hơn và có thể á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ị tập dữ liệu
- Dữ liệu tàu hỏa
Bộ dữ liệu | Kiểu | Mẫu | Hộp | Tập tin chú thích |
---|---|---|---|---|
Đối tượng365v1 | Phát hiện | 609k | 9621k | đối tượng365_train.json |
CHẤT LƯỢNG CAO | Tiếp địa | 621k | 3681k | final_mixed_train_no_coco.json |
Flickr30k | Tiếp địa | 149k | 641k | final_flickr_separateGT_train.json |
- Dữ liệu Val
Bộ dữ liệu | Kiểu | Tập tin chú thích |
---|---|---|
LVIS minival | Phát hiện | minival.txt |
Khởi động đào tạo từ đầu
Ghi chú
WorldTrainerFromScratch
được tùy chỉnh cao để cho phép đào tạo yolo -mô hình thế giới trên cả hai tập dữ liệu phát hiện và tập dữ liệu nền tảng cùng một lúc. Để biết thêm chi tiết, vui lòng kiểm tra ultralytics .người 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à Lời cảm ơn
Chúng tôi xin gửi lời cảm ơn đến Trung tâm thị giác máy tính Tencent AILab vì công trình tiên phong của họ trong việc phát hiện đối tượng từ vựng mở thời gian thực với YOLO -Thế giới:
Để đọc thêm, bản gốc YOLO -Bài báo 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.
CÂU HỎI THƯỜNG GẶP
Cái gì là YOLO -Mô hình thế giới và nó hoạt động như thế nào?
Các YOLO -Mô 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 khuôn khổ Ultralytics YOLOv8 . Nó vượt trội trong các tác vụ Phát hiện từ vựng mở bằng cách xác định các đối tượng trong hình ảnh dựa trên các văn bản mô tả. Sử dụng mô hình ngôn ngữ thị giác và đào tạo 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ể, 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.
Làm thế nào YOLO - Xử lý suy luận thế giới với lời nhắc tùy chỉnh?
YOLO -World hỗ trợ chiến lược "prompt-then-detect", sử dụng từ vựng ngoại tuyến để tăng hiệu quả. Các lời nhắc tùy chỉnh như chú thích hoặc danh mục đối tượng cụ thể được mã hóa trước và lưu trữ dưới dạng nhúng từ vựng ngoại tuyến. Phương pháp này hợp lý hóa quy trình phát hiện mà không cần đào tạo lại. Bạn có thể thiết lập động các lời nhắc này 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 - Thế giới vượt qua 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 Open-Vocabulary truyền thống:
- Hiệu suất 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ài nguyên và tính toán.
- Lời nhắc có thể tùy chỉnh: Mô hình hỗ trợ thiết lập 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.
- Tiêu chuẩn xuất sắc: Nó vượt trội hơn các trình phát hiện từ vựng mở khác như MDETR và GLIP về cả tốc độ và hiệu quả trên các tiêu chuẩn chuẩn.
Làm thế nào để tôi đà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 được cung cấp một cách đơn giản Python API hoặc CLI lệnh. Sau đâ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 :
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ụ hỗ trợ của chúng?
Ultralytics cung cấp nhiều đào tạo trước YOLO - Mô hình thế giới hỗ trợ nhiều nhiệm vụ và chế độ hoạt động khác nhau:
Kiểu mẫu | Tạ đã được tập luyện trước | Nhiệm vụ được hỗ trợ | Suy luận | Xác thực | Đào tạo | Xuất khẩu |
---|---|---|---|---|---|---|
YOLOv8s -thế giới | yolov8s -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8s -worldv2 | yolov8s -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
YOLOv8m -thế giới | yolov8m -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8m -worldv2 | yolov8m -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
YOLOv8l -thế giới | yolov8l -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8l -worldv2 | yolov8l -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
YOLOv8x -thế giới | yolov8x -thế giới.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ❌ |
YOLOv8x -worldv2 | yolov8x -worldv2.pt | Phát hiện đối tượng | ✅ | ✅ | ✅ | ✅ |
Làm thế nào để tôi tái tạo kết quả chính thức của YOLO - Thế giới từ con số 0?
Để tái tạo kết quả chính thức từ đầu, bạn cần chuẩn bị các tập dữ liệu và khởi chạy quá trình đào tạo bằng mã được cung cấp. Quy trình đào tạo bao gồm việc tạo một 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)