首页 > 其他分享 >OpenAI支持的视觉能力

OpenAI支持的视觉能力

时间:2023-11-14 10:22:54浏览次数:33  
标签:url image 支持 代币 OpenAI 图像 GPT 视觉 模型

介绍

带有视觉的 GPT-4,有时也称为 GPT-4V 或在 API 中,允许模型接收图像并回答有关它们的问题。从历史上看,语言模型系统一直受到单一输入模态(文本)的限制。对于许多用例来说,这限制了可以使用 GPT-4 等模型的领域。gpt-4-vision-preview

具有视觉功能的 GPT-4 目前可供所有通过模型和聊天完成 API 访问 GPT-4 的开发人员使用,该 API 已更新为支持图像输入。请注意,助手 API 目前不支持图像输入。gpt-4-vision-preview

请务必注意以下几点:

  • 具有视觉的 GPT-4 不是一个行为与 GPT-4 不同的模型,除了我们用于模型的系统提示之外
  • 具有视觉的 GPT-4 并不是一个在文本任务中表现更差的不同模型,因为它有视觉,它只是添加了视觉的 GPT-4
  • 具有视觉功能的 GPT-4 是该模型的一组增强功能

快速入门

可以通过两种主要方式将图像提供给模型:通过传递指向图像的链接或直接在请求中传递 base64 编码的图像。图像可以在消息中传递。目前,我们不支持第一条消息中的图像,但将来可能会更改。

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    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])

该模型最擅长回答有关图像中存在的内容的一般问题。虽然它确实了解图像中对象之间的关系,但它尚未优化以回答有关图像中某些对象位置的详细问题。例如,你可以根据冰箱里的东西问它汽车是什么颜色的,或者晚餐的一些想法是什么,但如果你给它看一个房间的图像,并问它椅子在哪里,它可能无法正确回答问题。

上传 base 64 编码图像

如果本地有一个图像或一组图像,则可以将它们以 base 64 编码格式传递到模型,下面是一个运行示例:

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-vision-preview",
    "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())

多个图像输入

聊天完成 API 能够接收和处理 base64 编码格式或图像网址的多个图像输入。该模型将处理每张图像,并使用来自所有图像的信息来回答问题。

from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    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])

在这里,模型显示了同一图像的两个副本,并且可以独立回答有关两个或每个图像的问题。

低保真或高保真图像理解

通过控制参数(具有两个选项)或 ,您可以控制模型如何处理图像并生成其文本理解。detaillowhigh

  • low将禁用“高分辨率”模型。该模型将收到低分辨率 512 x 512 版本的图像,并以 65 个代币的预算表示图像。这允许 API 返回更快的响应,并为不需要高细节的用例使用更少的输入令牌。
  • high将启用“高分辨率”模式,该模式首先允许模型查看低分辨率图像,然后根据输入图像大小将输入图像创建为 512px 正方形的详细裁剪。每个详细的作物都使用两倍的代币预算(65 个代币),总共 129 个代币。

管理映像

与 Google 助理 API 不同,聊天完成 API 不是有状态的。这意味着您必须自己管理传递给模型的消息(包括图像)。如果要多次将同一图像传递给模型,则必须在每次向 API 发出请求时传递图像。

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

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

局限性

虽然具有视觉功能的 GPT-4 功能强大,可用于多种情况,但了解该模型的局限性很重要。以下是我们注意到的一些限制:

  • 医学图像:该模型不适合解释 CT 扫描等专业医学图像,不应用于医疗建议。
  • 非英语:在处理包含非拉丁字母文本(如日语或韩语)的图像时,模型可能无法发挥最佳性能。
  • 大文本:放大图像中的文本以提高可读性,但避免裁剪重要细节。
  • 旋转:模型可能会误解旋转/颠倒的文本或图像。
  • 视觉元素:模型可能难以理解颜色或样式(如实线、虚线或虚线)变化的图形或文本。
  • 空间推理:该模型难以完成需要精确空间定位的任务,例如识别国际象棋位置。
  • 准确性:在某些情况下,模型可能会生成不正确的描述或标题。
  • 图像形状:该模型在处理全景和鱼眼图像时遇到困难。
  • 元数据和调整大小:模型不处理原始文件名或元数据,并且在分析之前调整图像大小,从而影响其原始尺寸。
  • 计数:可以给出图像中对象的近似计数。
  • 验证码:出于安全原因,我们实施了一个系统来阻止提交验证码。

计算成本

图像输入以令牌计量和收费,就像文本输入一样。给定图像的令牌成本由两个因素决定:其大小和每个image_url块上的选项。所有图像每张花费 85 个代币。 首先将图像缩放以适合 2048 x 2048 正方形,保持其纵横比。然后,对它们进行缩放,使图像的最短边长 768 像素。最后,我们计算图像由多少个 512px 的正方形组成。每个方块花费 170 个代币。另外 85 个代币总是添加到最终总数中。detaildetail: lowdetail: high

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

  • 模式下的 1024 x 1024 方形图像需要 765 个代币detail: high
    • 1024 小于 2048,因此没有初始调整大小。
    • 最短边是 1024,因此我们将图像缩小到 768 x 768。
    • 需要 4 个 512px 的方形图块来表示图像,因此最终的代币成本为 。170 * 4 + 85 = 765
  • 模式下的 2048 x 4096 图像需要 1105 个令牌detail: high
    • 我们将图像缩小到 1024 x 2048 以适合 2048 正方形。
    • 最短边是 1024,因此我们进一步缩小到 768 x 1536。
    • 需要 6 个 512px 图块,因此最终的代币成本为 。170 * 6 + 85 = 1105
  • 大多数情况下,一张 4096 x 8192 的图像需要 85 个代币detail: low
    • 无论输入大小如何,低细节图像都是固定成本。

常见问题

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

不可以,我们目前不支持微调图像功能。gpt-4

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

不,您可以使用它来生成图像和理解图像。dall-e-3gpt-4-vision-preview

我可以上传什么类型的文件?

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

我可以上传的图片大小有限制吗?

是的,我们将每张图片上传的图片限制为 20MB。

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

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

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

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

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

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

我们在令牌级别处理图像,因此我们处理的每个图像都计入每分钟令牌数 (TPM) 限制。有关用于确定每个图像的令牌计数的公式的详细信息,请参阅计算成本部分。

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

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

如果我的图像不清晰会怎样?

如果图像模棱两可或不清晰,模型将尽最大努力对其进行解释。但是,结果可能不太准确。一个好的经验法则是,如果普通人无法以低/高分辨率模式使用的分辨率看到图像中的信息,那么模型也无法看到。

标签:url,image,支持,代币,OpenAI,图像,GPT,视觉,模型
From: https://www.cnblogs.com/jerryqm/p/17831026.html

相关文章

  • fastify-request-context fastify request 级别的存储支持扩展
    fastify-request-context是一个fastify插件基于nodejs的asynchooks的处理,比较方便,尤其我们是需要进行基于request进行一些扩展的时候实际上不少框架都类似类似的能力(比如javaweb框架的httpServletSession,sparkjava的requestattribute)参考使用注册以及使用......
  • CLIP:万物分类(视觉语言大模型)
    本文来着公众号“AI大道理” ​论文地址:https://arxiv.org/abs/2103.00020传统的分类模型需要先验的定义固定的类别,然后经过CNN提取特征,经过softmax进行分类。然而这种模式有个致命的缺点,那就是想加入新的一类就得重新定义这个类别的标签,并重新训练模型,这样非常不方......
  • openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过
    openGauss学习笔记-122openGauss数据库管理-设置密态等值查询-密态支持函数/存储过程密态支持函数/存储过程当前版本只支持sql和PL/pgSQL两种语言。由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。密态等值查询支持函数存储过程新增系......
  • 海康机器人:聚焦三大视觉技术,精准赋能智能制造
    智能智造生态领域因有科技加持,更新速度较为迅速,也正是因为更新速度的持续加快,为各行各业提供了便捷、高效发展的机会。海康机器人作为行业知名企业,就为各行业提供了多样的智能设备。在2D视觉领域,海康机器人推出了多款用于检测的设备。其中,8k黑白高速线阵相机和16k真彩色线......
  • Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmedia
    下列关于Vue的描述错误的是()A当给某个组件修改某个值时,该组件不会立即重新渲染BVue内部使用原生Promise.then、MutationObserver和setImmediate实现异步队列,不会采用setTimeout(fn,0)C$nextTick()返回一个Promise对象D$nextTick()可以配合async/await使用正确答案:B官......
  • TD支持的库:python库、自身的python库、已经内置但需要自行引用的第三方库、第三方以外
    这是内置的第三方库asn1crypto (asn1crypto)-ParsingandserializingASN.1structuresAuthlib (authlib)-LibrarytobuildOAuthandOpenIDConnectservers.Certifi (certifi)- Root CertificatesforvalidatingthetrustworthinessofSSLcertificateswhi......
  • RestCloud AppLink已支持的数据源有哪些?​
    RestCloudAppLink是什么?首先,我们需要了解RestCloudAppLink是什么,AppLink是一款由RestCloud公司推出的超级应用连接器。不需要开发,零代码,低成本即可快速打通数百款应用之间的数据。通过流程搭建,可以智能、高效地完成自动化任务,在大大提高工作效率的同时,也降低了大量的人工成本。Re......
  • 使用nvm使Windows电脑支持多个Nodejs版本
     Node.js一台电脑只能装一个版本,但是有时候开发项目会用到不同版本的Node.js,卸载再装是很麻烦的,而nvm就是解决这个问题的,有了它就可以在一个电脑上安装多个Node.js版本,并且在不同版本之间切换使用。 下载github下载地址:https://github.com/coreybutler/nvm-windows/releases......
  • OpenAI 支持的国家和地区
    支持的国家和地区OpenAI不是对所有国家和地区开放,所以注册、访问API和购买服务器都会有限制,下面列出OpenAI的官方支持内容翻译:OpenAI能够为许多国家、地区和地区提供API访问权限,并且一直在增加更多。地理多样性和广泛分布的利益对我们来说非常重要,我们正在努力增加我们可以......
  • KDE Plasma 6 将不支持较旧的桌面小部件
    KDEPlasma6进行了一些修改,需要小部件作者进行调整。开发人员,移植时间到了!KDEPlasma6是备受期待的桌面环境版本升级版本。最近,其发布时间表公布,第一个Alpha版本将于 2023年11月8日上线,最终 Beta版本于2023年1月31日上线,稳定版计划于 2024年2月2......