16、新手入手树莓派教程--搭建dlib

时间:2024-05-21 12:11:01

设备和环境:

1、树莓派3b;

2、ubuntu mate系统 linux内核是4.4.38;


功能需求:

1、调用dlib实现人脸识别。



可行性研究:

1、dlib安装的库有多大?

分析:windows下dlib19.7版本,debug版本65M、release版本22M,此可以作为参考。


2、dlib中的人脸识别算法占用资源多少?

分析:1G的RAM不能满足要求,树莓派3b的RAM是1G的,要想运行,需要改SWAP,SWAP需要改成1G的。


3、调用dlib识别人脸的速度是多少?

分析:I5四代标压双核处理器的笔记本上,每帧检测人脸Detector函数耗时大约稳定100ms(软件运行过多的情况下会到180ms),这是该博主的测试的结果,链接是博主的对应文章,文末也有其对应链接。Dlib人脸特征点检测性能测试(光照+各部分功能模块运行时间)

由此可见在在树莓派上,比较慢,不能实时。


功能实现:

1、搭建dlib(树莓派搭建Dlib库


自Raspbian以来,Raspberry Pi用户运行的操作系统是基于Debian的(就像Ubuntu一样),  相同的安装说明可

以用于Raspbian和Ubuntu ...

但是在树莓派上安装Dlib库经常会报错,因为在编译Dlib库的时候需要的内存过大,会导致系统杀死进程。树莓派3只有1GB的RAM。这个1GB的RAM负责所有的系统操作,显示GUI /桌面以及处理我们的编译。因此,需要使用几步来解决这个问题。

在树莓派上安装Dlib

1、首先从Dlib官方下载安装包。下载链接:http://dlib.net/

从18版本开始Dlib安装包中有setup.py。因此在Windows端安装只需要pip install setup.py命令即可。树莓派端首先需要扩大缓存。

2、更新交换文件大小

交换文件或交换空间是用作虚拟内存的硬盘/内存卡上的空间,  作为系统实内存(RAM)的扩展。

启用交换文件允许操作系统“假装”,因为它具有比实际更多的板载内存。使用交换文件体系结构,RAM中的页面被

“换出”到磁盘,直到它们被再

次需要,在这种情况下它们被“交换”。

几乎所有主要的操作系统都支持某种程度的交换。

在Raspbian中,dphys-swapfile解决方案的使用默认为100MB专用于交换我们的卡。

为了更新我们交换的大小,我们需要编辑位于etc dphys swapfile中的dphys-swapfile配置文件  。

您可以使用您最喜爱的文本编辑器编辑配置:

[plain] view plain copy
  1. $sudo nano /etc/dphys-swapfile  

向下滚动到配置:

CONF_SWAPSIZE 100

然后更新它使用1024MB而不是100MB:

16、新手入手树莓派教程--搭建dlib

注意这里如何 CONF_SWAPSIZE 1024   -这将是足够的交换更值得我们编译我们的树莓派DLIB。

注意:增加交换大小是烧毁Raspberry Pi卡的好方法。基于闪存的存储器可以执行的写操作数量有限,直到卡实际上无法再保持1和0为止。我们只能在短时间内进行大额交换,所以这不是什么大问题。无论如何,一定要备份你的 img   文件安装dlib后,以防万一你的卡早日意外死亡。您可以在此页面阅读更多关于破坏存储卡的大型交换大小的信息

更新 etc dphys swapfile   文件后,运行以下两个命令重新启动交换服务:

  由于交换大小正在增加和重新分配,所以 启动命令可能需要几分钟才能完成执行。

然后你可以运行:

确认您的交换大小已经增加。

在这里你可以看到,我的交换是1024MB,从前面的100MB:

16、新手入手树莓派教程--搭建dlib

图3:免费运行-m  确认正在使用1024MB的新交换大小。

然后进入Dlib的目录,运行:

[html] view plain copy
  1. sudo python setup.py install  


致谢:

1、树莓派搭建Dlib库

2、Install dlib on the Raspberry Pi

3、Raspberry Pi: Facial landmarks + drowsiness detection with OpenCV and dlib

4、Dlib人脸特征点检测性能测试(光照+各部分功能模块运行时间)