CompreFace人脸识别项目部署及使用文档

CompreFace人脸识别项目部署及使用文档

前言

本项目的人脸识别功能基于开源项目CompreFace。CompreFace对外提供RESTful API。.net 服务端通过post请求调用ComreFace API接口,将人脸图片上传给CompreFace服务,进行人脸识别、人脸验证等操作。识别结束后CompreFace服务端将结果返回给.net 服务端,完成整个人脸识别过程。
人脸身份识别过程主要是:
首先,系统需要提前录入n个人的信息,每个人的信息包括:人名+人脸照片(1张或多张);
然后,系统接收一张陌生的人脸照片并与提前录入的人脸进行比对,找出最像谁,最终完成身份识别;


要求:

  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
    {
        /// <summary>
        /// CompreFace全局对象
        /// </summary>
        public CompreFaceClient CompreFaceClient { get; set; }

        /// <summary>
        /// CompreFace人脸识别服务
        /// </summary>
        public RecognitionService FaceRecService { get; set; }

        public AuthController()
        {
            // 获取CompreFace全局对象
            this.CompreFaceClient = new CompreFaceClient(
                domain: "http://localhost",
                port: "8000");

            // 初始化人脸识别服务
            this.FaceRecService = this.CompreFaceClient.GetCompreFaceService<RecognitionService>("0a187238-fe89-441f-af90-dd2f08c74e00");
        }

        #region 人脸识别 CompreFace 代码示例

        /// <summary>
        /// Face Recognition
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Route("/auth/faceRecognition")]
        public async Task<IActionResult> 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
    }
}
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

切糕师学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值