İçeriğe geç

Ultralytics Explorer API

Topluluk Notu ⚠️

İtibariyle ultralytics>=8.3.10, Ultralytics explorer desteği kullanımdan kaldırılmıştır. Ama endişelenmeyin! Artık benzer ve hatta gelişmiş işlevselliğe şu yolla erişebilirsiniz Ultralytics HUBiş akışınızı kolaylaştırmak için tasarlanmış sezgisel kodsuz platformumuz. Ultralytics HUB ile tek bir satır kod yazmadan verilerinizi zahmetsizce keşfetmeye, görselleştirmeye ve yönetmeye devam edebilirsiniz. Mutlaka göz atın ve güçlü özelliklerinden yararlanın!🚀

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="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

Embeddings table for a given dataset and model pair is only created once and reused. These use LanceDB under the hood, which scales on-disk, so you can create and reuse embeddings for large datasets like COCO without running out of memory.

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="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 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="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. 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="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ü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="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 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="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ö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

İpucu

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="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ş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

SSS

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

The Ultralytics Explorer API is designed for comprehensive dataset exploration. It allows users to filter and search datasets using SQL queries, vector similarity search, and semantic search. This powerful Python API can handle large datasets, making it ideal for various computer vision tasks using Ultralytics models.

Ultralytics Explorer API'sini nasıl yükleyebilirim?

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

pip install ultralytics[explorer]

This will automatically install all necessary external libraries for the Explorer API functionality. For additional setup details, refer to the installation section of our documentation.

Benzerlik aramaları yapmak için Ultralytics Explorer API'sini kullanarak bir katıştırmalar tablosu oluşturabilir ve benzer görüntüler için bu tabloyu sorgulayabilirsiniz. İş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())

For more details, please visit the Similarity Search section.

LanceDB'yi Ultralytics Explorer ile 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 katıştırmalar oluşturabilmenizi ve yeniden kullanabilmenizi sağlar. Bu tablolar yalnızca bir kez oluşturulur ve yeniden kullanılabilir, bu da veri işlemede verimliliği artırır.

Ultralytics Explorer API'sinde Yapay Zekaya Sor özelliği nasıl çalışır?

Yapay Zekaya Sor özelliği, kullanıcıların doğal dil sorgularını kullanarak veri kümelerini filtrelemelerine olanak tanır. Bu özellik, bu sorguları perde arkasında 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 Zekaya Sor bölümüne göz atın.

📅 1 0 ay önce oluşturuldu ✏️ 1 ay önce güncellendi

Yorumlar