Chuyển đến nội dung

API Ultralytics Explorer

Lưu ý từ Cộng đồng ⚠️

Kể từ ultralytics>=8.3.10, hỗ trợ Ultralytics Explorer đã không còn được dùng nữa. Nhưng đừng lo lắng! Giờ đây, bạn có thể truy cập các chức năng tương tự và thậm chí nâng cao thông qua Ultralytics HUB, nền tảng no-code trực quan 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 mà không cần viết một dòng code nào. Hãy nhớ xem qua và tận dụng các tính năng mạnh mẽ của nó!🚀

Giới thiệu

Mở Trong Colab Explorer API 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 bộ 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 đồng vectơ và tìm kiếm ngữ nghĩa.



Xem: Tổng quan về API Ultralytics 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ụ thuộc này, hãy sử dụng lệnh sau:

pip install ultralytics[explorer]

Cách 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)

Lưu ý

Bảng Embeddings cho một bộ dữ liệu và cặp mô hình nhất định chỉ được tạo một lần và sử dụng lại. Chúng sử dụng LanceDB bên dưới, có thể mở rộng trên đĩa, vì vậy bạn có thể tạo và sử dụng lại embeddings cho các bộ dữ liệu lớn như COCO mà không bị 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ể chuyển force=True đến create_embeddings_table phương thức.

Bạn có thể truy cập trực tiếp đố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 đồng là một kỹ thuật để tìm các ảnh tương tự với một ảnh đã cho. Nó dựa trên ý tưởng rằng các ảnh tương tự sẽ có các embedding tương tự. Sau khi bảng embedding đượ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ỉ mục 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 embedding của chúng sẽ được sử dụng.

Bạn sẽ nhận được một pandas dataframe với limit số lượng đ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ẽ đồ thị các hình ảnh tương tự

Bạn cũng có thể vẽ đồ thị các hình ảnh tương tự bằng cách sử dụng plot_similar phương thức. Phương thức này nhận các đối số tương tự như get_similar và vẽ các hình ảnh tương tự trên lưới.

Vẽ đồ thị các 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. Hỏi AI (Truy vấn bằng 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 bộ 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 viết các truy vấn SQL. Trình tạo truy vấn hỗ trợ AI của chúng tôi sẽ tự động thực hiện điều đó. Ví dụ: bạn có thể nói - "hiển thị cho tôi 100 hình ảnh với chính xác một người và 2 con chó. Cũng có thể có các đối tượng khác" và nó sẽ tự động tạo truy vấn và hiển thị cho bạn những kết quả đó. Lưu ý: Điều này hoạt động bằng LLM, vì vậy kết quả mang tính xác suất và đôi khi có thể sai.

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. Truy vấn SQL

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 thức. Phương thức này nhận một truy vấn SQL làm đầu vào và trả về một khung dữ liệu pandas với các 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ẽ đồ thị kết quả truy vấn SQL

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

Vẽ đồ thị 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 Bảng Nhúng (Embeddings Table)

Bạn cũng có thể làm việc trực tiếp với bảng nhúng. Sau 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 các bảng bên trong. Bạn có thể truy cập trực tiếp bảng này bằng cách sử dụng Explorer.table đối tượng và chạy các truy vấn thô, đẩy 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 việc bạn có thể làm với bảng:

Lấy Embedding 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 Vector Index

Khi sử dụng các tập dữ liệu lớn, bạn cũng có thể tạo một 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 loại chỉ mục vector có sẵn và các tham số cấu hình trong tài liệu lập chỉ mục LanceDB. Trong tương lai, chúng tôi dự định hỗ trợ tạo chỉ mục vector trực tiếp thông qua Explorer API.

5. Ứng dụng của Nhúng (Embeddings Applications)

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 vài ví dụ:

Chỉ số tương đồng

Explorer đi kèm với similarity_index operation:

  • Nó cố gắng ước tính mức độ tương đồng 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 số lượng embedding ảnh nằm gần hơn max_dist vào hình ảnh hiện tại trong không gian nhúng được tạo, có tính đến top_k hình ảnh tương tự tại một thời điểm.

Nó trả về một pandas dataframe với các cột sau:

  • idx: Index (chỉ mục) của hình ảnh trong dataset (bộ dữ liệu)
  • im_file: Đường dẫn đến tập tin hình ảnh
  • count: Số lượng hình ảnh trong bộ dữ liệu gần hơn max_dist vào 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 bộ dữ liệu, mô hình nhất định, max_dist & top_k chỉ số tương đồng 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 đồng, bạn có thể chuyển force=True.

Chỉ số tương đồng

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 đồng để xây dựng các điều kiện tùy chỉnh để lọc tập dữ liệu. Ví dụ: bạn có thể lọc ra những hình ảnh không tương tự với bất kỳ hình ảnh nào khác trong tập dữ liệu bằ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ể trực quan hóa không gian nhúng bằng công cụ vẽ đồ thị 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 các báo cáo khám phá bộ dữ liệu CV của riêng bạn bằng Explorer API. Để lấy cảm hứng, hãy xem Ví dụ Khám phá VOC.

Các ứng dụng được xây dựng bằng Ultralytics Explorer

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

Sắp ra mắt

  • [ ] Hợp nhất các nhãn cụ thể từ các 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 những hình ảnh có chỉ mục tương đồng cao hơn ngưỡng cho trước
  • [ ] Tự động lưu trữ các tập dữ liệu mới sau khi hợp nhất/xóa các mục
  • [ ] Trực quan hóa tập dữ liệu nâng cao

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

Ultralytics Explorer API được dùng để làm gì?

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

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

Để cài đặt Ultralytics Explorer API cùng với các dependency của nó, hãy 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 Explorer API để thực hiện tìm kiếm tương đồng bằng cách tạo bảng nhúng và truy vấn nó để tìm các hình ảnh tương tự. Đâ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 đồng.

Những lợi ích của việc sử dụng LanceDB với Ultralytics Explorer là gì?

LanceDB, được Ultralytics Explorer sử dụng, cung cấp các bảng nhúng có khả năng mở rộng và lưu trữ trên ổ đĩa. Điều này đảm bảo bạn có thể tạo và tái sử dụng các nhúng cho các bộ dữ liệu lớn như COCO mà không bị 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, giúp tăng 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 Explorer API?

Tính năng Ask AI cho phép người dùng lọc bộ dữ liệu bằng cách sử dụ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 ở phía sau. Dưới đâ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())

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



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

Bình luận