小白的AIGC课(3)— 图像内容理解

现今的大模型已经具备强大的视觉能力,可以识别图像里的内容并进行描述,可以比较多个图像的不同之处,下面还是以最新的Claude 3来进行示范。

一、图像内容描述

在VS Code中输入以下代码

import anthropic
import base64

client = anthropic.Anthropic()

# Read local image files
with open("image1.jpg", "rb") as f:
    image1_data = base64.b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="Respond only in Chinese.",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": image1_data,
                    },
                },
                {
                    "type": "text",
                    "text": "Describe this image."
                }
            ],
        }
    ],
)
print(message)

这段代码中,先读取一个名为image1.jpg文件,该文件跟程序放置在同一个目录,然后将图片进行base64的编码,base64 是一种二进制到文本的编码方案,以 (ASCII) 字符串格式表示二进制数据。它旨在跨通道传输以二进制格式存储的数据,并且它可以接受任何形式的数据并将其转换为一长串纯文本。

接下来程序调用claude-3-opus-20240229大模型对图像进行解读,并将结果以中文输出。

在本地目录上传这张复活节兔子的图像:

图片

程序运行结果:这张照片拍摄了一只可爱的灰色小兔子,它坐在一个柳条编织的篮子里,周围散落着五颜六色的复活节彩蛋。小兔子看起来非常柔软温驯,毛茸茸的样子让人忍不住想抚摸。篮子放置在绿油油的草地上,背景是朦胧的绿色,给人一种春天的气息。这张图片充满了节日的欢乐氛围,小兔子与彩蛋的搭配非常应景,是一张富有春天生机和活力的温馨照片。

二、不同图像比较

import anthropic
import base64

client = anthropic.Anthropic()

# Read local image files
with open("image2.jpg", "rb") as f:
    image2_data = base64.b64encode(f.read()).decode("utf-8")

with open("image3.jpg", "rb") as f:
    image3_data = base64.b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="Respond only in Chinese.",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Image 1:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": image2_data,
                    },
                },
                {
                    "type": "text",
                    "text": "Image 2:"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": image3_data,
                    },
                },
                {
                    "type": "text",
                    "text": "How are these images different?"
                }
            ],
        }
    ],
)

print(message)
图片
图片

输出结果:

这两张图片都是猫咪的特写照,但有几点明显的不同:

 第一张图片中的猫咪是一只短毛猫,浅棕色皮毛,看起来像一只普通的家猫。而第二张图片中的猫咪是一只长毛品种,雪白的皮毛十分美丽。

 第一张图中猫咪的眼神平静,看起来很温顺乖巧。第二张图中的猫眼神犀利,瞳孔呈现迷人的蓝绿色,给人一种神秘优雅的感觉。

 第一张图片是在纯黑色背景前拍摄,重点突出猫咪。第二张采用虚化的背景,营造出一种朦胧梦幻的氛围。

构图方面,第一张偏重展现猫咪的整体面貌,第二张则侧重捕捉猫咪的眼神特写。

总的来说,两张图片风格迥异,一张朴实自然,一张华丽梦幻,但都很好地展现了猫咪的魅力,是两种不同风格的猫咪摄影佳作

虽然 Claude 的图像理解能力非常先进,但也有一些限制需要注意:

  • 人物识别:Claude不能用于识别图像中的人物,并且会拒绝这样做。
  • 准确性:Claude 在解释低质量、旋转或 200 像素以下的非常小的图像时可能会产生幻觉或犯错误。
  • 空间推理:克劳德的空间推理能力有限。它可能难以完成需要精确定位或布局的任务,例如读取模拟钟面或描述棋子的确切位置。
  • 计数:Claude 可以给出图像中对象的近似计数,但可能并不总是精确,特别是对于大量小对象。
  • AI 生成的图像:Claude 不知道图像是否是 AI 生成的,如果询问,可能会不正确。不要依赖它来检测虚假或合成图像。
  • 不当内容:Claude不会处理违反可接受使用政策的不当或露骨图像。
  • 医疗保健应用:虽然 Claude 可以分析一般医学图像,但它不能解释复杂的诊断扫描,例如 CT 或 MRI。Claude的结果不应被视为替代专业的医疗建议或诊断。

始终仔细审查和验证 Claude 的图像解释,尤其是对于高风险用例。请勿使用 Claude 执行需要完美精度或敏感图像分析而无需人工监督的任务。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注