clip_as_service学习过程(二)——clip主要的功能

news2024/9/22 15:37:47

参考链接:https://clip-as-service.jina.ai/user-guides/client/#async-encoding

一、encoding()_编码

clip_client提供 encode() 函数,允许您以流和同步/异步方式将句子、图像发送到服务器。这里的编码意味着获取文本或图像的固定长度矢量表示。
encoding()接收两种类型的输入,输入不同,输出的数据类型也随之不同
1、输入可迭代的字符串类型,例如字符串列表,字符串元组,字符串生成器,对应的输出的是numpy.ndarray.
2、输入可迭代的Document数据类型,例如List[Document], DocumentArray, Generator[Document],对应的输出的数据类型是DocumentArray

1、作为文档可迭代对象的输入

类型url格式,包括相对路径,绝对路径http,url等都被视为图片数据,否则视为句子,
下面实例中的’apple.png’为本地的一张图片,'https://bpic.588ku.com/element_origin_min_pic/19/05/24/f862579f1d73afc60967a706238eac6d.jpg’是网络上的一张图片路径,

from clip_client import Client

c = Client('grpc://127.0.0.1:51000')

r = c.encode(
    [
        'she smiled, with pain',
        '追风赶月莫停留,平芜尽处是春山!',
        'apple.png',
        'https://bpic.588ku.com/element_origin_min_pic/19/05/24/f862579f1d73afc60967a706238eac6d.jpg',
        'data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7',
    ]
)
print(r)

输出如下
在这里插入图片描述

2、作为文档可迭代对象的输入

此功能使用 DocArray,它作为上游依赖项一起安装。您不需要单独安装 DocArray。

from clip_client import Client
from docarray import Document
c = Client('grpc://127.0.0.1:51000')

da = [
    Document(text='she smiled, with pain'),
    Document(uri='apple.png'),
    Document(uri='apple.png').load_uri_to_image_tensor(),
    Document(blob=open('apple.png', 'rb').read()),
    Document(uri='https://clip-as-service.jina.ai/_static/favicon.png'),
    Document(
        uri='data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7'
    ),
]

r = c.encode(da)
print("======输出摘要===========")
print(r.summary())
print('=======输出编码==========')
print(r.embeddings)

输出如下
在这里插入图片描述
在这里插入图片描述

3、异步编码

import asyncio

from clip_client import Client
c = Client('grpc://127.0.0.1:51000')


async def another_heavylifting_job():
    # can be writing to database, downloading large file
    # big IO ops
    await asyncio.sleep(3)


async def main():
    t1 = asyncio.create_task(another_heavylifting_job())
    t2 = asyncio.create_task(c.aencode(['hello world'] * 100))
    await asyncio.gather(t1, t2)


asyncio.run(main())

二、ranking() _排序

这个函数的功能是给定一个句子,对多张图片进行排序或给一张图片对多个句子进行排序,此处和我的任务关系不大,就不再赘述

三、Indexing()_索引

ps:感觉像生成一个数据库,向里面存储数据,实例如下

from clip_client import Client
from docarray import Document
c = Client('grpc://127.0.0.1:51000')

da = [
    Document(text='she smiled, with pain'),
    Document(uri='apple.png'),
    Document(uri='apple.png').load_uri_to_image_tensor(),
    Document(blob=open('apple.png', 'rb').read()),
    Document(uri='https://clip-as-service.jina.ai/_static/favicon.png'),
    Document(
        uri='data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7'
    ),
]

r = c.index(da)
print(r.summary())

现在返回结果是一个DocumentArray,我们可以得到他的摘要如下

在这里插入图片描述

四、Searching()_搜索

您可以设置参数(默认值为 )来控制要检索的最相似文档的数量。limit10

import asyncio

from clip_client import Client
from docarray import Document
c = Client('grpc://127.0.0.1:51000')

da = [
    Document(text='she smiled, with pain'),
    Document(text='she smiles, with pain'),
    Document(uri='apple.png'),
    Document(uri='apple.png').load_uri_to_image_tensor(),
    Document(blob=open('apple.png', 'rb').read()),
    Document(uri='https://clip-as-service.jina.ai/_static/favicon.png'),
    Document(
        uri='data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7'
    ),
]

r = c.index(da)
result = c.search(['smile'], limit=100)

print(result['@m', ['text', 'scores__cosine']])

我的输出结果为空,和官方文档给的例子不一样,暂未找到具体原因

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue中使用Echarts】在Vue中优雅的使用Echarts——图表轮播图、Echarts图表组件封装、节流函数优化图表性能

文章目录一、为什么要优雅的使用echarts二、最初的表格组件三、初步的封装四、性能优化一、为什么要优雅的使用echarts 为了提高代码的规范性、复用性,vue中最常用的就是将具有某些功能的代码封装到一个插件。如果没有对插件进行封装,在后期使用插件的时…

2022年区块链白皮书详解及内容分享

目录 导 读 技术创新稳步推进 应用路径日益清晰 产业趋稳资本活跃 多地加快战略布局 白皮书具体内容如下 导 读 区块链是构建信任的基石,是实现信用传递,价值传递的可信网络。区块链聚焦构建安全、可靠的区块链基础设施,让企业、政府快速…

2023北京/上海/广州/深圳NPDP产品经理国际认证招生中

产品经理国际资格认证NPDP是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年…

【算法】动态规划(第五章习题解答)

5 动态规划 5.1 图书馆大门前有 nnn 级台阶, 你每次跨上 111 级或者 222 级, 请问等上 nnn 级台阶总共有多少种不同的方法? 设计一个算法求解上述问题, 尝试写出公式, 说明算法设计思想和时间复杂度. 算法设计:核心思路是函数的递归调用,当处理nnn级台…

drawImage 详解

背景: 在canvas的开发中 总会碰到drawImage这个API,但是里面有9个参数,具体代表什么意思有时候会把自己搞混乱了,特此记录一下,加深影响。 drawImage 方法有三种形态: drawImage(image, dx, dy) 在画布指…

【微服务】Nacos 配置管理模块

目录 一、Nacos 配置管理模块 1、配置⼀致性模型 2、Server 间的⼀致性协议 2.1、有 DB 模式(读写分离架构) 2.2、无 DB 模式 3、SDK 与 Server 的⼀致性协议 3.1、Nacos 1.X 3.2、Nacos 2.X 二、Nacos ⾼可⽤设计 1、全局高可用 2、同城容灾…

工信部部长金壮龙首次提到元宇宙,加快谋划布局未来产业

前言:继工业和信息化部、教育部、文化和旅游部、国家广播电视总局、国家体育总局等五大部门印发《虚拟现实与行业应用融合发展行动计划(2022—2026年)》之后,工信部部长金壮龙在接受新华社采访时提出,要加快人工智能、生物制造、物联网等战略…

质数判定,质因数分解,两种质数筛:埃氏筛、线性筛(欧拉筛)

质数判定 试除法,根据定义,枚举 [2,n−1][2,n-1][2,n−1] 中所有整数,看是否有能整除 nnn 的数 。 事实上,我们没有必要枚举出所有整数 abna\times bnabn,我们就说 aaa 和 bbb 是 nnn 的因数,所以因数都是…

【区块链-智能合约工程师】第四篇:Truffle框架安装和介绍(Windows)

文章目录第一次尝试安装(fail)简单介绍安装配置truffle命令报错:truffle 不是内部或外部命令truffle命令报错:Cannot find module fs/promises第二次尝试安装(fail)安装和配置npm安装ganache-cli节点仿真器…

Java高手速成│实战:应用数据库和GUI开发产品销售管理软件(2)

实战项目:应用数据库和GUI开发产品销售管理软件(2) 01、项目分析 改进实战项目——应用数据库和GUI开发产品销售管理软件(1)的设计和操作,并增加新的功能;利用按钮和文本框实现对数据库编程的…

荣耀破壁2022:蜕变的解法、蓄势的护法、进击的打法

“世上只有一种英雄主义,那就是在认清生活的真相后依然热爱生活”, 罗曼罗兰在《米开朗琪罗传》中写道。人如此,企业亦如此。12月30日,荣耀在新年致辞中提到:“真正的勇敢是在认清真相后依然热爱。”刚过去的2022年&am…

zOffice新年新版本!多项实用功能上线

2022年发生了很多大事,你们在2022年做过最有意义的事情是什么呢?或许这一年我们有很多不足,或许我们依旧还需努力,但是我们都将继续寻找人生的新篇章,在2023年到来之际,联想Filez也祝大家新年快乐&#xff…

都2023年了,诸佬们肯定熟知RabbitMQ了吧

前言:大家好,我是小威,24届毕业生,曾经在某央企公司实习,目前入职某税务公司。本篇文章将记录和分享RabbitMQ相关的知识点。 本篇文章记录的基础知识,适合在学Java的小白,也适合复习中&#xff…

EXCEL的查找:如何按 行号+列号 进行查询, 可用indirect() + match() 或 index() + match()

0 首先用match()等取得行号,列号 如果想根据行号列号,精确查找,另外一个区域的数据,可以用如下方法 INDIRECT("Sheet2!r"&MATCH($C11,Sheet2!$A:$A,0)&"C"&MATCH(D$10,Sheet2!$1:$1,0),FALSE) …

ERR_UNSAFE_PORT浏览器安全问题导致无法访问的解决方案

前言 出发点是Java Agent内存马的自动分析与查杀,实际上其他内存马都可以通过这种方式查杀 本文主要的难点主要是以下三个,我会在文中逐个解答 1.如何dump出JVM中真正的当前的字节码 2.如何解决由于LAMBDA表达式导致非法字节码无法分析的问题 3.如何对…

短视频带货流程话术

现在短视频热度高涨,已经成为人们娱乐休闲的一种方式。短视频人流量大,已经衍生出了直播带货、橱窗链接带货等方式,也吸引了一批想要带货的用户。前言现在短视频热度高涨,已经成为人们娱乐休闲的一种方式。短视频人流量大&#xf…

JDBC(使用java语言操作数据库)

JDBC概念:使用Java语言操作关系型数据库的一套api(可以用一套标准的jdbc操作所有类型的数据库,jdbc是接口,每一个数据库(mysql、oracle、db2...)都去实现jdbc的接口,每个数据库的实现类都不一样…

LeetCode:11. 盛最多水的容器

11. 盛最多水的容器1)题目2)思路3)代码4)结果1)题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x …

2023年1月4日:fastadminApi接口开发项目时遇到的问题

SelectPage selectpage(官方文档&#xff1a;动态下拉(SelectPage) - FastAdmin框架文档 - FastAdmin开发文档) 常规用法 下面介绍一个基础的动态下拉列表示例&#xff0c;如下 <input id"c-name" data-rule"required" data-source"category/sel…

AVS3变换之IST和ISTS

IST&#xff08;Implicit Selected Transform&#xff09;是AVS3中新增的针对intra块的变换工具&#xff0c;IST对intra块提供了两种可分离的变换核&#xff0c;编码器根据RDO选择最优的变换核&#xff0c;但是对于选中的变换核不在码流中传输其索引&#xff0c;而是将其索引隐…