human/dist/human.cjs.map

8 lines
258 KiB
Plaintext
Raw Normal View History

2020-10-15 14:16:34 +02:00
{
"version": 3,
"sources": ["../src/facemesh/blazeface.js", "../src/facemesh/keypoints.js", "../src/facemesh/box.js", "../src/facemesh/util.js", "../src/facemesh/pipeline.js", "../src/facemesh/uvcoords.js", "../src/facemesh/triangulation.js", "../src/facemesh/facemesh.js", "../src/ssrnet/ssrnet.js", "../src/emotion/emotion.js", "../src/posenet/modelBase.js", "../src/posenet/modelMobileNet.js", "../src/posenet/heapSort.js", "../src/posenet/buildParts.js", "../src/posenet/keypoints.js", "../src/posenet/vectors.js", "../src/posenet/decodePose.js", "../src/posenet/decodeMultiple.js", "../src/posenet/util.js", "../src/posenet/modelPoseNet.js", "../src/posenet/posenet.js", "../src/handpose/box.js", "../src/handpose/handdetector.js", "../src/handpose/keypoints.js", "../src/handpose/util.js", "../src/handpose/pipeline.js", "../src/handpose/handpose.js", "../src/imagefx.js", "../config.js", "../src/human.js", "../src/human.js"],
"sourcesContent": ["const tf = require('@tensorflow/tfjs');\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.detector.inputSize;\n this.height = config.detector.inputSize;\n this.maxFaces = config.detector.maxFaces;\n this.anchorsData = generateAnchors(config.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.iouThreshold = config.detector.iouThreshold;\n this.scaleFaces = 0.8;\n this.scoreThreshold = config.detector.scoreThreshold;\n }\n\n // toto blazeface leaks two tensors per run\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.an
"mappings": "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
2020-10-15 14:16:34 +02:00
"names": []
}