在本文中,将介绍如何利用Roboflow平台部署YOLOv7实例分割模型。这包括创建和上传数据集、训练模型以及部署和测试模型。将以识别航拍图像中建筑物位置的实例分割模型为例进行说明。
首先,需要注册一个免费的Roboflow账户。注册完成后,可以开始收集项目所需的数据。在本指南中,将从Roboflow Universe中获取数据,这是一个包含超过110,000个开源数据集的计算机视觉项目数据仓库。如果还没有适用于项目的实例分割数据集,可以浏览Universe以查找满足需求的数据。
将使用名为“Windows Instance Segmentation”的数据集。要下载此数据集以训练模型,请单击“Download this Dataset”并选择“download ZIP to computer”导出数据。
接下来,需要在Roboflow中创建一个项目并上传数据集。稍后在本指南中,将上传在Colab笔记本中训练的模型权重到项目中。
要创建项目,请转到Roboflow仪表板并单击“Create New Project”按钮。在弹出的对话框中填写项目详细信息:
如果从Universe下载了数据,解压缩下载的文件,并将所有数据上传到平台。如果数据尚未注释,可以使用Roboflow Annotate工具添加注释。
数据上传后,可以批准其包含在数据集中。按照仪表板中提供的说明批准注释。然后,单击仪表板侧边栏中的“Versions”。在这里,将创建一个新的数据集版本,将在此版本上训练模型。版本是数据集在时间上的一个快照。将在训练模型时将模型权重与此版本关联。
在此阶段,可以选择对数据应用预处理和数据增强步骤。通过预处理和数据增强指南,可以学习最佳实践,以帮助最大化计算机视觉模型的性能。
对于这个例子,将跳过添加更多增强,因为下载的数据集已经包含增强的图像。
准备就绪后,单击页面底部的“Generate”。这将创建一个新的数据集版本,可以下载到笔记本中并用于生成模型。根据上传和选择生成的图像数量,这可能需要一些时间。
有了生成的数据集版本,现在可以开始训练模型了。
要将生成的数据集导出以在Colab笔记本或其他环境中使用,请点击“Custom Train & Deploy”标签下的下拉菜单。选择“YOLOv7 Instance Segmentation”作为可用选项,然后点击“Get Snippet”。这将为提供可以用来下载应用了所选增强和预处理步骤的数据集的代码:
from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace("WORKSPACE_ID").project("PROJECT_ID")
dataset = project.version(VERSION_NUMBER).download("coco")
Roboflow团队为训练YOLOv7实例分割模型准备了一本笔记本,可在Google Colab、Kaggle和AWS SageMaker Studio Labs中使用。可以在Roboflow Notebooks GitHub仓库中查看此笔记本。
有一个YouTube指南,介绍了如何使用笔记本训练YOLOv7实例分割模型,以及相应的博客文章。
当准备好使用模型权重时,可以使用以下代码行上传它们:
project.version(DATASET_VERSION).deploy(model_type="yolov7-instance-seg", model_path=f"{HOME}/runs/detect/train/")
如果不使用上述笔记本,请使用此长形式代码片段:
from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace().project("PROJECT_ID")
project.version(DATASET_VERSION).deploy(model_type="yolov7-instance-seg", model_path=f"{HOME}/runs/detect/train/")
可以从Roboflow仪表板中获取API密钥,以及从仪表板的Versions标签中获取项目ID和数据集版本号:
运行此代码后,模型权重将上传到Roboflow仪表板。这可能需要一些时间。
几分钟后,返回Versions标签。应该在模型版本旁边看到一个绿色的勾号,表示权重已成功上传。页面上将显示一个标签,显示权重是手动上传的。
将权重托管在Roboflow上后,有很多部署选项可供选择。在仪表板中,可以通过以下方式对模型进行推理:
上传图像或视频;从测试集中选择图像;提供YouTube视频或图像的URL;使用网络摄像头。
点击项目页面侧边栏中的“Deploy”以查看部署选项。
以下是在测试集中的图像上运行模型的示例:
模型按预期工作!从这里开始,就可以考虑部署模型了。查看文档,了解有关查询与项目相关的API的信息。
还可以使用模型自动化标记要添加到未来数据集中的数据。模型使能够使用Roboflow Annotate UI中的Label-Assist或Annotate API自动标记大型数据集。
除了使用Roboflow托管的API进行部署外,还可以使用Roboflow Inference,这是一个开源的推理解决方案,已经在生产环境中支持了数百万次API调用。Inference支持CPU和GPU,让可以立即访问从NVIDIA Jetson到TRT兼容设备再到ARM CPU设备的各种设备。
使用Roboflow Inference,可以在设备上自托管并部署模型。可以使用Inference Docker容器或pip包部署应用程序。在本指南中,将使用Inference Docker部署解决方案。首先,在设备上安装Docker。然后,查看Inference文档以找到适用于设备的Docker容器。
对于本指南,将使用GPU Docker容器:
docker pull roboflow/roboflow-inference-server-gpu
此命令将下载Docker容器并启动推理服务器。此服务器可在http://localhost:9001上使用。要运行推理,可以使用以下Python代码:
import requests
workspace_id = ""
model_id = ""
image_url = ""
confidence = 0.75
api_key = ""
infer_payload = {
"image": {
"type": "url",
"value": image_url,
},
"confidence": confidence,
"iou_threshold": iou_thresh,
"api_key": api_key,
}
res = requests.post(
f"http://localhost:9001/{workspace_id}/{model_id}",
json=infer_object_detection_payload,
)
predictions = res.json()
在上面,设置Roboflow工作区ID、模型ID和API密钥。
找到工作区和模型ID找到API密钥还设置想要运行推理的图像的URL。这可以是本地文件。
要使用YOLOv7模型进行商业推理,将需要一个Roboflow企业许可证,通过该许可证,可以获得使用YOLOv7的传递许可证。企业许可证还为提供了高级设备管理、多模型容器、自动批处理推理等功能。
要了解更多关于使用Roboflow Inference部署商业应用程序的信息,请联系Roboflow销售团队。
在本指南中,构建了一个YOLOv7实例分割模型,以识别图像中窗户的位置。从RoboflowUniverse下载了数据以用于项目,创建了一个项目版本,可以将权重上传到该版本,并在笔记本中训练了模型。将训练好的权重上传到了Roboflow平台。
现在,拥有一个托管的云API,可以在下一个项目中使用它来运行实例分割!