【中文视觉语言模型+本地部署 】23.08 阿里Qwen-VL:能对图片理解、定位物体、读取文字的视觉语言模型 (推理最低12G显存+)

news/2024/6/24 7:55:55/文章来源:https://blog.csdn.net/imwaters/article/details/137037524

项目主页:https://github.com/QwenLM/Qwen-VL
通义前问网页在线使用——(文本问答,图片理解,文档解析):https://tongyi.aliyun.com/qianwen/
论文v3. : 一个全能的视觉语言模型
23.10 Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond

Qwen-VL-Chat 部分示例:支持多个图像输入、多轮对话、文本阅读、定位、细粒度识别和理解能力
在这里插入图片描述

一、Qwen-VL简介

Qwen-VL 是阿里基于语言模型Qwen-7B(LLMs),研发的大规模视觉语言模型(Large Vision Language Model, LVLM

Qwen-VL = 大语言模型(Qwen-7B) + 视觉图片特征编码器(Openclip’s ViT-bigG) + 位置感知视觉语言适配器(可训练Adapter)+约15亿训练数据+多轮训练

功能上:

  1. 支持多语言,特别是中英文对话
  2. 支持多个图像输入
  3. 中英双语的长文本识别
  4. 对图片中物体定位 :能够确定与给定描述相对应的具体区域(也称 grounding)
  5. 相对其他视觉模型,进行对图片更多细节识别和理解

在这里插入图片描述

二、本地部署

下载项目到本地,也可手动下载

git clone https://github.com/QwenLM/Qwen-VL.git

2.1 基础环境安装

根据自己显卡驱动,在pytorch官方选择对应的版本: https://pytorch.org/get-started/previous-versions/

conda create -n  qwen-vl  python=3.10  -yconda activate qwen-vl
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=11.8 -c pytorch -c nvidia

2.1.1 其他依赖


conda activate qwen-vl
cd Qwen-VL
pip install -r  requirements.txt

2.1.2 使用modelscope模型

https://modelscope.cn/models/qwen/Qwen-VL-Chat/summary

pip install modelscope -U

2.2 实际测试 (运行后自动下载模型)

启动命令 --server-name 0.0.0.0 表示可局域网访问,输入ip

python web_demo_mm.py --server-name 0.0.0.0

2.2.1 下载模型界面 (约20G)

在这里插入图片描述

2.2.2 启动测试界面

在这里插入图片描述

2.2.3 实测,对图表理解并求和

求和上传图中某一列。
在这里插入图片描述

三、如何训练

阶段一:普通预训练 (pretraining)
14亿大规模、弱标记、网络爬取的图像-文本对(其中3.18亿**中文**文本)

阶段二: 多任务任务微调 (得到Qwen-VL)
约1亿数据,7大任务,图片题词,视觉问答,位置标注、OCR等任务

阶段三: 指令微调(增强对话能力) (训练后得到Qwen-VL-Chat)
将简单的文本图像对,通过手动注释、模型生成和策略串联构建**35W**对话数据
训练过程中混合了多模态和纯文本对话数据,以确保模型在对话能力方面的通用性
在这里插入图片描述

预训练阶段(Pre-training)

数据集从50亿数据中清洗得到14亿数据,其中中文约22.7%,3亿左右

数据集清理标注

  1. 删除纵横比过大的对
  2. 删除图像太小的对
  3. 删除剪辑分数过苛刻的对(特定于数据集)
  4. 删除包含非英语或非汉字的文本对
  5. 删除包含表情符号字符的文本对
  6. 删除文本长度过短或太长的对
  7. 清理文本的 HTML 标记部分
  8. 用某些不规则模式清理文本

在这里插入图片描述

多任务预训练 (Multi-task Pre-training)

约1亿数据,7大任务,图片题词,视觉问答,位置标注、OCR等任务
在这里插入图片描述

训练数据格式 (Data Format of Multi-Task Pre-training)

训练时,黑色文本作为前缀序列,没有损失,蓝色文本作为带有损失的地面真实标签。
在这里插入图片描述

指令微调

训练数据格式

为了更好地适应多图像对话和多个图像输入,我们在不同的图像之前添加了字符串“Picture id:”,其中 id 对应于图像输入对话的顺序。在对话格式方面,我们使用 ChatML (Openai) 格式构建我们的指令调优数据集,其中每个交互的语句都标有两个特殊标记(<im_start> 和<im_end>)以促进对话终止。
在这里插入图片描述

附录

有哪些版本?(商业版本)

模型名模型简介
Qwen-VL-Plus通义千问大规模视觉语言模型增强版。大幅提升细节识别能力和文字识别能力,支持超百万像素分辨率和任意长宽比规格的图像。在广泛的视觉任务上提供卓越的性能。
Qwen-VL-Max通义千问超大规模视觉语言模型。相比增强版,再次提升视觉推理能力和指令遵循能力,提供更高的视觉感知和认知水平。在更多复杂任务上提供最佳的性能。

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

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

相关文章

Linux:入门篇

文章目录 前言1. Linuxd的安装环境2.Linux的简单介绍2.1 新建目录2.2 新建文件 3.指令到底是什么&#xff1f;4.shell命令以及运行原理5.总结 前言 很多人对于Linux的学习总是感觉无法下手&#xff0c;不知道从何开始学习&#xff0c;相信这篇文章将会为你提供一个清晰的思路。…

Python程序设计 多重循环(二)

1.打印数字图形 输入n&#xff08;n<9)&#xff0c;输出由数字组成的直角三角图形。例如&#xff0c;输入5&#xff0c;输出图形如下 nint(input("")) #开始 for i in range(1,n1):for j in range(1,i1):print(j,end"")print()#结束 2.打印字符图形 …

vlanif三层交换机实现不同网络通信

实验目的&#xff1a;通过三层交换机实现不同 网络通信&#xff0c;之前都是路由器进行不同网络转发 拓扑图 内容&#xff1a;左边vlan10&#xff0c;右边vlan20 lsw1接口通过所有vlan lsw2网路vlan10 lsw3网络vlan20 问题点&#xff1a;开始只是配置了最上面LSW1的交换机…

Leetcode 118. 杨辉三角

心路历程&#xff1a; 其实最直观的想法是可以直接按照从上到下的顺序遍历数组&#xff0c;依次计算数组的值即可&#xff0c;相当于DP表格的初始化。 但是也可以从递归的角度进行思考&#xff0c;cache yyds。 注意的点&#xff1a; 1、注意第二层循环col应该是[0, line1) …

C语言中入门到实战————动态内存管理

目录 前言 一、为什么要有动态内存分配 二、 malloc和free 2.1 malloc 2.2 free 三、calloc和realloc 3.1 calloc 3.2 realloc 四. 常见的动态内存的错误 4.1 对NULL指针的解引用操作 4.2 对动态开辟空间的越界访问 4.3 对非动态开辟内存使用free释放 4.4 使…

网络协议学习——HTTPS

目录 ​编辑 一&#xff0c;认识HTTPS 二&#xff0c;加密方式 1&#xff0c;对称式加密 2&#xff0c;非对称式的加密 3&#xff0c;数据指纹&#xff08;数据摘要&#xff09; 4&#xff0c;数据签名 三&#xff0c;HTTPS的工作原理 实现方式 数字证书 一&#xff0c…

5-规范设计(下):commit信息风格迥异、难以阅读,如何规范?

我们在做代码开发时&#xff0c;经常需要提交代码&#xff0c;提交代码时需要填写 Commit Message&#xff08;提交说明&#xff09;&#xff0c;否则就不允许提交。 所以在 Go 项目开发时&#xff0c;一个好的 Commit Message 至关重要&#xff1a; 可以使自己或者其他开发人…

基于单片机三路信号故障诊断仿真设计

单片机设计介绍&#xff0c;基于单片机三路信号故障诊断仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机三路信号故障诊断仿真设计概要主要涵盖了系统设计的整体框架、关键模块功能、仿真方法以及预期实现的目…

嵌入式硬件中常见的面试问题与实现

1 01 请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌) ▶电阻 美国:AVX、VISHAY威世 日本:KOA兴亚、Kyocera京瓷、muRata村田、Panasonic松下、ROHM罗姆、susumu、TDK 台湾:LIZ丽智、PHYCOM飞元、RALEC旺诠、ROYALOHM厚生、SUPEROHM美隆、TA-I大毅、TMT…

ARM FVP平台的terminal窗口大小如何设置

当启动ARM FVP平台时&#xff0c;terminal窗口太小怎么办&#xff1f;看起来非常累眼睛&#xff0c;本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求&#xff1a; 通过上图可知&#xff0c;UART默认使用的是xterm。因此&#xff0c;我们需要修改xterm的默认字体设…

【战略前沿】与中国达成生产协议后,飞行汽车即将起飞

【原文】Flying cars edge towards takeoff after Chinese production deal 【作者】Thomas Macaulay 斯洛伐克公司KleinVision签署了一项协议&#xff0c;将大规模生产AirCar。 一辆获得航空认证的飞行汽车向商业化又迈出了一大步。 空中汽车的创造者KleinVision今天宣布出售…

Java进阶-反射的详解与应用

本文深入探讨了Java反射机制的核心概念、应用实例及其在现代Java开发中的重要性。文章首先介绍了反射的基本原理和能力&#xff0c;包括在运行时动态获取类信息、操作对象字段和方法的能力。随后&#xff0c;通过具体代码示例&#xff0c;展示了如何利用反射进行字段访问、方法…

为什么有些网站会提示不安全,提示您与此网站之间建立的连接不安全

有时候当我们尝试访问一个网站时&#xff0c;浏览器会弹出一个警告&#xff0c;提示“您与此网站之间建立的连接不安全”。这是什么意思&#xff1f;这种网站真的不安全吗&#xff1f; 理解HTTP与HTTPS HTTP&#xff08;超文本传输协议&#xff09;是互联网上用于传输数据的基…

点点数据K参数加密逆向分析(RPC方案跟加密算法还原)

文章目录 1. 写在前面2. 接口分析3. 断点分析4. RPC调用5. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长…

苹果上架经验分享

苹果上架要求是苹果公司对于提交应用程序到苹果商店上架的要求和规定。这些要求主要是为了保证用户体验、应用程序的质量和安全性。以下是苹果上架要求的详细介绍&#xff1a;1. 应用程序的内容和功能必须符合苹果公司的规 苹果上架要求是苹果公司对于提交应用程序到苹果商店上…

备战蓝桥杯---数论基础刷题1

数论在蓝桥杯上考的不多&#xff0c;但是这不能否定它的重要性。 1.简单的GCD的应用&#xff1a; 分析一下&#xff0c;由等差数列的性质&#xff0c;个数&#xff08;an-a1)/d1&#xff0c;其中an与a1是固定的&#xff0c;因此我们就是让dmax,我们先排一下序&#xff0c;d就是…

《HelloGitHub》第 96 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

Redis命令请求的执行过程(二)

命令请求执行的过程 命令执行器(2):执行预备操作。 服务器已经将执行命令所需的命令实现函数(保存在客户端状态的cmd属性)、参数(保存在客户端状态的argv属性)、参数个数(保存在客户端状态的argc属性)都收集器了&#xff0c;但是在真正执行命令之前&#xff0c;程序还需要进行…

spring多线程实现+合理设置最大线程数和核心线程数

1.最简单的方法&#xff1a; 需要在 Spring Boot 主类上添加 EnableAsync 注解启用异步功能&#xff1b;需要在异步方法上添加 Async 注解。 示例代码如下&#xff1a; SpringBootApplication EnableAsync public class Application {public static void main(String[] args…

vue3+threejs新手从零开发卡牌游戏(十九):添加战斗事件

接上一节实现画线后&#xff0c;现在可以根据鼠标移动位置判断是否选中了对方区域怪兽卡牌&#xff1a; 修改game/index.vue代码&#xff0c;在画线方法中添加获取目标对象方法&#xff1a; const selectedCard ref() // 选中的场上card const selectedTargetCard ref() // …