PaliGemma是由Google开发的多模态视觉模型架构,可用于从视觉问题回答到对象检测等多种任务。2024年5月发布的PaliGemma模型具备微调能力,并且有一系列在各种基准数据集上训练过的现有权重。
使用PaliGemma,可以检测对象、分割对象,以及进行视觉问答(VQA)。这里是一个微调模型的示例结果,该模型能够检测货运集装箱及其信息。请注意,此模型仅训练了512步。增加训练步数将提高准确性。
很高兴地宣布,现在可以在自己的硬件上使用Roboflow部署PaliGemma模型。本指南将介绍如何使用现有的PaliGemma权重,以及如何上传自己的权重以进行部署。
部署微调PaliGemma权重
可以使用Roboflow部署在自己的数据上训练的PaliGemma模型。此功能专门设计用于对象检测。要部署模型,需要:
首先,创建一个Roboflow账户。然后,导航到账户仪表板。点击“创建项目”按钮以创建一个项目,然后填写页面上的表单。为项目选择一个名称,并选择“对象检测”数据类型。
创建项目后,上传用于训练模型的数据,或者计划用于训练模型的数据。可以上传原始图像或以任何支持的对象检测上传格式进行注释的数据。将数据拖放到Web界面中。当Web应用程序处理了图像(如果上传了注释,则包括注释)后,点击“保存并继续”以上传数据。
如果有任何未注释的数据,可以使用Roboflow进行注释。Roboflow有一套数据标记功能。可以使用自动标签功能自动标记未标记的图像。如果想要识别常见对象,自动标签功能效果最佳。还可以使用Roboflow Web界面绘制边界框。也可以使用SAM驱动的注释助手来加快手动注释的速度。使用此功能,可以单击对象以绘制多边形。
此多边形将在训练前转换为边界框。这使能够单击一下即可注释对象,而不必精确绘制边界框围绕所需区域。
一旦标记了数据,点击左侧边栏中的“生成”以生成数据集版本。数据集版本是数据的快照,时间固定。可以对数据集版本应用预处理和增强步骤。了解更多关于这些步骤如何有用的信息,请参考预处理和增强指南。
添加了任何预处理和增强步骤后,滚动到页面底部并点击“创建”以创建数据集。然后,将生成数据集版本。此过程所需的时间将取决于数据集中的图像数量以及应用的增强。
当数据集生成后,可以导出它以用于训练PaliGemma对象检测模型。
如果已经训练了模型,可以跳过此步骤。提供了一个交互式笔记本,展示了如何在自定义数据集上微调PaliGemma。使用此笔记本,可以提供自己的数据以PaliGemma格式,并用它来训练可以上传到Roboflow的模型。
要训练PaliGemma模型,需要以PaliGemma JSONL格式的数据。可以从Roboflow导出任何对象检测数据集的此格式,然后使用这些数据来训练模型。点击项目页面上的“导出数据集”以获取需要的代码,以下载数据集以所需的格式用于笔记本:
# 导出数据集的代码示例
export_dataset_code = "export_dataset(project_id, version_id, format='paligemma-jsonl')"
有了数据集和笔记本,可以训练PaliGemma模型。
一旦训练了模型,可以使用以下代码将其上传到Roboflow:
import roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace("workspace-id").project("project-id")
version = project.version("VERSION")
version.deploy(model_type="paligemma-3b-pt-224", model_path="/content/paligemma-lora")
在上面的代码中,将API_KEY替换为Roboflow API密钥,将workspace-id和project-id替换为工作区和项目ID,将VERSION替换为项目版本。如果不使用笔记本,将/content/paligemma-lora替换为保存模型权重的目录。运行上述代码后,模型将上传到Roboflow。模型处理完成后,将准备好使用,这可能需要几分钟时间。
当模型准备好后,可以在任何想要部署模型的设备上从Roboflow下载它。为此,可以使用Roboflow推理,开源计算机视觉推理服务器。
首先,安装推理:
pip install inference
然后,创建一个新的Python文件并添加以下代码:
import os
from inference import get_model
from PIL import Image
import json
lora_model = get_model("model-id/version-id", api_key="KEY")
image = Image.open("yard.jpg")
response = lora_model.infer(image)
print(response)
在上面的代码中,将model-id替换为Roboflow模型ID;将version-id替换为项目版本;将KEY替换为Roboflow API密钥。模型成功返回预测。
PaliGemma是由Google开发的多模态视觉模型架构。可以使用PaliGemma进行从视觉问题回答到对象检测等多种任务。在本指南中,展示了如何使用Google发布的一些微调PaliGemma模型与推理。还介绍了如何将微调的对象检测模型上传到Roboflow以进行推理部署。
要了解更多关于使用Roboflow部署视觉模型的信息,请参考推理文档。