一种基于虚拟摄像头、NDI、OBS以及yolo的多机视觉目标检测方案
一种基于虚拟摄像头、NDI、OBS以及yolo的多机视觉目标检测方案
绪论
近来为了实现某种实时展示效果,笔者希望通过一套方案实现在两台主机上分别运行仿真平台以及视觉深度学习算法。透过对当下较为流行的几种方案的调研,笔者最后决定了采用OBS采集并透过NDI协议在局域网内进行广播,再将NDI推到虚拟摄像头上透过yolo进行目标检测的方案。
该方案使用的工具
- obs studio 29.1.0
- obs-ndi
- ndi tools
- yolo v5
- 同一网域内的两台主机
方案大致工作管线
主机1(运行仿真平台)
仿真平台 -> obs studio -> ndi广播
主机2(运行预测算法)
ndi广播 -> ndi tools -> 虚拟摄像头 -> yolo
方案实现
-
在主机1上正确安装并配置 obs studio
在官网正确安装 obs studio 并正确配置
准备好用于推流的内容
-
在主机1上正确安装并配置 obs-ndi
从https://github.com/obs-ndi/obs-ndi上下载并安装,注意runtime和obs-ndi插件都要安装
正确安装之后按理可在 obs 的 tools 中找到ndi广播的选项
设置从 ndi 上进行广播
-
在同一网域内的主机2上正确安装并配置 ndi tools
从 https://ndi.video/tools/ndi-tools/ 即可下载ndi tools
打开之后选择 webcam
选择用于推送的 ndi
可以看到画面预览
接下来将虚拟摄像头作为物理摄像头启动yolo即可,将source修改为ndi使用的虚拟摄像头,因设备而异
python detect.py --weights yolov5s.pt --source 0
可以看到yolo已经正常运作
总结
这种方案主要适用于快速部署一个多主机的视觉检测展示,可以将yolo换成其他的目标检测模型。如果网域在一定程度上低延迟,实时交互是可以做到的。