[译][AI OpenAI-doc] 视觉

简介: 学习如何使用 GPT-4 来理解图像。具有视觉功能的 GPT-4 Turbo 允许模型接收图像并回答与之相关的问题。了解图像上传、处理、成本计算、模型限制等详细信息。

学习如何使用 GPT-4 来理解图像

介绍

具有视觉功能的 GPT-4 Turbo 允许模型接收图像并回答与之相关的问题。在历史上,语言模型系统受限于仅接收单一输入模态,即文本。对于许多用例来说,这限制了像 GPT-4 这样的模型可用的领域。以前,该模型有时被称为 GPT-4V 或 gpt-4-vision-preview 在 API 中。请注意,助手 API 目前不支持图像输入。

快速开始

图像以两种主要方式提供给模型:通过传递图像的链接或直接在请求中传递 base64 编码的图像。图像可以在用户、系统和助手消息中传递。目前我们不支持在第一个系统消息中传递图像,但这可能会在将来发生改变。

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
  model="gpt-4-turbo",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "What’s in this image?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
          },
        },
      ],
    }
  ],
  max_tokens=300,
)

print(response.choices[0])

该模型最擅长回答关于图像中存在的内容的一般性问题。虽然它理解图像中物体之间的关系,但尚未优化以回答关于图像中某些物体位置的详细问题。例如,您可以询问汽车是什么颜色,或者根据冰箱里的内容询问晚餐的一些想法,但如果您向其展示一个房间的图像并询问椅子在哪里,它可能不会正确回答这个问题。

在探索视觉理解可以应用于哪些用例时,牢记模型的局限性是很重要的。

上传基于 base64 编码的图像

如果您有本地图像或图像集,您可以以 base64 编码格式将其传递给模型,以下是此操作的示例:

import base64
import requests

# OpenAI API Key
api_key = "YOUR_OPENAI_API_KEY"

# Function to encode the image
def encode_image(image_path):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode('utf-8')

# Path to your image
image_path = "path_to_your_image.jpg"

# Getting the base64 string
base64_image = encode_image(image_path)

headers = {
  "Content-Type": "application/json",
  "Authorization": f"Bearer {api_key}"
}

payload = {
  "model": "gpt-4-turbo",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What’s in this image?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64,{base64_image}"
          }
        }
      ]
    }
  ],
  "max_tokens": 300
}

response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

print(response.json())

多个图像输入

Chat Completions API 能够接收和处理多个图像输入,可以是以 base64 编码格式或作为图像 URL。模型将处理每个图像,并使用所有图像的信息来回答问题。

from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
  model="gpt-4-turbo",
  messages=[
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What are in these images? Is there any difference between them?",
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
          },
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
          },
        },
      ],
    }
  ],
  max_tokens=300,
)
print(response.choices[0])

在这里,模型展示了同一图像的两份副本,并可以独立回答关于每张图像或两张图像的问题。

低或高保真度图像理解

通过控制 detail 参数,该参数有三个选项:low、high 或 auto,您可以控制模型如何处理图像并生成其文本理解。默认情况下,模型将使用 auto 设置,它将查看图像输入大小并决定是否应该使用 low 或 high 设置。

  • low 将启用“低分辨率”模式。模型将接收到一张分辨率为 512px x 512px 的低分辨率版本的图像,并使用 65 个标记的预算来表示图像。这使得 API 能够更快地返回响应,并在不需要高细节的用例中消耗更少的输入标记。
  • high 将启用“高分辨率”模式,首先使模型看到低分辨率图像,然后根据输入图像大小创建详细的 512px 正方形输入图像裁剪。每个详细的裁剪使用两倍的标记预算(65 个标记),总共为 129 个标记。
from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
  model="gpt-4-turbo",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "What’s in this image?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
            "detail": "high"
          },
        },
      ],
    }
  ],
  max_tokens=300,
)

print(response.choices[0].message.content)

管理图像

与助手 API 不同,Chat Completions API 不是有状态的。这意味着您必须自行管理传递给模型的消息(包括图像)。如果您想多次将相同的图像传递给模型,则每次向 API 发出请求时都必须传递图像。

对于长时间运行的对话,我们建议通过 URL 而不是 base64 传递图像。模型的延迟也可以通过提前缩小图像的尺寸来改善,使其小于预期的最大尺寸。对于低分辨率模式,我们期望是 512px x 512px 的图像。对于高分辨率模式,图像的短边应小于 768px,长边应小于 2000px。

在图像被模型处理后,它会从 OpenAI 服务器中删除并不保留。我们不使用通过 OpenAI API 上传的数据来训练我们的模型。

限制

虽然具备视觉功能的 GPT-4 功能强大,可以在许多情况下使用,但了解模型的局限性是很重要的。以下是我们所知的一些限制:

  • 医学图像:模型不适合解释专业医学图像,如 CT 扫描,不应用于医疗建议。
  • 非英文:处理带有非拉丁字母文字的图像时,如日文或韩文,模型可能表现不佳。
  • 小字体:增大图像中的文字以提高可读性,但避免裁剪重要细节。
  • 旋转:模型可能会错误解释旋转或颠倒的文字或图像。
  • 视觉元素:模型可能难以理解图表或文字中颜色或样式(如实线、虚线或点线)变化的情况。
  • 空间推理:模型在需要精确空间定位的任务上表现不佳,例如识别国际象棋位置。
  • 准确性:在某些情况下,模型可能会生成不正确的描述或标题。
  • 图像形状:模型在处理全景和鱼眼图像时表现不佳。
  • 元数据和调整大小:模型不处理原始文件名或元数据,图像在分析之前被调整大小,影响其原始尺寸。
  • 计数:对图像中的对象可能会给出近似计数。
  • CAPTCHA:出于安全考虑,我们已经实施了一个系统来阻止提交 CAPTCHA。

计算成本

图像输入按标记计量和收费,就像文本输入一样。给定图像的标记成本由两个因素确定:其大小和每个 image_url 块上的 detail 选项。所有 detail: low 的图像每个成本 85 个标记。 detail: high 的图像首先按比例缩放以适应 2048 x 2048 的正方形,保持其纵横比。然后,它们按照图像最短边长为 768px 进行缩放。最后,我们计算图像由多少个 512px 的正方形组成。其中每个正方形的成本为 170 个标记。最终总数始终增加了另外的 85 个标记。

以下是一些演示上述内容的示例。

  • 一个 detail: high 模式下的 1024 x 1024 正方形图像成本为 765 个标记

    • 1024 小于 2048,因此没有初始调整大小。
    • 最短边长为 1024,因此我们将图像缩放到 768 x 768。
    • 需要 4 个 512px 的正方形瓦片来表示图像,因此最终标记成本为 170 * 4 + 85 = 765。
  • 一个 detail: high 模式下的 2048 x 4096 图像成本为 1105 个标记

    • 我们将图像缩小到 1024 x 2048 以适应 2048 的正方形。
    • 最短边长为 1024,因此我们进一步缩小为 768 x 1536。
    • 需要 6 个 512px 的瓦片,因此最终标记成本为 170 * 6 + 85 = 1105。
  • 一个 detail: low 模式下的 4096 x 8192 图像成本为 85 个标记

    • 无论输入大小如何,低细节图像的成本都是固定的。

常见问题解答

我可以微调 gpt-4 的图像能力吗?

不,我们目前不支持微调 gpt-4 的图像能力。

我可以使用 gpt-4 生成图像吗?

不,您可以使用 dall-e-3 生成图像,而使用 gpt-4-turbo 来理解图像。

我可以上传哪些类型的文件?

我们目前支持 PNG(.png)、JPEG(.jpeg 和 .jpg)、WEBP(.webp)和非动画 GIF(.gif)。

我上传的图像大小有限制吗?

是的,我们限制图像上传为每个图像 20MB。

我可以删除我上传的图像吗?

不,我们会在模型处理完图像后自动为您删除图像。

我在哪里可以了解有关 GPT-4 with Vision 的注意事项?

您可以在 GPT-4 with Vision 系统卡片中找到有关我们的评估、准备和缓解工作的详细信息。

我们进一步实施了一个系统来阻止提交 CAPTCHA。

GPT-4 with Vision 的速率限制是如何工作的?

我们以标记级别处理图像,因此我们处理的每张图像都计入您的每分钟标记数(TPM)限制。有关确定每张图像的标记数的公式的详细信息,请参阅计算成本部分。

GPT-4 with Vision 能理解图像元数据吗?

不,模型不接收图像元数据。

如果我的图像不清晰会发生什么?

如果图像模糊或不清晰,模型会尽力解释它。但结果可能不太准确。一个好的经验法则是,如果一般人无法在低/高分辨率模式下看到图像中的信息,那么模型也无法看到。


相关文章
|
5月前
|
人工智能 安全 UED
[AI OpenAI] 新闻编辑室AI催化剂:与WAN-IFRA的全球项目
OpenAI与WAN-IFRA合作推出新闻编辑室AI催化剂,这是一个全球加速器项目,旨在帮助100多家新闻出版商在其编辑室中集成AI,以增强内容创建、效率和用户体验。
[AI OpenAI] 新闻编辑室AI催化剂:与WAN-IFRA的全球项目
|
1天前
|
机器学习/深度学习 人工智能 安全
AI真的能与人类数据科学家竞争吗?OpenAI的新基准对其进行了测试
AI真的能与人类数据科学家竞争吗?OpenAI的新基准对其进行了测试
|
5月前
|
人工智能 搜索推荐 Java
[AI OpenAI] MavenAGI推出由OpenAI驱动的自动化客户支持代理
MavenAGI推出了一款由GPT-4驱动的AI客户服务代理,为Tripadvisor和HubSpot等公司提高了效率并降低了成本。
[AI OpenAI] MavenAGI推出由OpenAI驱动的自动化客户支持代理
|
12天前
|
人工智能 自然语言处理 安全
【通义】AI视界|Adobe推出文生视频AI模型,迎战OpenAI和Meta
本文精选了过去24小时内的重要科技新闻,包括微软人工智能副总裁跳槽至OpenAI、Adobe推出文本生成视频的AI模型、Meta取消高端头显转而开发超轻量设备、谷歌与核能公司合作为数据中心供电,以及英伟达股价创下新高,市值接近3.4万亿美元。这些动态展示了科技行业的快速发展和激烈竞争。点击链接或扫描二维码获取更多资讯。
|
9天前
|
机器学习/深度学习 人工智能 算法
使用 NVIDIA TAO Toolkit 5.0 体验最新的视觉 AI 模型开发工作流程
NVIDIA TAO Toolkit 5.0 提供低代码框架,支持从新手到专家级别的用户快速开发视觉AI模型。新版本引入了开源架构、基于Transformer的预训练模型、AI辅助数据标注等功能,显著提升了模型开发效率和精度。TAO Toolkit 5.0 还支持多平台部署,包括GPU、CPU、MCU等,简化了模型训练和优化流程,适用于广泛的AI应用场景。
17 0
使用 NVIDIA TAO Toolkit 5.0 体验最新的视觉 AI 模型开发工作流程
|
13天前
|
机器学习/深度学习 人工智能 算法
【通义】AI视界|若未来三年无法盈利,OpenAI或被微软收购!
本文精选了24小时内的重要科技新闻,包括苹果即将发布的全新智能家居战略、OpenAI若未来三年无法盈利或被微软收购的消息、Meta建议网友用AI生成极光照片引发争议,以及黄仁勋对马斯克的高度评价。登录通义官网了解更多功能。
|
4天前
|
人工智能 自然语言处理 自动驾驶
【通义】AI视界|微软和 OpenAI 将向媒体提供1000万美元资助,推动其使用AI工具
本文概览了近期科技领域的五大热点事件,包括微软与OpenAI联手资助媒体使用AI工具、OpenAI任命前白宫官员为首任首席经济学家、特斯拉FSD系统遭调查、英伟达市值逼近全球第一、以及AMD新一代锐龙9000X3D系列处理器即将上市的消息。更多资讯,请访问通义官网。
|
1月前
|
机器学习/深度学习 人工智能 供应链
【通义】AI视界|OpenAI的“草莓”模型预计两周内上线!像人类一样思考!
本文介绍了近期科技领域的五大亮点:OpenAI即将推出的新一代AI模型“草莓”,具备高级推理能力;亚马逊测试AI技术加速有声读物生产,通过语音克隆提高效率;Kimi API新增联网搜索功能,拓宽信息来源;顺丰发布物流行业专用大语言模型“丰语”,提升工作效率;钉钉推出“AI班级群”功能,改善家校沟通体验。更多详情,请访问[通义官网]。
|
2月前
|
人工智能 安全 机器人
OpenAI发布Model Spec,揭示其期望AI如何行动
OpenAI发布Model Spec,揭示其期望AI如何行动
OpenAI发布Model Spec,揭示其期望AI如何行动
|
1月前
|
人工智能 自然语言处理 Linux
Llama 3.2:开源可定制视觉模型,引领边缘AI革命
Llama 3.2 系列 11B 和 90B 视觉LLM,支持图像理解,例如文档级理解(包括图表和图形)、图像字幕以及视觉基础任务(例如基于自然语言描述在图像中精确定位对象)。