从零开始用树莓派搭建一个实时人脸检测系统

2021-04-27 14:22:22 浏览数 (1)

首先看看通过本文,你可以做出一个什么东西,就是下面这个了:

没错,那个小盒子装的东西叫做树莓派,可能有一些朋友还没接触过,暂且理解成一个小型的个人电脑就可以了。

我们会先介绍人脸检测怎么做,然后一步一步从零开始搭建环境,运行程序,呈现效果,最后会将程序迁移到树莓派上,当然,为了能在上图中那个2英寸大小的LCD屏幕上显示我们的检测效果,代码需要做一些小改动。


目录:

  1. 简单讲讲什么是人脸检测
  2. 了解树莓派及相关配件
  3. 组装树莓派及相关配件
  4. 配置树莓派连接网络
  5. 远程连接树莓派
  6. 树莓派软件源更换
  7. 源代码下载
  8. 通过ftp将代码上传到树莓派
  9. 在树莓派上搭建python的虚拟环境
  10. 在虚拟环境中安装程序依赖包
  11. 在树莓派上运行程序

ok,开始吧。


一、简单讲讲什么是人脸检测

很简单,就是从图像中找到人脸,然后把他们都框出来,如下图:

早期的人脸检测一般基于小波变换等人工构造特征的方法,而今深度学习已经是主流的做法了,深度学习检测人脸技术发展到现在,已经有很多好的网络和模型出现并开源了,在对众多模型精挑细选后,笔者筛选出了一个非常出众的模型,其检测效果一定会令你满意。


二、了解树莓派及相关配件

树莓派是一款基于 ARM 的微型电脑主板,以 MicroSD 卡(又称TF卡)为硬盘,主板周围有 USB 口和以太网口,可连接键盘、鼠标和网线,同时拥有HDMI高清视频输出口和 可以输入输出的 GPIO 接口(就是上图最上面那一排针脚),以上部件全部整合在一张仅比信用卡稍大的主板上,具备PC 的基本功能。Raspberry Pi 以其低价格、低能耗、移动便携、GPIO 等特性受到众多计算机发烧友和创客的追捧。

树莓派 4 代(Raspberry Pi 4)是树莓派基金会发布的最新一代微型电脑,相比于树莓派 3,在cpu、电源、HDMI、内存、蓝牙、网口等方面进行了全方位升级,笔者采购的是4g内存的,大约500人民币。


三、组装树莓派及相关配件

一般网上购买树莓派和相关配件,卖家会给你烧录好相应的操作系统到你的tf卡上,所以直接插入tf卡,接通电源,就启动了树莓派了,然后接上鼠标、键盘,支持HDMI接口的显示器,就可以操作树莓派了。

当然要实现本文的人脸检测,我们还需要一些配件,包括摄像头一个,2英寸LCD屏幕一个。

摄像头用的是FFC软排线,先将板子上的接口卡扣提起来一些,然后插入软排线,再按紧卡扣即可。

LCD屏幕是基于SPI接口连接到树莓派主板的GPIO插槽上的,对应的连接方式如下(左上方第一个vcc针脚板子后面的焊点是方的,其他都是圆的):

注意,如果你要插散热风扇的话,按照上面的插法会有冲突,可以自行做一些调整,GPIO上有好几个GND和VCC的插口:


四、配置树莓派连接网络

树莓派自带wifi模块,可以通过无线连接网络,当然也可以通过网线连接。配置方式和普通电脑一样。


五、远程连接树莓派

这里将用VNC来连接远程桌面,

首先,找一台带HDMI输入口的显示器和一根一头是micro-hdmi一头是hdmi的连接线,直接连接到树莓派上的micro-hdmi接口,显示操作系统画面(可能需要重启树莓派才有画面输出),

进入命令行窗口,输入如下命令打开树莓派的配置程序界面:

代码语言:javascript复制
sudo raspi-config

做如下选择开启VNC服务,也可以顺便把Camera,SSH,SPI都开启了(第二张图里可以看到):

然后,在你的电脑上安装 VNC Viewer 客户端,下载地址: https://www.realvnc.com/en/connect/download/viewer/

选择对应的操作系统版本即可,比如你的windows10,那么就选windows,注意不要选成Raspberry Pi了。

确保你的电脑和树莓派在同一个局域网中,然后启动电脑上的VNC客户端,输入树莓派的IP,连接即可:

接着会让你输入树莓派操作系统的登录用户和密码(树莓派默认登录名和密码是:pi, raspberry),确定即可。

然后,就能看到树莓派的操作系统桌面了,和通过hdmi显示器看到的桌面是一样的。


六、树莓派软件源更换

为了加速 apt 命令的下载速度,需将国外的源换成国内的镜像源,复制如下命令到树莓派终端执行即可:

代码语言:javascript复制
cat << EOF > /etc/apt/sources.list deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi EOF cat << EOF > /etc/apt/sources.list.d/raspi.list deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui EOF

七、源代码下载

人脸检测代码,采用retinaface模型,基于python pytorch编写,下载地址:

链接:https://pan.baidu.com/s/1Vfr1stzvsCMRQ5XVDDlF4w

提取码:ii7x


八、通过ftp将代码上传到树莓派

首先,在树莓派上安装vsftpd软件包:

代码语言:javascript复制
sudo apt update
sudo apt install vsftpd

完成后,ftp服务会自行启动,可通过如下命令验证:

代码语言:javascript复制
sudo systemctl status vsftpd

然后, 通过编辑/etc/vsftpd.conf文件来配置vsftpd服务器

代码语言:javascript复制
sudo nano /etc/vsftpd.conf

修改文件中的配置:

代码语言:javascript复制
anonymous_enable=NO # 禁止匿名访问
local_enable=YES # 允许本机用户访问
write_enable=YES # 允许上传

完成后,重新启动vsftpd服务:

代码语言:javascript复制
sudo systemctl restart vsftpd

通过一些ftp客户端连接工具(提供一个下载链接:https://pan.baidu.com/s/1sM-Mp66IZ3IWRmcIoxDV3w 提取码:sf2g,也可以自行下载其他的),输入树莓派的 IP,用户名,密码,端口:21,即可访问。

将源代码拖到树莓派上的指定的目录下即可。


九、在树莓派上搭建python的虚拟环境

一般树莓派的操作系统都自带了python2和python3,所以我们只要创建一个虚拟环境用来安装我们的人脸检测程序需要的依赖包即可,这里我们使用virtualenv来创建和管理虚拟环境,

为了快,先要对pip进行换源:

代码语言:javascript复制
mkdir ~/.pip  # 在你的用户目录下创建.pip目录
vim ~/.pip/pip.conf # 在.pip目录下创建pip.conf文件
#在pip.conf文件里面添加如下内容,保存退出即可。(这里用的阿里的,你也可以换成其他的)
[global]
timeout =6000
index-url =https://mirrors.aliyun.com/pypi/simple/
[install]
use-mirrors =true
mirrors =https://mirrors.aliyun.com/pypi/simple/
trusted-host =mirrors.aliyun.com

然后,执行如下命令搭建虚拟环境:

代码语言:javascript复制
# 安装virtualenv
sudo pip3 install virtualenv virtualenvwrapper
# 新建虚拟环境主目录,并进入
$ mkdir ~/py_envs && cd ~/py_envs
# 创建本项目的虚拟环境目录,依赖包会安装在该文件夹中
$ virtualenv env_face
# 激活虚拟环境
$ source ~/py_envs/env_face/bin/activate
# 如果要退出虚拟环境,可用如下命令
$ deactivate

十、在虚拟环境中安装程序依赖包

运行程序之前,先要安装相关依赖,如下:

代码语言:javascript复制
numpy==1.19.5
six==1.15.0
PyYAML==5.4.1

上面的直接通过pip install安装。

然后,安装opencv和pytorch的依赖包:

代码语言:javascript复制
# 安装 opencv 依赖
sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
# 安装 pytorch 依赖
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools

最后安装其他build不了的包,这里针对这些包提供了build好的whl文件(下载地址:链接:https://pan.baidu.com/s/1hRi_U1f5ID7g4_pIRDtTAQ 提取码:ogos ),可以通过pip install 这些whl文件来安装:

都安装成功后,就可以运行程序了。


十一、在树莓派上运行程序

首先进入程序所在目录,

代码语言:javascript复制
cd xxx/xxxx

激活对应的虚拟环境env_face,

代码语言:javascript复制
source ~/py_envs/env_face/bin/activate

然后执行如下命令:

代码语言:javascript复制
python detect-video-raspberrypi.py  --source 0 # 0表示从树莓派的摄像头读取视频流

ok,如果顺利的话,相信已经可以看到文章开头展示的画面啦~O(∩_∩)O

0 人点赞