- 导入必要的库:
from transformers import AutoProcessor, AutoModelForVision2Seq # 用于加载和使用模型
from PIL import Image # 处理图像
import requests # 下载网络图片
from IPython.display import Image as IPImage, display # 显示图像
- 主要函数 analyze_image:
def analyze_image(image_path_or_url):# 函数接受图片路径或URL作为输入
- 加载模型:
processor = AutoProcessor.from_pretrained("microsoft/git-base-coco")
model = AutoModelForVision2Seq.from_pretrained("microsoft/git-base-coco")
# 使用微软预训练的COCO数据集模型
- 图片加载逻辑:
# 判断是网络图片还是本地图片
if image_path_or_url.startswith('http'):image = Image.open(requests.get(image_path_or_url, stream=True).raw)
else:image = Image.open(image_path_or_url)
- 图像处理和生成描述:
# 处理图片
inputs = processor(images=image, return_tensors="pt")# 生成文字描述
generated_ids = model.generate(pixel_values=inputs["pixel_values"],max_length=50, # 最大生成长度num_beams=4, # beam search参数
)# 将生成的ID转换为文字
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
- 测试代码:
image_url = "https://pics.jjsos.cn/FnpgQBCcIk-wwY7Z1rze12Yy8ul5"
result = analyze_image(image_url)
print("图片描述:", result)
这个程序的主要功能是:
- 可以处理本地图片或网络图片
- 使用预训练的模型自动生成图片的文字描述
- 支持错误处理
- 可以在Jupyter环境中显示图片
使用场景:
- 图像自动描述
- 图像内容理解
- 辅助视觉障碍人士理解图片内容
- 图像数据的自动标注