VOC Keşif Örneği
Ultralytics Explorer API not defterine hoş geldiniz! Bu not defteri, anlamsal aramanın gücünü kullanarak veri kümelerinizi keşfetmek için Ultralytics adresini kullanmaya başlamanıza yardımcı olacak çeşitli kaynakları keşfetmek için bir başlangıç noktası görevi görür. Vektör araması ve hatta SQL sorguları kullanarak belirli etiket türlerini incelemenize olanak tanıyan kutudan çıkan yardımcı programları kullanabilirsiniz.
Deneyin yolo explorer
Explorer API tarafından desteklenmektedir
Basitçe pip install ultralytics
ve koş yolo explorer
terminalinizde özel sorgular çalıştırmak ve veri kümelerinizde doğrudan tarayıcınızın içinde semantik arama yapmak için!
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!🚀
Kurulum
Pip kurulumu ultralytics
ve bağımlılıklar ve yazılım ve donanımı kontrol edin.
Benzerlik Araması
Veri kümenizdeki benzer veri noktalarını gömme uzayındaki uzaklıklarıyla birlikte bulmak için vektör benzerlik aramasının gücünden yararlanın. Verilen veri kümesi-model çifti için bir gömme tablosu oluşturmanız yeterlidir. Yalnızca bir kez gereklidir ve otomatik olarak yeniden kullanılır.
Yerleştirmeler tablosu oluşturulduktan sonra, anlamsal aramayı aşağıdaki yollardan herhangi biriyle çalıştırabilirsiniz:
- Veri kümesindeki belirli bir dizin / dizin listesi üzerinde - exp.get_similar(idx=[1,10], limit=10)
- Veri kümesinde olmayan herhangi bir görüntü/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.
Girdiye en çok benzeyen veri noktalarının sınır sayısı ile birlikte gömme uzayında uzaklıklarını içeren bir pandas veri çerçevesi elde edersiniz. Bu veri kümesini daha fazla filtreleme yapmak için kullanabilirsiniz
Benzer örnekleri doğrudan çizmek için plot_similar
kullanım
exp.plot_similar(idx=6500, limit=20)
exp.plot_similar(idx=[100, 101], limit=10) # Can also pass list of idxs or imgs
exp.plot_similar(img="https://ultralytics.com/images/bus.jpg", limit=10, labels=False) # Can also pass external images
Ask AI: Doğal Dil ile arama yapın veya filtreleyin
Explorer nesnesine görmek istediğiniz veri noktalarını sorabilirsiniz ve o da bunları içeren bir veri çerçevesi döndürmeye çalışacaktır. LLM'ler tarafından desteklendiğinden, her zaman doğru yapamaz. Bu durumda, None döndürür.
df = exp.ask_ai("show me images containing more than 10 objects with at least 2 persons")
df.head(5)
Bu sonuçları çizmek için plot_query_result
kullanım Örneği:
plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)
# plot
from PIL import Image
from ultralytics.data.explorer import plot_query_result
plt = plot_query_result(exp.ask_ai("show me 10 images containing exactly 2 persons"))
Image.fromarray(plt)
Veri Kümeniz üzerinde SQL sorguları çalıştırın
Bazen veri kümenizdeki belirli bir tür girdiyi araştırmak isteyebilirsiniz. Bunun için Explorer SQL sorguları çalıştırmanıza izin verir. Biçimlerden herhangi birini kabul eder:
- "WHERE" ile başlayan sorgular otomatik olarak tüm sütunları seçecektir. Bu, kısaltılmış bir sorgu olarak düşünülebilir
- Hangi sütunların seçileceğini belirtebileceğiniz tam sorgular da yazabilirsiniz
Bu, model performansını ve belirli veri noktalarını araştırmak için kullanılabilir. Örneğin:
- Diyelim ki modeliniz insan ve köpek içeren görüntüler üzerinde çalışıyor. En az 2 insan VE en az bir köpek olan noktaları seçmek için aşağıdaki gibi bir sorgu yazabilirsiniz.
Belirli sonuç türlerini filtrelemek için SQL sorgusu ve semantik aramayı birleştirebilirsiniz
table = exp.sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10")
exp.plot_sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10", labels=True)
table = exp.sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10")
print(table)
Benzerlik aramasında olduğu gibi, sql sorgularını doğrudan çizmek için de bir kullanım elde edersiniz exp.plot_sql_query
exp.plot_sql_query("WHERE labels LIKE '%person, person%' AND labels LIKE '%dog%' LIMIT 10", labels=True)
Yerleştirmeler Tablosu ile çalışma (İleri Düzey)
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.
Ham sorguları çalıştırın¶
Vektör Arama, veritabanından en yakın vektörleri bulur. Bir öneri sisteminde veya arama motorunda, aradığınız ürüne benzer ürünleri bulabilirsiniz. LLM ve diğer yapay zeka uygulamalarında, her veri noktası bazı modellerden üretilen gömüler tarafından sunulabilir, en alakalı özellikleri döndürür.
Yüksek boyutlu vektör uzayında yapılan bir arama, sorgu vektörünün K-En Yakın Komşularını (KNN) bulmaktır.
Metrik LanceDB'de Metrik, bir çift vektör arasındaki mesafeyi tanımlamanın bir yoludur. Şu anda, aşağıdaki metrikleri desteklemektedir:
- L2
- Kosinüs
- Dot Explorer'ın benzerlik araması varsayılan olarak L2 kullanır. Tablolar üzerinde doğrudan sorgular çalıştırabilir veya veri kümelerini yönetmek için özel yardımcı programlar oluşturmak üzere lance biçimini kullanabilirsiniz. Dokümanlarda mevcut LanceDB tablo işlemleri hakkında daha fazla ayrıntı
dummy_img_embedding = [i for i in range(256)]
table.search(dummy_img_embedding).limit(5).to_pandas()
Popüler veri formatlarına ara dönüştürme
Gömülerle Çalışma
Ham gömülmeye lancedb Tablosundan erişebilir ve analiz edebilirsiniz. Görüntü katıştırmaları sütunda saklanır vector
import numpy as np
embeddings = table.to_pandas()["vector"].tolist()
embeddings = np.array(embeddings)
Scatterplot
Gömülmeleri analiz etmenin ön adımlarından biri, boyut indirgeme yoluyla bunları 2B uzayda çizmektir. Bir örnek deneyelim
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA # pip install scikit-learn
# 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's 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()
Benzerlik Endeksi
İşte embeddings tablosu tarafından desteklenen bir işlemin basit bir örneği. Explorer bir 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, bir seferde en_k benzer görüntüyü göz önünde bulundurarak, oluşturulan gömme uzayında mevcut görüntüye max_dist'ten daha yakın kaç görüntü gömme olduğunu sayarak yapar.
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
. Vektör ve SQL aramasına benzer şekilde, bu da doğrudan çizmek için bir util ile birlikte gelir. Bakalım
sim_idx = exp.similarity_index(max_dist=0.2, top_k=0.01)
exp.plot_similarity_index(max_dist=0.2, top_k=0.01)
önce arsada
Şimdi işlemin çıktısına bakalım
Hangi veri noktalarının 30'dan fazla benzerlik sayısına sahip olduğunu görmek için bir sorgu oluşturalım ve bunlara benzer görüntüleri çizelim.
Şuna benzer bir şey görmelisiniz