在本文中,将探讨如何将Hugging Face托管的计算机视觉模型部署到边缘或私有云上。将以部署一个Ultralytics YOLOv8模型为例,展示整个过程。Roboflow支持多种视觉模型架构,包括但不限于YOLOv5、YOLOv7、YOLOv8和YOLOv9等。
截至目前,Roboflow支持多种视觉模型架构,包括但不限于:
本指南将展示如何将UltralyticsYOLOv8模型部署到Roboflow。如需查看可以上传到Roboflow的完整模型列表,请参考Roboflow文档中的“权重上传”功能。
访问Hugging Face并找到需要的模型权重。模型应该附带权重或训练文件。本教程中,将使用Hugging Face上的默认UltralyticsYOLOv8权重。
为了从Hugging Face导出模型,需要安装Git和Git-LFS。Git-LFS允许下载较大的git文件,这对于下载权重是必需的。
在Mac上下载git:
brew install git (必须已安装brew)
brew install git-lfs (必须已安装brew)
在Linux Ubuntu/Debian上下载git:
sudo apt install git
sudo apt install git-lfs
在Fedora上下载git:
sudo dnf install git
sudo dnf install git-lfs
使用git,可以下载模型权重。使用选择的模型链接,命令格式如下:
git clone https://huggingface.co/<user>/<model>
以下是需要运行的命令,以下载本指南中使用的模型权重:
git clone https://huggingface.co/Ultralytics/YOLOv8/
然后将在本地拥有权重,准备使用。
要将模型上传到Roboflow,需要在账户中拥有与模型相关联的数据集。可以上传超过一打支持格式的注释或原始计算机视觉数据。
请查看支持的上传格式列表。
转到工作区并创建一个项目。自定义项目名称和注释组为选择。如果想遵循本指南,请确保创建一个目标检测项目。
接下来,将图像添加到数据集中。使用了一个用于检测铁轨附近人类的数据集。如果需要注释图像,可以在Roboflow中进行。Roboflow提供了一套广泛的工具用于图像注释。
了解更多关于Roboflow的注释工具。
现在已经拥有注释和图像,可以生成标记图像的数据集版本。每个版本都是唯一的,并与训练模型相关联,因此可以迭代增强和数据实验。
所有模型都与数据集版本相关联。一旦有了数据集版本,就可以上传与数据集相关的模型权重。现在有了数据集,可以上传相关的模型权重并部署模型。
在克隆的Hugging Face文件中,应该看到一个以“pt”结尾的文件。这是模型。
首先,转到版本标签并点击自定义训练和上传。
接下来,选择想要的数据类型。每个模型都训练在不同的数据类型上。因此,需要指定需要的数据类型。在情况下,需要YOLOv8。选择YOLOv8后,点击获取代码片段。
将代码复制并粘贴到喜欢的IDE中。
接下来,为了部署模型,使用.deploy方法并指定模型路径以及数据集版本。
from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace("nathan-yan").project("project-id")
project.version(VERSION).deploy(model_type="yolov8", model_path=f"content/runs/detect/train/")
代码的输出应该类似于此:
Roboflow处理模型权重需要几分钟时间。可以在Roboflow仪表板中检查部署状态。当模型准备好后,将在Roboflow仪表板中看到一个交互式的可视化页面,可以从中测试模型。要导航到页面,请点击仪表板上的可视化。
要使用代码部署模型,请转到仪表板中的部署页面,并使用推理部署模型。接下来,需要安装推理和监督,以便部署有效的模型。
!pip install inference supervision
复制并粘贴推理部署代码,并确保将图像路径替换为测试图像。
from inference_sdk import InferenceHTTPClient
CLIENT = InferenceHTTPClient(
api_url="https://detect.roboflow.com",
api_key="API_KEY"
)
result = CLIENT.infer("IMAGE_PATH", model_id="humans-m1zdv/7")
将使用此图像作为当前的测试图像。最后,通过将图像路径转换为图像,并使用边界框注释显示检测结果。
from PIL import Image
import supervision as sv
image_path = "IMAGE_PATH"
image = Image.open(image_path)
detections = sv.Detections.from_inference(result)
annotated_image = sv.BoxAnnotator().annotate(
scene=image.copy(), detections=detections
)
annotated_image = sv.LabelAnnotator().annotate(
scene=annotated_image, detections=detections
)
sv.plot_image(annotated_image)
结论:可以将使用支持的架构训练的计算机视觉模型部署到Roboflow从Hugging Face。例如,可以将YOLOv8目标检测模型上传到Robfolow。然后,该模型可以与Roboflow推理一起部署,这是一个高性能的计算机视觉推理服务器。
通过遵循本教程中概述的步骤,可以将Hugging Face模型部署到边缘或自己的私有云中,用于实时目标检测系统。