在当今的技术世界中,计算机视觉模型的应用越来越广泛。这些模型能够识别和理解图像内容,为各种行业提供强大的分析工具。然而,并非所有情况下都能保证网络连接的稳定性,这就催生了对离线推理的需求。Roboflow Inference 是一个开源的可扩展推理服务器,它允许在本地设备上运行经过微调和基础的视觉模型,实现离线访问。通过这种方式,可以在没有网络连接的情况下,也能进行有效的图像和视频分析。
Roboflow Inference 专为边缘部署设计,支持在各种设备上运行视觉模型,包括 ARM 设备(如 Raspberry Pi)、CUDA 支持的设备(如 NVIDIA Jetson,支持 TRT)、x86 设备等。它已经为 Roboflow 托管的推理 API 提供了数百万次 API 调用,并且在企业中用于复杂的计算机视觉部署。此外,Inference 还支持多种模型,如 YOLOv5、YOLOv7、YOLOv8、CLIP、Segment Anything (SAM) 和 DocTR(用于 OCR)。
在部署 YOLOv8 目标检测模型之前,需要在Roboflow上训练模型或上传支持的模型。这可以通过 Roboflow 提供的在线平台完成。一旦模型在 Roboflow 上托管,就可以开始使用 Inference 进行部署。对于 CLIP、SAM、DocTR 等基础模型,虽然可以直接使用,但仍然需要互联网连接来下载模型权重,之后便可以离线运行。
RoboflowInference 运行在Docker中,提供了针对多种流行边缘设备和计算架构的 Dockerfile。Inference Docker 管理了与部署模型相关的所有依赖项,让可以更专注于构建应用逻辑。首先,需要安装 Docker,并根据官方安装指南进行操作。然后,安装 Inference Python 包和 SDK:
pip install inference inference-sdk
接下来,使用以下命令启动 InferenceDocker容器:
inference server start
此命令将从DockerHub 拉取 Docker 容器。一旦容器镜像下载完成,容器将启动。Roboflow Inference 将在 http://localhost:9001 上运行。
要在使用图像上运行视觉模型,可以使用 Inference SDK。为了帮助处理检测结果,将使用开源的 supervision Python 包。supervision 提供了一系列工具,用于处理视觉模型,从可视化预测到评估模型。可以使用以下命令安装 supervision:
pip install supervision
然后,创建一个新的 Python 文件,并添加以下代码:
import cv2
import supervision as sv
from inference_sdk import InferenceConfiguration, InferenceHTTPClient
image = "containers.jpeg"
MODEL_ID = "logistics-sz9jr/2"
config = InferenceConfiguration(confidence_threshold=0.5, iou_threshold=0.5)
client = InferenceHTTPClient(
api_url="http://localhost:9001",
api_key="API_KEY",
)
client.configure(config)
client.select_model(MODEL_ID)
class_ids = {}
predictions = client.infer(image)
print(predictions)
在上面的代码中,需要将 'API_KEY' 替换为 Roboflow API 密钥,将 'MODEL_ID' 替换为 Roboflow 模型 ID。运行脚本后,将能够看到模型对图像的预测结果。
还可以在摄像头或 RTSP 流上运行视觉模型,几乎实时地进行推理。创建一个新的 Python 文件,并添加以下代码:
from inference import InferencePipeline
from inference.core.interfaces.stream.sinks import render_boxes
pipeline = InferencePipeline.init(
model_id="rock-paper-scissors-sxsw/11", # from Universe
video_reference=0, # integer device id of webcam or "rstp://0.0.0.0:8000/password" for RTSP stream
on_prediction=render_boxes,
api_key=api_key,
)
pipeline.start()
pipeline.join()
在上面的代码中,将 'rock-paper-scissors-sxsw/11' 替换为 Roboflow 模型 ID,并设置 API 密钥。运行此代码后,模型将在摄像头的帧上运行。
通过本文的介绍,了解了如何为 Inference 配置模型、设置 Inference 以及在图像或视频上运行视觉模型。RoboflowInference 允许在本地设备上离线部署计算机视觉模型,支持运行各种视觉模型以及基础模型,如 CLIP 和 SAM。Inference 针对不同的设备进行了优化,包括 CUDA 支持的 GPU、TRT 加速的设备等。