当前位置: 首页 > news >正文

【大模型应用开发】Qwen2.5-VL-3B识别视频

0. 编写代码并尝试运行

克隆以下代码

git clone https://gitee.com/ai-trailblazer/qwen-vl-hello.git

尝试运行qwen-vl-hello.py,报错原因缺少modelscope:

1. 安装qwen-vl-utils工具包

pip install qwen-vl-utils[decord]==0.0.8

尝试运行,不出意外的话肯定运行不了,报错原因依然是缺少modelscope:

2. 安装modelscope

 pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple

再次尝试运行,依然无法运行,报错原因modelscope下未找到Qwen2_5_VLForConditionalGeneration:

3.安装transformers

pip install git+https://github.com/huggingface/transformers accelerate

经历10分钟的漫长等待,终于下载安装完成。再次尝试运行,依然运行失败,报错原因缺少torchvision模块:

4.安装torchvision

pip install torchvision

5.尝试进行视频识别(失败)

再次尝试运行,事情出现转机,开始下载模型,并进行漫长的等待(在等待过程中,顺手去清理一些爆红的C盘!)

经历九九八十一分钟后,发生了意外(我没有碰它呀)

再次尝试运行,执行失败,报错原因是TypeError: process_vision_info() got an unexpected keyword argument 'return_video_kwargs':

下面先进行图片识别,排查一下是否是环境问题。

6. 尝试图片识别(成功)

先运行图片识别的代码(qwen-vl-img-hello.py)吧,没想到又发生更大意外惊喜,wsl系统连不上了!

Reload Window后,重新连接了

再次运行,图片识别成功。

图片识别成功,初步假设运行环境已经没有问题了,下面再次尝试视频识别。

7.尝试进行视频识别(失败)

依然是第5节的执行失败原因:

检查代码问题。先删除当前不必要的代码

然后脑袋总算是要清醒一点了,即这一行代码就是设置一个意料之外的参数return_video_kwargs。

image_inputs, video_inputs, video_kwargs = process_vision_info(messages, return_video_kwargs=True)
inputs = processor(text=[text],images=image_inputs,videos=video_inputs,fps=fps,padding=True,return_tensors="pt",**video_kwargs,
)
inputs = inputs.to("cuda")

继续思考解决方案:后面又要使用到这个video_kwargs,如果不配置它会不会无法返回这个参数......,管它呢,先删除return_video_kwargs=True,反正电脑又不会炸掉!(继续Run Python,并战术性的喝了一口水)。

 嗯哼,报错了:Error reading?难道是视频链接失效了,复制到浏览器查看没问题呀,视频链接是有效的。

https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-VL/space_woaudio.mp4

下面将继续排查,瞅一眼qwen-vl-utils的版本为0.0.8,没错儿呀,是文档里的版本咧。

看看源码,这个函数返回了None,但是这个函数的源码又看不到!暂且不继续了看源码了,换个方向再试试。

继续排查,尝试识别本地视频。(再喝一口水缓解一下压力)

messages = [{"role": "user","content": [{"type": "video","video": "file:///mnt/e/WORK/project/ai/qwen-vl-hello/demo.mp4",},{"type": "text", "text": "Describe this video."},],}
]

wsl又无法连接了!

再次连接后,再次尝试运行,虽然报错了,但是至少视频是能读取了,报错只是说明video_kwargs这个不能用了。

修改代码再次尝试运行,wsl又断连接了

直接在命令行执行

运行失败,报错原因fps未定义(这官方教程存在问题哦,艾特一下qwen官方)。修改代码,删除fps=fps。修改后再次运行

image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(text=[text],images=image_inputs,videos=video_inputs,padding=True,return_tensors="pt"
)
inputs = inputs.to("cuda")

显存溢出!我不服,再次尝试还是显存溢出,我服了。

继续尝试量化模型Qwen/Qwen2.5-VL-3B-Instruct-AWQ

# 第一处修改
model = Qwen2_5_VLForConditionalGeneration.from_pretrained("Qwen/Qwen2.5-VL-3B-Instruct-AWQ", torch_dtype="auto", device_map="auto"
)# 第二处修改
processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-3B-Instruct-AWQ")

继续运行,开始下载模型,然后继续漫长的等待(顺便打开音乐播放器,放一首DJ串烧缓解一下情绪)

经过九九八十一天的等待后,模型下载完了,但是紧接着又报了一个错,报错意思是`autoawq`的版本太低。

先不急,再运行一次看看,报错依然如此。通过pip list|grep autoawq发现并没有安装autoawq,那就尝试用pip安装一个autoawq

pip install autoawq

继续尝试运行,显存溢出!

但是,细心的我发现这样一行输出,于是我虚心的请教了Deepseek

Unused or unrecognized kwargs: return_tensors, fps.

修改代码

image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(text=[text],images=image_inputs,videos=video_inputs,fps=30,padding=True,return_tensors="pt"
)
inputs = inputs.to("cuda")

仍然报错显存溢出!但是这个输出内容有点奇怪,区别如下(虚心的我又去查了一下这个单词的意思unrecognized-无法识别的,也就是说:这两个参数没有意义加和不加都一样!):

# 不添加fps参数
Unused or unrecognized kwargs: return_tensors, fps.# 添加fps=30后
Unused or unrecognized kwargs: fps, return_tensors.

有进行了多次尝试,添加PYTORCH_CUDA_ALLOC_CONF环境变量、指定torch_dtype,都以显存溢出为结局

from modelscope import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
import torchimport os
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True"# default: Load the model on the available device(s)
model = Qwen2_5_VLForConditionalGeneration.from_pretrained("Qwen/Qwen2.5-VL-3B-Instruct-AWQ", torch_dtype=torch.float16, device_map="auto"
)

于是,我不得不承认本地的GPU显存确实有限,下面我改变策略,在云服务进行尝试。

8.借用云服务器进行视频识别(失败)

在魔塔选择赠送的GPU服务器使用时长,点击启动并稍等2分钟左右

克隆代码仓库

https://gitee.com/ai-trailblazer/qwen-vl-hello.git

代码拉取完成后,继续查看conda版本和显存。

发现没有conda,那就先在常规python环境尝试。

pip install qwen-vl-utils[decord]==0.0.8
pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/huggingface/transformers accelerate

安装transformers报错了,暂且不管,先运行代码

python qwen-vl-video-hello.py

第一行运行报错,找不到Qwen2_5_VLForConditionalGeneration

此时回忆一下在本地的经验,安装transformers可是花费了十分钟之久,并且下载了很多内容,但是此时马上下载完毕并且还报错了,仔细分析错误原因,发现是很多python三方库版本不兼容的问题。所以后面还是启动一个conda环境吧

【AI训练环境搭建】在Windows11上搭建WSL2+Ubuntu22.04+Tensorflow+GPU机器学习训练环境

创建新的conda环境,名称为vlenv

conda create -n vlenv python=3.12

安装依赖

pip install qwen-vl-utils[decord]==0.0.8
pip install modelscope
pip install git+https://github.com/huggingface/transformers accelerate

安装transformers报错了

重新创建一个3.11 python版本的conda环境,名称为t1

conda create -n t1 python=3.11

尝试安装

pip install qwen-vl-utils[decord]==0.0.8
pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/huggingface/transformers accelerate

这次看起来能正常安装了

安装完成

尝试运行,报出熟悉的异常

安装torchvision

pip install torchvision

再次尝试运行

python qwen-vl-video-hello.py

依然报显存溢出(这可是20多个G的显存哦)

(本次实践从本地到云服务,共花费7个多小时光阴,虽然目前没有运行成功,但是至少在这过程中实践了很多经验,后续我将尝试找一个比较小的视频再次验证。)

9.使用一个较小的视频进行识别(成功)

在以上实践中,使用的是一个21M的视频,视频时长约三分钟。而后我又拿了一个只有291KB的视频,视频时长只有1s。

功夫不负有心人,终于成功识别了一个视频!尽管这个视频只有1s,可以看到GPU也占用了9G(该显卡总共只有12G)。

10. 总结和展望

在本次实践中,主要采用transformers拉起Qwen2.5-VL-3B大模型进行视频识别,尽管这并不是工程化的运行方式,但是有作为入门实践的价值。

在整个过程中,总结出以下经验:

(1)鉴于网络原因,最好使用modelscope来下载模型;

(2)在vscode中使用wsl的conda环境,可能会出现无响应的情况,此时直接使用cmd命令行可能更加方便;

(3)当一条路走不通时,可以换一条路,如果换一条路还是走不通,这时在回头看方法是否有问题,很多时候就是在你回头思考的过程中解决掉问题的,但是你还是得感谢你在另一条路上探索,因为你至少知道了那条路行不通,否则你的思维陷入到不确定中;

(4)云服务器的网络和硬件优势可以加速我们进行AI方面的实践,本次实践中在云服务器上花费的实践仅仅只占总时长的30%,但是产生的效果却很显著,在这里也非常感谢modelscope社区和阿X云为我们提供的免费实例环境,非常感谢;

(5)conda是个好东西,其提供的强大的隔离式python环境,在解决各种依赖库版本库问题的时候非常有用,本次实践中,在云服务器最终使用的是python3.11版本,而我本地电脑是使用的python3.12,这些经验在工程成产过程中也很有价值;

后续的实际计划和展望:
(1)达到这个目标“Qwen2.5-VL 可以理解超过1小时的视频”,所需要的条件和方式有哪些?

(2)考虑更加工程化和轻量化的通过Qwen2.5-VL进行视频识别的方案;

(3)其它模型或方案进行视频识别的使用资源和效果对比;
 

相关文章:

  • 解决WPF短暂的白色闪烁(白色闪屏)
  • 免费开源 PDF 阅读器 自带虚拟打印机功能 多格式兼容
  • Acrobat 中 JavaScript 为 PDF 带来的交互
  • Java21 并发处理说明
  • 通过Auto平台与VScode搭建远程开发环境(以Stable Diffusion Web UI为例)
  • 【Python】1. 基础语法(1)
  • 棒球比赛暗号百科·棒球1号位
  • 在Mathematica中,使用鸟枪法求解在无穷远处的边值常微分方程
  • AI助力,制作视频裁剪软件
  • Spring Cloud Sleuth与Zipkin深度整合指南:微服务链路追踪实战
  • 大剧院订座系统源码,大剧院订票,大剧院场馆租赁,大剧院订票系统完整源码
  • Day 31 训练
  • PowerBI切片器美化
  • 深入解析Spring Boot与JUnit 5集成测试的最佳实践
  • 云原生安全基石:深度解析HTTPS协议(从原理到实战)
  • 【2025】ubuntu22.04 docker安装全过程
  • 历年华中科技大学保研上机真题
  • 用神经网络对信贷项目进行预测
  • win主机,Ubuntu,IMX6ULL开发板网络通讯
  • 计算机视觉---YOLOv1
  • 贸易公司网站设计案例/网站关键字优化公司
  • 网站备案有幕布/优化设计三年级上册语文答案
  • 网站建设项目介绍/网站网络排名优化方法
  • 知名网站建设公司电话/windows7系统优化工具
  • 富阳网站建设 优帮云/aso优化运营
  • 中原区建设局网站/网络营销学什么内容