前言
在搭载M1芯片的mac上顺利进行开发是一件不仅随缘而且需要人品的事情,不仅仅因为M1芯片的ARM架构所带来的编译方式的不同,bugsur新的文件路径系统以及时不时的抽风也使得顺利开发的路上艰难险阻。今天就来看看GitHub上大名鼎鼎的开源人脸库face_recognition如何比较顺利地在M1上跑起来且实现简单的实时人脸识别的功能。
由于不可描述的原因,网络环境所造成的安装失败不在本文讨论范围中。
第一部分 关于环境的那点事
网络环境搭建
大部分的环境搭建与库安装需要使用终端进行,由于终端默认并不走代理的网络,为了此后下载的顺利,先需要设置终端也可以使用代理。
首先,在当前用户根目录新建一个文件名为 .bash_profile 的空白文本,然后输入以下代码:
function proxy_off(){
unset http_proxy
unset https_proxy
unset ftp_proxy
unset rsync_proxy
echo -e "已关闭代理"
}
function proxy_on() {
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
export http_proxy="https://127.0.0.1:1087"
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$http_proxy
export FTP_PROXY=$http_proxy
export RSYNC_PROXY=$http_proxy
echo -e "已开启代理"
}
在export no_proxy与export http_proxy填入对应的本地代理服务器地址以及端口,可以在你的代理软件中查看。
将文件配置好并放在用户根目录后
当让终端走代理的时候,输入:
source ~/.bash_profile proxy_on
想关闭代理的时候,输入:
proxy_off
基本环境搭建
安装python最新版本
从python官网下载最新版本 python 记得选中 universal
安装完成后在终端输入
open ~/.bash_profile
在文件中加上一行环境变量配置后保存退出
export PATH=/usr/local/bin:$PATH
重新打开终端输入
source ~/.bash_profile python3 --version -------注意是python3
顺利的话你会在终端中看到python的版本号信息,python安装到此结束。
各种依赖包安装
可以试试直接安装 ,设置好终端网络代理后
在终端中输入 pip3 install face_recognition
安装homebrew
下载安装过程略
安装完成后根据提示在终端中输入
open ~/ .zprofile
在文件中加入
eval "$(/opt/homebrew/bin/brew shellenv)"
保存后重启homebrew,在终端中输入
brew
如果出现各种指令提示,证明安装成功
安装miniforge
在网站中选择Apple Silicon版本下载,下载后直接运行即可
接下来我们需要在终端中激活
conda create -n myenv python=3.9 //创建名为myenv,python版本为3.9的环境 conda activate myenv //激活环境
安装numpy
激活conda且配置好网络代理后可以直接在终端中输入
pip3 install numpy=1.9.14
等待下载安装,安装完成后检测是否安装成功,在终端中输入
python3
>>>import numpy
没报错的话就安装成功了
安装openblas
激活conda且配置好网络代理后可以直接在终端中输入
pip3 install openblas
等待下载安装,安装完成后检测是否安装成功,在终端中输入
python3
>>>import openblas
没报错安装成功
需要编译的库
安装opencv
点击链接下载opencv库,仅适用于M1芯片
opencv_contrib_python-4.5.0+bbaa777-cp39-cp39-macosx_11_0_arm64.whl
在终端中激活环境
conda activate myenv //激活环境
定位到下载目录并安装
cd 目录 pip3 install opencv_contrib_python-4.5.0+bbaa777-cp39-cp39-macosx_11_0_arm64.whl
等待安装即可
安装cmake
终端配置好网络代理后输入
brew install cmake //安装cmake
安装Dlib
激活conda且配置好网络代理后直接在终端中输入
pip3 install dlib
安装后在终端输入
python3 >>>import dlib
如果未报错恭喜你安装成功,我们就差最后一步了。
安装face_recognition
激活conda且配置好网络代理后直接在终端中输入
pip3 install face_recognition
安装完成后在终端中输入
python3
>>>import face_recognition
如果没有报错证明万里长征我们已经走了一半了。
也可以使用 pip3 list 命令来查看所有已经安装的库 如图
到此安装告一段落。
第二部分 开始造轮子吧
由于安装这些依赖和库可能已经损耗你的大部分精力了,
所以接下来我们就快速地来看看怎么把这个简单的实时人脸识别跑起来。
下载py文件
从GitHub上下载
使用编辑器编辑
用你喜欢的编辑器打开,这里使用vscode示范,下面代码都是从源文件中截出,对应修改即可。
# Load a sample picture and learn how to recognize it.
图片人名1_image = face_recognition.load_image_file("把这里改成你要识别的图片的路径")
图片人名1_face_encoding = face_recognition.face_encodings(图片人名1_image)[0]
# Load a second sample picture and learn how to recognize it.
图片人名2_image = face_recognition.load_image_file("把这里改成你要识别的图片2的路径")
图片人名2_face_encoding = face_recognition.face_encodings(图片人名1_image)[0]
# Create arrays of known face encodings and their names
known_face_encodings = [
图片人名1_face_encoding,
图片人名2_face_encoding
]
known_face_names = [
"图片1所对应的全名",
"图片2所对应的全名"
]
例子
如图,图片1为Obama,图片2为biden
运行一下吧!
打开终端,输入
python3 <将文件拖到这里或者粘贴文件的路径>
就像这样
按下回车等待奇迹的发生
不出意外的话,掏出你的小手机拿出一张照片或者把你的脸对准摄像头,就可以看到
大功告成啦!
尾巴
总体来说跑起这个小项目还是基本没有难度的,最主要的是有稳定的网络以及足够的耐心
face_recognition这个库具有很多方向的应用,今天只是简单地入门一下,还有很多玩法可以发掘哦!