İçeriğe geç

Ultralytics Explorer API'si

Topluluk Notu ⚠️

İtibarıyla ultralytics>=8.3.10, Ultralytics explorer desteği kullanımdan kaldırılmıştır. Ama endişelenmeyin! Artık benzer ve hatta geliştirilmiş işlevlere şuradan erişebilirsiniz: Ultralytics HUB, iş akışınızı kolaylaştırmak için tasarlanmış sezgisel, kodsuz platformumuz. Ultralytics HUB ile, tek bir kod satırı yazmadan verilerinizi zahmetsizce keşfetmeye, görselleştirmeye ve yönetmeye devam edebilirsiniz. Kontrol ettiğinizden ve güçlü özelliklerinden yararlandığınızdan emin olun!🚀

Giriş

Colab'da Aç Explorer API, veri kümelerinizi keşfetmek için bir python API'sidir. SQL sorgularını, vektör benzerliği aramasını ve semantik aramayı kullanarak veri kümenizi filtrelemeyi ve aramayı destekler.



İzle: Ultralytics Explorer API'sine Genel Bakış

Kurulum

Explorer, bazı işlevleri için harici kitaplıklara 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="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)

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 bellek tükenmeden COCO gibi büyük veri kümeleri için gömmeler oluşturabilir ve yeniden kullanabilirsiniz.

Gömme tablosunu zorla güncellemek isterseniz, şunu iletebilirsiniz: force=True için create_embeddings_table yöntemi.

Gelişmiş analizler yapmak için doğrudan LanceDB tablo nesnesine erişebilirsiniz. Bu konuda daha fazla bilgi edinmek için Gömme Tablosu ile Çalışma bölümüne bakın

Benzerlik araması, belirli bir görüntüye benzer görüntüleri bulma tekniğidir. Benzer görüntülerin benzer gömülere sahip olacağı fikrine dayanır. Gömme tablosu oluşturulduktan sonra, aşağıdaki yöntemlerden herhangi biriyle semantik arama çalıştırabilirsiniz:

  • Veri kümesindeki belirli bir indeks veya indeks listesinde: exp.get_similar(idx=[1,10], limit=10)
  • Veri kümesinde olmayan herhangi bir görüntü veya görüntü listesinde: 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.

Şununla birlikte bir pandas veri çerçevesi elde edersiniz: limit girişe en benzer veri noktalarının sayısı ve bunların gömme uzayındaki mesafesi. 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="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())

Benzer Görüntüleri Çizme

Ayrıca benzer görüntüleri kullanarak da çizebilirsiniz: plot_similar yöntemi. Bu yöntem, ile aynı argümanları alır get_similar ve benzer görüntüleri bir ızgara üzerinde gösterir.

Benzer Görüntüleri Çizme

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. Yapay Zekaya Sor (Doğal Dil Sorgulama)

Bu, veri kümenizi doğal dili kullanarak nasıl filtrelemek istediğinizi yazmanıza olanak tanır. SQL sorguları yazma konusunda uzman olmanıza gerek yok. Yapay zeka destekli sorgu oluşturucumuz bunu arka planda otomatik olarak yapacaktır. Örneğin - "bana tam olarak bir kişi ve 2 köpek olan 100 resim göster. Başka nesneler de olabilir" diyebilirsiniz ve dahili olarak sorguyu oluşturacak ve size bu sonuçları gösterecektir. Not: Bu, arka planda LLM'ler kullanılarak çalışır, bu nedenle sonuçlar olasılıksaldır ve bazen işleri yanlış anlayabilir.

AI'ya Sor

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. SQL Sorgulama

Veri kümenizde SQL sorguları çalıştırmak için şunu kullanabilirsiniz: sql_query yöntemi. 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="yolo11n.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 SQL sorgusunun sonuçlarını kullanarak da çizebilirsiniz: plot_sql_query yöntemi. Bu yöntem, ile aynı argümanları alır sql_query ve sonuçları bir ızgara üzerinde gösterir.

SQL Sorgu Sonuçlarını Çizme

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. Gömme Tablosu ile Çalışmak

Ayrıca doğrudan gömme tablosuyla da çalışabilirsiniz. Gömme tablosu oluşturulduktan sonra, ona şunları kullanarak erişebilirsiniz: Explorer.table

İpucu

Explorer üzerinde çalışır LanceDB tabloları dahili olarak kullanır. Bu tabloya doğrudan erişebilirsiniz, kullanarak Explorer.table nesnesi ve ham sorgular çalıştırın, ön ve son filtreleri aşağı itin vb.

from ultralytics import Explorer

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

İşte tabloyla yapabileceklerinize dair bazı örnekler:

Ham Gömme Verilerini 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="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)

Vektör Dizini Oluştur

Büyük veri kümeleri kullanırken, daha hızlı sorgulama için özel bir vektör indeksi de oluşturabilirsiniz. Bu, aşağıdakiler kullanılarak yapılır: create_index LanceDB tablosundaki yöntem.

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

Mevcut vektör dizin türleri ve yapılandırma parametreleri hakkında daha fazla ayrıntıyı LanceDB indeksleme belgelerinde bulabilirsiniz. Gelecekte, vektör indekslerini doğrudan Explorer API aracılığıyla oluşturmayı planlıyoruz.

5. Gömme Uygulamaları

Çeşitli keşif analizleri yapmak için gömme tablosunu kullanabilirsiniz. İşte bazı örnekler:

Benzerlik Endeksi

Explorer ile birlikte gelir similarity_index işlem:

  • 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ü gömüsünün daha yakında olduğunu sayarak yapar max_dist oluşturulan gömme alanındaki mevcut görüntüye göre, top_k aynı anda 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 şundan daha yakın olan görüntü sayısı max_dist mevcut görüntüye
  • sim_im_files: Şuna giden yolların listesi: count benzer görüntüler

İpucu

Belirli bir veri kümesi, model için, max_dist & top_k benzerlik indeksi oluşturulduktan sonra yeniden kullanılacaktır. Veri kümeniz değiştiyse veya sadece benzerlik indeksini yeniden oluşturmanız gerekiyorsa, şunu geçirebilirsiniz force=True.

Benzerlik Endeksi

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

Veri kümesini filtrelemek için özel koşullar oluşturmak üzere benzerlik dizinini kullanabilirsiniz. Örneğin, aşağıdaki kodu kullanarak veri kümesindeki başka 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ştirme

Gömme alanını seçtiğiniz bir çizim aracıyla da görselleştirebilirsiniz. Örneğin, burada matplotlib kullanan 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 kümesi keşif raporlarınızı oluşturmaya başlayın. İlham almak için VOC Keşif Örneği'ne göz atın.

Ultralytics Explorer Kullanılarak Oluşturulan Uygulamalar

Explorer API'sini temel alan GUI Demomuzu deneyin

Çok Yakında

  • [ ] Veri kümelerinden belirli etiketleri birleştirin. Örnek - Tümünü İçe Aktar person COCO'dan alınan etiketler ve car Cityscapes'ten alınan etiketler
  • [ ] 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 getirin
  • [ ] Gelişmiş Veri Kümesi Görselleştirmeleri

SSS

Ultralytics Explorer API ne için kullanılır?

Ultralytics Explorer API, kapsamlı veri kümesi keşfi için tasarlanmıştır. Kullanıcıların SQL sorguları, vektör benzerlik araması ve semantik arama kullanarak veri kümelerini filtrelemesine ve aramasına olanak tanır. Bu güçlü python API'si, büyük veri kümelerini işleyebilir ve bu da onu Ultralytics modellerini kullanan çeşitli bilgisayarla görme görevleri için ideal hale getirir.

Ultralytics Explorer API'sini nasıl kurarım?

Ultralytics Explorer API'sini bağımlılıklarıyla birlikte kurmak için aşağıdaki komutu kullanın:

pip install ultralytics[explorer]

Bu, Explorer API işlevselliği için gerekli tüm harici kütüphaneleri otomatik olarak yükleyecektir. Ek kurulum ayrıntıları için, belgelerimizin kurulum bölümüne bakın.

Bir gömme tablosu oluşturup benzer görüntüler için sorgulayarak benzerlik aramaları yapmak için Ultralytics Explorer API'sini kullanabilirsiniz. İşte temel bir örnek:

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

Daha fazla ayrıntı için lütfen Benzerlik Arama bölümünü ziyaret edin.

Ultralytics Explorer ile LanceDB kullanmanın faydaları nelerdir?

Ultralytics Explorer tarafından kullanılan LanceDB, ölçeklenebilir, disk üzerinde gömme tabloları sağlar. Bu, COCO gibi büyük veri kümeleri için bellek tükenmeden gömmeler oluşturabilmenizi ve yeniden kullanabilmenizi sağlar. Bu tablolar yalnızca bir kez oluşturulur ve yeniden kullanılabilir, bu da veri işlemedeki verimliliği artırır.

Ultralytics Explorer API'sindeki Yapay Zeka'ya Sor özelliği nasıl çalışır?

Yapay Zeka'ya Sor özelliği, kullanıcıların veri setlerini doğal dil sorgularını kullanarak filtrelemelerine olanak tanır. Bu özellik, bu sorguları arka planda SQL sorgularına dönüştürmek için LLM'lerden yararlanır. İşte bir örnek:

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

Daha fazla örnek için Yapay Zeka'ya Sor bölümüne göz atın.



📅 1 yıl önce oluşturuldu ✏️ 3 ay önce güncellendi

Yorumlar