例程完整代码参看http://tiny.cc/doorcam。
上手jetsonnano不久,这里将跑过的一个例程贴出来,用于记录和填坑。该例程应用人脸识别跟踪每一个走到家门口的人。
CSI摄像头的使用:https://github.com/JetsonHacksNano/CSI-Camera
face_recognition:https://github.com/ageitgey/face_recognition
一、前期准备阶段
安装需要的python库
sudo apt-get update
sudo apt-get install python3-pip cmake libopenblas-dev liblapack-dev libjpeg-dev
下面还要安装编译numpy和dlib,但是nano的内存只有4GB,编译dlib的时候可能不够用(但是你的东西要是不多的话,我实测是够的),这里需要设置swapfile,将磁盘空间作为额外的RAM。大神提供了简单方法如下:
git clone https://github.com/JetsonHacksNano/installSwapfile
./installSwapfile/installSwapfile.sh
这里需要reboot一下,确保swapfile在运行。
安装编译numpy,这里需要一些时间
pip3 install numpy
下面是安装编译dlib,Davis King创建的一个深度学习库。这里说是因为nano的CUDA库中有一个bug(然而我并不知道是啥),所以首先下载dlib,修改一行代码。
wget https://dlib.net/files/dlib-19.17.tar.bz2
tar jxvf dlib-19.17.tar.bz2
cd dlib-19.17
修改一下代码行,搜索854行进行注释
gedit dlib/cuda/cudnn_dlibapi.cpp
forward_algo = forward_best_algo;//把这一行注释
然后保存、关闭编辑器。编译安装dlib,需要很长的时间。
sudo python3 setup.py install
最后安装face_recognition Python库
sudo pip3 install face_recognition
二、应用阶段
下载代码:
wget -O doorcam.py tiny.cc/doorcam
这代码需要科学上网才能下载到,这里贴出另一个链接,可全选复制。https://gist.githubusercontent.com/ageitgey/84943a12dd0d9f54e90f824b94e4c2a9/raw/906b921481a0f18ddf1fcbb1e8a45d58fbde3b5e/doorbell_camera.py
最后,运行代码,按q退出。
python3 doorcam.py
三、该例程通过CUDA GPU进行实时的人脸识别,可以记录和比较人脸。摄像头的方向可能会有问题,可以修改参数。在处理的时候将视频帧调整为原尺寸的1/4进行人脸识别,实测处理过程还是比较慢的。已经保存的人脸数据在known_faces.dat中。我的nano接显示器没有反应,但是我并没有禁用图形界面,所以我一直用的是MobaXterm,不知道是板子的问题,还是有什么我没有注意到,望大佬解救。