现今的大模型已经具备强大的视觉能力,可以识别图像里的内容并进行描述,可以比较多个图像的不同之处,下面还是以最新的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 执行需要完美精度或敏感图像分析而无需人工监督的任务。