123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { __awaiter, __extends, __generator } from "tslib";
- import * as tf from '@tensorflow/tfjs-core';
- import { toNetInput } from '../dom';
- import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';
- import { FaceProcessor } from '../faceProcessor/FaceProcessor';
- import { FaceExpressions } from './FaceExpressions';
- var FaceExpressionNet = /** @class */ (function (_super) {
- __extends(FaceExpressionNet, _super);
- function FaceExpressionNet(faceFeatureExtractor) {
- if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor(); }
- return _super.call(this, 'FaceExpressionNet', faceFeatureExtractor) || this;
- }
- FaceExpressionNet.prototype.forwardInput = function (input) {
- var _this = this;
- return tf.tidy(function () { return tf.softmax(_this.runNet(input)); });
- };
- FaceExpressionNet.prototype.forward = function (input) {
- return __awaiter(this, void 0, void 0, function () {
- var _a;
- return __generator(this, function (_b) {
- switch (_b.label) {
- case 0:
- _a = this.forwardInput;
- return [4 /*yield*/, toNetInput(input)];
- case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];
- }
- });
- });
- };
- FaceExpressionNet.prototype.predictExpressions = function (input) {
- return __awaiter(this, void 0, void 0, function () {
- var netInput, out, probabilitesByBatch, predictionsByBatch;
- var _this = this;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, toNetInput(input)];
- case 1:
- netInput = _a.sent();
- return [4 /*yield*/, this.forwardInput(netInput)];
- case 2:
- out = _a.sent();
- return [4 /*yield*/, Promise.all(tf.unstack(out).map(function (t) { return __awaiter(_this, void 0, void 0, function () {
- var data;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0: return [4 /*yield*/, t.data()];
- case 1:
- data = _a.sent();
- t.dispose();
- return [2 /*return*/, data];
- }
- });
- }); }))];
- case 3:
- probabilitesByBatch = _a.sent();
- out.dispose();
- predictionsByBatch = probabilitesByBatch
- .map(function (probabilites) { return new FaceExpressions(probabilites); });
- return [2 /*return*/, netInput.isBatchInput
- ? predictionsByBatch
- : predictionsByBatch[0]];
- }
- });
- });
- };
- FaceExpressionNet.prototype.getDefaultModelName = function () {
- return 'face_expression_model';
- };
- FaceExpressionNet.prototype.getClassifierChannelsIn = function () {
- return 256;
- };
- FaceExpressionNet.prototype.getClassifierChannelsOut = function () {
- return 7;
- };
- return FaceExpressionNet;
- }(FaceProcessor));
- export { FaceExpressionNet };
- //# sourceMappingURL=FaceExpressionNet.js.map
|