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

Ultralytics Explorer API

Ghi chú cộng đồng ⚠️

Tính đến ultralytics>=8.3.10, Ultralytics hỗ trợ explorer đã bị loại bỏ. Nhưng đừng lo lắng! Bây giờ bạn có thể truy cập chức năng tương tự và thậm chí được cải tiến thông qua Ultralytics Trung tâm, nền tảng trực quan không cần mã của chúng tôi được thiết kế để hợp lý hóa quy trình làm việc của bạn. Với Ultralytics HUB, bạn có thể tiếp tục khám phá, trực quan hóa và quản lý dữ liệu của mình một cách dễ dàng, tất cả mà không cần viết một dòng mã nào. Hãy chắc chắn kiểm tra và tận dụng các tính năng mạnh mẽ của nó!🚀

Giới thiệu

Mở trong Colab API Explorer là một Python API để khám phá bộ dữ liệu của bạn. Nó hỗ trợ lọc và tìm kiếm tập dữ liệu của bạn bằng cách sử dụng các truy vấn SQL, tìm kiếm tương tự vectơ và tìm kiếm ngữ nghĩa.



Xem: Ultralytics Tổng quan về API Explorer

Cài đặt

Explorer phụ thuộc vào các thư viện bên ngoài cho một số chức năng của nó. Chúng được tự động cài đặt khi sử dụng. Để cài đặt thủ công các phần phụ thuộc này, hãy sử dụng lệnh sau:

pip install ultralytics[explorer]

Sử dụng

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")

# Create embeddings for your dataset
explorer.create_embeddings_table()

# Search for similar images to a given image/images
dataframe = explorer.get_similar(img="path/to/image.jpg")

# Or search for similar images to a given index/indices
dataframe = explorer.get_similar(idx=0)

Ghi

Bảng nhúng cho một cặp mô hình và tập dữ liệu nhất định chỉ được tạo một lần và sử dụng lại. Chúng sử dụng LanceDB ẩn, có thể mở rộng trên đĩa, do đó bạn có thể tạo và sử dụng lại nhúng cho các tập dữ liệu lớn như COCO mà không hết bộ nhớ.

Trong trường hợp bạn muốn buộc cập nhật bảng nhúng, bạn có thể vượt qua force=True đến create_embeddings_table phương pháp.

Bạn có thể truy cập trực tiếp vào đối tượng bảng LanceDB để thực hiện phân tích nâng cao. Tìm hiểu thêm về nó trong phần Làm việc với Bảng Nhúng

Tìm kiếm tương tự là một kỹ thuật để tìm hình ảnh tương tự với một hình ảnh nhất định. Nó dựa trên ý tưởng rằng các hình ảnh tương tự sẽ có nhúng tương tự. Sau khi bảng nhúng được xây dựng, bạn có thể chạy tìm kiếm ngữ nghĩa theo bất kỳ cách nào sau đây:

  • Trên một chỉ mục hoặc danh sách các chỉ số nhất định trong tập dữ liệu: exp.get_similar(idx=[1,10], limit=10)
  • Trên bất kỳ hình ảnh hoặc danh sách hình ảnh nào không có trong tập dữ liệu: exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

Trong trường hợp có nhiều đầu vào, tổng hợp các nhúng của chúng được sử dụng.

Bạn nhận được một khung dữ liệu gấu trúc với limit Số lượng các điểm dữ liệu tương tự nhất với đầu vào, cùng với khoảng cách của chúng trong không gian nhúng. Bạn có thể sử dụng tập dữ liệu này để thực hiện lọc thêm

Tìm kiếm ngữ nghĩa

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(
    img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"],
    limit=10,
)
print(similar.head())
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

similar = exp.get_similar(idx=1, limit=10)
print(similar.head())

# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head())

Vẽ hình ảnh tương tự

Bạn cũng có thể vẽ các hình ảnh tương tự bằng cách sử dụng plot_similar phương pháp. Phương pháp này có các đối số tương tự như get_similar và vẽ các hình ảnh tương tự trong một lưới.

Vẽ hình ảnh tương tự

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
plt.show()
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(idx=1, limit=10)
plt.show()

2. Ask AI (Truy vấn ngôn ngữ tự nhiên)

Điều này cho phép bạn viết cách bạn muốn lọc tập dữ liệu của mình bằng ngôn ngữ tự nhiên. Bạn không cần phải thành thạo trong việc viết các truy vấn SQL. Trình tạo truy vấn được hỗ trợ bởi AI của chúng tôi sẽ tự động thực hiện điều đó dưới mui xe. Ví dụ: - bạn có thể nói - "cho tôi xem 100 hình ảnh với chính xác một người và 2. Cũng có thể có các đối tượng khác" và nó sẽ tạo truy vấn nội bộ và hiển thị cho bạn những kết quả đó. Lưu ý: Điều này hoạt động bằng cách sử dụng LLM dưới mui xe để kết quả có xác suất và đôi khi có thể gặp sự cố

Hỏi AI

from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

df = exp.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(df.head())

# plot the results
plt = plot_query_result(df)
plt.show()

3. SQL Truy vấn

Bạn có thể chạy các truy vấn SQL trên tập dữ liệu của mình bằng cách sử dụng sql_query phương pháp. Phương thức này lấy một truy vấn SQL làm đầu vào và trả về một khung dữ liệu gấu trúc với kết quả.

Truy vấn SQL

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head())

Vẽ kết quả truy vấn SQL

Bạn cũng có thể vẽ kết quả của truy vấn SQL bằng cách sử dụng plot_sql_query phương pháp. Phương pháp này có các đối số tương tự như sql_query và vẽ kết quả trong lưới.

Vẽ kết quả truy vấn SQL

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")

4. Làm việc với Embeddings Table

Bạn cũng có thể làm việc trực tiếp với bảng nhúng. Khi bảng nhúng được tạo, bạn có thể truy cập nó bằng cách sử dụng Explorer.table

Mẹo

Explorer hoạt động trên LanceDB bảng nội bộ. Bạn có thể truy cập bảng này trực tiếp, bằng cách sử dụng Explorer.table Đối tượng và chạy các truy vấn thô, đẩy xuống các bộ lọc trước và sau, v.v.

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

Dưới đây là một số ví dụ về những gì bạn có thể làm với bảng:

Nhận nhúng thô

Ví dụ

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

embeddings = table.to_pandas()["vector"]
print(embeddings)

Truy vấn nâng cao với bộ lọc trước và sau

Ví dụ

from ultralytics import Explorer

exp = Explorer(model="yolo11n.pt")
exp.create_embeddings_table()
table = exp.table

# Dummy embedding
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10)

Tạo chỉ mục vector

Khi sử dụng các tập dữ liệu lớn, bạn cũng có thể tạo chỉ mục vectơ chuyên dụng để truy vấn nhanh hơn. Điều này được thực hiện bằng cách sử dụng create_index phương thức trên bảng LanceDB.

table.create_index(num_partitions=..., num_sub_vectors=...)

Tìm thêm chi tiết về các chỉ số vectơ loại có sẵn và các tham số tại đây Trong tương lai, chúng tôi sẽ thêm hỗ trợ để tạo chỉ số vectơ trực tiếp từ API Explorer.

5. Nhúng ứng dụng

Bạn có thể sử dụng bảng nhúng để thực hiện nhiều phân tích thăm dò khác nhau. Dưới đây là một số ví dụ:

Chỉ số tương tự

Explorer đi kèm với một similarity_index hoạt động:

  • Nó cố gắng ước tính mức độ tương tự của mỗi điểm dữ liệu với phần còn lại của tập dữ liệu.
  • Nó thực hiện điều đó bằng cách đếm có bao nhiêu hình ảnh nhúng nằm gần hơn max_dist đến hình ảnh hiện tại trong không gian nhúng được tạo, xem xét top_k hình ảnh tương tự tại một thời điểm.

Nó trả về một khung dữ liệu gấu trúc với các cột sau:

  • idx: Chỉ mục của hình ảnh trong tập dữ liệu
  • im_file: Đường dẫn đến tệp hình ảnh
  • count: Số lượng hình ảnh trong tập dữ liệu gần hơn max_dist đến hình ảnh hiện tại
  • sim_im_files: Danh sách các đường dẫn đến count Hình ảnh tương tự

Mẹo

Đối với một tập dữ liệu, mô hình nhất định, max_dist & top_k Chỉ số tương tự sau khi được tạo sẽ được sử dụng lại. Trong trường hợp, tập dữ liệu của bạn đã thay đổi hoặc bạn chỉ cần tạo lại chỉ số tương tự, bạn có thể vượt qua force=True.

Chỉ số tương tự

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

Bạn có thể sử dụng chỉ mục tương tự để xây dựng các điều kiện tùy chỉnh nhằm lọc ra tập dữ liệu. Ví dụ: bạn có thể lọc ra hình ảnh không giống với bất kỳ hình ảnh nào khác trong tập dữ liệu bằng cách sử dụng mã sau:

import numpy as np

sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]

Trực quan hóa không gian nhúng

Bạn cũng có thể hình dung không gian nhúng bằng công cụ vẽ mà bạn chọn. Ví dụ, đây là một ví dụ đơn giản sử dụng matplotlib:

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# Reduce dimensions using PCA to 3 components for visualization in 3D
pca = PCA(n_components=3)
reduced_data = pca.fit_transform(embeddings)

# Create a 3D scatter plot using Matplotlib Axes3D
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")

# Scatter plot
ax.scatter(reduced_data[:, 0], reduced_data[:, 1], reduced_data[:, 2], alpha=0.5)
ax.set_title("3D Scatter Plot of Reduced 256-Dimensional Data (PCA)")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
ax.set_zlabel("Component 3")

plt.show()

Bắt đầu tạo báo cáo khám phá tập dữ liệu CV của riêng bạn bằng API Explorer. Để có cảm hứng, hãy xem

Ứng dụng được xây dựng bằng cách sử dụng Ultralytics Explorer

Hãy thử Bản demo GUI của chúng tôi dựa trên API Explorer

Đến sớm

  • [ ] Hợp nhất các nhãn cụ thể từ tập dữ liệu. Ví dụ - Nhập tất cả person nhãn từ COCO và car nhãn từ Cityscapes
  • [ ] Xóa hình ảnh có chỉ số tương tự cao hơn ngưỡng đã cho
  • [ ] Tự động duy trì các bộ dữ liệu mới sau khi hợp nhất / xóa các mục nhập
  • [ ] Trực quan hóa tập dữ liệu nâng cao

FAQ

Cái gì Ultralytics API Explorer được sử dụng để làm gì?

Các Ultralytics Explorer API được thiết kế để khám phá tập dữ liệu toàn diện. Nó cho phép người dùng lọc và tìm kiếm tập dữ liệu bằng truy vấn SQL, tìm kiếm tương tự vector và tìm kiếm ngữ nghĩa. API mạnh mẽ này Python API có thể xử lý các tập dữ liệu lớn, làm cho nó trở nên lý tưởng cho nhiều tác vụ thị giác máy tính khác nhau bằng cách sử dụng Ultralytics mô hình.

Làm cách nào để cài đặt Ultralytics API Explorer?

Để cài đặt Ultralytics API Explorer cùng với các phụ thuộc của nó, sử dụng lệnh sau:

pip install ultralytics[explorer]

Thao tác này sẽ tự động cài đặt tất cả các thư viện bên ngoài cần thiết cho chức năng Explorer API. Để biết thêm chi tiết về thiết lập, hãy tham khảo phần cài đặt trong tài liệu của chúng tôi.

Bạn có thể sử dụng Ultralytics API Explorer để thực hiện tìm kiếm tương tự bằng cách tạo bảng nhúng và truy vấn bảng đó cho các hình ảnh tương tự. Dưới đây là một ví dụ cơ bản:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()

# Search for similar images to a given image
similar_images_df = explorer.get_similar(img="path/to/image.jpg")
print(similar_images_df.head())

Để biết thêm chi tiết, vui lòng truy cập phần Tìm kiếm tương tự .

Lợi ích của việc sử dụng LanceDB với Ultralytics Explorer?

LanceDB, được sử dụng dưới mui xe bởi Ultralytics Explorer, cung cấp các bảng nhúng trên đĩa, có thể mở rộng. Điều này đảm bảo rằng bạn có thể tạo và tái sử dụng nhúng cho các bộ dữ liệu lớn như COCO mà không hết bộ nhớ. Các bảng này chỉ được tạo một lần và có thể tái sử dụng, nâng cao hiệu quả trong việc xử lý dữ liệu.

Tính năng Ask AI hoạt động như thế nào trong Ultralytics API Explorer?

Tính năng Ask AI cho phép người dùng lọc các bộ dữ liệu bằng các truy vấn ngôn ngữ tự nhiên. Tính năng này tận dụng LLM để chuyển đổi các truy vấn này thành các truy vấn SQL đằng sau hậu trường. Đây là một ví dụ:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()

# Query with natural language
query_result = explorer.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(query_result.head())

Để biết thêm ví dụ, hãy xem phần Hỏi AI.

📅 Được tạo cách đây 10 tháng ✏️ Đã cập nhật cách đây 1 tháng

Ý kiến