Bỏ qua nội dung

Ultralytics API khám phá

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á tập 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 truy vấn SQL, tìm kiếm tương tự vector và tìm kiếm ngữ nghĩa.



Đồng hồ: 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ụ 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)

Ghi chú

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ể truyền 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 kiế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 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 nhúng của chúng sẽ được sử dụng.

Bạn nhận được một khung dữ liệu pandas 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 lấy cùng các đối số như get_similar và sắp xếp các hình ảnh tương tự thành 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. Hỏi 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 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 - "cho tôi xem 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 cách sử dụng LLM ẩn nên kết quả là 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 pháp. Phương pháp này lấy truy vấn SQL làm đầu vào và trả về một khung dữ liệu pandas 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ẽ kết quả truy vấn SQL

Bạn cũng có thể vẽ biểu đồ 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 lấy cùng các đối số như sql_query và biểu diễn kết quả theo dạng 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 Bảng nhúng

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 bảng nội bộ. Bạn có thể truy cập trực tiếp vào bảng này bằng cách sử dụng Explorer.table đối tượng và chạy truy vấn thô, đẩy xuống bộ lọc trước và sau, v.v.

from ultralytics import Explorer

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

Sau đâ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 một chỉ mục vector 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 pháp trên bảng LanceDB.

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

Tìm hiểu thêm thông tin 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ẽ bổ sung hỗ trợ cho việc tạo chỉ số vectơ trực tiếp từ Explorer API.

5. Ứng dụng nhúng

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

Chỉ số tương đồng

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

  • Phương pháp này cố gắng ước tính mức độ giống nhau của từng đ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 với hình ảnh hiện tại trong không gian nhúng được tạo ra, xem xét top_k nhiều hình ảnh tương tự nhau cùng một lúc.

Nó trả về một khung dữ liệu pandas 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 tin 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 đồng sau khi 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ể truyề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ỉ số tương đồng để xây dựng các điều kiện tùy chỉnh để lọc ra tập dữ liệu. Ví dụ, bạn có thể lọc ra những 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]

Hình dung không gian nhúng

Bạn cũng có thể hình dung không gian nhúng bằng cách sử dụ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 báo cáo khám phá tập dữ liệu CV của riêng bạn bằng cách sử dụng Explorer API. Để có cảm hứng, hãy xem

Ứng dụng được xây dựng bằng Ultralytics Nhà thám hiểm

Hãy thử bản demo GUI 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 các hình ảnh có chỉ số tương đồng cao hơn ngưỡng đã cho
  • [ ] 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
  • [ ] Hình ảnh hóa dữ liệu nâng cao

CÂU HỎI THƯỜNG GẶP

Cái gì là 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 thế nào để tôi cài đặt Ultralytics API của Explorer?

Để cài đặt Ultralytics Explorer API cùng với các phụ thuộc 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 tự bằng cách tạo bảng nhúng và truy vấn bảng đó để tìm hình ảnh tương tự. Sau đâ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 Nhà thám hiểm?

LanceDB, được sử dụng ẩn bởi Ultralytics Explorer, cung cấp các bảng nhúng có thể mở rộng, trên đĩa. Điều này đảm bảo rằng bạn có thể tạo và sử dụng lại các nhúng cho các tập 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ể được sử dụng lại, nâng cao hiệu quả trong việc xử lý dữ liệu.

Tính năng Hỏi AI hoạt động như thế nào trong Ultralytics API của Explorer?

Tính năng Ask AI cho phép người dùng lọc các tập 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 ẩn. Sau đâ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 11 tháng ✏️ Đã cập nhật cách đây 1 tháng

Bình luận