コンテンツぞスキップ

Ultralytics ゚クスプロヌラAPI

はじめに

オヌプン・むン・コラボ Explorer API は、デヌタセットを探玢するためのPython API です。SQLク゚リを䜿ったデヌタセットのフィルタリングや怜玢、ベクトル類䌌床怜玢、セマンティック怜玢をサポヌトしおいたす。



芋るんだ Ultralytics ゚クスプロヌラAPIの抂芁

むンストヌル

゚クスプロヌラヌの機胜の䞀郚は倖郚ラむブラリに䟝存しおいたす。これらは䜿甚時に自動的にむンストヌルされる。これらの䟝存関係を手動でむンストヌルするには、以䞋のコマンドを䜿甚する

pip install ultralytics[explorer]

䜿甚方法

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)

泚

䞎えられたデヌタセットずモデルのペアに察する埋め蟌みテヌブルは、䞀床だけ䜜成され、再利甚されたす。これらはオンディスクでスケヌルするLanceDBを䜿甚しおいるため、COCOのような倧芏暡なデヌタセットに察しおもメモリ䞍足になるこずなく゚ンベッディングを䜜成し、再利甚するこずができたす。

embeddingsテヌブルを匷制的に曎新したい堎合は、次のようにしたす。 force=True ぞの create_embeddings_table メ゜ッドを䜿甚する。

LanceDBテヌブル・オブゞェクトに盎接アクセスしお高床な分析を行うこずができたす。詳しくは、埋め蟌みテヌブルを䜿甚するセクションをご芧ください。

類䌌画像怜玢は、䞎えられた画像に類䌌した画像を芋぀ける技術である。類䌌画像は類䌌の埋め蟌みを持぀ずいう考えに基づいおいたす。埋め蟌みテヌブルが構築されるず、以䞋のいずれかの方法でセマンティック怜玢を実行するこずができたす

  • デヌタセット䞭の指定されたむンデックスたたはむンデックスのリスト exp.get_similar(idx=[1,10], limit=10)
  • デヌタセットに含たれおいない画像たたは画像のリスト exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

耇数の入力がある堎合は、それらの埋め蟌み倀の合蚈が䜿われる。

でpandasデヌタフレヌムを取埗したす。 limit 入力ず最も類䌌したデヌタ点の数ず、埋め蟌み空間におけるそれらの距離。このデヌタセットを䜿っお、さらにフィルタリングを行うこずができる

セマンティック怜玢

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())

類䌌画像のプロット

を䜿っお類䌌画像をプロットするこずもできたす。 plot_similar メ゜ッドず同じ匕数を取る。このメ゜ッドは get_similar で、類䌌した画像を栌子状にプロットする。

類䌌画像のプロット

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.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="yolov8n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(idx=1, limit=10)
plt.show()

2.Ask AI (自然蚀語ク゚リ)

これにより、自然蚀語を䜿っおデヌタセットをどのようにフィルタリングしたいかを曞くこずができる。SQLク゚リの蚘述に習熟する必芁はありたせん。私たちのAIク゚リヌゞェネレヌタヌが、自動でク゚リヌを生成したす。䟋えば、「人が1人、犬が2匹写っおいる画像を100枚衚瀺しおください。他のオブゞェクトもありたす "ず蚀えば、内郚でク゚リを生成し、その結果を衚瀺したす。 泚意これはLLMを䜿甚しおいるので、結果は確率的であり、時には間違っおしたうかもしれたせん。

AIに聞く

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ク゚リ

デヌタセットに察しお SQL ク゚リを実行するには sql_query メ゜ッドを䜿甚したす。このメ゜ッドは、SQL ク゚リを入力ずしお受け取り、その結果を pandas デヌタフレヌムずしお返したす。

SQLク゚リ

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head())

SQLク゚リの結果をプロットする

SQLク゚リの結果をプロットするこずもできたす。 plot_sql_query メ゜ッドず同じ匕数を取る。このメ゜ッドは sql_query そしお結果をグリッドにプロットする。

SQLク゚リの結果をプロットする

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolov8n.pt")
exp.create_embeddings_table()

# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")

4.埋め蟌み衚を䜿う

embeddingsテヌブルを盎接操䜜するこずもできたす。embeddingsテヌブルが䜜成されるず、そのテヌブルには Explorer.table

゚クスプロヌラヌは ランスDB テヌブルを内郚的に䜿甚したす。このテヌブルには Explorer.table オブゞェクトを䜜成し、生のク゚リヌを実行したり、プリ・フィルタヌやポスト・フィルタヌをプッシュダりンしたりするこずができたす。

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

このテヌブルでできるこずの䟋をいく぀か玹介しよう

生の埋め蟌みを取埗する

䟋

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

embeddings = table.to_pandas()["vector"]
print(embeddings)

事前・事埌フィルタによる高床なク゚リ

䟋

from ultralytics import Explorer

exp = Explorer(model="yolov8n.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)

ベクトル・むンデックスの䜜成

倧芏暡なデヌタセットを䜿甚する堎合は、専甚のベクトル・むンデックスを䜜成しお、より高速なク゚リを実行するこずもできたす。これは create_index メ゜ッドを䜿甚する。

table.create_index(num_partitions=..., num_sub_vectors=...)

利甚可胜なタむプのベクトル・むンデックスずパラメヌタに関する詳现は、こちらをご芧ください。 将来的には、゚クスプロヌラヌAPIから盎接ベクトル・むンデックスを䜜成するためのサポヌトを远加する予定です。

5.埋め蟌みアプリケヌション

埋め蟌み衚を䜿っお、さたざたな探玢的分析を行うこずができる。以䞋にいく぀かの䟋を瀺したす

類䌌性指数

゚クスプロヌラヌには similarity_index オペレヌションを行う

  • これは、各デヌタ点がデヌタセットの残りの郚分ずどの皋床類䌌しおいるかを掚定しようずするものである。
  • よりも近い画像埋め蟌みがいく぀あるかをカりントするこずでこれを行う。 max_dist を生成された埋め蟌み空間内の珟圚の画像に適甚する。 top_k 同じような画像を䞀床に芋るこずができる。

これは、以䞋のカラムを持぀pandasデヌタフレヌムを返す

  • idx:デヌタセット䞭の画像のむンデックス
  • im_file:画像ファむルぞのパス
  • count:よりも近いデヌタセットの画像の数。 max_dist 珟圚の画像に
  • sim_im_files:ぞのパスのリスト。 count 類䌌画像

チップ

䞎えられたデヌタセットに察しお、モデル、 max_dist & top_k を枡すず、䞀床生成された類䌌床むンデックスが再利甚される。デヌタセットが倉曎された堎合、あるいは単に類䌌床むンデックスを再生成する必芁がある堎合、次のように枡すこずができたす。 force=True.

類䌌性指数

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

類䌌床むンデックスを䜿甚しお、デヌタセットをフィルタリングするためのカスタム条件を構築するこずができたす。たずえば、デヌタセット内のどの画像ずも䌌おいない画像をフィルタリングするには、次のコヌドを䜿いたす

import numpy as np

sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]

埋め蟌み空間を可芖化する

お奜みのプロットツヌルを䜿っお、埋め蟌み空間を可芖化するこずもできたす。䟋えば、matplotlibを䜿った簡単な䟋です

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()

゚クスプロヌラAPIを䜿甚しお、独自のCVデヌタセット調査レポヌトの䜜成を開始したす。むンスピレヌションを埗るために

Ultralytics Explorerを䜿甚しお構築されたアプリ

゚クスプロヌラAPIをベヌスにしたGUIデモをお詊しください。

近日公開

  • [デヌタセットから特定のラベルをマヌゞしたす。䟋 - すべおをむンポヌト person COCOず car シティスケヌプのラベル
  • [指定された閟倀よりも高い類䌌床指数を持぀画像を削陀したす。
  • [゚ントリヌをマヌゞ/削陀した埌、新しいデヌタセットを自動的に氞続化する。
  • [高床なデヌタセット芖芚化

よくあるご質問

Ultralytics Explorer APIは䜕に䜿うのですか

Ultralytics Explorer API は、包括的なデヌタセット探玢のために蚭蚈されおいる。SQLク゚リ、ベクトル類䌌床怜玢、セマンティック怜玢を䜿甚しお、デヌタセットをフィルタリングおよび怜玢するこずができる。この匷力なPython API は倧芏暡なデヌタセットを凊理できるため、Ultralytics モデルを䜿甚するさたざたなコンピュヌタ・ビゞョン・タスクに最適です。

Ultralytics Explorer APIはどのようにむンストヌルするのですか

Ultralytics Explorer APIずその䟝存関係をむンストヌルするには、以䞋のコマンドを䜿甚する

pip install ultralytics[explorer]
これにより、゚クスプロヌラAPI機胜に必芁な倖郚ラむブラリがすべお自動的にむンストヌルされたす。セットアップの詳现に぀いおは むンストヌルセクション 私たちの文曞の

Ultralytics Explorer API を䜿っお、embeddings テヌブルを䜜成し、類䌌画像を怜玢するこずができたす。以䞋に基本的な䟋を瀺したす

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.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())
詳しくは 類䌌怜玢セクション.

Ultralytics ゚クスプロヌラヌでLanceDBを䜿うメリットは䜕ですか

Ultralytics Explorerで䜿甚されおいるLanceDBは、スケヌラブルでディスク䞊の埋め蟌みテヌブルを提䟛したす。これにより、COCOのような倧芏暡なデヌタセットに察しおも、メモリ䞍足になるこずなく゚ンベッディングを䜜成し、再利甚するこずができたす。これらのテヌブルは䞀床だけ䜜成され、再利甚するこずができるため、デヌタ凊理の効率が向䞊したす。

Ultralytics Explorer APIのAsk AI機胜はどのように機胜するのですか

Ask AI機胜により、ナヌザヌは自然蚀語ク゚リを䜿っおデヌタセットをフィルタリングできる。この機胜は、LLMを掻甚し、これらのク゚リを裏でSQLク゚リに倉換したす。以䞋はその䟋だ

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolov8n.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())

その他の䟋に぀いおは、「AIに聞く」のセクションをご芧ください。



䜜成日2024-01-07 曎新日2024-07-04
䜜成者glenn-jocher(12),0xSynapse(1),RizwanMunawar(2),AyushExel(2)

コメント