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ş
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
1. Benzerlik Arama
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 indeksiim_file
: Görüntü dosyasının yolucount
: Veri kümesindeki şundan daha yakın olan görüntü sayısımax_dist
mevcut görüntüyesim_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 vecar
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.
Benzerlik araması için Ultralytics Explorer API'sini nasıl kullanabilirim?
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.