首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenAI VLM Tokenizer详解

OpenAI VLM Tokenizer详解

作者头像
buzzfrog
发布2025-06-20 17:21:09
发布2025-06-20 17:21:09
11200
代码可运行
举报
文章被收录于专栏:云上修行云上修行
运行总次数:0
代码可运行

在文本分词器的基础上,GPT-4 也会将视觉输入(图像/视频)“分词”为图像标记,这些标记的数量将决定您的 API 调用成本。因此,了解分词器的工作原理(或者至少掌握如何使用代码预先计算标记数量)非常重要,以免您的 API 账单超出预期。

在本文中, 我们将:

  1. 提供 GPT-4 如何对图像“分词”的可视化说明。
  2. 提供在 Python 中计算这些分词数量的代码。

第一部分:可视化说明

可视化分词器的工作流程分为三个步骤:

步骤 1:将图像缩放至适合 2048 x 2048 的正方形内

首先,将图像进行缩放以确保宽度和高度都不超过 2048 像素。这一步将保持图像的纵横比不变。

步骤 2:将图像缩放以使其最短的一边达到 768 像素长

接着,根据合适的缩放比例调整图像,使得其最短的一边正好为 768 像素。

步骤 3:计算图像中能容纳多少个 512x512 的小块

在前两步骤调整的图像中计算可以放入的 512x512 的瓷砖块数。

最终,标记总数(截至本文撰写时)可以通过以下方式计算:

  • 总标记数 = 瓷砖标记 + 基础标记;
  • 瓷砖标记根据上文描述计算;
  • 基础标记为 85。

第二部分:Python 代码

下面是一个 Python 代码片段,实现了上述分词步骤。

代码语言:python
代码运行次数:0
运行
复制
from math import ceil

def calculate_image_tokens(width: int, height: int):
    # 步骤 1:缩放至适合 2048 x 2048 的方形内(保持纵横比)
    if width > 2048 or height > 2048:
        aspect_ratio = width / height
        if aspect_ratio > 1:
            width, height = 2048, int(2048 / aspect_ratio)
        else:
            width, height = int(2048 * aspect_ratio), 2048
            
    # 步骤 2:缩放至使最短边达到 768 像素
    if width >= height and height > 768:
        width, height = int((768 / height) * width), 768
    elif height > width and width > 768:
        width, height = 768, int((768 / width) * height)

    # 步骤 3:计算可放入的 512x512 小块数量
    tiles_width = ceil(width / 512)
    tiles_height = ceil(height / 512)

    # 计算总标记数
    total_tokens = 85 + 170 * (tiles_width * tiles_height)
    
    return total_tokens

示例使用

代码语言:python
代码运行次数:0
运行
复制
from PIL import Image

image = Image.open("/path/to/your/image.jpg")
calculate_image_tokens(*image.size)

结论

以上就是 GPT-4 如何对图像进行分词的简短的可视化说明和代码实现。希望这能帮助您更好地理解这个过程。

参考资料

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一部分:可视化说明
    • 步骤 1:将图像缩放至适合 2048 x 2048 的正方形内
    • 步骤 2:将图像缩放以使其最短的一边达到 768 像素长
    • 步骤 3:计算图像中能容纳多少个 512x512 的小块
  • 第二部分:Python 代码
    • 示例使用
  • 结论
    • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档