知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
基于blazeface的小程序人臉識別實例,使用超簡單
發(fā)表時間:2021-1-5
發(fā)布人:葵宇科技
瀏覽次數(shù):177
Feature
基于微信creame的api,對返回的幀使用blazeface解析人臉
如何演示
下載這個倉庫,然后在小程序里導入項目即可,appid可以用測試號,代碼相對都比較簡單,關鍵的地方加了注釋
如何在你的項目里植入blazeface
首先先去申請下tensorflow.js
小程序版本的插件,點擊鏈接
然后在app.json
里聲明下,版本號改成最新的
{
...
"plugins": {
"tfjsPlugin": {
"version": "0.1.0",
"provider": "wx6afed118d9e81df9"
}
}
...
}
復制代碼
命令行里npm init
一下(如果已經(jīng)有package.json
就不用了)
然后往dependencies
里加入這些依賴然后npm i
"dependencies": {
"@tensorflow-models/blazeface": "0.0.5",
"@tensorflow/tfjs-converter": "2.0.1",
"@tensorflow/tfjs-core": "2.0.1",
"@tensorflow/tfjs-backend-webgl": "2.0.1",
"@tensorflow/tfjs-backend-cpu": "2.0.1",
"fetch-wechat": "0.0.3"
}
復制代碼
或者你可以直接npm i @tensorflow-models/blazeface @tensorflow/tfjs-converter @tensorflow/tfjs-core @tensorflow/tfjs-backend-webgl @tensorflow/tfjs-backend-cpu fetch-wechat
在小程序的入口文件app.js
里注冊tf:
const fetchWechat = require('fetch-wechat');
const tf = require('@tensorflow/tfjs-core');
const webgl = require('@tensorflow/tfjs-backend-webgl');
const plugin = requirePlugin('tfjsPlugin');
App({
onLaunch: function () {
plugin.configPlugin({
// polyfill fetch function
fetchFunc: fetchWechat.fetchFunc(),
// inject tfjs runtime
tf,
// inject webgl backend
webgl,
// provide webgl canvas
canvas: wx.createOffscreenCanvas()
});
...
復制代碼
前往微信開發(fā)者工具-菜單欄-工具-構建NPM,本地設置里記得勾上“使用Npm模塊”。 OK,正常情況下到這里準備就完成了,但是因為blazeface是google寫的,理所當然他們的模型文件會放在tfhub上,那么很有可能你會下載不了他的模型
如果發(fā)現(xiàn)進入不了或者后面在使用的時候獲取不到model.json這個文件,要到\miniprogram_npm\@tensorflow-models\blazeface\index.js
這個文件,然后拉到第12行,
// const BLAZEFACE_MODEL_URL = 'https://tfhub.dev/tensorflow/tfjs-model/blazeface/1/default/1';
async function load({ maxFaces = 10, inputWidth = 128, inputHeight = 128, iouThreshold = 0.3, scoreThreshold = 0.75 } = {}) {
// const blazeface = await tfconv.loadGraphModel(BLAZEFACE_MODEL_URL, { fromTFHub: true });
const blazeface = await tfconv.loadGraphModel('https://cdn.hansuku.com/tensorflow/model.json');
const model = new face_1.BlazeFaceModel(blazeface, inputWidth, inputHeight, maxFaces, iouThreshold, scoreThreshold);
return model;
}
復制代碼
注意我注釋的那兩段話,我把他原先從tfhub上的資源指向了我自己的OSS里了,你可以在這個項目的model下找到model.json
和group1-shard1of1.bin
這兩個文件,把這兩個文件上傳到你的OSS,并且保持他們在同一級目錄,然后把這里的model.json
地址指向你OSS的那個即可。
然后可以開始愉快的寫代碼了
使用
import * as blazeface from '@tensorflow-models/blazeface';
let tensorModel = null
Page({
async onReady () {
tensorModel = await blazeface.load()
},
})
復制代碼
這里就是把blazeface的模型加載出來,我推薦把tensorModel
對象弄到全局,這樣方便你后面的方法使用它:
const imgData = { data: new Uint8Array(frame.data), width: frame.width, height: frame.height}
const returnTensors = false
const flipHorizontal = false
const annotateBoxes = false
const predictions = await tensorModel.estimateFaces(imgData, returnTensors, flipHorizontal, annotateBoxes)
復制代碼
tensorModel.estimateFaces
這個方法允許傳入HTMLIMAGE對象、HTMLVIDEO對象、canvas對象和ImageData,但是在小程序里你懂得,我們只能傳入canvas對象和ImageData。(如有不正請指教,這個事情我還挺頭痛的)
其他參數(shù)含義:
returnTensors
: 是否返回tensor數(shù)據(jù)flipHorizontal
: 畫面是否需要水平翻轉 主要針對移動端前置攝像頭捕獲的畫面都是反轉的,看實際需求開不開annotateBoxes
: 是否返回五官數(shù)據(jù),如果不開啟返回的數(shù)據(jù)里就不會有landmarks
這個參數(shù)
返回值:
predictions
會返回一個數(shù)組,如果長度為0就是沒檢測到人臉,長度是多少就是檢測到了多少張人臉。數(shù)組中會返回包含人臉在當前畫面中從0,0開始偏移的位置信息等,格式如下:
[
{
topLeft: [232.28, 145.26],
bottomRight: [449.75, 308.36],
probability: [0.998],
landmarks: [
[295.13, 177.64], // 右眼
[382.32, 175.56], // 做眼
[341.18, 205.03], // 鼻子
[345.12, 250.61], // 嘴巴
[252.76, 211.37], // 右耳
[431.20, 204.93] // 左耳
]
}
]
復制代碼
topLeft
當前人臉位置的左上角頂點bottomRight
當前人臉位置的右下角定點landmarks
當前人臉五官的定位,順序參照上面(PS:你可以拿著這玩意往canvas上畫圖,就可以達到blazeface官網(wǎng)上的人臉結構圖效果)probability
識別精準度,0-1之間,越大越精準,可以通過這個來過濾一些誤判,比如必須是0.9以上的你才認為他是個人臉
作者:Evolver
來源:掘金
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
相關案例查看更多
相關閱讀
- 用戶登錄
- 小程序模板開發(fā)公司
- 汽車報廢回收
- 跳轉小程序
- 小程序開發(fā)費用
- 云南小程序開發(fā)首選品牌
- 小程序設計
- 報廢車拆解系統(tǒng)
- 云南省城鄉(xiāng)建設廳網(wǎng)站
- 開通微信小程序被騙
- 云南網(wǎng)站開發(fā)哪家好
- 小程序公司
- 云南網(wǎng)站建設快速優(yōu)化
- 網(wǎng)站開發(fā)公司哪家好
- 汽車報廢管理
- 百度小程序公司
- 模版消息
- 前端
- 云南網(wǎng)站建設哪家強
- 云南網(wǎng)站建設制作
- 網(wǎng)站建設方案 doc
- 二叉樹
- 網(wǎng)站建設需要多少錢
- 云南網(wǎng)站建設哪家好
- 云南網(wǎng)絡公司
- 網(wǎng)站建設報價
- 報廢車回收
- 云南網(wǎng)站建設案例
- 手機網(wǎng)站建設
- 報廢車管理系統(tǒng)