python-3.x 如何使用Jina在同一语义空间中投影相似的文本和图像数据

zujrkrfu  于 2023-01-27  发布在  Python
关注(0)|答案(1)|浏览(234)

有没有人可以告诉我,如何使用Jina开源软件在同一个语义空间中投影相似的文本和图像数据?
我一直在互联网上探索,并没有找到上面问题的答案。将感谢任何帮助。

iqjalb3h

iqjalb3h1#

TL;DR:Jina的CLIP-as-service可以说是最好的选择。
让我先分享一个实时的用例实现来更详细地回答这个问题。您可以通过访问这个开放平台,在不到30秒的时间内亲自体验它:ActInsight,从移动终端(或笔记本电脑)。我们在本月早些时候的一次黑客马拉松中写的。你可以拍任何照片(例如,办公室的空调设备、鲜花、公司大楼、任何内容...),平台将为您提供相关的见解(在我们的例子中与气候变化行动有关)。重点是我们已经完全实现了你所描述的--将文本和图像数据投影到同一个语义空间中,并找到“最接近”(在余弦距离的意义上)匹配-这样你就可以对最终结果有一个感觉。
实现这种“魔力”的底层模型是CLIP,它是OpenAI的产物。
CLIP:连接文本和图像-我们引入了一个名为CLIP的神经网络,它可以从自然语言监督中有效地学习视觉概念。CLIP可以应用于任何视觉分类基准,只需提供要识别的视觉类别的名称,类似于GPT-2和GPT-3的“零镜头”功能。
现在,从开发人员的Angular 来看,您可以直接在生产环境中部署CLIP(多克,Kubernetes......)你自己,或者您可以利用Jina的CLIP-as-service开源工作的“生产级的惊人之处”。注意,Jina团队所取得的成就远不止是Python对CLIP的 Package 。他们为开发人员在云中部署生产工作负载时必须面对的传统棘手问题打包了许多优雅的解决方案-所有这些解决方案都是通过CLIP-as-service开源实现的。
对于ActInsight,我使用了“原始”OpenAI API和Jina CaaS的组合,原因与我的体系结构有关,但您不必这样做-我认为Jina几乎是您所需要的全部。
最后一个重要提示:CLIP允许你基本上连接测试和图像,但是这些模型有不同的风格。你必须确保你的嵌入是在相同的语义空间中生成的,通过对不同的输入使用相同的模型。这也意味着要确保你的嵌入(向量)都具有相同的形状-以便在以后对它们进行比较/排序。Jina让你很容易地选择你的模型,但是我使用chart down this page来理解它们之间的权衡,它也向你展示了CLIP基本上是目前最好的:
在我们测试的26个不同传输数据集中的20个上,最好的CLIP模型优于最好的公开可用的ImageNet模型NoisyStudentEfficientNet-L2,23。
首先,我建议你使用“ViT-L/14@336px”模型,这是目前最好的模型,它将把你的文本/图像投影到一个768维的空间中,这意味着在这种情况下,你的向量都应该是(1, 768)的形状。

相关问题