设想一个系统,它能够监控前门廊是否有包裹。可以使用多模态视觉模型来识别图像中是否存在包裹、包裹的颜色以及包裹相对于图像中其他部分的位置(例如,包裹是在门廊上还是草地上)。多模态模型能够回答关于图像内容的问题,比如图像中有什么,图像中的对象如何相互关联等。可以要求提供丰富的描述,反映图像的内容。这项任务在计算机视觉领域被归类为视觉问答(Visual Question Answering,简称VQA)。
使用多模态模型进行VQA
PaliGemma是Google开发并于2024年发布的多模态架构之一,可以用它来训练视觉模型执行特定任务,如VQA、网站截图理解和文档理解。与GPT-4 with Vision等私有模型不同,这些模型可以在自己的硬件上运行。本文将指导如何使用PaliGemma进行VQA。将使用Roboflow Inference,这是一个开源的计算机视觉推理服务器。可以使用推理在自己硬件上运行视觉模型。
安装推理服务
首先,需要安装推理服务。推理服务是一个Python包,可以用它将模型直接集成到应用程序中,也可以作为一个Docker容器使用。Docker容器非常适合构建需要处理多个客户端请求的专用服务器的企业级系统。本文将使用Python包。要安装推理Python包,请运行以下命令:
pip install git+https://github.com/roboflow/inference --upgrade -q
还需要安装一些PaliGemma模型将使用的额外依赖项:
pip install transformers>=4.41.1 accelerate onnx peft timm flash_attn einops -q
安装推理服务后,可以开始构建使用PaliGemma进行VQA的逻辑。
使用PaliGemma进行VQA
创建一个新的Python文件,并添加以下代码:
import os
from inference import get_model
from PIL import Image
import json
lora_model = get_model("paligemma-3b-ft-vqav2-448", api_key="KEY")
在上述代码中,导入了推理Python包,然后初始化了一个PaliGemma模型的实例。将特定的模型标识符传递到模型初始化语句中。paligemma-3b-ft-vqav2-448指的是为VQA调整的模型权重。在上面的代码中,将KEY替换为Roboflow API密钥。
当第一次运行代码时,模型权重将被下载到系统。这可能需要几分钟。一旦模型权重被下载,它们将被缓存以供将来使用,这样就不必每次启动应用程序时都下载权重。
考虑以下图像:
让用提示“地上有包裹吗?”运行上述图像上的程序。模型返回“Yes.”,这是对问题的正确答案。现在,让用提示“How many packages are in the image?”运行模型。模型返回2。这表明了模型的一个局限性:它可能难以识别确切的对象数量。鼓励在应用程序将要处理的数据示例上测试模型,以评估模型是否符合要求。
PaliGemma是Google开发的多模态视觉模型架构,可用于VQA等多种视觉任务。在本指南中,使用了预训练在VQA数据上的模型权重来运行PaliGemma。能够成功地询问图像并检索问题的答案。使用Roboflow Inference运行了VQA模型,这是一个开源的、高性能的计算机视觉推理服务器。