调用DeepSeek-VL2、Qwen2-VL过程中踩坑记录

📌调用DeepSeek-VL2、Qwen2-VL过程中的踩坑记录

DeepSeek-VL2

  1. DeepSeek-VL2-small模型调用:

    • 显卡内存要大于40G,自己用的是L40 (48GB) * 1,这个卡可以调用small这个模型,RTX 4090 (24GB) * 1这张卡显示内存不足。
    • DeepSeek-VL2-tiny可以用RTX 4090 (24GB) * 1来调用。
  2. 模型输出结果异常:<|Assistant|>:: <|ref|>head without helmet<|/ref|><|det|>[[0, 50, 55, 9999], [0, 5, 533, 17, 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

  • 解决方法:https://github.com/deepseek-ai/DeepSeek-VL2/issues/96
    • 有两个示例代码。一个在README.md。另一个在 inference.py 中。这两个代码是不同的。README.md中的示例代码有问题,只能在示例图像上生成正确的输出。
    • inference.py中的代码是 ok 的,它可以为其他图像生成正确的输出。
    • 挺鸡肋的,建议先改成inference.py中的代码,然后再测试……
  1. 目标检测visual grounding检测框坐标问题:
    • 模型直接输出的检测框坐标是归一化以后的坐标,[0,999],格式为<|det|>[[x1, y1, x2, y2],...]<|/det|>,分别代表左上角和右下角的坐标。
    • 注意这不是图片中的绝对坐标,所以一定要转成原始检测框坐标[x_min, y_min, x_max, y_max]!否则结果就会很差!!!
    • 官方也提供了转换方法,见parse_ref_bbox()方法,重点代码如下:
for indice, (box, label) in enumerate(zip(boxes, labels)):
            box = [
                int(box[0] / 999 * image_w),
                int(box[1] / 999 * image_h),
                int(box[2] / 999 * image_w),
                int(box[3] / 999 * image_h),
            ]

Qwen2-VL

  1. 直接调用官方提供的API即可,通过DashScope SDK或HTTP方式调用通义千问VL模型。而不是通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问VL模型,这个可能跑不通。
  2. 检测框坐标输出问题,和DeepSeek-VL2相同,一定也要把坐标转化成真实的绝对坐标[x_min, y_min, x_max, y_max]

大模型更新真是太快了,过完年出了一堆……


整理不易✨🚀🚀,关注和收藏后拿走哦📌📌,欢迎留言~~✨✨👋📣
我的公众号📣🔎🔎AdaCoding、GitHub🧐🔎🔎 AdaCoding123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值