〇、写在前面
树莓派因为生态完善、玩法丰富,一直是 DIY 和机器人爱好者的常用设备,可以说是 Linux 边缘设备的代表 。不过,如果想让树莓派自己跑人工智能算法(比如 YOLOv5),就会发现一个明显问题:算力完全不够用,运行速度慢、延迟高,几乎无法满足实际需求。
这其实也是边缘人工智能(Edge AI)的典型问题------它的优势在于响应快、实时性强,但劣势也很明显:算力有限、硬件成本高、系统升级麻烦。如果我们换个思路:让树莓派只负责"看"(也就是实时视频采集和传输),而把"想"(复杂的模型推理)交给性能更强的电脑来完成,就能两全其美:既能用上树莓派的灵活性,又能发挥电脑的算力优势。
本文就带大家实现这样一个思路:
👉 树莓派通过 GStreamer 采集摄像头画面并推送视频流
👉 计算机端接收流并运行 YOLOv5 做目标检测
👉 最终效果是:树莓派负责实时采集,电脑负责高效推理,延迟大幅降低
为简化称呼,本教程将Windows 11个人计算机简称为PC,将树莓派4B+简称为Pi。
一、前置教程
在开始学习本教程之前,强烈建议阅读前置教程。在实现前置教程的学习成果之后,有利于理解本教程的主要操作与核心思想。
二、知识学习
关于GStreamer的基本应用,前置教程已做完整介绍,在此不再赘述。唯一需要关注的是,在使用GStreamer推流时,Pi向PC传输的数据流格式是TCP或UDP,但是,YOLOv5的推理指令不包括这两种格式的数据流。
以下展示了官方编写的YOLOv5目标检测指令集。

如上所示,与前置教程已实现的GStreamer推流最相关的数据格式是RTSP/RTMP/HTTP stream,本教程采用的是RTSP格式。
因此,Pi在推流之前,应当将TCP或UDP数据流转换为RTSP格式,再传输给PC,PC即可直接使用官方推理程序(detect.py)执行实时目标检测。
三、设置Pi
在前置教程中,Pi的设置并不包括将TCP或UDP转换为RTSP的操作。
1、在系统上安装gi和gst-rtsp-server
bash
sudo apt install python3-gi gir1.2-gst-rtsp-server-1.0
2、编写test-launch.py
直接复制以下Python代码,将其保存为test-launch.py
python
#!/usr/bin/env python3
import gi, sys
gi.require_version('Gst', '1.0')
gi.require_version('GstRtspServer', '1.0')
from gi.repository import Gst, GstRtspServer, GLib
Gst.init(None)
import argparse
parser = argparse.ArgumentParser(description='GStreamer RTSP server test-launch (Python)')
parser.add_argument('-p', '--port', default="8554", help='server port (default 8554)')
parser.add_argument('-m', '--mount', default="/test", help='mount point (default /test)')
parser.add_argument('pipeline', help='GStreamer pipeline to stream', nargs='+')
args = parser.parse_args()
server = GstRtspServer.RTSPServer()
server.set_service(args.port)
mounts = server.get_mount_points()
factory = GstRtspServer.RTSPMediaFactory()
factory.set_launch(' '.join(args.pipeline))
factory.set_shared(True)
mounts.add_factory(args.mount, factory)
server.attach(None)
print(f"Stream ready at rtsp://127.0.0.1:{args.port}{args.mount}")
loop = GLib.MainLoop()
loop.run()
3、添加可执行权限
为上述python程序添加可执行权限。
bash
chmod +x test-launch.py
四、设置PC
1、安装YOLOv5
由于YOLOv5的安装并非本教程的重点,且在网上有许多相关资源,在此仅提供简要安装指南。若需要详细指引,请在评论区提出。
首先,安装git。
Git - Downloadshttps://git-scm.com/downloads然后,安装miniconda。
Miniconda - Anacondahttps://www.anaconda.com/docs/getting-started/miniconda/main其次,创建pytorch虚拟环境。运行miniconda,粘贴以下命令行。
bash
conda create -n pytorch python=3.10
最后,安装YOLOv5。
bash
git clone https://github.com/ultralytics/yolov5.git
五、正式工作
1、Pi推流
运行以下指令。
bash
/usr/bin/python3 test-launch.py "( v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! videoconvert ! x264enc tune=zerolatency bitrate=1000 speed-preset=ultrafast bframes=0 ! rtph264pay name=pay0 pt=96 )"
运行成功后,Pi将打印以下信息。
bash
Stream ready at rtsp://127.0.0.1:8554/test
2、PC推理
首先,进入pytorch虚拟环境。
bash
conda activate pytorch
然后,进入yolov5文件夹。
bash
cd yolov5
最后,从Pi读取RTSP数据流,开启正式推理。
bash
# 注意,192.168.8.243需改成自己树莓派的IP地址
python detect.py --weights yolov5s.pt --source "rtsp://192.168.8.243:8554/test?tcp" --img-size 640 --conf 0.25 --device 0 --view-img