face-api实现人脸识别。

news2024/10/7 8:30:14

face-api实现人脸识别

  • face-api的由来
    • tensorflow.js 是什么
      • 部分代码
        • 模型介绍

face-api的由来

访问地址

JavaScript API for face detection and face recognition in the browser implemented on top of the tensorflow.js core API 官方说明

翻译:在tensorflow.js核心API之上实现的用于浏览器中人脸检测和人脸识别的JavaScript API

tensorflow.js 是什么

访问tensorflow.js

在这里插入图片描述

部分代码

const video = document.getElementById("video");

const startVideo = async () => {
  const stream = await navigator.mediaDevices.getUserMedia({ video: true });
  video.srcObject = stream;
  console.log(stream)
  video.play();
};
Promise.all([
  faceapi.nets.tinyFaceDetector.loadFromUri("./models"),
  faceapi.nets.faceLandmark68Net.loadFromUri("./models"),
  faceapi.nets.faceRecognitionNet.loadFromUri("./models"),
  faceapi.nets.faceExpressionNet.loadFromUri("./models"),
]).then(startVideo());
video.addEventListener("play", () => {
  // 制作定位 canvas
  const canvas = document.createElement("canvas");
  // canvas.style.position = "absolute";
  document.body.append(canvas);

  // 配置显示尺寸
  const displaySize = { width: video.width, height: video.height };
  faceapi.matchDimensions(canvas, displaySize);

  // 每 100ms 去绘制
  setInterval(async () => {
    // 识别位置, 脸部特征, 表情
    const detections = await faceapi
      .detectAllFaces(video, new faceapi.TinyFaceDetectorOptions())
      .withFaceLandmarks()
      .withFaceExpressions();

    // 调整尺寸
    const resizedDetections = faceapi.resizeResults(detections, displaySize);

    canvas.getContext("2d")?.clearRect(0, 0, canvas.width, canvas.height); // 清空画布
    faceapi.draw.drawDetections(canvas, resizedDetections); // 位置
    faceapi.draw.drawFaceLandmarks(canvas, resizedDetections); // 脸部特征
    faceapi.draw.drawFaceExpressions(canvas, resizedDetections); // 表情
    if (detections && detections.length > 0) {
    }
  }, 1000);

蓝奏云:https://wwud.lanzouw.com/iLnE516oj2eh
百度云:https://pan.baidu.com/s/10CXGdfx1Q99TEefxSJUsBw?pwd=kutw

下载完成,可以在index.html页面直接live-server运行。

模型介绍

  1. ageGenderNet 识别性别和年龄
  2. faceExpressionNet 识别表情,开心,沮丧,普通
  3. faceLandmark68Net 识别脸部特征用于mobilenet算法
  4. faceLandmark68TinyNet 识别脸部特征用于tiny算法
  5. faceRecognitionNet 识别人脸
  6. ssdMobilenetv1 google开源AI算法除库包含分类和线性回归
  7. tinyFaceDetector 比Google的mobilenet更轻量级,速度更快一点
  8. mtcnn 多任务CNN算法,一开浏览器就卡死
  9. tinyYolov2 识别身体轮廓的算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/939403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

oppo手机怎么录屏?录制屏幕,就看这里!

“有人知道oppo手机怎么录屏吗,前几年买的oppo手机,用到现在感觉挺流畅的,也不是很卡顿,最近听说我这个型号的手机也有录屏功能,但是我不知道怎么打开,就想问问大伙,oppo手机怎么录屏呀。” 在…

MySql015——使用子查询

一、创建customers表 ######################## # Create customers table ######################## use study;CREATE TABLE customers (cust_id int NOT NULL AUTO_INCREMENT,cust_name char(50) NOT NULL ,cust_address char(50) NULL ,cust_city char…

LED地板屏幕的工作原理

LED地砖屏是一款数字化地面展示设备,它的实现主要是以数字技术为核心,通过微电脑全数字化处理以及先进的电路保护设备,对视频进行同步控制,并实现了高分辨率的显示效果,在展厅设计以及舞台演出中都有相关的应用。免费提…

【MySQL】组合查询

目录 一、组合查询 1.创建组合查询 2.union规则 3.包含或取消重复的行 4.对组合查询结果排序 一、组合查询 多数SQL查询都只包含从一个或多个表中返回数据的单条SELECT语句。MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查…

kafka和消息队列

https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz d kafka依赖与zookeeper kakka配置文件 broker.id1 #每个 broker 在集群中的唯一标识,正整数。每个节点不一样 listenersPLAINTEXT://192.168.74.70:9092 ##监听地址 num.network.threads3 #…

Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放

场景 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放: 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_srs按需拉流_霸道流氓气质的博客-CSDN…

K-Means(K-均值)聚类算法

目录 K-Means 算法 K-Means 术语 K 值如何确定 K-Means 场景 美国总统大选摇争取摆选民 电商平台用户分层 给亚洲球队做聚类 ​编辑 其他场景 K-Means 工作流程 K-Means 开发流程 K-Means 的评价标准 K-Means 算法 对于 n 个样本点来说,根据距离公式&a…

如何使用HOOPS技术将3D模型转换成点云?

将3D模型转换为点云是一个常见的计算机图形学任务,通常用于将具有几何信息的复杂模型转换为一组离散的点坐标。这可以用于各种应用,如点云分析、计算机辅助设计、虚拟现实等。以下是一些步骤,可供您在将3D模型转换为点云时参考: …

还不会选渲染器?建筑设计师年度爱用排名来了!

近期,建筑设计网站CG architect公布了其主导的一年一度全球建筑渲染引擎调查报告:《2022年建筑可视化渲染引擎调查结果》,该报告主要是针对建筑可视化市场中50多种渲染引擎的使用比例情况。 在3月1号到7月31号期间,CG architect基…

vscode调试PHP代码

目录 准备工作ssh的连接以及配置调试 准备工作 1.首先你需要下载一个vscode 2.下载模块 你需要在VScode中去下载我们所需的两个模块PHP Debug以及remote -ssh 3.安装对应版本的xdebug 需要在xdebug的官方去进行分析,选择适合你自己版本的xdebug 去往官方&#x…

Thrift构建调用说明

安装开发环境 sudo yum -y groupinstall "Development Tools" 安装bison sudo yum install -y wget 安装autoconf wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz tar xvf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure --prefix/usr make…

Android性能优化之APK瘦身详解(瘦身73%)

公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了。可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段。你在写上个版本…

【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南

Minio的元数据 数据存储 MinIO对象存储系统没有元数据数据库,所有的操作都是对象级别的粒度的,这种做法的优势是: 个别对象的失效,不会溢出为更大级别的系统失效。便于实现"强一致性"这个特性。此特性对于机器学习与大数据处理非…

初阶数据结构(六)队列的介绍与实现

💓博主csdn个人主页:小小unicorn💓 ⏩专栏分类:C 🚚代码仓库:小小unicorn的学习足迹🚚 🌹🌹🌹关注我带你学习编程知识 栈 队列的介绍队列的概念:队…

webassembly003 ggml ADAM (暂记)

Adam优化器的工作方式是通过不断更新一阶矩估计和二阶矩估计来自适应地调整学习率,并利用动量法来加速训练过程。这种方式可以在不同的参数更新方向和尺度上进行自适应调整,从而更有效地优化模型。 https://arxiv.org/pdf/1412.6980.pdf 参数 这些参数…

SCI论文创新思路

SCI论文创新思路 一、 创新的分类1、算法创新2、架构创新3、迁移创新4、思想创新5、方法创新6、组合创新 二、组合创新的必要性三、组合创新的流程四、组合创新举例1、组合创新公式2、生活中的例子3、关于CV的例子4、魔改的方法 一、 创新的分类 1、算法创新 比如提出CNN、LS…

django-发送邮件

一、业务场景 业务警告 邮箱验证 密码找回 二、邮件相关协议 1.SMYTP(简答邮件传输协议 25端口) 属于“推送”协议 负责发送 2.IMAP(交互式邮件访问协议,应用层协议,143端口) 用于从本地邮件客户端…

华为云Stack的学习(三)

四、华为云Stack公共组件 1.华为云Stack公共负载均衡方案介绍 1.1 LVS原理 LVS是四层负载均衡,建立在OSI模型的传输层之上,所以效率非常高。 LVS有两种转发模式: NAT模式的转发主要通过修改IP地址(位于OSI模型的第三层网络层&…

可直接运营的零工零活招聘流量主小程序开发演示

在互联网高速发展的今天,诞生了很多互联网招聘平台,极大的方便了企业与求职者之间的对接。而在招聘市场,零工灵活招聘求职也是不可忽视的一个重要组成部分。基于帮助招聘企业快速获得优质员工和求职者快速寻找合适企业,我们在招聘…

echarts画一个简单的饼图 中间是空的 环有两种颜色一种是底色 一种是百分比的颜色

//dom打印出来大概是什么样子下方有个图可以作为参考 ecInit(correctRate, processAnalysisVO.correctRate, (100-processAnalysisVO.correctRate));//如效果图//饼图 function ecInit(dom, correctRate, errorRate) {var dom dom; //就是你要放入的盒子元素var myChart ech…