首页 > 编程语言 >使用 Amazon Rekognition、Lambda 和 JavaScript 进行面部识别

使用 Amazon Rekognition、Lambda 和 JavaScript 进行面部识别

时间:2022-09-18 02:35:54浏览次数:148  
标签:函数 Rekognition JavaScript Amazon 人脸 集合 搜索 response lambda

使用 Amazon Rekognition、Lambda 和 JavaScript 进行面部识别

创建面部搜索 lambda 函数以按图像搜索面部

亚马逊识别

亚马逊识别 是一个 基于云的SAAS平台 提供 计算机视觉服务 可用于 图像和视频的人工智能分析 .通过向 AWS Rekognition API 提供图像或视频,也很容易集成到应用程序中。它提供了高度准确的面部分析、面部比较和面部搜索功能。我们可以检测、分析和比较各种用例的人脸,包括用户验证、编目、人数统计和公共安全。 — AWS 官方文档

在本文中,我们将研究以下描述的用例之一:

面部搜索

借助 Amazon Rekognition,您可以 在图像中搜索与存储在称为人脸集合的容器中的人脸相匹配的人脸 . 面孔集合是您拥有和管理的面孔的索引 .在 Amazon Rekognition 中根据人脸搜索需要两个主要步骤:

  1. 索引面
  2. 搜索面孔

对于上述用例,我们将首先创建一个集合,我们将在其中存储所有面孔。然后我们将不同的面孔添加到集合中。这将创建添加到集合中的所有面的列表。然后,我们可以执行面部搜索来搜索我们收藏中的图像。因此,我们可以将其分为以下三个步骤。

  1. 创建一个集合
  2. 将面孔添加到集合中
  3. 在集合中搜索面孔

先决条件

  1. 你需要有一个 AWS 管理控制台账户 .不用担心,对于我们在这里使用的东西,您不会被收取费用作为它的一部分 免费套餐
  2. 一个 base 64 编码的输入图像 (例如:data:image/png;base64, KzApRSe22iP0w8Gp…..)用于 API 的输入。我们也可以使用 S3 存储桶 在这里,但我只想专注于 Rekoginition API。

Rekognition API

我们的用例需要以下 Amazon Rekognition API。

  1. rekognition.createCollection — 在 AWS 区域中创建一个集合。我们可以使用 IndexFaces 操作将人脸添加到集合中。
  2. 识别.indexFaces — 检测输入图像中的人脸并将它们添加到指定的集合中。
  3. rekognition.searchFacesByImage — 对于给定的输入图像,首先检测图像中最大的人脸,然后在指定的集合中搜索匹配的人脸。该操作将输入人脸的特征与指定集合中的人脸进行比较。

设置 Lambda 函数

我们将使用 拉姆达函数节点.js 执行所有上述三个操作。我将演示为我们的“ 面部搜索”操作 .同样,您可以为“ 创建面集合 “ 和 ” 添加面 ” 操作。

步骤1

转到查找服务,然后搜索 lambda。

第2步

点击 创建函数 lambda 函数页面上的按钮。

第 3 步

将函数命名为“ 面部搜索 ”,然后在运行时下,单击下拉菜单,然后选择 节点.js。

第4步

点击 创建函数 ,保持其余部分不变。这也将创建一个 lambda 函数的默认角色 .就我而言,它是用名称“facial-search-role-8sy40unw”创建的。稍后我们还将更新角色。

第 5 步

在 lambda 函数页面上,向下滚动到 代码源 .擦除编辑器中的所有内容并粘贴以下代码。

**常量 AWS = 要求('aws-sdk');  
 const rekognition = new AWS.Rekognition();** **exports.handler = async (event) = > {**  
 // 回复  
    **常量响应 = {  
 数据:空,  
 状态码:200,  
 信息: '',  
 };**  
      
 // 人脸搜索  
    **尝试 {**  
 // 获取不带 'data:image/png;base64,' 文本的编码图像  
        **常量编码图像 = event.imgdata;**  
          
 // 转换为缓冲区  
        **const decodedImage = Buffer.from(encodedImage, 'base64');** // rekoginition api 的参数  
        **变量参数 = {**  
 // 存放人脸的集合名称  
            **CollectionId:“面孔集合”,**   
              
 // 最小匹配置信度得分  
            **FaceMatchThreshold:90,  
 图片: {  
 字节:解码图像  
 },**  
              
 // 要返回的最大面数  
           **最大面数:5**  
        **};**  
          
 // 调用rekognition api搜索输入人脸  
        **常量数据 = 等待 rekognition.searchFacesByImage(params).promise();**  
          
        **response.data = 数据;  
 response.message = "人脸识别成功!!"  
 response.error = null;**  
    **} 抓住 (e) {**  
        **响应数据=空;  
 response.message = "人脸识别失败"  
 response.error = e;**  
   **}** **返回响应;**  
 **};**

facial-search lambda function

第 6 步

跟着 从 1 到 4 的相同步骤 为了 其他两个 lambda 函数 , IE。 ” create-face-collection”和“add-face”。 这些函数的代码将在接下来的步骤中提及。

请注意 ,我们可以重用为我们的“ 面部搜索” 这两个函数的函数。这如下所示。

Select existing role

第 7 步

在“ 创建集合 “ 功能。将以下代码擦除并粘贴到编辑器中。

 常量 AWS = 要求('aws-sdk');  
 const rekognition = new AWS.Rekognition(); exports.handler = async (event) => {  
 // 形成要返回的响应  
 让响应 = {  
 “数据”: ””,  
 “信息”: ””,  
 “错误”: ””  
 };  
      
 // 创建一个集合  
 尝试 {  
 // 唯一命名集合  
 变量参数 = {  
 “CollectionId”:“面孔集合”  
 };  
           
 常量数据 = 等待 rekognition.createCollection(params).promise();  
          
 response.data = 数据;  
 response.message = "集合创建成功";  
 response.error = null;  
 } 抓住 (e) {  
 响应数据=空;  
 response.message = "集合创建失败";  
 response.error = e;  
 }  
 返回响应;  
 };

第 8 步

在“ 添加面 “ 功能。将以下代码擦除并粘贴到编辑器中。

 常量 AWS = 要求('aws-sdk');  
 const rekognition = new AWS.Rekognition(); exports.handler = async (event) => {  
 // 形成要返回的响应  
 让响应 = {  
 “数据”: ””,  
 “信息”: ””,  
 “错误”: ””  
 };  
      
 // 将人脸添加到集合中  
 尝试 {  
 // 没有 'data:image/png;base64,' 文本的编码图像  
 常量编码图像 = event.imgdata;  
          
 // 转换为缓冲区  
 const decodedImage = Buffer.from(encodedImage, 'base64'); // rekoginition api 的参数  
 让参数 = {  
 // 存放人脸的集合名称  
 CollectionId: "人脸收藏",  
 检测属性:[  
 “默认”  
 ],  
 // ExternalImageId: "myphotoid",  
 图片: {  
 字节:解码图像  
 }  
 };  
          
 常量数据 = 等待 rekognition.indexFaces(params).promise();  
          
 response.data = 数据;  
 response.message = "人脸添加成功!!"  
 response.error = null;  
 } 抓住 (e) {  
 响应数据=空;  
 response.message = "添加人脸数据失败!!"  
 response.error = e;  
 }  
 返回响应;  
 };

现在,我们已经准备好使用我们的 lambda 函数了。它们需要按以下顺序执行。

  1. “create-face-collection”——只执行一次来创建集合。
  2. “add-face” - 执行此操作以将任何新面孔添加到集合中。
  3. “facial-search”——这是我们的主要功能,用于搜索我们收藏中的人脸。

现在,我们可以测试这些函数,但在此之前,我们需要使用 IAM 为我们的 lambda 函数设置角色。

使用 IAM 设置安全角色

要设置角色,请按照以下步骤操作。

步骤1

搜索并选择 我是 服务。

第2步

在左侧导航栏,点击 角色 .

第 3 步

现在,选择我们在“ 面部搜索 ” 拉姆达函数。

第4步

点击 添加权限 -> 附加策略 .

第 5 步

搜索并选择“ AmazonRekognitionFullAccess” 政策并点击“ 附加策略 ”。

我们所有的 lambda 函数的策略现在都已设置,因为它们共享相同的角色(请参阅 第 6 步 在上面的上一节中)。

测试时间

  1. 回到你的 lambda 函数“ 面部搜索 ”。
  2. 在代码编辑器顶部,选择下拉菜单并单击“ 配置测试事件 ”。

3. 为您的活动命名。

4. 然后输入以下 JSON 对象。请在此处输入您要搜索的面部的正确 base 64 编码图像值。

5. 点击 创造

6. 在编辑器顶部,单击 测试 按钮。

请注意 , 我们需要 首先创建一个集合添加人脸 在调用它之前给它“ 面部搜索 “ 功能。 因此,请在测试此函数之前调用“create-face-collection”和“add-face” lambda 函数 .

7. 你应该看到下面的“ 执行结果 ”。

8. 除了返回自定义消息外,您还可以返回以下格式的人脸数据。

很神奇吧??

如您所见,通过 Node.js 中的 lambda 函数使用 Amazon Rekognition API 非常简单直接。您可以在官方文档中探索更多 API API 参考 .

感谢您的阅读。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/37380/15221802

标签:函数,Rekognition,JavaScript,Amazon,人脸,集合,搜索,response,lambda
From: https://www.cnblogs.com/amboke/p/16704084.html

相关文章

  • JavaScript 中的混入
    JavaScript中的混入Photoby阿列克谢·鲁班on不飞溅介绍在继承中,大多数编程语言不支持多级继承,这意味着您不能为特定类拥有多个父级。Javascript也不支持多级......
  • 简单的 JavaScript 数字格式化方法
    简单的JavaScript数字格式化方法每个大型社交媒体网站都以与93.1K追随者、100万订阅者或2.5B浏览量相同的方式格式化他们的数字,他们这样做是因为用紧凑的数字设计......
  • 在 JavaScript 中从数组中删除空值
    在JavaScript中从数组中删除空值下面介绍如何在JavaScript中从数组中删除空值。我将向您展示两种方法,第一种使用纯JavaScript和数组过滤器方法,第二种使用Lodash。......
  • javascript第一天
    JavaScript基础-第1天了解变量、数据类型、运算符等基础概念,能够实现数据类型的转换,结合四则运算体会如何编程。体会现实世界中的事物与计算机的关系理解什么是数......
  • javascript 过滤字符串中script并且替换掉 xss注入攻击+js调试
    最近发现网上找答案也是80%类似结果。js调试可以在浏览器里,f10,f11可以比较准确。functionscriptReplace(str){if(newRegExp(".*?script[^>]*?.*?(<\/.*?sc......
  • Javascript 设置数据结构
    Javascript设置数据结构Photoby潘卡伊·帕特尔on不飞溅你好,我一直想详细研究ES6数据类型很久了,但是一直找不到太多时间工作,但现在是时候了。我从Set开始,希望能......
  • JavaScript框架大战已结束,赢家只有一个
    投递人 itwriter 发布于2022-09-0323:44 评论(0) 有2143人阅读 原文链接 [收藏] « »框架之战是JavaScript社区中的热门话题,也是业界众多圣战之一。......
  • 阿卡佩拉 |用 Javascript 制作 |反应 JS
    阿卡佩拉|用Javascript制作|反应JS阿卡佩拉|用Javascript制作|反应JSAcapela可让您控制通知。从一个地方捕获、过滤和操作它们。以两倍的速度解锁您的团队......
  • 你需要了解多少 Javascript 才能开始使用 React?
    你需要了解多少Javascript才能开始使用React?1.Javascript基础一个。使用var、let和const进行变量声明湾。算术、比较、逻辑运算符C。条件块和循环:if、for、f......
  • 如何用 JavaScript 编写游戏
    如何用JavaScript编写游戏今天的浏览器允许您创建具有完整图形的游戏。以下是使用JavaScript和HTML5编写简单赛车游戏的方法。浏览器现在为JavaScript开发人员提......