首页 > 其他分享 >通义千问( 五 ) 图片分析

通义千问( 五 ) 图片分析

时间:2024-08-25 08:55:30浏览次数:13  
标签:千问 通义 alibaba dashscope import message com 图片

5.多模态

5.1.图片分析

5.1.1.介绍

通义千问VL(Qwen-VL)是阿里云研发的大规模视觉语言模型(Large Vision Language Model, LVLM),可以以图像、文本、检测框作为输入,并以文本和检测框作为输出,支持中文多模态对话及多图对话,并具有更好的性能,是首个支持中文开放域的通用定位模型和首个开源448分辨率的大规模视觉语言模型。

通义千问VL模型主要有以下特点:

  1. 强大的性能:在四大类多模态任务的标准英文测评中(Zero-shot Captioning/VQA/DocVQA/Grounding)上,均取得同等通用模型大小下最好效果;
  2. 多语言对话模型:天然支持英文、中文等多语言对话,端到端支持图片里中英双语的长文本识别;
  3. 多图交错对话:支持多图输入和比较,指定图片问答,多图文学创作等;
  4. 首个支持中文开放域定位的通用模型:通过中文开放域语言表达进行检测框标注;
  5. 细粒度识别和理解:相比于目前其它开源LVLM使用的224分辨率,Qwen-VL是首个开源的448分辨率的LVLM模型。更高分辨率可以提升细粒度的文字识别、文档问答和检测框标注。

升级的Qwen-VL(qwen-vl-plus/qwen-vl-max)模型现有几大特点:

  1. 大幅增强了图片中文字处理能力,帮助您有效提取、整理、总结文字信息。
  2. 增加可处理分辨率范围,各分辨率和长宽比的图都能处理,大图和长图能看清。
  3. 增强视觉推理和决策能力,适于搭建视觉Agent,让大模型Agent的想象力进一步扩展。
  4. 升级看图做题能力,拍一拍习题图发给Qwen-VL,大模型能帮用户一步步解题。

5.1.2.模型概览

用户以文本和url形式的图片形式输入包含多轮对话历史和当前指令的信息序列(messages),到返回模型生成的回复作为输出。在这一过程中,文本将被转换为语言模型可以处理的token序列。

图片将被按照图片像素转换为token序列,28*28的像素对应一个token,如果长宽不是28的整数倍,则向上取到28的整数倍计算,一张图最少包含4个token,最多包含1280个token。

模型名计费单价基础限流
qwen-vl-plus0.008元 / 1,000 tokens以下条件任何一个超出都会触发限流:
流量 ≤ 60 QPM,每分钟处理不超过60个完整的请求;
Token消耗 ≤ 100,000 TPM,每分钟消耗的Token数目不超过100,000。
qwen-vl-max0.02元 / 1,000 tokens以下条件任何一个超出都会触发限流:
流量 ≤ 15 QPM,每分钟处理不超过15个完整的请求;
Token消耗 ≤ 25,000 TPM,每分钟消耗的Token数目不超过25,000。

5.1.3.图片限制

对于输入的图片有以下限制:

  1. 图片文件大小不超过10 MB
  2. 图片总的像素数不超过 1048576,这相当于一张长宽均为 1024 的图片总像素数
  3. 单次最多支持上传10张图片。

图片支持的格式:

图片格式Content Type文件扩展名
BMPimage/bmp.bmp
JPEGimage/jpeg.jpeg, .jpg
PNGimage/png.png
TIFFimage/tiff.tif, .tiff
WEBPimage/webp.webp

5.1.4.线上图片

import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.Collections;

@RestController
@RequestMapping("/tongyi")
public class AigcVlController {

    @Value("${tongyi.api-key}")
    private String apiKey;


    public  MultiModalConversationResult simpleMultiModalConversationCall(String message)
            throws ApiException, NoApiKeyException, UploadFileException {
        // 设置API密钥
        Constants.apiKey = apiKey;

        MultiModalConversation conv = new MultiModalConversation();

        MultiModalMessage userMessage = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"),
                        Collections.singletonMap("text", message)))
                .build();

        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MultiModalConversation.Models.QWEN_VL_PLUS)
                .message(userMessage)
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(result);

        return result;
    }


    @RequestMapping("/aigc/vl")
    public String callBase(@RequestParam(value = "message", required = false, defaultValue = "这是什么?") String message) throws NoApiKeyException, InputRequiredException {

        try {
            MultiModalConversationResult result = simpleMultiModalConversationCall(message);
            return result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text").toString();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        return null;
    }
}

5.1.4.1.测试
GET http://localhost:8081/tongyi/aigc/vl

HTTP/1.1 200 

这张图片显示了一位女士和她的狗在海滩上。她们似乎正在享受彼此的陪伴,狗狗坐在沙滩上伸出爪子与女士握手或互动。背景是美丽的日落景色,海浪轻轻拍打着海岸线。

请注意,我提供的描述基于图像中可见的内容,并不包括任何超出视觉信息之外的推测性解释。如果您需要更多关于场景、物体或其他细节的信息,请告诉我!

5.1.5.本地图片

可以通过本地文件进行接口调用。在传入文件路径时,请根据您所使用的系统和文件的路径进行调整,详情如下表所示。

系统传入的文件路径示例
Linux或macOS系统file://{文件的绝对路径}file:///home/images/test.png
Windows系统file:///{文件的绝对路径}file:///D:/images/test.png

代码案例


import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.HashMap;

@RestController
@RequestMapping("/tongyi")
public class AigcVlLocalController {

    @Value("${tongyi.api-key}")
    private String apiKey;


    public MultiModalConversationResult callWithLocalFile(String message)
            throws ApiException, NoApiKeyException, UploadFileException {
        // 设置API密钥
        Constants.apiKey = apiKey;

        String localFilePath1 = "file:///D:/upload/图片1.png";
        String localFilePath2 = "file:///D:/upload/图片2.png";
        // 创建会话
        MultiModalConversation conv = new MultiModalConversation();

        MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
                .content(Arrays.asList(
                        new HashMap<String, Object>(){{ put("image", localFilePath1); } },
                        new HashMap<String, Object>(){{ put("image", localFilePath2); } },
                        new HashMap<String, Object>(){{ put("text", message); } } )
                )
                .build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(MultiModalConversation.Models.QWEN_VL_PLUS)
                .message(userMessage)
                .build();

        MultiModalConversationResult result = conv.call(param);

        return result;
    }


    @RequestMapping("/aigc/local")
    public String callBase(@RequestParam(value = "message", required = false, defaultValue = "这是什么?") String message) throws NoApiKeyException, InputRequiredException {

        try {
            MultiModalConversationResult result = callWithLocalFile(message);
            return result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text").toString();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        return null;
    }
}

5.1.5.1.测试
###
GET http://localhost:8081/tongyi/aigc/local?message=10分满分,两张图片的相似度你给几分
    
    
    
###
GET http://localhost:8081/tongyi/aigc/local?message=提取第一张图片上的文字

标签:千问,通义,alibaba,dashscope,import,message,com,图片
From: https://blog.csdn.net/yuanchun05/article/details/141309941

相关文章

  • 如何创建图片按钮
    文章目录1.概念介绍2.使用方法2.1filled风格2.2filledTonal风格2.3outlined风格3.代码与效果3.1示例代码3.2运行效果4.内容总结我们在上一章回中介绍了"如何修改NavigationBar组件的形状"相关的内容,本章回中将介绍IconButtion组件.闲话休提,让我们一起Talk......
  • 【Python爬虫】批量爬取图片的简单案例
    @目录1.原理2.寻找批量的图片URL的储存地址2.1百度2.2搜狗2.3必应2.4总结3.处理存储图片URL的请求头4.完整demo1.原理网页中的图片有自己的URL,访问这些URL可以直接得到图片,譬如,访问下面这个URL,你就能得到一张图片:https://img-blog.csdnimg.cn/a3bad4725ba94301b7cba7dd820......
  • Python爬虫案例二:获取虎牙主播图片(动态网站)
    爬虫流程:优先假设是JSON数据,抓包方式只能翻页JSON数据HTML数据1.异步数据(即先返回HTML,再返回目标的数据,只是触发了JSON请求),不在HTML中2.不能刷新网页,直接翻页测试链接:https://live.huya.com/源代码: importrequests,json,osclassTwo(object):def__ini......
  • 微信小程序根据本地缓存图片路径,生成缩略图的方法
    公共方法js文件/***生成缩略图*@paramcanvasIdcanvas容器的id*@paramfileUrl缓存在本地图片的路径*@paramthumbnailRange期待生成的缩略图尺寸范围,默认150,即宽或高不会超过150px*/functiongenerateThumbnail(canvasId,fileUrl,thumbnailRange=150){......
  • 图搜v1.1.3 - 图库几千张图片再也不怕了
    图搜是一款使用先进的自然语言处理技术的相册搜索助手,支持通过简单的描述来搜索相册中的图片,如“草丛中的猫”或“公园里的狗”。这款应用完全免费、无需内购,且完全离线使用,保证了用户数据的安全与私密性。它的高效索引系统确保即使是数千张照片也能在一秒钟内呈现搜索结果......
  • IDEA更换背景图片
     DEA如何更换背景图片在IDEA编辑器中点击【Help】–》【FindAction…】快捷键为【CTRL+SHILF+A】。   在打开的窗口内搜索【SetBackgroundImage】并点击找到的选项。 选择浏览一张要更改成背景的图片,这里可以对背景的透明度,样式进行修改。修改完后点击【OK】按......
  • 表达式用法,ref定义响应式,v-bind指令和图片轮播结合,class和style内联样式绑定,事件监听
    表达式用法当前时间,随机数,返回值,判断取值ref响应式使用ref赋值和普通赋值v-bind指令和图片轮播结合(v-bind可以省略成":")class和style内联样式绑定数据绑定一个常见需求是操作元素的class列表和它的内联样式两个class会用到这两个的样式,用v-bind对class里面的......
  • 90%的人都在用这7个图片转pdf技巧,转换速度很快!
    图片怎么转换成pdf格式?图片和pdf格式是两种完全不一样的格式,但是如果想要将图片转换成pdf格式还是蛮容易的,常见的方法就有数十种了。本文整理了几种常见的图片转pdf的方法,包括图片转pdf在线方法,有需要的朋友可以往下看看!方法一:使用金舟PDF转图片金舟PDF转图片是适用于Windo......
  • 读取本地图片
    读取本地图片代码实现build.cs添加ImageWrapper模块,使用时注意添加相关头文件PublicDependencyModuleNames.AddRange(newstring[]{"Core","CoreUObject","Engine","InputCore","ImageWrapper"});支持图片类型pngjpgbmpicoexricns......
  • 网站图片显示错误怎么办
    打开HTML文件:使用文本编辑器打开包含图片的HTML文件。检查图片路径:寻找<img>标签,检查src属性是否正确指向图片文件。例如:html <imgsrc="images/example.jpg"alt="ExampleImage">验证路径:确认路径是否正确,如果是相对路径,确保它是相对于HTML文件的位......