PredictFaceExpressionsTask.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { __awaiter, __extends, __generator } from "tslib";
  2. import { extendWithFaceExpressions } from '../factories/WithFaceExpressions';
  3. import { ComposableTask } from './ComposableTask';
  4. import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
  5. import { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';
  6. import { nets } from './nets';
  7. import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask, } from './PredictAgeAndGenderTask';
  8. var PredictFaceExpressionsTaskBase = /** @class */ (function (_super) {
  9. __extends(PredictFaceExpressionsTaskBase, _super);
  10. function PredictFaceExpressionsTaskBase(parentTask, input, extractedFaces) {
  11. var _this = _super.call(this) || this;
  12. _this.parentTask = parentTask;
  13. _this.input = input;
  14. _this.extractedFaces = extractedFaces;
  15. return _this;
  16. }
  17. return PredictFaceExpressionsTaskBase;
  18. }(ComposableTask));
  19. export { PredictFaceExpressionsTaskBase };
  20. var PredictAllFaceExpressionsTask = /** @class */ (function (_super) {
  21. __extends(PredictAllFaceExpressionsTask, _super);
  22. function PredictAllFaceExpressionsTask() {
  23. return _super !== null && _super.apply(this, arguments) || this;
  24. }
  25. PredictAllFaceExpressionsTask.prototype.run = function () {
  26. return __awaiter(this, void 0, void 0, function () {
  27. var parentResults, faceExpressionsByFace;
  28. var _this = this;
  29. return __generator(this, function (_a) {
  30. switch (_a.label) {
  31. case 0: return [4 /*yield*/, this.parentTask];
  32. case 1:
  33. parentResults = _a.sent();
  34. return [4 /*yield*/, extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return __awaiter(_this, void 0, void 0, function () {
  35. return __generator(this, function (_a) {
  36. switch (_a.label) {
  37. case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets.faceExpressionNet.predictExpressions(face); }))];
  38. case 1: return [2 /*return*/, _a.sent()];
  39. }
  40. });
  41. }); }, this.extractedFaces)];
  42. case 2:
  43. faceExpressionsByFace = _a.sent();
  44. return [2 /*return*/, parentResults.map(function (parentResult, i) { return extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]); })];
  45. }
  46. });
  47. });
  48. };
  49. PredictAllFaceExpressionsTask.prototype.withAgeAndGender = function () {
  50. return new PredictAllAgeAndGenderTask(this, this.input);
  51. };
  52. return PredictAllFaceExpressionsTask;
  53. }(PredictFaceExpressionsTaskBase));
  54. export { PredictAllFaceExpressionsTask };
  55. var PredictSingleFaceExpressionsTask = /** @class */ (function (_super) {
  56. __extends(PredictSingleFaceExpressionsTask, _super);
  57. function PredictSingleFaceExpressionsTask() {
  58. return _super !== null && _super.apply(this, arguments) || this;
  59. }
  60. PredictSingleFaceExpressionsTask.prototype.run = function () {
  61. return __awaiter(this, void 0, void 0, function () {
  62. var parentResult, faceExpressions;
  63. return __generator(this, function (_a) {
  64. switch (_a.label) {
  65. case 0: return [4 /*yield*/, this.parentTask];
  66. case 1:
  67. parentResult = _a.sent();
  68. if (!parentResult) {
  69. return [2 /*return*/];
  70. }
  71. return [4 /*yield*/, extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets.faceExpressionNet.predictExpressions(face); }, this.extractedFaces)];
  72. case 2:
  73. faceExpressions = _a.sent();
  74. return [2 /*return*/, extendWithFaceExpressions(parentResult, faceExpressions)];
  75. }
  76. });
  77. });
  78. };
  79. PredictSingleFaceExpressionsTask.prototype.withAgeAndGender = function () {
  80. return new PredictSingleAgeAndGenderTask(this, this.input);
  81. };
  82. return PredictSingleFaceExpressionsTask;
  83. }(PredictFaceExpressionsTaskBase));
  84. export { PredictSingleFaceExpressionsTask };
  85. var PredictAllFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) {
  86. __extends(PredictAllFaceExpressionsWithFaceAlignmentTask, _super);
  87. function PredictAllFaceExpressionsWithFaceAlignmentTask() {
  88. return _super !== null && _super.apply(this, arguments) || this;
  89. }
  90. PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () {
  91. return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);
  92. };
  93. PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptors = function () {
  94. return new ComputeAllFaceDescriptorsTask(this, this.input);
  95. };
  96. return PredictAllFaceExpressionsWithFaceAlignmentTask;
  97. }(PredictAllFaceExpressionsTask));
  98. export { PredictAllFaceExpressionsWithFaceAlignmentTask };
  99. var PredictSingleFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) {
  100. __extends(PredictSingleFaceExpressionsWithFaceAlignmentTask, _super);
  101. function PredictSingleFaceExpressionsWithFaceAlignmentTask() {
  102. return _super !== null && _super.apply(this, arguments) || this;
  103. }
  104. PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () {
  105. return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);
  106. };
  107. PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptor = function () {
  108. return new ComputeSingleFaceDescriptorTask(this, this.input);
  109. };
  110. return PredictSingleFaceExpressionsWithFaceAlignmentTask;
  111. }(PredictSingleFaceExpressionsTask));
  112. export { PredictSingleFaceExpressionsWithFaceAlignmentTask };
  113. //# sourceMappingURL=PredictFaceExpressionsTask.js.map