Roboflow 推理命令行工具使用指南

Roboflow 提供了一个命令行工具,允许用户通过命令行界面(CLI)在本地对图像进行推理。这个工具支持广泛的设备和架构,包括 x86 CPU、ARM 设备如 Raspberry Pi,以及 NVIDIA GPU。通过几个简单的命令,用户可以在生产环境中测试和部署 Roboflow 模型。

要了解 CLI 的完整文档,请访问 。CLI 是开源的Roboflow推理服务器存储库的一部分,可以作为独立的 pip 包安装,或者与版本为 0.9.1 或更高版本的推理包捆绑安装。

使用 CLI 的好处在于,它可以帮助用户快速启动推理服务器,而无需担心 Docker/设备配置或编写脚本。用户可以在本地计算机上测试模型,或者将服务器与任何可以执行终端命令的工具或服务集成。此外,CLI 还会自动处理一些手动任务,如拉取最新的 Docker 镜像和重启服务器,使得保持推理服务器的最新状态变得更加容易。

在本指南中,将探索两个 CLI 使用案例:在本地计算机上测试模型,并与托管的推理服务器结果进行比较;启动一个定时任务,启动新的推理服务器并在本地图像上运行推理。

要安装 CLI,需要在计算机上安装 Python 3.7 或更高版本。要检查 Python 版本,请在终端中运行 `python --version`。如果尚未安装 Python,可以从 Python 官网下载最新版本。要安装包,请运行:

pip install inference-cli

推理 CLI 通过简单、标准化的界面,让用户轻松地从计算机视觉模型中获得预测。CLI 支持与 Roboflow 训练和/或部署的自定义模型以及社区共享的成千上万的微调模型无缝协作,适用于对象检测、实例分割、单标签分类和多标签分类等任务。

要开始使用推理服务器,请确保计算机上已安装 Docker。Docker 提供了一个容器化环境,允许Roboflow推理服务器以一致且隔离的方式运行。如果尚未安装 Docker,可以访问 Docker 官网了解如何安装。要启动本地推理服务器,请运行以下命令:

inference server start

此命令将在端口 9001 上启动推理服务器。如果该端口上已有容器在运行,CLI 将提示停止它并启动一个新的容器。此命令将自动检测设备是否具有 Nvidia GPU,并拉取适当的 Docker 镜像。

要运行推理,需要 Roboflow 项目 ID、模型版本号和 API 密钥。请参阅文档,了解如何检索工作区和项目 ID,以及如何找到 Roboflow API 密钥。要使用本地推理服务器对图像运行推理,请运行以下命令:

inference infer /path/to/image.jpg --project-id your-project --model-version 1 --api-key your-api-key

此命令会向在计算机上运行的推理服务器发送 HTTP 请求,该服务器将返回终端中的推理结果。可以提供本地图像的路径,或者提供托管图像的 URL。

使用案例 #1:将设备上的推理与 Roboflow 托管 API 进行比较。在这个例子中,将使用一个托管在 Roboflow Universe 上的野火烟雾检测模型。首先,使用以下命令启动本地推理服务器:

inference server start

然后,打开 Universe 页面,滚动到代码片段部分,并选择 "On Device"。滚动到 “Run inference on an image”,并复制 bash 命令。打开终端,并运行复制的命令,应该在控制台看到打印的 JSON 输出,其中包含一个 predictions 数组。滚动到页面的顶部,并粘贴命令中的图像 URL,以将本地预测与Roboflow托管 API 进行比较。

在按下箭头(或按 Enter)后,可以将输出预测与终端中的预测进行比较。预测结果应该相似,但可能会因推理服务器版本和设备硬件而略有不同。CLI 还可以使用 –host 选项查询与 Web 视图相同的 API。将以下行添加到 infer 命令中:

--host https://detect.roboflow.com

命令现在应该看起来与此类似,但请使用 API 密钥代替 “API_KEY”:

inference infer https://source.roboflow.com/5w20VzQObTXjJhTjq6kad9ubrm33/ZOPyGOffmPEdoSyStK7C/original.jpg \ --api-key API_KEY \ --project-id wildfire-smoke --model-version 1 --host https://detect.roboflow.com

现在的结果应该与 Roboflow Universe 上的结果完全相同,因为推理是在相同的版本和硬件上运行的。现在可以按照这些步骤在本地设备上测试 Roboflow 模型了!

使用案例 2(仅限 Unix):Bash 脚本可以每天运行一次。可以使用 CLI 将推理服务器集成到现有的 bash 管道中。为了演示这一点,将在机器上设置一个定时任务,每天运行此脚本一次。

以下是一个脚本示例,该脚本启动一个新的推理服务器(带有最新版本),并在本地图像上运行推理,将结果保存到输出文件中。

#!/bin/bash # 包含输入图像的目录 IMAGES_DIR="/path/to/images" # 输入图像列表 IMAGES=("$IMAGES_DIR"/*.jpg) # 启动推理服务器 inference server start # 等待推理服务器启动 echo "Waiting for inference server to start..." sleep 3 inference server status # 推理结果的输出文件 OUTPUT_FILE="inference_results.txt" # 对每个图像运行推理 for IMAGE in "${IMAGES[@]}"; do echo "Running inference for $IMAGE..." inference infer "$IMAGE" \ --api-key REDACTED \ --project-id wildfire-smoke --model-version 1 \ >> "$OUTPUT_FILE" done echo "Inference results written to $OUTPUT_FILE"

需要将 IMAGES_DIR 替换为包含图像的文件夹的路径,并更新 API 密钥以使用密钥,而不是 REDACTED。将此脚本保存到文件中,例如 run_inference.sh。通过运行以下命令使脚本可执行:

chmod +x run_inference.sh

通过运行以下命令打开 crontab 文件:

crontab -e

最后,将以下行粘贴到 crontab 文件中,以每天运行一次脚本:

0 9 * * * /path/to/run_inference.sh

这将在每天上午 9 点运行 inference.sh 脚本。将 path/to/run_inference.sh 替换为 .sh 文件的完整系统路径。接下来,保存并关闭 crontab 文件(默认使用 vim 控制,输入 :wq,然后按 Enter)。

通过这些步骤,现在应该已经设置了一个定时任务,每天在本地图像上运行推理一次。可以根据需要修改脚本和定时任务计划。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485