在实时应用场景中,Roboflow推荐使用UDP推理而不是HTTP。UDP推理确保即使数据包丢失或延迟,推理过程也不会被阻塞,从而保证模型能够平滑地实时运行。
RoboflowInference是一个开源解决方案,用于在视觉模型上运行推理,它原生支持UDP推理。使用UDP的Roboflow Inference,可以享受到包括标准API、模块化实现的常见架构、模型注册表等多种好处,这些功能让能够轻松地在具有不同架构的模型之间切换。
本指南将展示如何使用UDP Roboflow Inference容器来运行实时视频流的推理。这个容器已经被用来为世界各地知名的体育广播提供实时案例支持。
要使用UDP进行RoboflowInference,需要设置两个项目:一个运行Roboflow Inference UDP服务器的Docker容器,以及一个能够接收预测并处理后处理逻辑(例如保存预测、触发事件)的客户端。
首先,需要从Docker Hub拉取Roboflow Inference UDP Docker镜像。如果设备上还没有安装Docker,请按照官方的Docker安装指南进行设置。安装完成后,运行以下命令来下载Inference UDP容器:
docker pull roboflow/roboflow-inference-server-udp-gpu
这个命令的执行时间取决于网络连接速度。接下来,需要配置一个接收服务器,该服务器将处理来自推理服务器的预测结果。
在设置好接收服务器之后,需要配置UDP服务器以使用模型。在这个指南中,将使用一个在Roboflow上托管的剪刀石头布模型。可以使用任何支持UDP的Roboflow Inference模型。
要运行推理,需要编写一个Docker命令。以下是一个示例命令,其中需要替换STREAM_ID、MODEL_ID、SERVER_ID和API_KEY为实际值:
docker run --gpus=all --net=host -e STREAM_ID=0 -e MODEL_ID=MODEL_ID -e API_KEY=API_KEY roboflow/roboflow-inference-server-udp-gpu:latest
或者,如果想对视频文件进行推理,可以使用:
docker run --gpus=all --net=host -e STREAM_ID=video.mov -e MODEL_ID=MODEL_ID -e API_KEY=API_KEY roboflow/roboflow-inference-server-udp-gpu:latest
确保UDP接收服务器已经设置好,然后运行编写的Docker命令来启动服务器。如果一切顺利,将在控制台看到服务器启动的消息。
通过UDP发送推理请求到服务器,可以比通过HTTP更高效地运行推理并获取结果。本指南展示了如何设置Roboflow Inference来通过UDP运行模型推理,以及如何接收UDP服务器的预测结果以用于应用逻辑。