这个本来是想拿来直接实时检测树莓派摄像头的数据的,但是测试下来效果不是很好,主要是树莓派推流不太行,后续有时间可能会优化一下方案
效果演示
网页效果图如下
实时目标信息如下,实时目标信息是通过websocket来实时传递的,包括了坐标、标签、置信度等信息
检测后的画面如下
项目运行
我们需要先搭建流媒体服务,主要作用就是进行推流转换,我们可以把rtmp的数据直接推到这个服务,然后这个服务可以自动转换成其他协议,这样浏览器就可以直接播放转换后的结果了
我这里是直接使用docker来安装的,docker-compose文件如下
version: "3"
services:
lal:
container_name: lal
image: q191201771/lal:latest
ports:
- 8100:1935
- 8101:8080
- 8102:4433
- 8103:5544
- 8104:8083
- 8105:8084
- 30000-30100:30000-30100/udp
volumes:
- /data/lal/lalserver.conf.json:/lal/conf/lalserver.conf.json
restart: always
command: /lal/bin/lalserver -c /lal/conf/lalserver.conf.json
安装好流媒体服务后,可以本地简单测试一下
# 推流
ffmpeg -re -i tmp.mp4 -c:a copy -c:v copy -f flv rtmp://192.168.1.30:8100/live/origin
# 拉流
ffplay rtmp://192.168.1.30:8100/live/origin
树莓派相关的这里就不演示了,感兴趣可以参考:github.com/xiaoyou-bil…
我们可以克隆一下项目,pytorch需要自己手动安装一下
# 先安装yolox
git clone git@github.com:Megvii-BaseDetection/YOLOX.git
cd YOLOX
pip3 install -v -e . # or python3 setup.py develop
# 然后克隆一下本项目
git clone git@github.com:xiaoyou-bilibili/pi_camera_yolo.git
cd pi_camera_yolo
# 安装依赖
pip install -r requirements.txt
然后自己本地先自己到yolox那里去下载模型:github.com/Megvii-Base… 我是下载的最小的那个模型
下载完毕后放到model目录下(自己新建一个),其他配置参数都在core/__init__.py文件里面
我们需要确保上面这个配置文件和下面这个html里面的两个地址一致,这样才能正常播放
设置完后自己直接运行项目即可。。