Ultralytics Explorer API
Giriş
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:
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
1. Benzerlik Arama
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
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
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
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.
Tablo ile neler yapabileceğinize dair bazı örnekler aşağıda verilmiştir:
Ham Katıştırmaları alın
Örnek
Ön ve son filtrelerle Gelişmiş Sorgulama
Örnek
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.
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üyetop_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 indeksiim_file
: Görüntü dosyasının yolucount
: 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üyesim_im_files
: Yolların listesicount
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
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:
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 numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 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 vecar
Ş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
Oluşturma 2024-01-07, Güncelleme 2024-04-27
Yazarlar: glenn-jocher (8), 0xSynapse (1), RizwanMunawar (2), AyushExel (2)