在本文中,将学习如何在树莓派上部署面部口罩检测系统。这种系统可以用于检测人们是否正确佩戴口罩,这对于当前的公共卫生安全至关重要。将使用Coral USB加速器来提高检测速度。
为了在树莓派上部署检测器解决方案,需要以下硬件:
Coral USB加速器是谷歌设计的一种硬件配件。它为系统增加了一个边缘TPU处理器,使其能够以非常高的速度运行机器学习模型。建议查看其数据表。在案例中,将与Pi一起使用它,因为这块板本身并不能在高FPS下进行良好的检测。
带有加速器的树莓派并不是唯一可以用于此任务的便携设备。实际上,如果正在开发商业解决方案,使用独立的Coral板或NVidia的Jetson硬件系列会是更好的选择。这两种都为量产提供了吸引人的选择,一旦完成了原型设计。对于基本的原型设计和实验,树莓派4加上Coral加速器就足够了。
最后一点:如果不想将此解决方案部署到树莓派上,也可以。这个模型也可以在桌面或笔记本电脑上运行,如果更喜欢这样做的话。
如果Coral棒已经连接到Pi,请先拔下它。会告诉何时可以连接它。首先需要安装几个库,以便在它上面运行YOLO模型,并利用Coral设备。
首先,让更新树莓派板。打开一个终端窗口并运行:
sudo apt-get update
sudo apt-get upgrade
上述命令可能需要几分钟才能完成。检查摄像头接口是否激活,点击左上角的树莓派图标 > Preferences > Raspberry Pi configuration > Interfaces标签。选择摄像头的Enable单选按钮,然后点击OK。重启树莓派板。
让从创建一个隔离环境开始,以避免将来的冲突。这是一个应该从现在开始采用的做法,因为它将帮助避免遇到很多问题。要获取虚拟环境的pip包,请运行:
sudo pip3 install virtualenv
安装完成后,运行以下命令以准备一切:
mkdir FaceMaskDetection
cd FaceMaskDetection
git clone https://github.com/zldrobit/yolov5.git
cd yolov5
git checkout tf-android
git clone https://github.com/sergiovirahonda/FaceMaskDetectionOnPi.git
cd FaceMaskDetectionOnPi
mv customweights detect4pi.py requirements4pi.txt /home/pi/FaceMaskDetection/yolov5
cd ..
现在,是时候在项目目录中创建隔离环境并激活它,以便可以安装依赖项:
python3 -m venv tflite1-env
source tflite1-env/bin/activate
最后,运行以下命令:
pip install -r requirements4pi.txt
之前提到过,树莓派板在运行TensorFlow模型方面并不擅长,因为它们根本没有所需的处理能力。为了使这个项目可行,需要采取TFLite的变通方法,然后安装PyTorch,因为脚本仍在使用它的一些方法。请注意,不会在PyTorch上运行模型,只会使用它的一些功能。让开始确定Pi的处理器架构:
uname -a
如果它显示处理器架构是ARM7L,让安装相应的TFLite版本。
如果Pi安装了Python 3.6:
pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp36-cp36m-linux_armv7l.whl
如果Pi安装了Python 3.7:
pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
如果Pi有其他Python版本,或者有不同的处理器架构,建议查看这个指南,并在"Install just the TensorFlow Lite interpreter"部分,寻找Linux (ARM或AARCH)平台选项。
一旦完成,是时候安装PyTorch了——这是一个开源的Python机器学习库,用于多种类型的应用程序,包括涉及计算机视觉的那些。树莓派没有常规的Intel x86处理器架构。相反,它有一个ARM架构;因此,想要在Pi上安装的所有Python包都必须为此特定架构编译。
没有ARM处理器的官方包。仍然可以从预编译的wheel包中安装PyTorch,但它们可能因Pi拥有的处理器版本而异。探索这个NVIDIA论坛,以找到适当的版本和安装说明。还发现了这个仓库,它包含了一些其他ARM构建的包。有树莓派,带有ARMv7l处理器。如果树莓派处理器相同,可以使用使用的wheel。会在Git仓库中找到它。
让开始安装PyTorch所需的依赖项,以便它能够顺利运行:
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools
完成后,在树莓派的/Documents中浏览,并发出此命令以获取.whl文件:
cd /home/pi/Documents
git clone https://github.com/sergiovirahonda/PyTorchForRPi.git
完成后,运行此命令以开始安装:
cd /home/pi/Documents/PyTorchForRPi
pip3 torch-1.0.0a0+8322165-cp37-cp37m-linux_armv7l.whl
最后一个命令大约需要两分钟才能完成。如果一切顺利,恭喜!已经完成了最困难的部分。
这不是强制性的——只需要这个步骤,如果想加速检测速度。
在同一个终端窗口中,导航到项目的文件夹。一旦到达那里,使用下一行将Coral包仓库添加到apt-get发行版列表:
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
现在终于可以安装Edge TPU运行时了,这是使用USB加速器的唯一要求。通过运行安装libedgetpu库(标准库,不会使Coral过热):
sudo apt-get install libedgetpu1-std
现在可以将Coral USB板插入树莓派了。
确保Coral USB加速器和网络摄像头已经插入。打开一个终端窗口,导航到项目的目录:
cd /home/pi/FaceMaskDetection
source tflite1-env/bin/activate
cd yolov5
通过运行安装项目的要求:
pip3 install -r requirements4pi.txt
要初始化没有Coral USB加速器的检测器,请发出:
!python detect4pi.py --weights customweights/best-fp16.tflite --img 416 --conf 0.45 --source 0 --classes 0 1
否则,需要运行这个命令:
!python detect4pi.py --weights customweights/best-fp16.tflite --img 416 --conf 0.45 --source 0 --classes 0 1 --edgetpu