国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【face-api.js】前端實現(xiàn),人臉捕獲、表情識別、年齡性別識別、人臉比對、視頻人臉追蹤、攝像頭人物識別

這篇具有很好參考價值的文章主要介紹了【face-api.js】前端實現(xiàn),人臉捕獲、表情識別、年齡性別識別、人臉比對、視頻人臉追蹤、攝像頭人物識別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

face-api.js


效果展示

【face-api.js】前端實現(xiàn),人臉捕獲、表情識別、年齡性別識別、人臉比對、視頻人臉追蹤、攝像頭人物識別【face-api.js】前端實現(xiàn),人臉捕獲、表情識別、年齡性別識別、人臉比對、視頻人臉追蹤、攝像頭人物識別


準(zhǔn)備工作

  • 官網(wǎng)看下簡介,在線預(yù)覽看下效果
  • 官方的github文件拷下來
  • npm i face-api.js
  • 把模型文件拷進你的項目
    【face-api.js】前端實現(xiàn),人臉捕獲、表情識別、年齡性別識別、人臉比對、視頻人臉追蹤、攝像頭人物識別

主要布局

主要是在圖片或視頻元素上,蓋一個相同大小的canvas

<template>
  <div>
    <!--  圖片/視頻 捕獲區(qū)  -->
    <div class="detectBox">
      <img
        v-show="!trackVideoFaces && !trackCameraFaces"
        :src="base64"
        alt=""
        width="500"
        ref="img"
        id="myImg"
        @load="detectFactory"
      >

      <video
        v-if="trackVideoFaces"
        width="500"
        ref="video"
        id="myVideo"
        muted
        playsinline
        preload
        loop
        @durationchange="$refs.video.play()"
        @play="videoStatus = 1"
        @pause="videoStatus = 0"
      >
        <source src="./media/shylock.mp4" type="video/mp4">
        抱歉,您的瀏覽器不支持嵌入式視頻。
      </video>

      <video
        v-if="trackCameraFaces"
        @loadedmetadata=""
        ref="video"
        id="myVideo"
        autoplay
        muted
        playsinline
        @play="videoStatus = 1"
        @pause="videoStatus = 0"
      />

      <canvas ref="canvas" />
    </div>
  </div>
</template>

加載訓(xùn)練模型

import * as faceapi from 'face-api.js';

export default {
	methods: {
	  	// 加載模型
	    init() {
	      const toast = this.$createToast({
	        txt: '模型加載中...',
	        mask: true
	      })
	
	      toast.show();
	
	      // 加載訓(xùn)練好的模型
	      // ageGenderNet:          年齡、性別識別模型,大約420KB
	      // faceExpressionNet:     人臉表情識別模型,識別表情,開心,沮喪,普通,大約310KB
	      // faceLandmark68Net:    68個點人臉地標(biāo)檢測模型(默認(rèn)模型),大約350KB
	      // faceLandmark68TinyNet:68個點人臉地標(biāo)檢測模型(小模型),大約80KB
	      // faceRecognitionNet:    人臉識別模型,可以比較任意兩個人臉的相似性,大約6.2MB
	      // ssdMobilenetv1:       SSD 移動網(wǎng)絡(luò) V1,大約5.4MB,準(zhǔn)確的最高,推理時間最慢
	      // tinyFaceDetector:      微型人臉檢測器(實時人臉檢測器),與 SSD Mobilenet V1 人臉檢測器相比,它速度更快、體積更小且資源消耗更少,但在檢測小人臉方面的表現(xiàn)略遜一籌。移動和網(wǎng)絡(luò)友好
	      // mtcnn                  大約2MB
	      // tinyYolov2             識別身體輪廓的算法,不知道怎么用
	      Promise.all([
	        faceapi.nets.faceRecognitionNet.loadFromUri('./models'),
	        faceapi.nets.faceLandmark68Net.loadFromUri('./models'),
	        faceapi.nets.faceLandmark68TinyNet.loadFromUri('./models'),
	        faceapi.nets.ssdMobilenetv1.loadFromUri('./models'),
	        faceapi.nets.tinyFaceDetector.loadFromUri('./models'),
	        faceapi.nets.mtcnn.loadFromUri('./models'),
	        faceapi.nets.faceExpressionNet.loadFromUri('./models'),
	        faceapi.nets.ageGenderNet.loadFromUri('./models'),
	        // faceapi.nets.tinyYolov.loadFromUri('./models')
	      ])
	          .then((res) => {
	            this.entryFaces();
	            toast.hide();
	          })
	    },
	},
	mounted () {
    this.init();
  }
}

人臉識別

先是錄入一些圖片的描述信息,然后比較描述信息,判斷人臉的相似度

    /**
     * @description 錄入人臉數(shù)據(jù)
     *
     * 大臉照、黑白照可能識別不出來,可以修改配置,降低人臉的置信度
     * */
    async entryFaces() {
      const imgs = document.querySelectorAll('.faceCompare img');

      for (const img of imgs) {
        /** 注意:這里不能傳options,不然會報錯 */
        const singleResult = await faceapi
            .detectSingleFace(img)
            .withFaceLandmarks()
            .withFaceDescriptor()
        ;

        this.faces = [
          ...this.faces,
          new faceapi.LabeledFaceDescriptors(
              img.alt,
              [singleResult.descriptor]
          )
        ]
      }
    },

   // 比較相似度
    async compareFaces() {
      const detection1 = await faceapi.detectSingleFace('reference').withFaceLandmarks().withFaceDescriptor();
      const detection2 = await faceapi.detectSingleFace('toCompare').withFaceLandmarks().withFaceDescriptor();

      if (detection1 && detection2) {
        this.similarity = Math.round(faceapi.utils.round(1 - faceapi.euclideanDistance(detection1.descriptor, detection2.descriptor)) * 100);
      } else {
        this.similarity = 0;
      }
    }

人臉檢測器

人臉檢測器有兩種,SSDTiny兩種,SSD較大,Tiny用于動態(tài)視頻檢測,精度可能沒SSD高,但推算速度快,幀率也高,如果檢測不到人臉,可以切換檢測器,或者修改配置

	data() {
	return {
		cascadeData: [
	        {
	          value: 'SSD',
	          text: 'SSD',
	          children: [
	            { text: '0.1', value: 0.1 },
	            { text: '0.2', value: 0.2 },
	            { text: '0.3', value: 0.3 },
	            { text: '0.4', value: 0.4 },
	            { text: '0.5', value: 0.5 },
	            { text: '0.6', value: 0.6 },
	            { text: '0.7', value: 0.7 },
	            { text: '0.8', value: 0.8 },
	            { text: '0.9', value: 0.9 },
	          ]
	        },
	        {
	          value: 'Tiny',
	          text: 'Tiny',
	          children: [
	            { text: '0.1', value: 0.1, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.2', value: 0.2, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.3', value: 0.3, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.4', value: 0.4, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.5', value: 0.5, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.6', value: 0.6, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.7', value: 0.7, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.8', value: 0.8, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	            { text: '0.9', value: 0.9, children: [{ text: '128', value: 128 }, { text: '160', value: 160 }, { text: '224', value: 224 }, { text: '320', value: 320 }, { text: '416', value: 416 }, { text: '512', value: 512 }, { text: '608', value: 608 }] },
	          ]
	        }
	      ]
		}
	}

 	// 配置人臉檢測器參數(shù)
    getFaceDetectorOptions() {
      const { selectedValue } = this;

      return selectedValue[0] === 'SSD'
          ? new faceapi.SsdMobilenetv1Options({
            minConfidence: selectedValue[1]
          })
          /**
           * @param inputSize?: number
               處理圖像的大小,越小越快
               在檢測較小的人臉時, 必須被32整除
               常見的大小有128、160、224、320、416、512、608 ,
               用于通過網(wǎng)絡(luò)攝像頭進行人臉跟蹤我建議使用較小尺寸的,例如128、160
               用于檢測較小的人臉使用較大尺寸的,例如512、608
               默認(rèn)值: 416
             *  @param scoreThreshold?: number
               最小置信閾值
               默認(rèn)值:0.5
           *
           * @desc inputSize和scoreThreshold的不同配置,都會影響返回結(jié)果的數(shù)量
           * */
          : new faceapi.TinyFaceDetectorOptions({
            scoreThreshold: selectedValue[1],
            inputSize: selectedValue[2]
          })
    },

略…

懶得寫了,把實現(xiàn)代碼拷下來看吧


本地開啟https

因為 navigator.mediaDeviceshttp://域名下無法使用,你可以用http://localhost過渡,但是如果想要在手機上預(yù)覽效果,就需要配置https


手機當(dāng)電腦的攝像頭

手機、電腦下載iVCam文章來源地址http://www.zghlxwxcb.cn/news/detail-515607.html

到了這里,關(guān)于【face-api.js】前端實現(xiàn),人臉捕獲、表情識別、年齡性別識別、人臉比對、視頻人臉追蹤、攝像頭人物識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 人臉識別4:Android InsightFace實現(xiàn)人臉識別Face Recognition(含源碼)

    人臉識別4:Android InsightFace實現(xiàn)人臉識別Face Recognition(含源碼)

    目錄 人臉識別4:Android InsightFace實現(xiàn)人臉識別Face Recognition(含源碼) 1. 前言 2. 項目說明 (1)開發(fā)版本 (2)依賴庫說明(OpenCV+OpenCL+base-utils+TNN) (3)CMake配置 3. 人臉識別系統(tǒng) (1)人臉識別的核心算法 (2)人臉檢測和關(guān)鍵點檢測 (3)人臉校準(zhǔn) (4)人臉特征提取 (5)人臉比

    2024年02月09日
    瀏覽(31)
  • 人臉識別2:InsightFace實現(xiàn)人臉識別Face Recognition(含源碼下載)

    人臉識別2:InsightFace實現(xiàn)人臉識別Face Recognition(含源碼下載)

    目錄 人臉識別2:InsightFace實現(xiàn)人臉識別Face Recognition(含源碼下載) 1. 前言 2. 項目安裝 3. 人臉識別系統(tǒng) (1)人臉檢測和關(guān)鍵點檢測 (2)人臉校準(zhǔn) (3)人臉特征提取 (4)人臉比對(1:1) (5)人臉?biāo)阉?1:N) (6)配置文件config (7)人臉識別優(yōu)化建議 4. 人臉識別Demo效果 5. 人臉識

    2024年02月05日
    瀏覽(26)
  • 人臉識別3:C/C++ InsightFace實現(xiàn)人臉識別Face Recognition(含源碼)

    人臉識別3:C/C++ InsightFace實現(xiàn)人臉識別Face Recognition(含源碼)

    目錄 1. 前言 2. 項目安裝 (1)項目結(jié)構(gòu) (2)配置開發(fā)環(huán)境(OpenCV+OpenCL+base-utils+TNN) (3)部署TNN模型 (4)CMake配置 (5)編譯運行? 3. 人臉識別系統(tǒng) (1)人臉識別的核心算法 (2)人臉檢測和關(guān)鍵點檢測 (3)人臉校準(zhǔn) (4)人臉特征提取 (5)人臉比對(1:1) (6)人臉?biāo)阉?1

    2024年02月07日
    瀏覽(21)
  • python實現(xiàn)人臉識別(face_recognition)

    python實現(xiàn)人臉識別(face_recognition)

    1、介紹 本項目是世界上最強大、簡潔的人臉識別庫,你可以使用Python和命令行工具提取、識別、操作人臉。 本項目的人臉識別是基于業(yè)內(nèi)領(lǐng)先的C++開源庫dlib中的深度學(xué)習(xí)模型,用Labeled Faces in the Wild人臉數(shù)據(jù)集進行測試,有高達99.38%的準(zhǔn)確率。但對小孩和亞洲人臉的識別準(zhǔn)

    2024年02月02日
    瀏覽(26)
  • 使用OpenCV實現(xiàn)人臉特征點檢測與實時表情識別

    使用OpenCV實現(xiàn)人臉特征點檢測與實時表情識別

    引言: ????????本文介紹了如何利用 OpenCV 庫實現(xiàn)人臉特征點檢測,并進一步實現(xiàn)實時表情識別的案例。首先,通過 OpenCV 的Dlib庫進行人臉特征點的定位,然后基于特征點的變化來識別不同的表情。這種方法不僅準(zhǔn)確度高,而且實時性好,可以廣泛應(yīng)用于人臉表情分析、人

    2024年04月15日
    瀏覽(25)
  • FER2013人臉表情識別從零實現(xiàn)(Pytorch,F(xiàn)NN,CNN)

    FER2013人臉表情識別從零實現(xiàn)(Pytorch,F(xiàn)NN,CNN)

    學(xué)完了深度學(xué)習(xí)的理論和框架,接下來就是實踐啦!相信大家在實踐的時候都會去找各種的項目,本文是kaggle上面的一個深度學(xué)習(xí)小項目,目的是實現(xiàn)人臉表情的分類。接下來我將具體講解實現(xiàn)過程,相信你只要學(xué)了深度學(xué)習(xí)的理論知識,對pytorch框架有所了解,就能夠看得懂

    2024年02月05日
    瀏覽(21)
  • 基于Face++,使用Spring Boot+Elemnet-UI實現(xiàn)人臉識別登錄。

    基于Face++,使用Spring Boot+Elemnet-UI實現(xiàn)人臉識別登錄。

    上一篇文章只是封裝了人臉檢測的一些工具類,要實現(xiàn)刷臉登錄,我們首先得思考一個問題,就是如何將我們的人臉和登錄賬戶信息進行綁定,讓它通過人臉就能識別到當(dāng)前登錄的賬戶是誰的賬戶。 這個問題我們可以這樣解決,我瀏覽Face++的官網(wǎng)發(fā)現(xiàn)它還有人臉比對的一個

    2024年02月04日
    瀏覽(18)
  • 面部表情識別(Pytorch):人臉檢測模型+面部表情識別分類模型

    面部表情識別(Pytorch):人臉檢測模型+面部表情識別分類模型

    面部表情識別2:Pytorch實現(xiàn)表情識別(含表情識別數(shù)據(jù)集和訓(xùn)練代碼):https://blog.csdn.net/guyuealian/article/details/129505205 b站視頻:https://www.bilibili.com/video/BV1xm4y1p7H3 項目源碼:https://github.com/Whiffe/PyTorch-Facial-Expression-Recognition 面部表情識別由兩部分組成:人臉檢測與表情識別分類 人

    2024年02月13日
    瀏覽(61)
  • 表情識別-情感分析-人臉識別(代碼+教程)

    表情識別-情感分析-人臉識別(代碼+教程)

    面部情緒識別(FER)是指根據(jù)面部表情識別和分類人類情緒的過程。通過分析面部特征和模式,機器可以對一個人的情緒狀態(tài)作出有根據(jù)的推斷。這個面部識別的子領(lǐng)域高度跨學(xué)科,涉及計算機視覺、機器學(xué)習(xí)和心理學(xué)等領(lǐng)域的知識。 以下是一些關(guān)鍵領(lǐng)域,其中這項技術(shù)可能

    2024年02月09日
    瀏覽(18)
  • face_recognition人臉識別與人臉檢測

    1、安裝face_recognition庫 face_recognition庫的人臉識別是基于業(yè)內(nèi)領(lǐng)先的C++開源庫dlib中的深度學(xué)習(xí)模型,安裝face_recognition庫的同時會一并安裝dlib深度學(xué)習(xí)框架。 2、face_recognition庫的使用 1)load_image_file加載要識別的人臉圖像 這個方法主要是用于加載要識別的人臉圖像,返回的數(shù)據(jù)

    2024年02月13日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包