extractFacesAndComputeResults.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var tslib_1 = require("tslib");
  4. var tf = require("@tensorflow/tfjs-core");
  5. var dom_1 = require("../dom");
  6. var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks");
  7. function extractAllFacesAndComputeResults(parentResults, input, computeResults, extractedFaces, getRectForAlignment) {
  8. if (getRectForAlignment === void 0) { getRectForAlignment = function (_a) {
  9. var alignedRect = _a.alignedRect;
  10. return alignedRect;
  11. }; }
  12. return tslib_1.__awaiter(this, void 0, void 0, function () {
  13. var faceBoxes, faces, _a, _b, results;
  14. return tslib_1.__generator(this, function (_c) {
  15. switch (_c.label) {
  16. case 0:
  17. faceBoxes = parentResults.map(function (parentResult) {
  18. return WithFaceLandmarks_1.isWithFaceLandmarks(parentResult)
  19. ? getRectForAlignment(parentResult)
  20. : parentResult.detection;
  21. });
  22. _a = extractedFaces;
  23. if (_a) return [3 /*break*/, 5];
  24. if (!(input instanceof tf.Tensor)) return [3 /*break*/, 2];
  25. return [4 /*yield*/, dom_1.extractFaceTensors(input, faceBoxes)];
  26. case 1:
  27. _b = _c.sent();
  28. return [3 /*break*/, 4];
  29. case 2: return [4 /*yield*/, dom_1.extractFaces(input, faceBoxes)];
  30. case 3:
  31. _b = _c.sent();
  32. _c.label = 4;
  33. case 4:
  34. _a = (_b);
  35. _c.label = 5;
  36. case 5:
  37. faces = _a;
  38. return [4 /*yield*/, computeResults(faces)];
  39. case 6:
  40. results = _c.sent();
  41. faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); });
  42. return [2 /*return*/, results];
  43. }
  44. });
  45. });
  46. }
  47. exports.extractAllFacesAndComputeResults = extractAllFacesAndComputeResults;
  48. function extractSingleFaceAndComputeResult(parentResult, input, computeResult, extractedFaces, getRectForAlignment) {
  49. return tslib_1.__awaiter(this, void 0, void 0, function () {
  50. var _this = this;
  51. return tslib_1.__generator(this, function (_a) {
  52. return [2 /*return*/, extractAllFacesAndComputeResults([parentResult], input, function (faces) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
  53. return [2 /*return*/, computeResult(faces[0])];
  54. }); }); }, extractedFaces, getRectForAlignment)];
  55. });
  56. });
  57. }
  58. exports.extractSingleFaceAndComputeResult = extractSingleFaceAndComputeResult;
  59. //# sourceMappingURL=extractFacesAndComputeResults.js.map