Ví dụ thăm dò VOC¶
中文 | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | Türkçe | Tiếng Việt | العربية
Chào mừng bạn đến với Ultralytics Sổ ghi chép API Explorer! Sổ ghi chép này đóng vai trò là điểm khởi đầu để khám phá các tài nguyên khác nhau có sẵn để giúp bạn bắt đầu sử dụng Ultralytics để khám phá bộ dữ liệu của bạn bằng cách sử dụng với sức mạnh của tìm kiếm ngữ nghĩa. Bạn có thể mở rộng ra khỏi hộp cho phép bạn kiểm tra các loại nhãn cụ thể bằng cách sử dụng tìm kiếm vector hoặc thậm chí các truy vấn SQL.
Chúng tôi hy vọng rằng các tài nguyên trong sổ ghi chép này sẽ giúp bạn tận dụng tối đa Ultralytics. Vui lòng duyệt qua Tài liệu Explorer để biết chi tiết, nêu vấn đề trên GitHub để được hỗ trợ và tham gia cộng đồng Discord của chúng tôi để có câu hỏi và thảo luận!
Cố gắng yolo explorer
được cung cấp bởi Exlorer API
Chỉ pip install ultralytics
và chạy yolo explorer
trong thiết bị đầu cuối của bạn để chạy các truy vấn tùy chỉnh và tìm kiếm ngữ nghĩa trên bộ dữ liệu của bạn ngay bên trong trình duyệt của bạn!
%pip install ultralytics[explorer] openai
import ultralytics
ultralytics.checks()
từ ultralyticsnhập Explorer
Tìm kiếm sự tương đồng¶
Sử dụng sức mạnh của tìm kiếm tương tự vectơ để tìm các điểm dữ liệu tương tự trong tập dữ liệu của bạn cùng với khoảng cách của chúng trong không gian nhúng. Chỉ cần tạo một bảng nhúng cho cặp mô hình tập dữ liệu đã cho. Nó chỉ cần một lần và nó được tái sử dụng tự động.
exp = Explorer ("VOC.yaml", model ="yolov8n.pt") exp.create_embeddings_table()
Một trong những 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ỉ số / danh sách các chỉ số nhất định trong tập dữ liệu như -
exp.get_similar(idx=[1,10], limit=10)
- Trên bất kỳ hình ảnh / 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ập 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ương tự = exp.get_similar(idx = 1, giới hạn = 10) tương tự.đầu()
Bạn có thể sử dụng cũng vẽ các mẫu tương tự trực tiếp bằng cách sử dụng plot_similar
Tiện ích
exp.plot_similar(idx=6500, limit=20)
# exp.plot_similar(idx=[100,101], limit=10) # Can also pass list of idxs or imgs
exp.plot_similar(
img="https://ultralytics.com/images/bus.jpg", limit=10, labels=False
) # Can also pass any external images
2. Hỏi AI: Tìm kiếm hoặc lọc bằng Ngôn ngữ tự nhiên¶
Bạn có thể nhắc đối tượng Explorer với loại điểm dữ liệu bạn muốn xem và nó sẽ cố gắng trả về khung dữ liệu với những điểm đó. Bởi vì nó được cung cấp bởi LLM, nó không phải lúc nào cũng đúng. Trong trường hợp đó, nó sẽ trả về Không có.
df = exp.ask_ai("cho tôi xem hình ảnh chứa hơn 10 đối tượng với ít nhất 2 người")
df.đầu(5)
Để vẽ các kết quả này, bạn có thể sử dụng plot_query_result
Tiện ích
Ví dụ:
plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)
# plot
from PIL import Image
from ultralytics.data.explorer import plot_query_result
plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)
3. Chạy các truy vấn SQL trên Dataset của bạn! ¶
Đôi khi bạn có thể muốn điều tra một loại mục nhập nhất định trong tập dữ liệu của mình. Đối với Explorer này cho phép bạn thực hiện các truy vấn SQL. Nó chấp nhận một trong các định dạng:
- Các truy vấn bắt đầu bằng "WHERE" sẽ tự động chọn tất cả các cột. Đây có thể được coi là một truy vấn tay ngắn
- Bạn cũng có thể viết các truy vấn đầy đủ nơi bạn có thể chỉ định cột nào sẽ chọn
Điều này có thể được sử dụng để điều tra hiệu suất mô hình và các điểm dữ liệu cụ thể. Chẳng hạn:
- Giả sử người mẫu của bạn gặp khó khăn trên những hình ảnh có người và chó. Bạn có thể viết một truy vấn như thế này để chọn các điểm có ít nhất 2 người VÀ ít nhất một.
Bạn có thể kết hợp truy vấn SQL và tìm kiếm ngữ nghĩa để lọc xuống loại kết quả cụ thể
bảng = exp.sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10")
table
Cũng giống như tìm kiếm tương tự, bạn cũng nhận được một tiện ích để vẽ trực tiếp các truy vấn sql bằng cách sử dụng exp.plot_sql_query
kinh nghiệm.plot_sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10", labels=True)
bảng = exp.bàn bàn.Schema
Chạy truy vấn thô¶
Vector Search tìm các vectơ gần nhất từ cơ sở dữ liệu. Trong hệ thống đề xuất hoặc công cụ tìm kiếm, bạn có thể tìm thấy các sản phẩm tương tự từ sản phẩm bạn đã tìm kiếm. Trong LLM và các ứng dụng AI khác, mỗi điểm dữ liệu có thể được trình bày bằng cách nhúng được tạo từ một số mô hình, nó trả về các tính năng phù hợp nhất.
Một tìm kiếm trong không gian vectơ chiều cao, là tìm K-Nearest-Neighbors (KNN) của vectơ truy vấn.
Mét Trong LanceDB, Metric là cách để mô tả khoảng cách giữa một cặp vector. Hiện tại, nó hỗ trợ các số liệu sau:
- L2
- Côsin
- Chấm Tìm kiếm tương tự của Explorer sử dụng L2 theo mặc định. Bạn có thể chạy truy vấn trực tiếp trên bảng hoặc sử dụng định dạng lance để xây dựng các tiện ích tùy chỉnh để quản lý tập dữ liệu. Thêm chi tiết về các hoạt động bảng LanceDB có sẵn trong tài liệu
dummy_img_embedding = [i cho i trong phạm vi(256)]
bảng.Tìm kiếm(dummy_img_embedding).giới hạn(5).to_pandas()
Chuyển đổi liên kết sang các định dạng dữ liệu phổ biến¶
df = bảng.to_pandas()
pa_table = bảng.to_arrow()
Làm việc với Embeddings¶
Bạn có thể truy cập nhúng thô từ lancedb Table và phân tích nó. Các nhúng hình ảnh được lưu trữ trong cột vector
Nhập numpy dưới dạng npembeddings = bảng.to_pandas()["vector"].tolist()embeddings = np.Mảng (nhúng)
Scatterplot¶
Một trong những bước sơ bộ trong việc phân tích nhúng là vẽ chúng trong không gian 2D thông qua giảm kích thước. Hãy thử một ví dụ
! !pip cài đặt scikit-learn --q
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
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's 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()
4. Chỉ số tương tự¶
Dưới đây là một ví dụ đơn giản về một thao tác được hỗ trợ bởi bảng nhúng. 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éttop_k
hình ảnh tương tự tại một thời điểm.
Đố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
.
Tương tự như tìm kiếm vector và SQL, điều này cũng đi kèm với một tiện ích để vẽ trực tiếp nó. Hãy xem xét cốt truyện trước
kinh nghiệm.plot_similarity_index(max_dist=0,2, top_k=0,01)
Bây giờ chúng ta hãy nhìn vào đầu ra của hoạt động
Nhập numpy dưới dạng NP
sim_idx = exp.similarity_index(max_dist=0,2, top_k=0,01, force=False)
sim_idx
Hãy tạo một truy vấn để xem những điểm dữ liệu nào có số lượng tương tự hơn 30 và vẽ hình ảnh tương tự như chúng.
import numpy as np
sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]
Bạn sẽ thấy một cái gì đó như thế này:
exp.plot_similar(idx=[7146, 14035]) # Using avg embeddings of 2 images