在大规模部署中,可能需要一个中央服务器来处理多个视频源。例如,假设有一个监控系统,用于在夜间监控工厂外的人员。可以同时连接多个摄像头的RTSP流,并在一台服务器上运行视觉模型。
部署多流模型
Roboflow的InferencePipeline方法允许传入一个或多个视频流,并使用定义的回调函数处理每个流。InferencePipeline支持以下输入源:RTSP流、设备网络摄像头、视频文件(MP4)。如果是Roboflow企业客户,为在制造设施中常用的机器视觉相机上部署模型提供了额外的选项。请联系Roboflow销售团队了解更多信息。
要使用此功能,首先安装RoboflowInference:
pip install inference
接下来,需要设置一个Roboflow API密钥。此密钥将允许与Roboflow认证,并检索账户上的任何私有模型或访问Roboflow Universe上可用的50,000+公共模型。要认证,请运行:
export ROBOFLOW_API_KEY=""
了解如何找到Roboflow API密钥。
接下来,创建一个新的Python文件并添加以下代码:
from inference import InferencePipeline
from inference.core.interfaces.stream.sinks import render_boxes
pipeline = InferencePipeline.init(
video_reference=["your_video.mp4", "your_other_video.mp4"],
model_id="yolov8n-640",
on_prediction=render_boxes,
)
pipeline.start()
pipeline.join()
在这段代码中,使用InferencePipeline.init()方法初始化了一个推理管道。使用以下内容初始化此管道:
- 输入源的列表;
- 希望在视频源上运行的模型的ID;
- 处理模型预测的回调函数。
如果想使用RTSP流,可以在video_reference列表中使用RTSP流URL。如果想使用网络摄像头,可以传入与希望在其流上运行推理的网络摄像头关联的设备网络摄像头ID。然后,使用start()和join()方法启动管道。
在上面的代码中,设置了一个默认的YOLOv8n模型进行测试。可以配置此模型以使用在Roboflow上部署的任何模型。可以使用账户上的任何私有模型,或者Roboflow Universe上可用的50,000+公共模型中的任何一个。要使用自定义模型,将需要一个模型ID。了解如何找到模型ID。
使用Inference中默认的render_boxes回调函数。这将在每个流上显示模型的预测,以便可以可视化系统的结果。话虽如此,可以设置自己的回调函数来实现额外的处理逻辑。要了解如何编写自己的回调函数,请参考InferencePipeline回调签名文档。
配置好管道后,现在可以在多个流上运行管道:
管道成功地从YOLOv8n检查点中识别出了类别,该检查点在COCO数据集上进行了训练。此模型可以识别80个类别。上面的视频显示了模型识别了包括人员在内的几个类别。如果有兴趣尝试使用真实数据,请按照逐步处理多个摄像头流进行实时交通分析。