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代码调用人脸识别服务

要求:

  1. CompreFace 的运行基于Docker,需要安装 Docker Desktop (win)。

  2. 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

image-20230805145457563

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

image-20230805150836186

第2步:下载 Dokcer Desktop 安装包

官方下载地址:Download Docker Desktop | Docker

image-20230805151210082

第3步:安装 Docker Desktop

安装过程

双击Docker Desktop 安装包,开始安装:

一路默认勾选安装:

image-20230808083516541

image-20230808084910091

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

image-20230808085431728

报错:Docker Desktop requires a newer WSL kernel version

image-20230808090631156

解决方案:

cmd里输入以下命令进行wsl更新操作:

wsl --update

安装过程会比较久,因为要下载更新包。耐心等待即可,中间出错了就继续输入命令继续安装即可。

image-20230808092007936

重启后,重新打开Docker Desktop 报错消失。

第4步:Docker Desktop配置阿里云镜像源

获取阿里云镜像源地址

阿里云容器镜像服务 ACR👉

image-20230805142217933

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

image-20230808094213299

在Docker Desktop中配置阿里云镜像源

在系统右上角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Desktop。编辑窗口内的JSON串,填写下方加速器地址:

{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}

image-20230802103432624

第5步:查看Docker版本

WIndows PowerShell 下查看docker版本:

docker version

image-20230802103520536

第6步:验证Docker Desktop 正常工作

打开命令行窗口运行以下命令:

docker run hello-world

看到以下输出则表示安装成功,且能正常工作:

img

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

image-20230802103903189

第二部分:Windows下安装及使用CompreFace

第1步:下载CompreFace最新版本存档

https://github.com/exadel-inc/CompreFace/releases

第2步:解压存档

image-20230808140543011

第3步:保持 Docker Desktop 是打开状态

只要打开Docker Desktop程序即可。

第4步:将 CompreFace 附加到 Docker 容器

打开cmd,输入以下命令

D:
cd D:\WorkSpace\jcjy\src\FaceRecgnition\CompreFace
docker-compose up -d

等待构建完成即可。完成之后Docker Desktop中会多一个CompreFace容器:

image-20230808141021989

第5步:浏览器进入系统

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

image-20230808141238860

第三部分:使用CompreFace

第1步:新建一个Application

用户可以创建多个APP,用于区分不同的用途,但我们其实用不到,创建一个自己的APP就行了

image-20230808141837590

第2步:新建一个Service

再APP下面,新建一个服务,有三种服务,分别是人脸识别(RECOGNITION)、人脸验证(VERIFICATION)、人脸检测(DETECTION)。

人脸识别其实就是人脸身份识别(每张照片只有一个人脸),人脸验证是验证两张照片是不是同一个人(每张照片只有一个人脸),人脸检测是检测一张图片里(1个或多个)人脸所在位置。

我们选择人脸识别(RECOGNITION):

image-20230808142254892

第3步:维护一个人脸集合(Face Collection)

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

PS: 同一个人的照片越多,识别率越高。

image-20230808144048727

image-20230808142701739

image-20230808151730620

第4步:测试人脸身份识别

进入[Test]:

image-20230808143651501

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

image-20230808144614584

第四部分:.Net使用CompreFace

CompreFace 针对 .Net 提供了 CompreFace .NET SDK。封装了.net 的一些调用接口的函数,简化了.net 调用CompreFace服务器的复杂度。

先决条件

  1. 您的计算机已安装CompreFace,并且CompreFace容器已经在Docker中运行起来。
  2. 您的计算机拥有.NET 6.0 SDK 及以上的运行环境。

确保以上两个条件都已满足之后即可在.Net中使用CompreFace。

第1步:NuGet 中安装CompreFace.NET.Sdk

在.net6.0 项目中,用NuGet安装CompreFace.NET.Sdk

image-20230808154255560

第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}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部