Kurumsal kullanıma hazır güvenlik: ISO 27001 + SOC 2 Tip I uyumlu.

Link to this sectionVOC Keşif Örneği#

Ultralytics YOLO banner

中文 | 한국어 | 日本語 | Русский | Deutsch | Français | Español | Português | Türkçe | Tiếng Việt | العربية


Ultralytics CI Ultralytics Downloads Ultralytics Discord Ultralytics Forums Ultralytics Reddit
Run Ultralytics on Gradient Open Ultralytics In Colab Open Ultralytics In Kaggle Open Ultralytics In Binder

Ultralytics Explorer API not defterine hoş geldin. Bu not defteri; anlamsal arama, vektör arama ve SQL sorguları ile veri kümelerini keşfetmek için mevcut kaynakları tanıtır.

yolo explorer komutunu dene (Explorer API tarafından desteklenir)

ultralytics paketini yükle ve tarayıcında özel sorgular ile anlamsal arama yapmak için terminalinde yolo explorer komutunu çalıştır.

Topluluk Notu ⚠️

ultralytics>=8.3.12 sürümü itibarıyla, Ultralytics Explorer kaldırılmıştır. Explorer'ı kullanmak için pip install ultralytics==8.3.11 komutuyla yükleme yapmalısın. Benzer (ve genişletilmiş) veri kümesi keşfi özellikleri Ultralytics Platform üzerinde mevcuttur.

Link to this sectionKurulum#

ultralytics paketini ve gerekli bağımlılıkları yükle, ardından yazılım ve donanım kontrolünü yap.

!uv pip install ultralytics[explorer] openai
yolo checks

Link to this sectionBenzerlik Araması#

Veri kümendeki benzer veri noktalarını, gömme uzayındaki (embedding space) mesafeleriyle birlikte bulmak için vektör benzerlik aramasının gücünden yararlan. İlgili veri kümesi-model çifti için basitçe bir gömme tablosu oluştur. Bu işlem yalnızca bir kez gereklidir ve otomatik olarak yeniden kullanılır.

exp = Explorer("VOC.yaml", model="yolo11n.pt")
exp.create_embeddings_table()

Gömme tablosu oluşturulduktan sonra, anlamsal aramayı aşağıdaki yöntemlerden herhangi biriyle çalıştırabilirsin:

  • Veri kümesindeki belirli bir dizin/dizin listesi üzerinde, örneğin: exp.get_similar(idx=[1, 10], limit=10)
  • Veri kümesinde olmayan herhangi bir görüntü/görüntü listesi üzerinde - exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10) Birden fazla girdi durumunda, gömmelerinin toplamı kullanılır.

Girdiye en benzer limit sayıda veri noktasını, gömme uzayındaki mesafeleriyle birlikte içeren bir pandas DataFrame elde edersin. Bu veri kümesini daha fazla filtreleme yapmak için kullanabilirsin.

Ultralytics Explorer benzerlik arama sonuçları

# Search dataset by index
similar = exp.get_similar(idx=1, limit=10)
similar.head()

Ayrıca plot_similar aracını kullanarak benzer örnekleri doğrudan çizebilirsin

Vektör araması ile bulunan benzer görüntüler

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 external images

Gömmeler ile benzerlik araması görselleştirmesi

Link to this sectionYapay Zekaya Sor: Doğal Dil ile Ara veya Filtrele#

Explorer nesnesine görmek istediğin veri noktalarının türünü sorabilirsin; o da bu sonuçlarla bir DataFrame döndürmeye çalışacaktır. LLM'ler tarafından desteklendiği için her zaman doğru sonuç vermeyebilir. Bu durumda None döndürecektir.

Ultralytics Explorer Yapay Zekaya Sor doğal dil sorgu sonuçları

df = exp.ask_ai("show me images containing more than 10 objects with at least 2 persons")
df.head(5)

Bu sonuçları çizdirmek için plot_query_result aracını kullanabilirsin. Örnek:

plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)

Eşleşen görüntüleri gösteren Yapay Zekaya Sor sorgu sonucu

# 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)

Link to this sectionVeri Kümen Üzerinde SQL Sorguları Çalıştır#

Bazen veri kümendeki belirli girdileri incelemek isteyebilirsin. Bunun için Explorer, SQL sorguları çalıştırmana izin verir. Aşağıdaki formatlardan herhangi birini kabul eder:

  • "WHERE" ile başlayan sorgular otomatik olarak tüm sütunları seçecektir. Bu, kısa bir sorgu biçimi olarak düşünülebilir.
  • Ayrıca hangi sütunların seçileceğini belirtebileceğin tam sorgular da yazabilirsin.

Bu, model performansını ve belirli veri noktalarını incelemek için kullanılabilir. Örneğin:

  • diyelim ki modelin insanlar ve köpekler içeren görüntülerde zorlanıyor. En az 2 insan VE en az bir köpek içeren noktaları seçmek için şöyle bir sorgu yazabilirsin.

Belirli sonuç türlerine filtrelemek için SQL sorgusu ile anlamsal aramayı birleştirebilirsin

table = exp.sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10")
exp.plot_sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10", labels=True)

Explorer SQL sorgu sonuçları tablosu

table = exp.sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10")
print(table)

Tıpkı benzerlik aramasında olduğu gibi, SQL sorgularını doğrudan exp.plot_sql_query kullanarak çizmek için de bir araç mevcuttur

SQL sorgusu ile eşleşen görüntüler görselleştirmesi

exp.plot_sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10", labels=True)

Link to this sectionGömmeler Tablosu ile Çalışmak (İleri Seviye)#

Explorer dahili olarak LanceDB tabloları üzerinde çalışır. Bu tabloya doğrudan Explorer.table nesnesini kullanarak erişebilir ve ham sorgular çalıştırabilir, ön ve son filtreler uygulayabilirsin.

table = exp.table
print(table.schema)

Link to this sectionHam sorgular çalıştır#

Vektör Arama, veritabanındaki en yakın vektörleri bulur. Bir öneri sisteminde veya arama motorunda, aradığın ürüne benzer ürünleri bulabilirsin. LLM ve diğer yapay zeka uygulamalarında, her veri noktası bazı modeller tarafından oluşturulan gömmelerle temsil edilebilir; bu da en alakalı özellikleri döndürür.

Yüksek boyutlu vektör uzayında bir arama, sorgu vektörünün K-En Yakın Komşularını (KNN) bulmaktır.

Metrik: LanceDB'de Metrik, bir vektör çifti arasındaki mesafeyi tanımlamanın yoludur. Şu anda aşağıdaki metrikleri destekler:

  • L2
  • Cosine
  • Dot Explorer'ın benzerlik araması varsayılan olarak L2 kullanır. Tablolar üzerinde doğrudan sorgular çalıştırabilir veya veri kümelerini yönetmek için özel araçlar oluşturmak amacıyla lance formatını kullanabilirsin. Mevcut LanceDB tablo işlemleri hakkında daha fazla ayrıntı dokümanlarda mevcuttur.

Explorer ham SQL sorguları sonuç tablosu

dummy_img_embedding = [i for i in range(256)]
table.search(dummy_img_embedding).limit(5).to_pandas()

Link to this sectionPopüler veri formatlarına dönüştürme#

df = table.to_pandas()
pa_table = table.to_arrow()

Link to this sectionGömmeler ile çalış#

Ham gömmeye lancedb Tablosundan erişebilir ve analiz edebilirsin. Görüntü gömmeleri vector sütununda saklanır

import numpy as np

embeddings = table.to_pandas()["vector"].tolist()
embeddings = np.array(embeddings)

Link to this sectionSaçılım Grafiği (Scatterplot)#

Gömmeleri analiz etmedeki ön adımlardan biri, boyut azaltma yoluyla onları 2B uzayda çizmektir. Bir örnek deneyelim

Explorer gömmeleri saçılım grafiği görselleştirmesi

import matplotlib.pyplot as plt
from sklearn.decomposition import PCA  # pip install scikit-learn

# 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()

Link to this sectionBenzerlik Endeksi#

İşte gömmeler tablosu tarafından desteklenen basit bir işlem örneği. Explorer bir similarity_index işlemi ile gelir-

  • Her veri noktasının veri kümesinin geri kalanıyla ne kadar benzer olduğunu tahmin etmeye çalışır.
  • Bunu, oluşturulan gömme uzayında, her seferinde top_k benzer görüntüyü dikkate alarak kaç tane görüntü gömmesinin mevcut görüntüye max_dist değerinden daha yakın olduğunu sayarak yapar.

Belirli bir veri kümesi, model, max_dist ve top_k için, benzerlik endeksi bir kez oluşturulduğunda yeniden kullanılır. Veri kümen değiştiyse veya benzerlik endeksini yeniden oluşturman gerekiyorsa force=True parametresini geçebilirsin. Vektör ve SQL aramasına benzer şekilde, bununla da doğrudan çizim yapmak için bir araç mevcuttur.

sim_idx = exp.similarity_index(max_dist=0.2, top_k=0.01)
exp.plot_similarity_index(max_dist=0.2, top_k=0.01)

Veri kümesi benzerlik endeksi analizi

Önce grafiğe bakalım

exp.plot_similarity_index(max_dist=0.2, top_k=0.01)

Şimdi işlemin çıktısına bakalım

sim_idx = exp.similarity_index(max_dist=0.2, top_k=0.01, force=False)

sim_idx

30'dan fazla benzerlik sayısına sahip veri noktalarını görmek ve onlara benzer görüntüleri çizdirmek için bir sorgu oluşturalım.

import numpy as np

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

Buna benzer bir şey görmelisin

Veri kümesi analizi için benzerlik endeksi görselleştirmesi

exp.plot_similar(idx=[7146, 14035])  # Using avg embeddings of 2 images

Yorumlar