upgrade to tfjs@2.4.0 and ts-node@9.0.0
parent
0210f43ef8
commit
a6d28e4af5
|
@ -2,11 +2,8 @@
|
|||
"name": "@vladmandic/face-api",
|
||||
"version": "0.5.1",
|
||||
"description": "JavaScript module for Face Detection and Face Recognition Using Tensorflow/JS",
|
||||
"main": "dist/face-api.cjs",
|
||||
"module": "dist/face-api.ejs",
|
||||
"browser": "dist/face-api.js",
|
||||
"jsdelivr": "dist/face-api.js",
|
||||
"unpkg": "dist/face-api.js",
|
||||
"main": "dist/face-api.esm.js",
|
||||
"browser": "dist/face-api.min.js",
|
||||
"typings": "./build/src/index.d.ts",
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
|
@ -14,10 +11,10 @@
|
|||
"type": "module",
|
||||
"scripts": {
|
||||
"compile": "tsc",
|
||||
"clean": "rimraf /build /dist",
|
||||
"cjs": "esbuild --bundle --outfile=./dist/face-api.cjs --target=es2017 --platform=node --format=cjs --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"esm": "esbuild --bundle --outfile=./dist/face-api.ejs --target=es2017 --platform=browser --format=esm --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"iife": "esbuild --bundle --outfile=./dist/face-api.js --target=es2017 --platform=browser --format=iife --global-name=faceapi --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"clean": "rimraf build dist",
|
||||
"cjs": "esbuild --bundle --outfile=./dist/face-api.cjs.js --target=es2017 --platform=browser --format=cjs --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"esm": "esbuild --bundle --outfile=./dist/face-api.esm.js --target=es2017 --platform=browser --format=esm --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"iife": "esbuild --bundle --outfile=./dist/face-api.iife.js --target=es2017 --platform=browser --format=iife --global-name=faceapi --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"minify": "esbuild --bundle --outfile=./dist/face-api.min.js --target=es2017 --platform=browser --format=iife --sourcemap --global-name=faceapi --log-level=error --minify --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"build": "npm run clean && npm run compile && npm run cjs && npm run esm && npm run iife && npm run minify"
|
||||
},
|
||||
|
@ -44,14 +41,14 @@
|
|||
},
|
||||
"homepage": "https://github.com/vladmandic/face-api#readme",
|
||||
"dependencies": {
|
||||
"@tensorflow/tfjs-core": "^2.3.0"
|
||||
"@tensorflow/tfjs-core": "^2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.6.4",
|
||||
"esbuild": "^0.6.32",
|
||||
"@types/node": "^14.10.2",
|
||||
"esbuild": "^0.6.34",
|
||||
"rimraf": "^3.0.2",
|
||||
"ts-node": "^9.0.0",
|
||||
"tslib": "^2.0.1",
|
||||
"typescript": "^4.1.0-dev.20200908",
|
||||
"rimraf": "^3.0.2"
|
||||
"typescript": "^4.1.0-dev.20200916"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"NeuralNetwork.d.ts","sourceRoot":"","sources":["../../src/NeuralNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,8BAAsB,aAAa,CAAC,UAAU;IAKhC,SAAS,CAAC,KAAK,EAAE,MAAM;IAHnC,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAY;IACrD,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,CAAK;gBAEvB,KAAK,EAAE,MAAM;IASnC,IAAW,MAAM,IAAI,UAAU,GAAG,SAAS,CAAwB;IACnE,IAAW,aAAa,IAAI,YAAY,EAAE,CAA+B;IACzE,IAAW,QAAQ,IAAI,OAAO,CAAyB;IAEhD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;IAK9C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM;IAM1D,YAAY;;;;IAOZ,kBAAkB;;;;IAIlB,eAAe;;;;IAIf,QAAQ;IAMR,MAAM;IAQN,OAAO,CAAC,gBAAgB,GAAE,OAAc;IAUxC,eAAe,IAAI,YAAY;IAQzB,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAoB/C,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;IAU9C,cAAc,CAAC,OAAO,EAAE,YAAY;IAU3C,OAAO,CAAC,oBAAoB;IAqB5B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,MAAM;IAChD,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;IAClI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;CAC/G"}
|
||||
{"version":3,"file":"NeuralNetwork.d.ts","sourceRoot":"","sources":["../../src/NeuralNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,8BAAsB,aAAa,CAAC,UAAU;IAKhC,SAAS,CAAC,KAAK,EAAE,MAAM;IAHnC,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAY;IACrD,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,CAAK;gBAEvB,KAAK,EAAE,MAAM;IAWnC,IAAW,MAAM,IAAI,UAAU,GAAG,SAAS,CAAwB;IACnE,IAAW,aAAa,IAAI,YAAY,EAAE,CAA+B;IACzE,IAAW,QAAQ,IAAI,OAAO,CAAyB;IAEhD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;IAK9C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM;IAM1D,YAAY;;;;IAOZ,kBAAkB;;;;IAIlB,eAAe;;;;IAIf,QAAQ;IAMR,MAAM;IAQN,OAAO,CAAC,gBAAgB,GAAE,OAAc;IAUxC,eAAe,IAAI,YAAY;IAQzB,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAoB/C,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;IAU9C,cAAc,CAAC,OAAO,EAAE,YAAY;IAU3C,OAAO,CAAC,oBAAoB;IAqB5B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,MAAM;IAChD,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;IAClI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAE;CAC/G"}
|
|
@ -7,13 +7,14 @@ export class NeuralNetwork {
|
|||
this._name = _name;
|
||||
this._params = undefined;
|
||||
this._paramMappings = [];
|
||||
/*
|
||||
try {
|
||||
const testTensor = tf.tensor([0]);
|
||||
testTensor.toFloat();
|
||||
}
|
||||
catch (err) {
|
||||
throw new Error(`module not loaded: load '@tensorflow/tfjs' or '@tensorflow/tfjs-core' with appropriate backend explicitly: ${err}`);
|
||||
const testTensor = tf.tensor([0]);
|
||||
testTensor.toFloat();
|
||||
} catch (err) {
|
||||
throw new Error(`tfjs module not loaded: load '@tensorflow/tfjs' or '@tensorflow/tfjs-core' with appropriate backend explicitly`);
|
||||
}
|
||||
*/
|
||||
}
|
||||
get params() { return this._params; }
|
||||
get paramMappings() { return this._paramMappings; }
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -9,6 +9,7 @@ export function resizeResults(results, dimensions) {
|
|||
throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`);
|
||||
}
|
||||
if (Array.isArray(results)) {
|
||||
// return results.map(obj => resizeResults(obj, { width, height })) as any as T
|
||||
return results.map(obj => resizeResults(obj, { width, height }));
|
||||
}
|
||||
if (isWithFaceLandmarks(results)) {
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"resizeResults.js","sourceRoot":"","sources":["../../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,MAAM,UAAU,aAAa,CAAI,OAAU,EAAE,UAAuB;IAElE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAE7E,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;KAC5F;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAa,CAAA;KAC7E;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEpH,OAAO,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAA;KACrG;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;KAClF;IAED,IAAI,OAAO,YAAY,aAAa,IAAI,OAAO,YAAY,aAAa,EAAE;QACxE,OAAQ,OAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC/C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
||||
{"version":3,"file":"resizeResults.js","sourceRoot":"","sources":["../../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,MAAM,UAAU,aAAa,CAAI,OAAU,EAAE,UAAuB;IAElE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAE7E,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;KAC5F;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,+EAA+E;QAC/E,OAAQ,OAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAiB,CAAC,CAAa,CAAA;KAC5G;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpH,OAAO,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAA;KACrG;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;KAClF;IAED,IAAI,OAAO,YAAY,aAAa,IAAI,OAAO,YAAY,aAAa,EAAE;QACxE,OAAQ,OAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC/C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@ -13,7 +13,7 @@ function getStridesForLayerIdx(layerIdx) {
|
|||
}
|
||||
export function mobileNetV1(x, params) {
|
||||
return tf.tidy(() => {
|
||||
let conv11 = null;
|
||||
let conv11;
|
||||
let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);
|
||||
const convPairParams = [
|
||||
params.conv_1,
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,SAAS,kBAAkB,CACzB,CAAc,EACd,MAAuC,EACvC,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAChE,GAAG,GAAG,EAAE,CAAC,SAAS,CAChB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAc,EAAE,MAA0B;IACpE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEtD,MAAM,cAAc,GAAG;YACrB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;SACf,CAAA;QAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACzE,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,CAAA;aACb;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,OAAO;YACL,GAAG;YACH,MAAM,EAAE,MAAa;SACtB,CAAA;IAEH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
||||
{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,SAAS,kBAAkB,CACzB,CAAc,EACd,MAAuC,EACvC,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAChE,GAAG,GAAG,EAAE,CAAC,SAAS,CAChB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAc,EAAE,MAA0B;IACpE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAElB,IAAI,MAAM,CAAC;QACX,IAAI,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEtD,MAAM,cAAc,GAAG;YACrB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;SACf,CAAA;QAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACzE,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,CAAA;aACb;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,OAAO;YACL,GAAG;YACH,MAAM,EAAE,MAAa;SACtB,CAAA;IAEH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@ -1,5 +1,4 @@
|
|||
import * as tf from '@tensorflow/tfjs-core';
|
||||
import { BoundingBox } from '../classes/BoundingBox';
|
||||
import { Dimensions } from '../classes/Dimensions';
|
||||
import { ObjectDetection } from '../classes/ObjectDetection';
|
||||
import { NetInput } from '../dom/NetInput';
|
||||
|
@ -29,15 +28,7 @@ export declare class TinyYolov2Base extends NeuralNetwork<TinyYolov2NetParams> {
|
|||
params: TinyYolov2NetParams;
|
||||
paramMappings: import("../common").ParamMapping[];
|
||||
};
|
||||
protected extractBoxes(outputTensor: tf.Tensor4D, inputBlobDimensions: Dimensions, scoreThreshold?: number): Promise<{
|
||||
row: number;
|
||||
col: number;
|
||||
anchor: number;
|
||||
box: BoundingBox;
|
||||
score: number;
|
||||
classScore: number;
|
||||
label: number;
|
||||
}[]>;
|
||||
protected extractBoxes(outputTensor: tf.Tensor4D, inputBlobDimensions: Dimensions, scoreThreshold?: number): Promise<any>;
|
||||
private extractPredictedClass;
|
||||
}
|
||||
//# sourceMappingURL=TinyYolov2Base.d.ts.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"TinyYolov2Base.d.ts","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2Base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;AAM5D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE3F,qBAAa,cAAe,SAAQ,aAAa,CAAC,mBAAmB,CAAC;IAEpE,OAAc,oBAAoB,WAEjC;IAED,OAAO,CAAC,OAAO,CAAkB;gBAErB,MAAM,EAAE,gBAAgB;IAMpC,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,eAAe,IAAI,MAAM,CAEnC;IAEM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,0BAA0B,GAAG,EAAE,CAAC,QAAQ;IAoB9E,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,GAAG,EAAE,CAAC,QAAQ;IAsBlE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,QAAQ;IAuBvD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;IAIlE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,GAAE,kBAAuB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA0CzG,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAIvC,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;;;;IAIjE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY;;;;cAU7B,YAAY,CAC1B,YAAY,EAAE,EAAE,CAAC,QAAQ,EACzB,mBAAmB,EAAE,UAAU,EAC/B,cAAc,CAAC,EAAE,MAAM;;;;;;;;;YAgEX,qBAAqB;CAWpC"}
|
||||
{"version":3,"file":"TinyYolov2Base.d.ts","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2Base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;AAM5D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE3F,qBAAa,cAAe,SAAQ,aAAa,CAAC,mBAAmB,CAAC;IAEpE,OAAc,oBAAoB,WAEjC;IAED,OAAO,CAAC,OAAO,CAAkB;gBAErB,MAAM,EAAE,gBAAgB;IAMpC,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,eAAe,IAAI,MAAM,CAEnC;IAEM,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,0BAA0B,GAAG,EAAE,CAAC,QAAQ;IAoB9E,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,GAAG,EAAE,CAAC,QAAQ;IAsBlE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC,QAAQ;IAuBvD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;IAIlE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,GAAE,kBAAuB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA0CzG,SAAS,CAAC,mBAAmB,IAAI,MAAM;IAIvC,SAAS,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;;;;IAIjE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY;;;;cAU7B,YAAY,CAC1B,YAAY,EAAE,EAAE,CAAC,QAAQ,EACzB,mBAAmB,EAAE,UAAU,EAC/B,cAAc,CAAC,EAAE,MAAM;YAgEX,qBAAqB;CAWpC"}
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -5,9 +5,9 @@
|
|||
"requires": true,
|
||||
"dependencies": {
|
||||
"@tensorflow/tfjs-core": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-2.3.0.tgz",
|
||||
"integrity": "sha512-XJ8B/VQexYVtyyoIUCqzIbEgwaWZzv9lq1E4LKafJeuT9DldJGHS7IWIkNnZDBfmQvfYHU+fAvGRRPdQPoYeRg==",
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-2.4.0.tgz",
|
||||
"integrity": "sha512-2SJ4PG56e1hixcwdT0oWcfaAe0tfJU+WAKHVeQP1xor4bzPDE8N7LCnRdYWTXbl5mNXRZ9h5qb+XtGEQrcUrJg==",
|
||||
"requires": {
|
||||
"@types/offscreencanvas": "~2019.3.0",
|
||||
"@types/seedrandom": "2.4.27",
|
||||
|
@ -18,9 +18,9 @@
|
|||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "14.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz",
|
||||
"integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==",
|
||||
"version": "14.10.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.10.2.tgz",
|
||||
"integrity": "sha512-IzMhbDYCpv26pC2wboJ4MMOa9GKtjplXfcAqrMeNJpUUwpM/2ATt2w1JPUXwS6spu856TvKZL2AOmeU2rAxskw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/offscreencanvas": {
|
||||
|
@ -84,9 +84,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"esbuild": {
|
||||
"version": "0.6.32",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.6.32.tgz",
|
||||
"integrity": "sha512-jwEQR+iAgQQPYVs0uBuGLS2X9DCY9FBHpmsIZ7E3IdF9UTqisg718GvUqYetns8SG+LOae4jGNME8xiqXgbUjQ==",
|
||||
"version": "0.6.34",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.6.34.tgz",
|
||||
"integrity": "sha512-InRdL/Q96pUucPqovJzvuLhquZr6jOn81FDVwFjCKz1rYKIm9OdOC+7Fs4vr6x48vKBl5LzKgtjU39BUpO636A==",
|
||||
"dev": true
|
||||
},
|
||||
"fs.realpath": {
|
||||
|
@ -210,9 +210,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.1.0-dev.20200908",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.0-dev.20200908.tgz",
|
||||
"integrity": "sha512-vJWE+ENHFoPIgkogt2fKrEn+Q2HDVsFj1RyOZKHu7nBWLhBWjrz4QtNJpi1iYUy9mm3PjnpOHyQzrbLCmevGCg==",
|
||||
"version": "4.1.0-dev.20200916",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.0-dev.20200916.tgz",
|
||||
"integrity": "sha512-ly2k/AZ3AyfIyLWhBSnW3x7aDufIS9uNRagFZin36jXb6DvZEZwtyx138u8iSvtKE1AV/VNyWLLBkZYojgBM1g==",
|
||||
"dev": true
|
||||
},
|
||||
"wrappy": {
|
||||
|
|
25
package.json
25
package.json
|
@ -2,11 +2,8 @@
|
|||
"name": "@vladmandic/face-api",
|
||||
"version": "0.5.1",
|
||||
"description": "JavaScript module for Face Detection and Face Recognition Using Tensorflow/JS",
|
||||
"main": "dist/face-api.cjs",
|
||||
"module": "dist/face-api.ejs",
|
||||
"browser": "dist/face-api.js",
|
||||
"jsdelivr": "dist/face-api.js",
|
||||
"unpkg": "dist/face-api.js",
|
||||
"main": "dist/face-api.esm.js",
|
||||
"browser": "dist/face-api.esm.js",
|
||||
"typings": "./build/src/index.d.ts",
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
|
@ -14,10 +11,10 @@
|
|||
"type": "module",
|
||||
"scripts": {
|
||||
"compile": "tsc",
|
||||
"clean": "rimraf /build /dist",
|
||||
"cjs": "esbuild --bundle --outfile=./dist/face-api.cjs --target=es2017 --platform=node --format=cjs --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"esm": "esbuild --bundle --outfile=./dist/face-api.ejs --target=es2017 --platform=browser --format=esm --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"iife": "esbuild --bundle --outfile=./dist/face-api.js --target=es2017 --platform=browser --format=iife --global-name=faceapi --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"clean": "rimraf build dist",
|
||||
"cjs": "esbuild --bundle --outfile=./dist/face-api.cjs.js --target=es2017 --platform=browser --format=cjs --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"esm": "esbuild --bundle --outfile=./dist/face-api.esm.js --target=es2017 --platform=browser --format=esm --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"iife": "esbuild --bundle --outfile=./dist/face-api.iife.js --target=es2017 --platform=browser --format=iife --global-name=faceapi --sourcemap --log-level=error --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"minify": "esbuild --bundle --outfile=./dist/face-api.min.js --target=es2017 --platform=browser --format=iife --sourcemap --global-name=faceapi --log-level=error --minify --tsconfig=./tsconfig.json build/src/index.js",
|
||||
"build": "npm run clean && npm run compile && npm run cjs && npm run esm && npm run iife && npm run minify"
|
||||
},
|
||||
|
@ -44,14 +41,14 @@
|
|||
},
|
||||
"homepage": "https://github.com/vladmandic/face-api#readme",
|
||||
"dependencies": {
|
||||
"@tensorflow/tfjs-core": "^2.3.0"
|
||||
"@tensorflow/tfjs-core": "^2.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.6.4",
|
||||
"esbuild": "^0.6.32",
|
||||
"@types/node": "^14.10.2",
|
||||
"esbuild": "^0.6.34",
|
||||
"rimraf": "^3.0.2",
|
||||
"ts-node": "^9.0.0",
|
||||
"tslib": "^2.0.1",
|
||||
"typescript": "^4.1.0-dev.20200908",
|
||||
"rimraf": "^3.0.2"
|
||||
"typescript": "^4.1.0-dev.20200916"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,12 +11,14 @@ export abstract class NeuralNetwork<TNetParams> {
|
|||
protected _paramMappings: ParamMapping[] = []
|
||||
|
||||
constructor(protected _name: string) {
|
||||
/*
|
||||
try {
|
||||
const testTensor = tf.tensor([0]);
|
||||
testTensor.toFloat();
|
||||
} catch (err) {
|
||||
throw new Error(`module not loaded: load '@tensorflow/tfjs' or '@tensorflow/tfjs-core' with appropriate backend explicitly: ${err}`)
|
||||
}
|
||||
throw new Error(`tfjs module not loaded: load '@tensorflow/tfjs' or '@tensorflow/tfjs-core' with appropriate backend explicitly`);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public get params(): TNetParams | undefined { return this._params }
|
||||
|
|
|
@ -13,13 +13,13 @@ export function resizeResults<T>(results: T, dimensions: IDimensions): T {
|
|||
}
|
||||
|
||||
if (Array.isArray(results)) {
|
||||
return results.map(obj => resizeResults(obj, { width, height })) as any as T
|
||||
// return results.map(obj => resizeResults(obj, { width, height })) as any as T
|
||||
return (results as Array<any>).map(obj => resizeResults(obj, { width, height } as IDimensions)) as any as T
|
||||
}
|
||||
|
||||
if (isWithFaceLandmarks(results)) {
|
||||
const resizedDetection = results.detection.forSize(width, height)
|
||||
const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height)
|
||||
|
||||
return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks)
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ function getStridesForLayerIdx(layerIdx: number): [number, number] {
|
|||
export function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {
|
||||
return tf.tidy(() => {
|
||||
|
||||
let conv11 = null
|
||||
let conv11;
|
||||
let out = pointwiseConvLayer(x, params.conv_0, [2, 2])
|
||||
|
||||
const convPairParams = [
|
||||
|
|
|
@ -201,7 +201,7 @@ export class TinyYolov2Base extends NeuralNetwork<TinyYolov2NetParams> {
|
|||
return [boxes, scores, classScores]
|
||||
})
|
||||
|
||||
const results = []
|
||||
const results = [] as any;
|
||||
|
||||
const scoresData = await scoresTensor.array()
|
||||
const boxesData = await boxesTensor.array()
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
"incremental": false,
|
||||
"listFiles": false,
|
||||
"noFallthroughCasesInSwitch": false,
|
||||
"noImplicitAny": true,
|
||||
"noImplicitAny": false,
|
||||
"noImplicitReturns": false,
|
||||
"noImplicitThis": false,
|
||||
"noUnusedLocals": false,
|
||||
|
|
Loading…
Reference in New Issue