Roboflow数据管理和注释解决方案的新功能

机器学习领域,向量嵌入技术已经成为一个热门话题。Roboflow利用多模态CLIP嵌入技术来增强数据集搜索功能。现在,可以通过Roboflow API访问数据集的CLIP嵌入。本教程将指导如何从Roboflow加载数据集的嵌入,使用Scikit-learn的t-SNE算法进行分析,并使用Bokeh创建交互式图表来可视化它们。

在Google Colab中打开配套笔记本

为了跟随本教程,可以在Google Colab中打开配套的笔记本(或者从笔记本仓库中本地拉取——如果喜欢这篇文章,别忘了给那个仓库点个赞)。

Roboflow加载CLIP向量

Roboflow的新搜索API将用户界面的强大数据集搜索功能暴露给程序化访问。不仅可以通过类别、分割和标签进行语义搜索,还可以检索项目中图像的CLIP向量。访问CLIP使能够执行强大的操作,如图像相似性搜索、聚类和异常检测。在本教程中,将可视化CLIP聚类,以尝试在数据集中找到标记错误和意外的图像。

response = requests.post( search_url, json={ 'prompt': closest_to_text, 'limit': 250, 'offset': offset, 'fields': ['id', 'owner', 'name', 'split', 'annotations', 'embedding'] }, headers={ 'Authorization': f'Bearer {roboflow.load_roboflow_api_key()}' } )

在这个过程中,得到了一个包含所有搜索响应的images数组,包括感兴趣的CLIP向量。

使用Scikit-learn的t-SNE算法

接下来,需要将768维的CLIP向量减少到更易于在屏幕上显示的尺寸。使用t-SNE算法为每个向量在二维空间中分配一个点,同时保持它们之间的相对距离。这将“相似”的图像放置在一起。

tsne = TSNE(n_components=2, verbose=1) z = tsne.fit_transform(np.array([image['embedding'] for image in filtered_images]))

这个算法是迭代的,根据数据集的大小,可能需要一两分钟才能完成。

使用Bokeh进行可视化

现在将使用一个名为Bokeh的库创建一个交互式可视化。首先,给每个数据点一个类别(将使用这个来为图表中的点着色)。脚本中内置了3个选项,但可以自定义它,以可视化数据集中的任何特征。

图像中的类别可视化了数据集包含的不同类型对象。应该期望颜色彼此聚集在一起,因为它们应该是语义上相似的。如果看到异常值,这可能表示标记错误或有趣的边缘情况需要查看。

对象计数显示了每个图像中标记的对象数量。这对于查看分布很有用。例如,没有标记对象的图像可能表明在标记时遗漏了某些内容。

训练/验证/测试分割显示了训练和测试数据的相似性。如果它们非常不连续,这可能表明指标没有测量认为的内容,模型可能在野外挣扎。

可以使用图表下方的按钮来过滤显示哪些聚类。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485