@webex/ladon-ts 4.0.0 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,202 +1,212 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import * as ort from 'onnxruntime-web';
11
- import { toAbsoluteURI } from './util';
12
- export class LocalGenerator {
13
- constructor(config) {
14
- this.config = config;
15
- this.last_mask_generation = 0;
16
- this.last_mask = new ort.Tensor('float32', new Float32Array(this.config.input.height * this.config.input.width), [1, 1, this.config.input.height, this.config.input.width]);
17
- }
18
- preprocess(input) {
19
- const output = new Float32Array(this.config.input.width * this.config.input.height * 3);
20
- for (let channel = 0; channel < 3; channel++) {
21
- for (let pixel = 0; pixel < input.length / 4; pixel++) {
22
- output[pixel +
23
- channel *
24
- this.config.input.width *
25
- this.config.input.height] = input[pixel * 4 + channel];
26
- }
27
- }
28
- return output;
29
- }
30
- getMask(input) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- if (!this.mask_model) {
33
- throw new Error('[ladon-ts] - mask model not loaded.');
34
- }
35
- const mask_generation_timeout = Date.now() - this.last_mask_generation >
36
- this.config.mask.generation_interval_ms;
37
- if (!mask_generation_timeout) {
38
- return {
39
- data: this.last_mask.data,
40
- warm: false,
41
- };
42
- }
43
- this.last_mask_generation = Date.now();
44
- const image_tns = new ort.Tensor('float32', this.preprocess(input), [
45
- 1,
46
- 3,
47
- this.config.input.height,
48
- this.config.input.width,
49
- ]);
50
- const feeds = {
51
- input_image: image_tns,
52
- prev_mask: this.last_mask,
53
- };
54
- const results = yield this.mask_model.run(feeds);
55
- this.last_mask = results['output_mask'];
56
- return {
57
- data: this.last_mask.data,
58
- warm: true,
59
- };
60
- });
61
- }
62
- load() {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- if (this.config.wasm_uri) {
65
- ort.env.wasm.wasmPaths = toAbsoluteURI(this.config.wasm_uri, this.config.base_url);
66
- }
67
- ort.env.wasm.numThreads = 1;
68
- let model_url;
69
- if (typeof this.config.mask.model_url_resolver === 'string') {
70
- model_url = this.config.mask.model_url_resolver;
71
- }
72
- else {
73
- model_url = yield this.config.mask.model_url_resolver(this.config.mask.model_uri);
74
- }
75
- this.mask_model = yield ort.InferenceSession.create(model_url, {
76
- executionProviders: ['wasm'],
77
- });
78
- });
79
- }
80
- isLoaded() {
81
- return !!this.mask_model;
82
- }
83
- /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
84
- postRender(_) {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- // empty for local generator
87
- });
88
- }
89
- destroy() {
90
- // empty for local generator
91
- }
92
- }
93
- export class NullGenerator {
94
- constructor(config) {
95
- this.config = config;
96
- this.last_mask = new Float32Array(this.config.input.height * this.config.input.width);
97
- }
98
- /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
99
- getMask(_) {
100
- return __awaiter(this, void 0, void 0, function* () {
101
- return {
102
- data: this.last_mask,
103
- warm: false,
104
- };
105
- });
106
- }
107
- load() {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- // empty for null generator
110
- });
111
- }
112
- isLoaded() {
113
- return true;
114
- }
115
- /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
116
- postRender(_) {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- // empty for null generator
119
- });
120
- }
121
- destroy() {
122
- // empty for null generator
123
- }
124
- }
125
- export class WorkerGenerator {
126
- constructor(config) {
127
- this.config = config;
128
- this.new_mask = true;
129
- this.last_mask = new Float32Array(this.config.input.height * this.config.input.width);
130
- }
131
- /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
132
- getMask(_) {
133
- return __awaiter(this, void 0, void 0, function* () {
134
- const toReturn = {
135
- data: this.last_mask,
136
- warm: this.new_mask,
137
- };
138
- this.new_mask = false;
139
- return toReturn;
140
- });
141
- }
142
- load() {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- const cross_origin_script_url = toAbsoluteURI(this.config.mask.worker_uri, this.config.base_url);
145
- const content = yield (yield fetch(cross_origin_script_url, { cache: 'force-cache' })).text();
146
- const worker_url = URL.createObjectURL(new Blob([content], { type: 'text/javascript' }));
147
- this.worker = new Worker(worker_url, { type: 'module' });
148
- let model_url;
149
- if (typeof this.config.mask.model_url_resolver === 'string') {
150
- model_url = this.config.mask.model_url_resolver;
151
- }
152
- else {
153
- model_url = yield this.config.mask.model_url_resolver(this.config.mask.model_uri);
154
- }
155
- const worker_config = {
156
- base_url: this.config.base_url,
157
- input: this.config.input,
158
- mask: Object.assign(Object.assign({}, this.config.mask), { model_url_resolver: model_url }),
159
- wasm_uri: this.config.wasm_uri,
160
- render: { type: 'passthrough' },
161
- };
162
- this.worker.postMessage(worker_config);
163
- let resolution_cb;
164
- /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
165
- const result = new Promise((resolve, _) => {
166
- resolution_cb = resolve;
167
- });
168
- this.worker.onmessage = (event) => {
169
- if (event.data.mask) {
170
- this.last_mask = event.data.mask;
171
- this.new_mask = true;
172
- }
173
- else {
174
- URL.revokeObjectURL(worker_url);
175
- if (resolution_cb) {
176
- resolution_cb();
177
- }
178
- }
179
- };
180
- return result;
181
- });
182
- }
183
- isLoaded() {
184
- return !!this.worker;
185
- }
186
- postRender(input) {
187
- return __awaiter(this, void 0, void 0, function* () {
188
- // claim ownership of the input tensor's buffer and forward to worker
189
- if (!this.worker) {
190
- throw new Error('[ladon-ts] - worker is not defined.');
191
- }
192
- this.worker.postMessage({
193
- image: input,
194
- }, [input.buffer]);
195
- });
196
- }
197
- destroy() {
198
- var _a;
199
- (_a = this.worker) === null || _a === void 0 ? void 0 : _a.terminate();
200
- }
201
- }
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBcUJ2QyxNQUFNLE9BQU8sY0FBYztJQUt2QixZQUE0QixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUYxQyx5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFHN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQzNCLFNBQVMsRUFDVCxJQUFJLFlBQVksQ0FDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUNyRCxFQUNELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQzVELENBQUM7SUFDTixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQXdCO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDekQsQ0FBQztRQUVGLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDMUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNuRCxNQUFNLENBQ0YsS0FBSztvQkFDRCxPQUFPO3dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUs7d0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDbkMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQzthQUNsQztTQUNKO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVZLE9BQU8sQ0FBQyxLQUF3Qjs7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQzthQUMxRDtZQUVELE1BQU0sdUJBQXVCLEdBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CO2dCQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUM1QyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7Z0JBQzFCLE9BQU87b0JBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTtvQkFDekIsSUFBSSxFQUFFLEtBQUs7aUJBQ2QsQ0FBQzthQUNMO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUV2QyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hFLENBQUM7Z0JBQ0QsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO2FBQzFCLENBQUMsQ0FBQztZQUVILE1BQU0sS0FBSyxHQUFHO2dCQUNWLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7YUFDNUIsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEMsT0FBTztnQkFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJO2dCQUN6QixJQUFJLEVBQUUsSUFBSTthQUNiLENBQUM7UUFDTixDQUFDO0tBQUE7SUFFWSxJQUFJOztZQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQzthQUNMO1lBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUU1QixJQUFJLFNBQWlCLENBQUM7WUFDdEIsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLFFBQVEsRUFBRTtnQkFDekQsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2FBQ25EO2lCQUFNO2dCQUNILFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQzdCLENBQUM7YUFDTDtZQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDM0Qsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRU0sUUFBUTtRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELGdFQUFnRTtJQUNuRCxVQUFVLENBQUMsQ0FBb0I7O1lBQ3hDLDRCQUE0QjtRQUNoQyxDQUFDO0tBQUE7SUFFTSxPQUFPO1FBQ1YsNEJBQTRCO0lBQ2hDLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxhQUFhO0lBR3RCLFlBQTRCLE1BQXNCO1FBQXRCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFZLENBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQ3JELENBQUM7SUFDTixDQUFDO0lBRUQsZ0VBQWdFO0lBQ25ELE9BQU8sQ0FBQyxDQUFvQjs7WUFDckMsT0FBTztnQkFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3BCLElBQUksRUFBRSxLQUFLO2FBQ2QsQ0FBQztRQUNOLENBQUM7S0FBQTtJQUVZLElBQUk7O1lBQ2IsMkJBQTJCO1FBQy9CLENBQUM7S0FBQTtJQUVNLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsZ0VBQWdFO0lBQ25ELFVBQVUsQ0FBQyxDQUFvQjs7WUFDeEMsMkJBQTJCO1FBQy9CLENBQUM7S0FBQTtJQUVNLE9BQU87UUFDViwyQkFBMkI7SUFDL0IsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFNeEIsWUFBNEIsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFGMUMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksWUFBWSxDQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUNyRCxDQUFDO0lBQ04sQ0FBQztJQUVELGdFQUFnRTtJQUNuRCxPQUFPLENBQUMsQ0FBb0I7O1lBQ3JDLE1BQU0sUUFBUSxHQUFHO2dCQUNiLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3RCLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUV0QixPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO0tBQUE7SUFFWSxJQUFJOztZQUNiLE1BQU0sdUJBQXVCLEdBQUcsYUFBYSxDQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUN2QixDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUNsQixNQUFNLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUNqRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FDbEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQ25ELENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBRXpELElBQUksU0FBaUIsQ0FBQztZQUN0QixJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFO2dCQUN6RCxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7YUFDbkQ7aUJBQU07Z0JBQ0gsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDN0IsQ0FBQzthQUNMO1lBRUQsTUFBTSxhQUFhLEdBQW1CO2dCQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN4QixJQUFJLGtDQUNHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUNuQixrQkFBa0IsRUFBRSxTQUFTLEdBQ2hDO2dCQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQzlCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7YUFDbEMsQ0FBQztZQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXZDLElBQUksYUFBeUIsQ0FBQztZQUM5QixnRUFBZ0U7WUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLGFBQWEsR0FBRyxPQUFPLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztpQkFDeEI7cUJBQU07b0JBQ0gsR0FBRyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFFaEMsSUFBSSxhQUFhLEVBQUU7d0JBQ2YsYUFBYSxFQUFFLENBQUM7cUJBQ25CO2lCQUNKO1lBQ0wsQ0FBQyxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUFBO0lBRU0sUUFBUTtRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVZLFVBQVUsQ0FBQyxLQUF3Qjs7WUFDNUMscUVBQXFFO1lBRXJFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQzthQUMxRDtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUNuQjtnQkFDSSxLQUFLLEVBQUUsS0FBSzthQUNmLEVBQ0QsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQ2pCLENBQUM7UUFDTixDQUFDO0tBQUE7SUFFTSxPQUFPOztRQUNWLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNKIn0=
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import * as ort from 'onnxruntime-web';
11
+ import { toAbsoluteURI } from './util';
12
+ export class LocalGenerator {
13
+ constructor(config) {
14
+ this.config = config;
15
+ this.last_mask_generation = 0;
16
+ this.last_mask = new ort.Tensor('float32', new Float32Array(this.config.input.height * this.config.input.width), [1, 1, this.config.input.height, this.config.input.width]);
17
+ }
18
+ preprocess(input) {
19
+ const { model_rank, input_size } = this.config.mask;
20
+ const { height, width } = input_size;
21
+ const offset = model_rank === 4 ? 2 : -0;
22
+ const output = new Float32Array(height * width * model_rank);
23
+ for (let channel = 0; channel < 3; channel++) {
24
+ for (let pixel = 0; pixel < input.length / 4; pixel++) {
25
+ output[pixel + channel * width * height] =
26
+ // Flip RBG to BGR if using new model.
27
+ input[pixel * 4 + Math.abs(offset - channel)];
28
+ }
29
+ }
30
+ return output;
31
+ }
32
+ getMask(input) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ if (!this.mask_model) {
35
+ throw new Error('[ladon-ts] - mask model not loaded.');
36
+ }
37
+ const mask_generation_timeout = Date.now() - this.last_mask_generation >
38
+ this.config.mask.generation_interval_ms;
39
+ if (!mask_generation_timeout) {
40
+ return {
41
+ data: this.last_mask.data,
42
+ warm: false,
43
+ };
44
+ }
45
+ this.last_mask_generation = Date.now();
46
+ const image_tns = new ort.Tensor('float32', this.preprocess(input), [
47
+ 1,
48
+ this.config.mask.model_rank,
49
+ this.config.mask.input_size.height,
50
+ this.config.mask.input_size.width,
51
+ ]);
52
+ if (this.config.mask.model_rank === 4) {
53
+ // This feed uses the new model input params for the tiny model.
54
+ const results = yield this.mask_model.run({
55
+ input: image_tns,
56
+ });
57
+ this.last_mask = results.segmentation;
58
+ }
59
+ else {
60
+ const results = yield this.mask_model.run({
61
+ input_image: image_tns,
62
+ prev_mask: this.last_mask,
63
+ });
64
+ this.last_mask = results.output_mask;
65
+ }
66
+ return {
67
+ data: this.last_mask.data,
68
+ warm: true,
69
+ };
70
+ });
71
+ }
72
+ load() {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ if (this.config.wasm_uri) {
75
+ ort.env.wasm.wasmPaths = toAbsoluteURI(this.config.wasm_uri, this.config.base_url);
76
+ }
77
+ ort.env.wasm.numThreads = 1;
78
+ let model_url;
79
+ if (typeof this.config.mask.model_url_resolver === 'string') {
80
+ model_url = this.config.mask.model_url_resolver;
81
+ }
82
+ else {
83
+ model_url = yield this.config.mask.model_url_resolver(this.config.mask.model_uri);
84
+ }
85
+ this.mask_model = yield ort.InferenceSession.create(model_url, {
86
+ executionProviders: ['wasm'],
87
+ });
88
+ });
89
+ }
90
+ isLoaded() {
91
+ return !!this.mask_model;
92
+ }
93
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
94
+ postRender(_) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ // empty for local generator
97
+ });
98
+ }
99
+ destroy() {
100
+ // empty for local generator
101
+ }
102
+ }
103
+ export class NullGenerator {
104
+ constructor(config) {
105
+ this.config = config;
106
+ this.last_mask = new Float32Array(this.config.input.height * this.config.input.width);
107
+ }
108
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
109
+ getMask(_) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ return {
112
+ data: this.last_mask,
113
+ warm: false,
114
+ };
115
+ });
116
+ }
117
+ load() {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ // empty for null generator
120
+ });
121
+ }
122
+ isLoaded() {
123
+ return true;
124
+ }
125
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
126
+ postRender(_) {
127
+ return __awaiter(this, void 0, void 0, function* () {
128
+ // empty for null generator
129
+ });
130
+ }
131
+ destroy() {
132
+ // empty for null generator
133
+ }
134
+ }
135
+ export class WorkerGenerator {
136
+ constructor(config) {
137
+ this.config = config;
138
+ this.new_mask = true;
139
+ this.last_mask = new Float32Array(this.config.input.height * this.config.input.width);
140
+ }
141
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
142
+ getMask(_) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ const toReturn = {
145
+ data: this.last_mask,
146
+ warm: this.new_mask,
147
+ };
148
+ this.new_mask = false;
149
+ return toReturn;
150
+ });
151
+ }
152
+ load() {
153
+ return __awaiter(this, void 0, void 0, function* () {
154
+ const cross_origin_script_url = toAbsoluteURI(this.config.mask.worker_uri, this.config.base_url);
155
+ const content = yield (yield fetch(cross_origin_script_url, { cache: 'force-cache' })).text();
156
+ const worker_url = URL.createObjectURL(new Blob([content], { type: 'text/javascript' }));
157
+ this.worker = new Worker(worker_url, { type: 'module' });
158
+ let model_url;
159
+ if (typeof this.config.mask.model_url_resolver === 'string') {
160
+ model_url = this.config.mask.model_url_resolver;
161
+ }
162
+ else {
163
+ model_url = yield this.config.mask.model_url_resolver(this.config.mask.model_uri);
164
+ }
165
+ const worker_config = {
166
+ base_url: this.config.base_url,
167
+ input: this.config.input,
168
+ mask: Object.assign(Object.assign({}, this.config.mask), { model_url_resolver: model_url }),
169
+ wasm_uri: this.config.wasm_uri,
170
+ render: { type: 'passthrough' },
171
+ };
172
+ this.worker.postMessage(worker_config);
173
+ let resolution_cb;
174
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
175
+ const result = new Promise((resolve, _) => {
176
+ resolution_cb = resolve;
177
+ });
178
+ this.worker.onmessage = (event) => {
179
+ if (event.data.mask) {
180
+ this.last_mask = event.data.mask;
181
+ this.new_mask = true;
182
+ }
183
+ else {
184
+ URL.revokeObjectURL(worker_url);
185
+ if (resolution_cb) {
186
+ resolution_cb();
187
+ }
188
+ }
189
+ };
190
+ return result;
191
+ });
192
+ }
193
+ isLoaded() {
194
+ return !!this.worker;
195
+ }
196
+ postRender(input) {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ // claim ownership of the input tensor's buffer and forward to worker
199
+ if (!this.worker) {
200
+ throw new Error('[ladon-ts] - worker is not defined.');
201
+ }
202
+ this.worker.postMessage({
203
+ image: input,
204
+ }, [input.buffer]);
205
+ });
206
+ }
207
+ destroy() {
208
+ var _a;
209
+ (_a = this.worker) === null || _a === void 0 ? void 0 : _a.terminate();
210
+ }
211
+ }
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUd2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBcUJ2QyxNQUFNLE9BQU8sY0FBYztJQUt2QixZQUE0QixNQUFzQjtRQUF0QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUYxQyx5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFHN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQzNCLFNBQVMsRUFDVCxJQUFJLFlBQVksQ0FDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUNyRCxFQUNELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQzVELENBQUM7SUFDTixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQXdCO1FBQ3ZDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDcEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBRTdELEtBQUss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
@@ -1,21 +1,21 @@
1
- import { PipelineConfig } from './config';
2
- export interface IPipeline {
3
- onFrame(): Promise<void>;
4
- isLoaded(): boolean;
5
- load(): Promise<void>;
6
- destroy(): void;
7
- }
8
- export declare class Pipeline implements IPipeline {
9
- private input_canvas;
10
- private output_canvas;
11
- readonly config: PipelineConfig;
12
- private generator?;
13
- private renderer?;
14
- private loaded;
15
- private input_ctx;
16
- constructor(input_canvas: HTMLCanvasElement, output_canvas: HTMLCanvasElement, config: PipelineConfig);
17
- onFrame(): Promise<void>;
18
- isLoaded(): boolean;
19
- load(): Promise<void>;
20
- destroy(): void;
21
- }
1
+ import { PipelineConfig } from './config';
2
+ export interface IPipeline {
3
+ onFrame(): Promise<void>;
4
+ isLoaded(): boolean;
5
+ load(): Promise<void>;
6
+ destroy(): void;
7
+ }
8
+ export declare class Pipeline implements IPipeline {
9
+ private input_canvas;
10
+ private output_canvas;
11
+ readonly config: PipelineConfig;
12
+ private generator?;
13
+ private renderer?;
14
+ private loaded;
15
+ private input_ctx;
16
+ constructor(input_canvas: HTMLCanvasElement, output_canvas: HTMLCanvasElement, config: PipelineConfig);
17
+ onFrame(): Promise<void>;
18
+ isLoaded(): boolean;
19
+ load(): Promise<void>;
20
+ destroy(): void;
21
+ }