Ultralytics Explorer API
Community Note ⚠️
As of ultralytics>=8.3.10
, Ultralytics explorer support has been deprecated. But don't worry! You can now access similar and even enhanced functionality through Ultralytics HUB, our intuitive no-code platform designed to streamline your workflow. With Ultralytics HUB, you can continue exploring, visualizing, and managing your data effortlessly, all without writing a single line of code. Make sure to check it out and take advantage of its powerful features!🚀
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="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
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="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
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
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
İ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.
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 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 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
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:
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 araması için Ultralytics Explorer API'sini nasıl kullanabilirim?
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.