Ultralytics 资源管理器应用程序接口
社区说明 ⚠️
截至 ultralytics>=8.3.10
,Ultralytics Explorer 支持已被弃用。不过不用担心!现在您可以通过 Ultralytics 枢纽HUB 是我们专为简化您的工作流程而设计的无代码直观平台。有了Ultralytics HUB,您可以毫不费力地继续探索、可视化和管理数据,而无需编写任何代码。请务必查看并利用其强大的功能! 🚀
导言
Explorer API 是用于探索数据集的Python API。它支持使用 SQL 查询、矢量相似性搜索和语义搜索过滤和搜索数据集。
观看: Ultralytics 资源管理器应用程序接口概述
安装
资源管理器的部分功能依赖于外部库。这些库会在使用时自动安装。要手动安装这些依赖库,请使用以下命令:
使用方法
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)
如果要强制更新嵌入式数据表,可以通过 force=True
至 create_embeddings_table
方法。
您可以直接访问 LanceDB 表对象来执行高级分析。有关更多信息,请参阅 "使用嵌入式表 "部分。
1.相似性搜索
相似性搜索是一种查找与给定图像相似的图像的技术。它基于相似图像会有相似嵌入的理念。一旦建立了嵌入表,就可以通过以下任何一种方式运行语义搜索:
- 数据集中的给定索引或索引列表:
exp.get_similar(idx=[1,10], limit=10)
- 不在数据集中的任何图像或图像列表:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
如果有多个输入,则使用其嵌入的总和。
你会得到一个带有 limit
与输入数据最相似的数据点数量,以及它们在嵌入空间中的距离。您可以使用该数据集进行进一步筛选
语义搜索
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())
绘制相似图像
您还可以使用 plot_similar
方法。该方法的参数与 get_similar
并将相似图像绘制成网格。
绘制相似图像
2.Ask AI(自然语言查询)
这样,您就可以使用自然语言编写过滤数据集的方法。您不必精通编写 SQL 查询。我们的人工智能查询生成器会自动完成这项工作。例如,您可以说:"给我看 100 张图片,其中正好有一个人和两条狗。也可以有其他对象",然后它就会在内部生成查询并向您显示这些结果。 注意:这是在引擎盖下使用 LLM 工作,因此结果是概率性的,有时可能会出错。
询问人工智能
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 查询
您可以使用 sql_query
方法。该方法将 SQL 查询作为输入,并返回一个包含结果的 pandas 数据帧。
SQL 查询
绘制 SQL 查询结果
您还可以使用 plot_sql_query
方法。该方法的参数与 sql_query
并将结果绘制成网格图。
绘制 SQL 查询结果
4.使用嵌入表
您也可以直接使用嵌入式表格。创建嵌入式数据表后,可以使用 Explorer.table
提示
资源管理器可在 兰斯数据库 表。您可以使用 Explorer.table
对象,并运行原始查询、推送前置和后置过滤器等。
下面是一些使用表格的示例:
获取原始嵌入
示例
利用前置和后置过滤器进行高级查询
示例
创建矢量索引
使用大型数据集时,还可以创建专用的矢量索引,以加快查询速度。使用 create_index
方法。
有关可用的矢量索引类型和参数的更多详情,请点击此处今后,我们将添加直接从资源管理器 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
.
相似指数
您可以使用相似性指数建立自定义条件,以筛选出数据集。例如,您可以使用以下代码筛选出与数据集中其他图像不相似的图像:
可视化嵌入空间
您还可以使用自己选择的绘图工具将嵌入空间可视化。例如,下面是一个使用 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()
开始使用 Explorer API 创建自己的简历数据集探索报告。请查看
使用Ultralytics Explorer 构建应用程序
试用我们基于资源管理器应用程序接口的图形用户界面演示
即将推出
- [ ] 从数据集中合并特定标签。示例 - 全部导入
person
COCO 和car
来自城市景观的标签 - [ ] 删除相似度指数高于给定阈值的图像
- [ ] 在合并/删除条目后自动保存新数据集
- [ ] 高级数据集可视化
常见问题
Ultralytics Explorer API 有什么用途?
Ultralytics Explorer API 专为全面探索数据集而设计。它允许用户使用 SQL 查询、矢量相似性搜索和语义搜索过滤和搜索数据集。这个功能强大的Python API 可以处理大型数据集,是使用Ultralytics 模型执行各种计算机视觉任务的理想选择。
如何安装Ultralytics Explorer API?
要安装Ultralytics Explorer API 及其依赖程序,请使用以下命令:
这将自动安装资源管理器 API 功能所需的所有外部库。有关其他设置详情,请参阅我们文档中的安装部分。
如何使用Ultralytics Explorer API 进行相似性搜索?
您可以使用Ultralytics Explorer API 创建嵌入表并查询相似图像,从而执行相似性搜索。下面是一个基本示例:
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())
更多详情,请访问相似性搜索部分。
在Ultralytics Explorer 中使用 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="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())
有关更多示例,请查看 "询问人工智能 "部分。