目录
基于树莓派的智能摄像系统
第一章 绪论
需求:目标追踪应用于生活的方方面面,但在大部分领域目标依靠于手动校准
第二章 前期的准备
第三章 树莓派运行yolov5和tensorfolw lite
第四章 自动跟踪模块
第五章 语音控制和定位模块结合用户识别
第六章APP远程监控和选择目标跟踪模块
第七章 用户身份验证
第八章 总结
摘要
目前,在教室中的网课录制和课程录制当中,由于被摄像机固定大大限制了老师们的发挥,此外还增加了摄像人员的负担;在舞台表演和体育赛事的直播当中,快速高效的目标聚焦也会给观众带了非凡的体验。但是目前大部分领域任然依靠人力。因此我们项目的目标旨在开发出一款开发出便携,快速,准确,自主,直观的“可选择目标的跟踪摄像系统”。该摄像系统由四个模块构成,模块一是自动跟踪系统,模块二是语音控制和定位模块结合用户识别,模块三是APP远程监控和选择目标跟踪模块,模块四是用户身份验证。所有模块基于树莓派实现,在主要功能部分,由于树莓派算力不够,我们采用云端的思想,利用远程电脑为树莓派提供额外的算力。本系统具有简便,高效和廉价的特点,相信能在未来的市场的相关领域大规模使用。
关键词 树莓派 摄像系统 自动跟踪 语音控制和定位模块结合用户识别 APP 用户身份验证
1.项目背景
所以现在极具需要一个一个自动的智能化的摄像系统减轻人力在相关领域的负担,同时提高摄像聚焦的效率。
2.项目目标
我们项目旨在开发出一款便携,快速,准确,自主,直观的‘可选择目标的跟踪摄像系统”。
3.项目总体架构
下面是项目的总体架构图:
本项目一共包括四个模块:该摄像系统由四个模块构成,模块一是自动跟踪系统,模块二是语音控制和定位系统,模块三是APP远程监控和选择目标跟踪模块,模块四是用户身份验证。
自动跟踪系统是:我们的摄像系统选择目标后,摄像系统能狗调整自身角度(舵机,小车轮子)使目标处在视野中心的一定范围内,并且与目标保持一定的距离。
语音控制和定位模块结合用户识别:语音控制包括关键词唤醒和语义识别,通过ld3320进行本地的关键词唤醒并且计算关键词位置来找到用户发出声音的位置。通过百度API识别用户命令,同时结合用户识别验证功能。当得到关键词声源位置时,摄像头找到目标,并通过人脸识别判断用户是否有权限控制系统。
其中目前仅实现了以上部分的两个模块:
未来我们还会实现以下的部分,因为一个项目的锻炼是一个长期的过程。
APP远程监控和选择目标跟踪模块:APP有两种选择模式,自动模式和手动模式,在自动模式下,摄像系统能狗自己跟踪已经选择的目标,然后将画面信息传回到APP页面上并显示出来;手动模式,是人为可以操作摄像系统的动力系统,控制摄像系统。
用户身份验证:为让产品更加的完善化,加入人脸识别或者密码验证,来增加用户的隐私保护。
1.系统的烧录:
使用win32diskimager烧录镜像系统,镜像系统是树莓派官方的系统
2.更换树莓派的版本
由于树莓派官方的系统自带的python是2.7版本,我们将其升级为python3.7版本,以便更利于我们项目的开发。
3.安装库
由于项目需要,我们下载了4.5.5版本的opencv和2.1版本的tensorflow,还有pytorch-1.8.0。
安装pytorch:
sudo apt-get install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools python3-wheel python3-pillow python3-numpy
pip3 install torch-1.8.0a0+56b43f4-cp37-cp37m-linux_armv7l.whl
pip3 install torchvision-0.9.0a0+8fb5838-cp37-cp37m-linux_armv7l.whl
4.配置网路
目的:一开始我们打算让树莓派进行上网,于是就想着利用网线连接树莓派和电脑,更改树莓派下的一些配置,让其能够得到的电脑的网络。
问题:但是我们在树莓派中更改一些网络文件,遇到vim编辑器,更改之后,保存不了的问题,后来更改的管理员的权限解决了此问题吧。
解决方案:后来放弃了上述的树莓派上网的方案,直接将树莓派与路由器相连,通过登录路由器的后台管理页面。查看路由器给树莓派分配的IP地址。之后通过此IP,登录VNC对树莓派进行操作上网。
5.树莓派各种外设的准备和配置
1.摄像头的准备和配置
USB连接摄像头和树莓派,进行树莓派VNC配置摄像头的参数。
2.其他相关舵机配置
查官方文档,对应各GPIO口
1.在树莓派运行yoloV5
1.将官方yolov5下载到树莓派的/home/pi路径下。
2. 根据requirements文件里的环境要求安装环境。
3.配置摄像头路径,以及摄像头参数。
4.然后在树莓派的termnial运行相关的命令。
2.在树莓派上运行tensorflow-lite
1.将官方的tensorflow-lite模型下载到树莓派上。
2.根据requirements文件里的环境要求安装环境。
3.配置摄像头路径,以及摄像头参数。
4.然后在树莓派上运行tensorflow目标检测模型。
相关命令如下:
python3 detect.py \ --enableEdgeTPU --model efficientdet_lite0_edgetpu.tflite
3.效果分析
在树莓派上直接运行yoloV5画面的实时显示效果仅有,每秒0.144帧,效果十分的不好;同时我们在树莓派上运行轻量版的tensorflow-lite模型,性能有所提升,但是每秒也仅是4.5帧左右,所以直接在树莓派上运行深度学习目标检测的相关模型,效果并不是很好,不能很好的体现我们项目的实时跟踪效果。
所以后来,我们使用了云端的思想完成此次的任务。
1 自动跟踪算法的选择
在实际应用中,我们曾将粒子滤波、YOLOV5等算法考虑在内,但是识别速度、成功率最高的是目前使用YOLOV5。
对于粒子滤波算法,用很多个粒子代表定位物体,每个粒子有权重代表该粒子位置的可信度。在prediction阶段,根据物体的控制信息(速度、转角等)与motion model预测出每个粒子下个时刻的位置;在update阶段,根据物体的观测值与地图值计算出每个粒子的权重;在resample阶段,根据粒子的重新采样粒子。这样,粒子的位置会越来越趋近真实的物体位置。通过对算法的分析,我们可以很容易发现,该算法具有一个其他算法不具有的优点——不需要对物体太多的先验信息就可以完成跟踪过程。在工程应用中,我们只需要获取待跟踪物体的一张照片就可以实现跟踪过程。但通过我们在计算机上进行实验,基于蒙特卡洛模拟的粒子滤波算法的效率远远比我们想象的低——往往需要数倍于视频流的时间才能实现对目标的跟踪。考虑到这个特性,实时跟踪几乎不可能实现。
YOLOV5算法本质上是目标识别的算法,由于近年来的不断发展以及对其训练集的不断补充,现有的神经网络现在已经可以快速识别数十种不同的物体,尤其是对人体的识别具有很高的效率与成功率。在我们的计算机实现过程中,处理每帧照片只需要0.003s(RTX2060Ti),可以很轻松地完成实时跟踪功能。
不同算法 评价指标 |
粒子滤波 |
YOLOV5 |
待跟踪的先验信息 |
少 |
多 |
准确度 |
高 |
高 |
实时性 |
低 |
高 |
根据我们的需求,我们最终选择YOLOV5算法作为我们的核心跟踪检测算法。
2 计算平台的选择
我们将YOLOV5搭建在树莓派平台上,由于树莓派算力有限的缘故,其识别速度远不如计算机,每秒只可以处理1/7张照片。因此,在树莓派上运行同时取得实时性的目标几乎不可能实现。
为此,我们将树莓派作为边缘计算平台,将视频流通过WIFI传给云端PC,由PC进行计算后将物体坐标传给树莓派,再完成实时跟踪的目标。通过我们的工程实现,实际效果预期几乎一致,说明我们的设计经得起考验。
3.自动跟踪模块总体架构
由于树莓派运行深度学习模型算力不够,所以我们将树莓派作为边缘计算设备使用。
下面是自动跟踪系统模块的总体架构图:
整个工作的过程可以概括为:
目标信息由摄像头捕捉,经树莓派转换MJPG视频流处理传送给PC端,PC端运行底层架构为yolov5深度学习的模型后,通过socket通信给树莓派返回目标位置信息,树莓派产生控制信息,传送给运动系统,运动系统反应跟踪目标。
将其与APP联系之后之后的模块架构图为:
1.语音识别及用户判断系统架构图
2.语音识别及用户判断系统
语音控制包括关键词唤醒和语义识别,通过ld3320进行本地的关键词唤醒并且计算关键词位置来找到用户发出声音的位置。通过百度API识别用户命令,同时结合用户识别验证功能。当得到关键词声源位置时,摄像头找到目标,并通过人脸识别判断用户是否有权限控制系统。
下图是语音模块的预期效果架构图:
1. APP远程监控
在未来我们摄像系统的进一步应用中,在很多场景下,比如危险场地、人工难以到达地区的探索等等,都需要为我们可以实现APP远程监控,使得我们的小车可以在无人工控制的情况下前后左右方向移动。无论是基础框架,还是实现难度,其实现框架都是十分简单的,只需要借助WLAN这个桥梁,就可以实现APP远程监控的功能。
2.选择目标跟踪模块
该模块的大体框架如下:
通过WIFI模块将视频从树莓派传到手机APP,手机APP选择目标后将选择信息传给云端计算机,云端计算机进行计算后将目标位置信息传回树莓派,由此形成一个闭环并完成选择目标跟踪模块。
我们目前已经可以实现类间物体的识别,类内目标的分辨识别还有待进一步研究。
关于该算法的进一步实现,我们已经意识到仅仅依靠YOLOV5并不能实现类间物体的分辨识别,在下一步的研究中,我们将借助卡尔曼滤波和YOLOV5的结合,从而实现该功能。
1.用户身份验证模块架构图
2.用户身份验证模块
预期用户身份验证模块由人脸识别构成,用户再启动设备之前,需要进行登陆操作。为了让登陆这一个操作变得更加的简便,我们打算使用视觉识别中的人脸识别。
下图是人脸识别模块的具体架构图:
1.小结
摄像系统的准确性和快速性,是我们在实际的应用过程中需要考虑的问题。我们项目在第一阶段当中先解决跟踪目标问题;第二阶段,考虑跟踪目标的准确性和反应跟踪的快速性,以及语音模块的准确性和实时性。
2.项目推广
项目可以不局限于树莓派,可以将整个项目的设计方案和流程加入到其他的嵌入式处理器上。
举例如下:
我们可以选择安卓手机作为嵌入式处理器平台,进行整个项目系统的移植。