CompreFace人脸识别项目部署及使用文档
CompreFace人脸识别项目部署及使用文档
前言
本项目的人脸识别功能基于开源项目CompreFace。CompreFace对外提供RESTful API。.net 服务端通过post请求调用ComreFace API接口,将人脸图片上传给CompreFace服务,进行人脸识别、人脸验证等操作。识别结束后CompreFace服务端将结果返回给.net 服务端,完成整个人脸识别过程。
人脸身份识别过程主要是:
首先,系统需要提前录入n个人的信息,每个人的信息包括:人名+人脸照片(1张或多张);
然后,系统接收一张陌生的人脸照片并与提前录入的人脸进行比对,找出最像谁,最终完成身份识别;
文章目录
- 前言
- @[toc]
- 第一部分:win安装 Docker Desktop
- 第1步:启用 Hyper-V
- 第2步:下载 Dokcer Desktop 安装包
- 第3步:安装 Docker Desktop
- 安装过程
- 报错:`Docker Desktop requires a newer WSL kernel version`
- 第4步:Docker Desktop配置阿里云镜像源
- 获取阿里云镜像源地址
- 在Docker Desktop中配置阿里云镜像源
- 第5步:查看Docker版本
- 第6步:验证Docker Desktop 正常工作
- 第二部分:Windows下安装及使用CompreFace
- 第1步:下载CompreFace最新版本存档
- 第2步:解压存档
- 第3步:保持 Docker Desktop 是打开状态
- 第4步:将 CompreFace 附加到 Docker 容器
- 第5步:浏览器进入系统
- 第三部分:使用CompreFace
- 第1步:新建一个Application
- 第2步:新建一个Service
- 第3步:维护一个人脸集合(Face Collection)
- 第4步:测试人脸身份识别
- 第四部分:.Net使用CompreFace
- 先决条件
- 第1步:NuGet 中安装CompreFace.NET.Sdk
- 第2步:编写.NET代码调用人脸识别服务
- @[toc]
- 第1步:启用 Hyper-V
- 第2步:下载 Dokcer Desktop 安装包
- 第3步:安装 Docker Desktop
- 安装过程
- 报错:`Docker Desktop requires a newer WSL kernel version`
- 第4步:Docker Desktop配置阿里云镜像源
- 获取阿里云镜像源地址
- 在Docker Desktop中配置阿里云镜像源
- 第5步:查看Docker版本
- 第6步:验证Docker Desktop 正常工作
- 第1步:下载CompreFace最新版本存档
- 第2步:解压存档
- 第3步:保持 Docker Desktop 是打开状态
- 第4步:将 CompreFace 附加到 Docker 容器
- 第5步:浏览器进入系统
- 第1步:新建一个Application
- 第2步:新建一个Service
- 第3步:维护一个人脸集合(Face Collection)
- 第4步:测试人脸身份识别
- 先决条件
- 第1步:NuGet 中安装CompreFace.NET.Sdk
- 第2步:编写.NET代码调用人脸识别服务
要求:
-
CompreFace 的运行基于Docker,需要安装 Docker Desktop (win)。
-
CompreFace 可以在大多数windows操作系统上运行。
第一部分:win安装 Docker Desktop
我的系统和软件版本是:win10 + Docker Desktop 4.21.1。
第1步:启用 Hyper-V
我们需要启用Hyper-V以在 Windows上创建虚拟机。
以管理员身份打开 PowerShell 控制台,运行以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

启用成功后, 可以再win桌面搜索到Hyper-V 管理器:

第2步:下载 Dokcer Desktop 安装包
官方下载地址:Download Docker Desktop | Docker

第3步:安装 Docker Desktop
安装过程
双击Docker Desktop 安装包,开始安装:
一路默认勾选安装:


安装成功后,关机重启,即可。

报错:Docker Desktop requires a newer WSL kernel version

解决方案:
cmd里输入以下命令进行wsl更新操作:
wsl --update
安装过程会比较久,因为要下载更新包。耐心等待即可,中间出错了就继续输入命令继续安装即可。

重启后,重新打开Docker Desktop 报错消失。
第4步:Docker Desktop配置阿里云镜像源
获取阿里云镜像源地址
阿里云容器镜像服务 ACR👉

进入管理控制台获取镜像加速器:

在Docker Desktop中配置阿里云镜像源
在系统右上角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Desktop。编辑窗口内的JSON串,填写下方加速器地址:
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}

第5步:查看Docker版本
WIndows PowerShell 下查看docker版本:
docker version

第6步:验证Docker Desktop 正常工作
打开命令行窗口运行以下命令:
docker run hello-world
看到以下输出则表示安装成功,且能正常工作:

查看Docker Desktop中是否成功拉取 hello-world :

第二部分:Windows下安装及使用CompreFace
第1步:下载CompreFace最新版本存档
https://github.com/exadel-inc/CompreFace/releases
第2步:解压存档

第3步:保持 Docker Desktop 是打开状态
只要打开Docker Desktop程序即可。
第4步:将 CompreFace 附加到 Docker 容器
打开cmd,输入以下命令
D:
cd D:\WorkSpace\jcjy\src\FaceRecgnition\CompreFace
docker-compose up -d
等待构建完成即可。完成之后Docker Desktop中会多一个CompreFace容器:

第5步:浏览器进入系统
浏览器,打开网址: http://localhost:8000/login,进入CompreFace UI界面。首次登录需要注册一下。

第三部分:使用CompreFace
第1步:新建一个Application
用户可以创建多个APP,用于区分不同的用途,但我们其实用不到,创建一个自己的APP就行了

第2步:新建一个Service
再APP下面,新建一个服务,有三种服务,分别是人脸识别(RECOGNITION)、人脸验证(VERIFICATION)、人脸检测(DETECTION)。
人脸识别其实就是人脸身份识别(每张照片只有一个人脸),人脸验证是验证两张照片是不是同一个人(每张照片只有一个人脸),人脸检测是检测一张图片里(1个或多个)人脸所在位置。
我们选择人脸识别(RECOGNITION):

第3步:维护一个人脸集合(Face Collection)
在 RECOGNITION Service里面,需要提前录入一个人脸集合(Face Collection),每个一个人脸集合下面有多个人(Subject),每个人的信息就是姓名+1张或多张这个人的照片。如下图所示,我去网上下载了很多明星的照片,并创建了很多明星Subjects,每个明星一个姓名 + 1-2张照片。
PS: 同一个人的照片越多,识别率越高。



第4步:测试人脸身份识别
进入[Test]:

上传一张新的照片,进行人脸身份识别:

第四部分:.Net使用CompreFace
CompreFace 针对 .Net 提供了 CompreFace .NET SDK。封装了.net 的一些调用接口的函数,简化了.net 调用CompreFace服务器的复杂度。
先决条件
- 您的计算机已安装CompreFace,并且CompreFace容器已经在Docker中运行起来。
- 您的计算机拥有.NET 6.0 SDK 及以上的运行环境。
确保以上两个条件都已满足之后即可在.Net中使用CompreFace。
第1步:NuGet 中安装CompreFace.NET.Sdk
在.net6.0 项目中,用NuGet安装CompreFace.NET.Sdk

第2步:编写.NET代码调用人脸识别服务
写一个接口进行人脸识别:
namespace xxx
{public class AuthController : Controller{/// /// CompreFace全局对象/// public CompreFaceClient CompreFaceClient { get; set; }/// /// CompreFace人脸识别服务/// public RecognitionService FaceRecService { get; set; }public AuthController(){// 获取CompreFace全局对象this.CompreFaceClient = new CompreFaceClient(domain: "http://localhost",port: "8000");// 初始化人脸识别服务this.FaceRecService = this.CompreFaceClient.GetCompreFaceService("0a187238-fe89-441f-af90-dd2f08c74e00");}#region 人脸识别 CompreFace 代码示例/// /// Face Recognition/// /// [HttpPost][Route("/auth/faceRecognition")]public async Task CompreFaceRecognitionAsync(){var result = new ResultDto();//获取主题对象,一个Subject就是一个人var subject = this.FaceRecService.Subject;// 获取主题列表var subjectList = await subject.ListAsync();// 人脸识别var recognizeRequest = new RecognizeFaceFromImageRequestByFilePath(){FilePath = "D:\\WorkSpace\\精创\\工作文件\\AI智能招聘\\人脸验证图片库\\20210204070819496.jpg.420.554.jpg"};var response = await this.FaceRecService.RecognizeFaceFromImage.RecognizeAsync(recognizeRequest);return Json(result);}#endregion}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
