從零開始用樹莓派搭建一個實時人臉檢測系統(tǒng)
首先看看通過本文,你可以做出一個什么東西,就是下面這個了:

沒錯,那個小盒子裝的東西叫做樹莓派,可能有一些朋友還沒接觸過,暫且理解成一個小型的個人電腦就可以了。
我們會先介紹人臉檢測怎么做,然后一步一步從零開始搭建環(huán)境,運行程序,呈現(xiàn)效果,最后會將程序遷移到樹莓派上,當然,為了能在上圖中那個2英寸大小的LCD屏幕上顯示我們的檢測效果,代碼需要做一些小改動。
目錄:
簡單講講什么是人臉檢測
了解樹莓派及相關(guān)配件
組裝樹莓派及相關(guān)配件
配置樹莓派連接網(wǎng)絡(luò)
遠程連接樹莓派
樹莓派軟件源更換
源代碼下載
通過ftp將代碼上傳到樹莓派
在樹莓派上搭建python的虛擬環(huán)境
在虛擬環(huán)境中安裝程序依賴包
在樹莓派上運行程序
ok,開始吧。
一、簡單講講什么是人臉檢測
很簡單,就是從圖像中找到人臉,然后把他們都框出來,如下圖:

早期的人臉檢測一般基于小波變換等人工構(gòu)造特征的方法,而今深度學(xué)習(xí)已經(jīng)是主流的做法了,深度學(xué)習(xí)檢測人臉技術(shù)發(fā)展到現(xiàn)在,已經(jīng)有很多好的網(wǎng)絡(luò)和模型出現(xiàn)并開源了,在對眾多模型精挑細選后,筆者篩選出了一個非常出眾的模型,其檢測效果一定會令你滿意。
二、了解樹莓派及相關(guān)配件

樹莓派是一款基于 ARM 的微型電腦主板,以 MicroSD 卡(又稱TF卡)為硬盤,主板周圍有 USB 口和以太網(wǎng)口,可連接鍵盤、鼠標和網(wǎng)線,同時擁有HDMI高清視頻輸出口和 可以輸入輸出的 GPIO 接口(就是上圖最上面那一排針腳),以上部件全部整合在一張僅比信用卡稍大的主板上,具備PC 的基本功能。Raspberry Pi 以其低價格、低能耗、移動便攜、GPIO 等特性受到眾多計算機發(fā)燒友和創(chuàng)客的追捧。
樹莓派 4 代(Raspberry Pi 4)是樹莓派基金會發(fā)布的最新一代微型電腦,相比于樹莓派 3,在cpu、電源、HDMI、內(nèi)存、藍牙、網(wǎng)口等方面進行了全方位升級,筆者采購的是4g內(nèi)存的,大約500人民幣。
三、組裝樹莓派及相關(guān)配件
一般網(wǎng)上購買樹莓派和相關(guān)配件,賣家會給你燒錄好相應(yīng)的操作系統(tǒng)到你的tf卡上,所以直接插入tf卡,接通電源,就啟動了樹莓派了,然后接上鼠標、鍵盤,支持HDMI接口的顯示器,就可以操作樹莓派了。
當然要實現(xiàn)本文的人臉檢測,我們還需要一些配件,包括攝像頭一個,2英寸LCD屏幕一個。
攝像頭用的是FFC軟排線,先將板子上的接口卡扣提起來一些,然后插入軟排線,再按緊卡扣即可。

LCD屏幕是基于SPI接口連接到樹莓派主板的GPIO插槽上的,對應(yīng)的連接方式如下(左上方第一個vcc針腳板子后面的焊點是方的,其他都是圓的):

注意,如果你要插散熱風(fēng)扇的話,按照上面的插法會有沖突,可以自行做一些調(diào)整,GPIO上有好幾個GND和VCC的插口:


四、配置樹莓派連接網(wǎng)絡(luò)
樹莓派自帶wifi模塊,可以通過無線連接網(wǎng)絡(luò),當然也可以通過網(wǎng)線連接。配置方式和普通電腦一樣。
五、遠程連接樹莓派
這里將用VNC來連接遠程桌面,
首先,找一臺帶HDMI輸入口的顯示器和一根一頭是micro-hdmi一頭是hdmi的連接線,直接連接到樹莓派上的micro-hdmi接口,顯示操作系統(tǒng)畫面(可能需要重啟樹莓派才有畫面輸出),
進入命令行窗口,輸入如下命令打開樹莓派的配置程序界面:
sudo raspi-config做如下選擇開啟VNC服務(wù),也可以順便把Camera,SSH,SPI都開啟了(第二張圖里可以看到):

然后,在你的電腦上安裝 VNC Viewer 客戶端,下載地址:https://www.realvnc.com/en/connect/download/viewer/
選擇對應(yīng)的操作系統(tǒng)版本即可,比如你的windows10,那么就選windows,注意不要選成Raspberry Pi了。
確保你的電腦和樹莓派在同一個局域網(wǎng)中,然后啟動電腦上的VNC客戶端,輸入樹莓派的IP,連接即可:

接著會讓你輸入樹莓派操作系統(tǒng)的登錄用戶和密碼(樹莓派默認登錄名和密碼是:pi, raspberry),確定即可。

然后,就能看到樹莓派的操作系統(tǒng)桌面了,和通過hdmi顯示器看到的桌面是一樣的。

六、樹莓派軟件源更換
為了加速 apt 命令的下載速度,需將國外的源換成國內(nèi)的鏡像源,復(fù)制如下命令到樹莓派終端執(zhí)行即可:
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軟件包:
sudo apt update
sudo apt install vsftpd
完成后,ftp服務(wù)會自行啟動,可通過如下命令驗證:
sudo systemctl status vsftpd
然后, 通過編輯/etc/vsftpd.conf文件來配置vsftpd服務(wù)器
sudo nano /etc/vsftpd.conf
修改文件中的配置:
anonymous_enable=NO # 禁止匿名訪問
local_enable=YES # 允許本機用戶訪問
write_enable=YES # 允許上傳
完成后,重新啟動vsftpd服務(wù):
sudo systemctl restart vsftpd
通過一些ftp客戶端連接工具(提供一個下載鏈接:https://pan.baidu.com/s/1sM-Mp66IZ3IWRmcIoxDV3w 提取碼:sf2g,也可以自行下載其他的),輸入樹莓派的 IP,用戶名,密碼,端口:21,即可訪問。
將源代碼拖到樹莓派上的指定的目錄下即可。
九、在樹莓派上搭建python的虛擬環(huán)境
一般樹莓派的操作系統(tǒng)都自帶了python2和python3,所以我們只要創(chuàng)建一個虛擬環(huán)境用來安裝我們的人臉檢測程序需要的依賴包即可,這里我們使用virtualenv來創(chuàng)建和管理虛擬環(huán)境,
為了快,先要對pip進行換源:
mkdir ~/.pip # 在你的用戶目錄下創(chuàng)建.pip目錄
vim ~/.pip/pip.conf # 在.pip目錄下創(chuàng)建pip.conf文件
#在pip.conf文件里面添加如下內(nèi)容,保存退出即可。(這里用的阿里的,你也可以換成其他的)
[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
然后,執(zhí)行如下命令搭建虛擬環(huán)境:
# 安裝virtualenv
sudo pip3 install virtualenv virtualenvwrapper
# 新建虛擬環(huán)境主目錄,并進入
$ mkdir ~/py_envs && cd ~/py_envs
# 創(chuàng)建本項目的虛擬環(huán)境目錄,依賴包會安裝在該文件夾中
$ virtualenv env_face
# 激活虛擬環(huán)境
$ source ~/py_envs/env_face/bin/activate
# 如果要退出虛擬環(huán)境,可用如下命令
$ deactivate
十、在虛擬環(huán)境中安裝程序依賴包
運行程序之前,先要安裝相關(guān)依賴,如下:
numpy==1.19.5
six==1.15.0
PyYAML==5.4.1
上面的直接通過pip install安裝。
然后,安裝opencv和pytorch的依賴包:
# 安裝 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文件來安裝:

都安裝成功后,就可以運行程序了。
十一、在樹莓派上運行程序
首先進入程序所在目錄,
cd xxx/xxxx激活對應(yīng)的虛擬環(huán)境env_face,
source ~/py_envs/env_face/bin/activate
然后執(zhí)行如下命令:
python detect-video-raspberrypi.py --source 0 # 0表示從樹莓派的攝像頭讀取視頻流
ok,如果順利的話,相信已經(jīng)可以看到文章開頭展示的畫面啦~O(∩_∩)O
為您推薦
我是如何通過系統(tǒng)架構(gòu)師軟考的?
用python做時間序列預(yù)測一:初識概念
自然語言處理之BERT介紹
pycharm2019和idea2019版永久激活
Windows10搭建深度學(xué)習(xí)環(huán)境
用機器學(xué)習(xí)打造聊天機器人(三) 設(shè)計篇
如何在阿里云租一臺GPU服務(wù)器做深度學(xué)習(xí)?
手把手教你用深度學(xué)習(xí)做物體檢測(一): 快速感受物體檢測的酷炫
名句分享
一個人面對委屈和壓力的反應(yīng),體現(xiàn)了他的成熟程度。——佚名
