Florence-2模型是由微软研究院开发的多模态模型,能够执行从密集描述到光学字符识别再到对象检测等多种任务。很高兴地宣布,现在可以使用Roboflow部署针对自己数据微调的Florence-2对象检测模型。模型随后可以部署在自己的硬件上,无论是作为带有Docker的微服务还是通过Python SDK。部署由开源计算机视觉推理服务器Roboflow Inference提供支持。
通用权重在识别大量对象方面表现良好,但可能在领域数据上表现不佳。话虽如此,Florence-2可以针对特定用例进行微调。这使能够提高Florence-2在领域的性能。要部署微调的Florence-2权重,需要:
让一步步走过这些步骤。
首先,创建一个免费的Roboflow账户。这个账户将允许创建一个项目,可以在其中托管数据集和Florence-2微调权重。一旦有了账户,转到项目仪表板并点击“创建项目”。将被带到一个页面,可以在其中配置一个新项目。为项目设置一个名称,并选择“对象检测”作为任务类型。
创建项目后,将被带到一个页面,可以在其中上传用于训练模型的图像数据和注释。可以上传原始图像,或者上传Roboflow支持的任何格式的带注释的图像。要上传图像数据,请将文件拖放到Roboflow仪表板上:数据将在浏览器中处理。然后,将出现一个“保存并继续”按钮。当点击此按钮时,图像(以及注释,如果上传了任何)将被上传到Roboflow并添加到项目中。处理图像数据所需的时间取决于上传了多少图像以及互联网连接强度。
如果有任何未注释的图像,可以使用Roboflow Annotate进行注释,这是一个基于Web的注释工具。Annotate具有一系列工具,可以帮助高效地标记数据。例如,可以使用SAM支持的标签助手工具,只需单击一下即可在图像中注释对象。
一旦标记了数据,可以创建一个数据集版本。数据集版本是数据集的快照,它在时间上是固定的。可以对特定版本应用预处理步骤和增强。这使能够使用这些步骤而不修改原始图像。要生成数据集版本,请在左侧边栏中点击“生成”。将被带到数据集生成页面。在此页面上,可以设置想要的任何预处理和增强步骤。有关如何决定需要应用哪些步骤(如果有的话)的信息,请参阅预处理和增强最佳实践。
配置好数据集生成作业后,点击页面底部的“创建”以创建数据集。根据数据集中的图像数量以及应用的增强数量,生成数据集可能需要几秒钟到几小时。一旦此过程完成,将被带到数据集版本页面,可以在此导出数据以用于训练模型。
如果已经训练了一个模型,可以跳过这一步。Roboflow团队编写了一个笔记本,详细介绍了如何在Google Colab上微调Florence-2模型。在遵循训练笔记本时,可以将默认数据集信息替换为数据集。在Roboflow仪表板上点击“导出数据集”并选择导出到笔记本的选项。然后,将获得如下所示的代码片段:
import roboflow
rf = Roboflow(api_key=KEY)
project = rf.workspace("roboflow-jvuqo").project("poker-cards-fmjio")
version = project.version(4)
dataset = version.download("florence2-od")
可以使用该代码片段将数据集下载到Colab中,以用于训练模型。florence2-od标识符表示希望以Florence-2对象检测格式导出数据。Roboflow原生支持此格式,允许以训练模型所需的格式导出数据集。
使用Roboflow Florence-2笔记本进行训练。一旦训练了模型,可以将其上传到Roboflow,然后使用Inference部署它。
一旦训练了模型,可以使用以下代码将其上传到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="florence-2", model_path="/content/florence2-lora")
上述代码中,替换:
如果不使用笔记本,将/content/florence2-lora替换为保存模型权重的目录。当运行上述代码时,模型将被上传到Roboflow。模型处理完成并准备使用可能需要几分钟。
一旦模型被处理,可以将其下载到希望部署模型的任何设备上。部署通过Roboflow Inference支持,这是开源计算机视觉推理服务器。Inference可以作为带有Docker的微服务运行,非常适合需要在集中服务器上运行推理的大型部署,或者当希望在隔离的容器中运行Inference时。还可以通过InferencePython SDK直接将Inference集成到项目中。
对于本指南,将展示如何使用Python SDK部署模型。首先,安装推理:
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("containers.png")
response = lora_model.infer(image)
print(response)
上述代码中,替换:
在代码中,加载了模型,在图像上运行它,然后使用supervision Python包绘制预测。当首次运行代码时,模型权重将被下载并缓存到设备上,以便后续运行。这个过程可能需要几分钟,具体取决于互联网连接强度。
Florence-2是由微软研究院创建的多模态模型。可以使用Florence-2执行从对象检测到图像描述的广泛任务。在本指南中,介绍了如何使用Inference部署Florence-2。展示了如何使用预训练的模型权重进行对象检测。然后,讨论了如何在自定义数据集上微调Florence-2模型。最后,走过了将微调模型上传到Roboflow并使用Inference部署的过程。要了解更多关于使用Inference部署模型的信息,请参阅Roboflow Inference文档。