【API】免费调用Qwen-vl2对图像打标

首次调用通义千问API_大模型服务平台百炼(Model Studio)-阿里云帮助中心icon-default.png?t=O83Ahttps://help.aliyun.com/zh/model-studio/getting-started/first-api-call-to-qwen?spm=a2c4g.11186623.help-menu-2400256.d_0_1_0.8c693048HxtUzZ&scm=20140722.H_2840915._.OR_help-T_cn~zh-V_1

一、开通账号

  1. 注册账号:如果没有阿里云账号,您需要先注册阿里云账号。

  2. 开通百炼:前往百炼控制台,如果页面顶部显示以下消息,您需要开通百炼的模型服务,以获得免费额度。如果未显示该消息,则表示您已经开通。

    image

  3. 获取API Key:在控制台的右上角选择API-KEY,然后创建API Key用于通过API调用大模型。

    image

二、配置环境

2.1 linux系统配置API Key到环境变量

(也可跳过,直接输入,复制代码过程中不安全)

echo "export DASHSCOPE_API_KEY='YOUR_DASHSCOPE_API_KEY'" >> ~/.bashrc

执行以下命令,使变更生效。

source ~/.bashrc

重新打开一个终端窗口,运行以下命令检查环境变量是否生效。

echo $DASHSCOPE_API_KEY

2.2 windows系统cmd添加

添加永久性环境变量

如果您希望API Key环境变量在当前用户的所有新会话中生效,可以按如下操作。

  1. 在CMD中运行以下命令。

    # 用您的 DashScope API Key 代替 YOUR_DASHSCOPE_API_KEY
    setx DASHSCOPE_API_KEY "YOUR_DASHSCOPE_API_KEY"
  2. 打开一个新的CMD窗口。

  3. 在新的CMD窗口运行以下命令,检查环境变量是否生效。

    echo %DASHSCOPE_API_KEY%

2.3  安装 依赖 (之前需要安装python)

pip3 install -U openai
# pip3 install -U dashscope

三、测试代码 (可对一个文件夹图片打标)

3.1 文字智能助手 (官方hello-world)

import os
from openai import OpenAItry:client = OpenAI(# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",# api_key="sk-xxx"api_key=os.getenv("DASHSCOPE_API_KEY"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",)completion = client.chat.completions.create(model="qwen-plus",  # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/modelsmessages=[{'role': 'system', 'content': 'You are a helpful assistant.'},{'role': 'user', 'content': '你是谁?'}])print(completion.choices[0].message.content)
except Exception as e:print(f"错误信息:{e}")print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")

3.2  上传本地图片并进行打标 (记得改文件类型)

from openai import OpenAI
import os
import base64#  base 64 编码格式
def encode_image(image_path):with open(image_path, "rb") as image_file:return base64.b64encode(image_file.read()).decode("utf-8")input_image_path = r"C:\Users\admin\Downloads\anytext.png"
base64_image = encode_image(input_image_path)
client = OpenAI(# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"api_key=os.getenv('DASHSCOPE_API_KEY'),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(model="qwen-vl-max-latest",messages=[{"role": "user","content": [{"type": "image_url",# 需要注意,传入BASE64,图像格式(即image/{format})需要与支持的图片列表中的Content Type保持一致。"f"是字符串格式化的方法。# PNG图像:  f"data:image/png;base64,{base64_image}"# JPEG图像: f"data:image/jpeg;base64,{base64_image}"# WEBP图像: f"data:image/webp;base64,{base64_image}""image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}, },{"type": "text", "text": "描述这张图片,分别用中文,英文2种方式"},],}],
)
print(completion.choices[0].message.content)

3.2.1 本地的图片与运行结果结果

3.3  上传一张图片or 对一个文件夹打标,将图片打标后保存到txt

    one_img_qwenvl_2_txt(input_image_path)    # 单张图片
    dir_img_qwenvl_2_txt(r"D:\code\test")           # 处理文件夹

其中,下面代码可有针对性指导打标结果,可以输出制定格式

 {"type": "text", "text": "详细描述这张图片。分别用中文,英文2种方式描述,中文和英文间,用\n隔开"},

from openai import OpenAI
import os
import base64
import time#  base 64 编码格式
def encode_image(image_path):with open(image_path, "rb") as image_file:return base64.b64encode(image_file.read()).decode("utf-8")def img2text(input_image_path):img_type=input_image_path.rsplit('.')[1]  # 从右边的第一个‘.’分割一次, “xxxx/xx.png”=["xxxx/xx/xx.","png" ],所以取第2个元素print('img_type:',img_type)base64_image = encode_image(input_image_path)client = OpenAI(# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"api_key=os.getenv('DASHSCOPE_API_KEY'),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",)completion = client.chat.completions.create(model="qwen-vl-max-latest",messages=[{"role": "user","content": [{"type": "image_url",# 需要注意,传入BASE64,图像格式(即image/{format})需要与支持的图片列表中的Content Type保持一致。"f"是字符串格式化的方法。# PNG图像:  f"data:image/png;base64,{base64_image}"# JPEG图像: f"data:image/jpeg;base64,{base64_image}"# WEBP图像: f"data:image/webp;base64,{base64_image}""image_url": {"url": f"data:image/{img_type};base64,{base64_image}"}, },{"type": "text", "text": "详细描述这张图片。分别用中文,英文2种方式描述,中文和英文间,用\n隔开"},],}],)content=completion.choices[0].message.contentprint(content)return contentdef write_txt(content,name,out_dir='./'):with open(f'{out_dir}/{name}.txt', 'w') as f:f.write(content)def one_img_qwenvl_2_txt(input_image_path):t1=time.time()img_dir=os.path.dirname(input_image_path)content=img2text(input_image_path)name=os.path.basename(input_image_path).rsplit('.')[0]  # 取文件名,去掉后缀# print('img_dir:file_name',img_dir,name)cn_text,en_text=content.split('\n') # 根据输出结果进行解析write_txt(en_text,name,img_dir)print(f'img {name} cost time:',round(time.time()-t1,2),"秒")return cn_text,en_textdef dir_img_qwenvl_2_txt(img_dir):img_list=[  file for file in os.listdir(img_dir)  if  file.endswith((".jpg", ".png", ".jpeg", ".webp"))]t0=time.time()for img_file in img_list:# print('img_file',img_file)input_image_path=os.path.join(img_dir,img_file)cn_text,en_text=one_img_qwenvl_2_txt(input_image_path)  print('Dir cost time:',round(time.time()-t0,2),"秒")if __name__ == '__main__':input_image_path = r"D:\code\0train\feij.png"one_img_qwenvl_2_txt(input_image_path)  # 单张图片dir_img_qwenvl_2_txt(r"D:\code\test")  # 处理文件夹

3.3.1  对文件夹打标结果

log

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF 371A.K-Periodic Array(Java实现)

题目分析 这里的意思是一共n个值每k个一组循环,最少改变多少个值就能让循环相同 思路分析 我在这里首先想的是二维数组方便观察循环,依据题目即为每一竖列比较,哪一个值出现的最少那么那就是需要更改的次数,(此题在这儿不考虑需要…

信息科技伦理与道德3:智能决策

1 概述 1.1 发展历史 1950s-1980s:人工智能的诞生与早期发展热潮 1950年:图灵发表了一篇划时代的论文,并提出了著名的“图灵测试”;1956年:达特茅斯会议首次提出“人工智能”概念;1956年-20世纪70年代&a…

一路相伴,非凸科技助力第49届ICPC亚洲区决赛

2024年12月27日-29日,第49届国际大学生程序设计竞赛亚洲区决赛在西北工业大学圆满举行。非凸科技再次作为EC Final的主要赞助方,鼎力支持这群心怀梦想的青年才俊,激励他们勇攀科技高峰,实现创新突破。 EC Final参赛名额主要由当…

MPLS原理及配置

赶时间可以只看实验部分 由来:90年代中期,互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发,但由于硬件技术存在限制导致转发性能低,查表转发成为了网络数据转发的瓶颈。 因此,旨在提高路由器转发速度的MPL…

《机器学习》——TF-IDF(关键词提取)

文章目录 TF-IDF简介TF-IDF应用场景TF-IDF模型模型参数主要参数 TF-IDF实例实例步骤导入数据和模块处理数据处理文章开头和分卷处理将各卷内容存储到数据帧jieba分词和去停用词处理 计算 TF-IDF 并找出核心关键词 TF-IDF简介 TF - IDF(Term Frequency - Inverse Do…

【计算机网络】窥探计网全貌:说说计算机网络体系结构?

标签难度考察频率综合题⭐⭐⭐60% 这个问题在计算机网络知识体系中是一个比较重要的问题,只有完整地了解计算机网络的体系结构才能清晰地认识网络的运行原理。 在回答这个问题时,笔者认为有几个比较重要的点: 首先一定要分清楚前置条件&am…

【前端】【CSS3】基础入门知识

目录 如何学习CSS 1.1什么是CSS​编辑 1.2发展史 1.三种导入方式 1.1、行内样式 1.2、外部样式 1.3、嵌入方式 2.选择器 2.1、基本选择器 (1)元素选择器 (2)类选择器 (3)id选择器:必…

【解决】okhttp的java.lang.IllegalStateException: closed错误

问题 Android 使用OKHttp进行后端通信,后端处理结果,反馈给前端的responseBody中其实有值,但是一直报异常,后来才发现主要是OkHttp请求回调中response.body().string()只能有效调用一次,而我使用了两次: 解…

从硬件设备看Linux

一、介绍 DM3730通过各种连接方式连接了各种设备,输入输出设备根据不同的类型大体可 以分为电源管理、用户输人、显示输出、图像采集、存储以及无线设备等。我们可以将DM 3730与这些设备的数据接口分为总线和单一的数据接口总线。总线的显著特点是单个总线上可以连…

【优选算法】DC-Quicksort-Mysteries:分治-快排的算法之迷

文章目录 1.概念解析2.颜色分类3.排序数组4.数组中的第k个最大元素5.库存管理Ⅲ希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 本篇是优选算法之分治-快排,快排可以在更短的时间内完成相同规模数据的排序任务,大大提升了…

浅谈云计算09 | 服务器虚拟化

服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现:探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术,通过在物理硬件与操作系统、应…

解析OVN架构及其在OpenStack中的集成

引言 随着云计算技术的发展,虚拟化网络成为云平台不可或缺的一部分。为了更好地管理和控制虚拟网络,Open Virtual Network (OVN) 应运而生。作为Open vSwitch (OVS) 的扩展,OVN 提供了对虚拟网络抽象的支持,使得大规模部署和管理…

第三十六章 Spring之假如让你来写MVC——拦截器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

CSS 盒模型

盒模型 CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成: 内容区(Content area&#xff…

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…

OpenCV基于均值漂移算法(pyrMeanShiftFiltering)的水彩画特效

1、均值漂移算法原理 pyrMeanShiftFiltering算法结合了均值迁移(Mean Shift)算法和图像金字塔(Image Pyramid)的概念,用于图像分割和平滑处理。以下是该算法的详细原理: 1.1 、均值迁移(Mean …

【数学】概率论与数理统计(五)

文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …

四 BH1750 光感驱动调试2

之前调通了用户态接口,android 使用还是不方便,要包装jni使用。 这里集成了内核 iio 驱动 ,提供 sys-fs 文件接口 可供固件以及 ANDROID 应用层使用 一 驱动集成 : 1.1 dts 修改 修改文件 : kernel/arch/arm64/boot/dts/rockchip/rp-rk3568.dts 在 i2c5 增加设备,如…

Redis持久化双雄

Redis持久化 Redis 的持久化是指将内存中的数据保存到硬盘,以防止服务器宕机导致数据丢失的机制。 redis 提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。 RDB,简…

工业视觉2-相机选型

工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结,具体如下: 一、按芯片类型 CCD相机:采用电荷耦合器件(CC…