[译][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 能理解图像元数据吗?

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

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

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


相关文章
|
7天前
|
人工智能 JSON 自然语言处理
[AI OpenAI-doc] 动作入门指南
为GPT创建一个动作需要3个步骤:构建一个API、以OpenAPI YAML或JSON格式记录API、在ChatGPT UI中将Schema暴露给你的GPT。本文将重点介绍通过为GPT定义自定义动作来创建一个待办事项列表GPT。
|
7天前
|
人工智能 测试技术 API
[AI OpenAI-doc] GPT中的动作
学习如何构建一个智能调用你的API的GPT动作。GPT提供了深度定制ChatGPT以满足特定用例的能力,以及自定义功能。
|
8天前
|
存储 人工智能 安全
[译][AI OpenAI-doc] 弃用
随着我们推出更安全、更功能强大的模型,我们定期淘汰旧模型。依赖OpenAI模型的软件可能需要偶尔更新以保持正常工作。受影响的客户将始终通过电子邮件和我们的文档以及博客文章(针对较大的更改)收到通知。本页面列出了所有API弃用情况,以及推荐的替代方案。
|
8天前
|
人工智能 JavaScript 前端开发
[译][AI OpenAI-doc] 库
我们提供了Python库和TypeScript / JavaScript库,支持各种运行时。安装后,您可以使用您的秘钥来运行库中提供的功能。微软的Azure团队也维护了与OpenAI API和Azure OpenAI服务兼容的库。此外,还有许多由社区构建和维护的其他库可供使用。请注意,OpenAI不验证这些项目的正确性或安全性。
|
9天前
|
人工智能 缓存 API
[译][AI OpenAI-doc] 错误代码
本指南包括关于您可能从 API 和我们官方的 Python 库中看到的错误代码的概述。概述中提到的每个错误代码都有一个专门的部分,提供进一步的指导。
|
10天前
|
存储 人工智能 测试技术
[译][AI OpenAI-doc] 批处理 API
了解如何使用 OpenAI 的批处理 API 发送异步请求组,其成本降低 50%,具有一个独立的更高速率限制池,并提供明确的 24 小时完成时间。该服务非常适合处理不需要即时响应的作业。您也可以直接在这里查看 API 参考。
|
11天前
|
人工智能 测试技术 API
[译][AI OpenAI-doc] 速率限制
速率限制是我们的API对用户或客户在指定时间段内访问我们服务的次数施加的限制。速率限制是API的一种常见做法,有助于防止对API的滥用或误用,并确保每个人都能公平地访问API。本文介绍了速率限制的原因、工作方式以及如何处理速率限制错误。
|
13天前
|
人工智能 iOS开发 MacOS
[译][AI OpenAI] 引入 GPT-4o 及更多工具至免费版 ChatGPT 用户
我们推出了最新的旗舰模型 GPT-4o,并为免费版 ChatGPT 用户提供更多功能,包括更快的速度、改进的文本、语音和视觉能力,以及新的桌面应用程序和简化的界面。
[译][AI OpenAI] 引入 GPT-4o 及更多工具至免费版 ChatGPT 用户
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
OpenAI 推出 GPT-4o,免费向所有人提供GPT-4级别的AI ,可以实时对音频、视觉和文本进行推理,附使用详细指南
GPT-4o不仅提供与GPT-4同等程度的模型能力,推理速度还更快,还能提供同时理解文本、图像、音频等内容的多模态能力,无论你是付费用户,还是免费用户,都能通过它体验GPT-4了
62 1
|
13天前
|
机器学习/深度学习 人工智能 安全
[译][AI OpenAI] 您好,GPT-4o
GPT-4o 是OpenAI的新旗舰模型,能够处理文本、音频和图像,并生成各种组合的输出。它在语言理解、视觉感知和音频处理方面表现出色。本文介绍了GPT-4o的能力、评估结果、安全性和局限性,以及其可用性和未来计划。
[译][AI OpenAI] 您好,GPT-4o

热门文章

最新文章