─░├žeri─če ge├ž

Ultralytics Explorer API

Giri┼č

Colab'da A├ž Explorer API, veri k├╝melerinizi ke┼čfetmek i├žin bir Python API'sidir. SQL sorgular─▒, vekt├Âr benzerlik aramas─▒ ve semantik arama kullanarak veri k├╝menizi filtrelemeyi ve aramay─▒ destekler.



─░zle: Ultralytics Explorer API'ye Genel Bak─▒┼č

Kurulum

Explorer, baz─▒ i┼člevleri i├žin harici k├╝t├╝phanelere ba─čl─▒d─▒r. Bunlar kullan─▒m s─▒ras─▒nda otomatik olarak y├╝klenir. Bu ba─č─▒ml─▒l─▒klar─▒ manuel olarak y├╝klemek i├žin a┼ča─č─▒daki komutu kullan─▒n:

pip install ultralytics[explorer]

Kullan─▒m

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.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)

Not

Belirli bir veri k├╝mesi ve model ├žifti i├žin g├Âmme tablosu yaln─▒zca bir kez olu┼čturulur ve yeniden kullan─▒l─▒r. Bunlar, disk ├╝zerinde ├Âl├žeklenen LanceDB 'yi kullan─▒r, b├Âylece COCO gibi b├╝y├╝k veri k├╝meleri i├žin bellek t├╝kenmeden kat─▒┼čt─▒rmalar olu┼čturabilir ve yeniden kullanabilirsiniz.

Kat─▒┼čt─▒rmalar tablosunu g├╝ncellemeye zorlamak isterseniz force=True i├žin create_embeddings_table y├Ântem.

Geli┼čmi┼č analiz ger├žekle┼čtirmek i├žin LanceDB tablo nesnesine do─črudan eri┼čebilirsiniz. Embeddings Tablosu ile ├çal─▒┼čma b├Âl├╝m├╝nde bu konuda daha fazla bilgi edinin

Benzerlik aramas─▒, verilen bir g├Âr├╝nt├╝ye benzer g├Âr├╝nt├╝leri bulmak i├žin kullan─▒lan bir tekniktir. Benzer g├Âr├╝nt├╝lerin benzer g├Âm├╝lmelere sahip olaca─č─▒ fikrine dayan─▒r. G├Âmme tablosu olu┼čturulduktan sonra, anlamsal aramay─▒ a┼ča─č─▒daki yollardan herhangi biriyle ├žal─▒┼čt─▒rabilirsiniz:

  • Veri k├╝mesindeki belirli bir dizin veya dizin listesi ├╝zerinde: exp.get_similar(idx=[1,10], limit=10)
  • Veri k├╝mesinde olmayan herhangi bir g├Âr├╝nt├╝ veya g├Âr├╝nt├╝ listesi ├╝zerinde: exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

Birden fazla girdi olmas─▒ durumunda, bunlar─▒n g├Âm├╝lmelerinin toplam─▒ kullan─▒l─▒r.

ile bir pandas veri ├žer├ževesi elde edersiniz. limit Giri┼če en ├žok benzeyen veri noktalar─▒n─▒n say─▒s─▒ ve bunlar─▒n g├Âmme uzay─▒ndaki mesafeleri. Bu veri k├╝mesini daha fazla filtreleme yapmak i├žin kullanabilirsiniz

Semantik Arama

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.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="yolov8n.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())

Benzer G├Âr├╝nt├╝leri ├çizme

Ayr─▒ca benzer g├Âr├╝nt├╝leri plot_similar y├Ântemi. Bu y├Ântem, a┼ča─č─▒daki gibi ayn─▒ arg├╝manlar─▒ al─▒r get_similar ve benzer g├Âr├╝nt├╝leri bir ─▒zgarada ├žizer.

Benzer G├Âr├╝nt├╝leri ├çizme

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.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="yolov8n.pt")
exp.create_embeddings_table()

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

2. Ask AI (Do─čal Dil Sorgulama)

Bu, do─čal dil kullanarak veri k├╝menizi nas─▒l filtrelemek istedi─činizi yazman─▒za olanak tan─▒r. SQL sorgular─▒ yazma konusunda yetkin olman─▒z gerekmez. Yapay zeka destekli sorgu olu┼čturucumuz bunu kaputun alt─▒nda otomatik olarak yapacakt─▒r. ├ľrne─čin - "bana tam olarak bir ki┼či ve 2 k├Âpek i├žeren 100 resim g├Âster" diyebilirsiniz. Ba┼čka nesneler de olabilir" dedi─činizde, sorguyu dahili olarak olu┼čturacak ve size bu sonu├žlar─▒ g├Âsterecektir. Not: Bu, kaputun alt─▒nda LLM'leri kullanarak ├žal─▒┼č─▒r, bu nedenle sonu├žlar olas─▒l─▒ksald─▒r ve bazen yanl─▒┼č ┼čeyler yapabilir

Yapay Zekaya Sor

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

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.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 Sorgulama

Veri k├╝meniz ├╝zerinde SQL sorgular─▒ ├žal─▒┼čt─▒rabilirsiniz. sql_query y├Ântemini kullan─▒r. Bu y├Ântem girdi olarak bir SQL sorgusu al─▒r ve sonu├žlar─▒ i├žeren bir pandas veri ├žer├ževesi d├Ând├╝r├╝r.

SQL Sorgusu

from ultralytics import Explorer

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

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

SQL Sorgu Sonu├žlar─▒n─▒ ├çizme

Ayr─▒ca bir SQL sorgusunun sonu├žlar─▒n─▒ plot_sql_query y├Ântemi. Bu y├Ântem, a┼ča─č─▒daki gibi ayn─▒ arg├╝manlar─▒ al─▒r sql_query ve sonu├žlar─▒ bir ─▒zgarada ├žizer.

SQL Sorgu Sonu├žlar─▒n─▒ ├çizme

from ultralytics import Explorer

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

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

4. G├Âm├╝ler Tablosu ile ├çal─▒┼čma

G├Âm├╝ler tablosu ile do─črudan da ├žal─▒┼čabilirsiniz. Kat─▒┼čt─▒rmalar tablosu olu┼čturulduktan sonra, bu tabloya Explorer.table

Explorer ├╝zerinde ├žal─▒┼č─▒r LanceDB tablolar─▒ dahili olarak. Bu tabloya do─črudan eri┼čmek i├žin Explorer.table nesnesini kullanabilir ve ham sorgular ├žal─▒┼čt─▒rabilir, ├Ân ve son filtreleri a┼ča─č─▒ itebilir vb.

from ultralytics import Explorer

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

Tablo ile neler yapabilece─činize dair baz─▒ ├Ârnekler a┼ča─č─▒da verilmi┼čtir:

Ham Kat─▒┼čt─▒rmalar─▒ al─▒n

├ľrnek

from ultralytics import Explorer

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

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

├ľn ve son filtrelerle Geli┼čmi┼č Sorgulama

├ľrnek

from ultralytics import Explorer

exp = Explorer(model="yolov8n.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)

Vekt├Âr Dizini Olu┼čturma

B├╝y├╝k veri k├╝meleri kullan─▒rken, daha h─▒zl─▒ sorgulama i├žin ├Âzel bir vekt├Âr dizini de olu┼čturabilirsiniz. Bu i┼člem ┼ču ┼čekilde yap─▒l─▒r create_index y├Ântemini LanceDB tablosunda kullanabilirsiniz.

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

Mevcut vekt├Âr indeksleri ve parametreleri hakk─▒nda daha fazla bilgiyi burada bulabilirsiniz Gelecekte, do─črudan Explorer API'den vekt├Âr indeksleri olu┼čturma deste─či ekleyece─čiz.

5. G├Âmme Uygulamalar─▒

Kat─▒┼čt─▒rmalar tablosunu ├že┼čitli ke┼čif analizleri ger├žekle┼čtirmek i├žin kullanabilirsiniz. ─░┼čte baz─▒ ├Ârnekler:

Benzerlik Endeksi

Explorer ile birlikte gelir similarity_index operasyon:

  • Her bir veri noktas─▒n─▒n veri k├╝mesinin geri kalan─▒yla ne kadar benzer oldu─čunu tahmin etmeye ├žal─▒┼č─▒r.
  • Bunu, ka├ž tane g├Âr├╝nt├╝ kat─▒┼čt─▒rmas─▒n─▒n a┼ča─č─▒daki de─čerlerden daha yak─▒n oldu─čunu sayarak yapar max_dist g├Âz ├Ân├╝nde bulundurularak, olu┼čturulan g├Âmme uzay─▒nda mevcut g├Âr├╝nt├╝ye top_k bir seferde benzer g├Âr├╝nt├╝ler.

A┼ča─č─▒daki s├╝tunlara sahip bir pandas veri ├žer├ževesi d├Ând├╝r├╝r:

  • idx: Veri k├╝mesindeki g├Âr├╝nt├╝n├╝n indeksi
  • im_file: G├Âr├╝nt├╝ dosyas─▒n─▒n yolu
  • count: Veri k├╝mesindeki a┼ča─č─▒daki de─čerlerden daha yak─▒n olan g├Âr├╝nt├╝lerin say─▒s─▒ max_dist ge├žerli g├Âr├╝nt├╝ye
  • sim_im_files: Yollar─▒n listesi count benzer g├Âr├╝nt├╝ler

─░pucu

Belirli bir veri k├╝mesi i├žin model, max_dist & top_k bir kez olu┼čturulan benzerlik indeksi yeniden kullan─▒lacakt─▒r. Veri k├╝meniz de─či┼čtiyse veya benzerlik indeksini yeniden olu┼čturman─▒z gerekiyorsa force=True.

Benzerlik Endeksi

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

Veri k├╝mesini filtrelemek ├╝zere ├Âzel ko┼čullar olu┼čturmak i├žin benzerlik indeksini kullanabilirsiniz. ├ľrne─čin, a┼ča─č─▒daki kodu kullanarak veri k├╝mesindeki ba┼čka herhangi bir g├Âr├╝nt├╝ye benzemeyen g├Âr├╝nt├╝leri filtreleyebilirsiniz:

import numpy as np

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

G├Âmme Alan─▒n─▒ G├Ârselle┼čtirin

Ayr─▒ca, se├žti─činiz ├žizim arac─▒n─▒ kullanarak g├Âmme alan─▒n─▒ g├Ârselle┼čtirebilirsiniz. ├ľrne─čin burada matplotlib kullanarak basit bir ├Ârnek verilmi┼čtir:

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

Explorer API'sini kullanarak kendi CV veri seti ke┼čif raporlar─▒n─▒z─▒ olu┼čturmaya ba┼člay─▒n. ─░lham almak i├žin

Ultralytics Explorer Kullan─▒larak Olu┼čturulan Uygulamalar

Explorer API tabanl─▒ GUI Demomuzu deneyin

Çok Yakında

  • [ ] Veri k├╝melerinden belirli etiketleri birle┼čtirin. ├ľrnek - T├╝m├╝n├╝ i├že aktar person COCO'dan etiketler ve car ┼×ehir Manzaralar─▒ etiketleri
  • [ ] Verilen e┼čikten daha y├╝ksek benzerlik indeksine sahip g├Âr├╝nt├╝leri kald─▒r─▒n
  • [ ] Giri┼čleri birle┼čtirdikten/kald─▒rd─▒ktan sonra yeni veri k├╝melerini otomatik olarak kal─▒c─▒ hale getirme
  • [ ] Geli┼čmi┼č Veri K├╝mesi G├Ârselle┼čtirmeleri


Created 2024-01-07, Updated 2024-06-18
Authors: glenn-jocher (11), 0xSynapse (1), RizwanMunawar (2), AyushExel (2)

Yorumlar