@webex/ladon-ts 4.3.0 → 4.4.0
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.
- package/CHANGELOG.md +12 -0
- package/build/module/lib/config.d.ts +19 -15
- package/build/module/lib/config.js +32 -12
- package/build/module/lib/generator.d.ts +19 -10
- package/build/module/lib/generator.js +84 -58
- package/build/module/lib/pipeline.d.ts +38 -6
- package/build/module/lib/pipeline.js +68 -22
- package/build/module/lib/renderer/blur-renderer.d.ts +2 -2
- package/build/module/lib/renderer/blur-renderer.js +24 -34
- package/build/module/lib/renderer/ladon-renderer.d.ts +2 -2
- package/build/module/lib/renderer/passthrough-renderer.d.ts +2 -2
- package/build/module/lib/renderer/passthrough-renderer.js +1 -1
- package/build/module/lib/renderer/replacement-renderer.d.ts +2 -2
- package/build/module/lib/renderer/replacement-renderer.js +20 -14
- package/build/module/lib/renderer/webgl-renderer.js +8 -6
- package/build/module/lib/util.d.ts +35 -3
- package/build/module/lib/util.js +141 -36
- package/build/module/lib/version.d.ts +1 -1
- package/build/module/lib/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [4.4.0](https://github.com/beyonddunbar/ladon-ts/compare/v4.3.0...v4.4.0) (2024-09-03)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* 0.7.7.1 model updates and mask edge fix ([#12](https://github.com/beyonddunbar/ladon-ts/issues/12)) ([00c5584](https://github.com/beyonddunbar/ladon-ts/commit/00c5584b6f2f86803ddb70027c010d2ef00f79db))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* lint ([e19d2de](https://github.com/beyonddunbar/ladon-ts/commit/e19d2de5146da979dcba82b659ab2802b9c8ea49))
|
|
16
|
+
|
|
5
17
|
## [4.3.0](https://github.com/beyonddunbar/ladon-ts/compare/v4.2.4...v4.3.0) (2024-03-25)
|
|
6
18
|
|
|
7
19
|
|
|
@@ -2,8 +2,22 @@ export declare const BASE_URL = "https://models.intelligence.webex.com/ladon";
|
|
|
2
2
|
export declare const LOCAL_BASE_URL = "https://localhost";
|
|
3
3
|
export declare const LOCAL_WORKER_URI = "/segmentation.js";
|
|
4
4
|
export declare const LOCAL_PORT = 1235;
|
|
5
|
-
export declare const MODEL_VERSION = "
|
|
5
|
+
export declare const MODEL_VERSION = "0.7.7.1";
|
|
6
6
|
export declare const WASM_URI = "/wasm/1.15.1b/";
|
|
7
|
+
export declare enum Quality {
|
|
8
|
+
TINY = "TINY",
|
|
9
|
+
LOW = "LOW",
|
|
10
|
+
MEDIUM = "MEDIUM",
|
|
11
|
+
HIGH = "HIGH",
|
|
12
|
+
ULTRA = "ULTRA"
|
|
13
|
+
}
|
|
14
|
+
export declare enum BlurStrength {
|
|
15
|
+
WEAK = "WEAK",
|
|
16
|
+
MODERATE = "MODERATE",
|
|
17
|
+
STRONG = "STRONG",
|
|
18
|
+
STRONGER = "STRONGER",
|
|
19
|
+
STRONGEST = "STRONGEST"
|
|
20
|
+
}
|
|
7
21
|
export declare type SizeConfig = {
|
|
8
22
|
readonly height: number;
|
|
9
23
|
readonly width: number;
|
|
@@ -34,10 +48,12 @@ export declare type BaseMaskConfig = {
|
|
|
34
48
|
readonly worker_uri: string;
|
|
35
49
|
readonly input_size?: SizeConfig;
|
|
36
50
|
readonly output_size?: SizeConfig;
|
|
51
|
+
readonly upscaled_size?: SizeConfig;
|
|
37
52
|
};
|
|
38
53
|
export declare type MaskConfig = BaseMaskConfig & {
|
|
39
54
|
readonly input_size: SizeConfig;
|
|
40
55
|
readonly output_size: SizeConfig;
|
|
56
|
+
readonly upscaled_size: SizeConfig;
|
|
41
57
|
};
|
|
42
58
|
export declare type PreloadConfig = {
|
|
43
59
|
readonly base_url?: string;
|
|
@@ -51,20 +67,6 @@ export declare type PipelineConfig = {
|
|
|
51
67
|
readonly input: InputConfig;
|
|
52
68
|
readonly mask: MaskConfig;
|
|
53
69
|
};
|
|
54
|
-
export declare enum Quality {
|
|
55
|
-
TINY = "TINY",
|
|
56
|
-
LOW = "LOW",
|
|
57
|
-
MEDIUM = "MEDIUM",
|
|
58
|
-
HIGH = "HIGH",
|
|
59
|
-
ULTRA = "ULTRA"
|
|
60
|
-
}
|
|
61
|
-
export declare enum BlurStrength {
|
|
62
|
-
WEAK = "WEAK",
|
|
63
|
-
MODERATE = "MODERATE",
|
|
64
|
-
STRONG = "STRONG",
|
|
65
|
-
STRONGER = "STRONGER",
|
|
66
|
-
STRONGEST = "STRONGEST"
|
|
67
|
-
}
|
|
68
70
|
export declare const getBlurConfig: (blur_strength: BlurStrength, horizontal_mirror?: boolean) => BlurConfig;
|
|
69
71
|
export declare const getPreloadConfig: (quality?: Quality, generator?: Generator, model_url_resolver?: ModelUrlResolver, base_url?: string, useLocalWorker?: boolean) => {
|
|
70
72
|
mask: {
|
|
@@ -76,6 +78,7 @@ export declare const getPreloadConfig: (quality?: Quality, generator?: Generator
|
|
|
76
78
|
worker_uri: string;
|
|
77
79
|
input_size?: SizeConfig | undefined;
|
|
78
80
|
output_size?: SizeConfig | undefined;
|
|
81
|
+
upscaled_size?: SizeConfig | undefined;
|
|
79
82
|
};
|
|
80
83
|
base_url?: string | undefined;
|
|
81
84
|
wasm_uri?: string | undefined;
|
|
@@ -89,6 +92,7 @@ export declare const getConfig: (height: number, width: number, quality?: Qualit
|
|
|
89
92
|
mask: {
|
|
90
93
|
input_size: SizeConfig;
|
|
91
94
|
output_size: SizeConfig;
|
|
95
|
+
upscaled_size: SizeConfig;
|
|
92
96
|
generator: Generator;
|
|
93
97
|
generation_interval_ms: number;
|
|
94
98
|
model_rank: number;
|
|
@@ -4,7 +4,7 @@ export const BASE_URL = 'https://models.intelligence.webex.com/ladon';
|
|
|
4
4
|
export const LOCAL_BASE_URL = 'https://localhost';
|
|
5
5
|
export const LOCAL_WORKER_URI = '/segmentation.js';
|
|
6
6
|
export const LOCAL_PORT = 1235;
|
|
7
|
-
export const MODEL_VERSION = '
|
|
7
|
+
export const MODEL_VERSION = '0.7.7.1';
|
|
8
8
|
export const WASM_URI = '/wasm/1.15.1b/';
|
|
9
9
|
export var Quality;
|
|
10
10
|
(function (Quality) {
|
|
@@ -68,12 +68,15 @@ export const getPreloadConfig = (quality = Quality.LOW, generator = 'local', mod
|
|
|
68
68
|
base_url,
|
|
69
69
|
wasm_uri: WASM_URI,
|
|
70
70
|
mask: {
|
|
71
|
-
generation_interval_ms: 48,
|
|
72
71
|
generator,
|
|
72
|
+
generation_interval_ms: 48,
|
|
73
|
+
model_uri: `/models/${model_version}/tiny-256x144-256x144.onnx`,
|
|
74
|
+
input_size: { height: 144, width: 256 },
|
|
75
|
+
output_size: { height: 144, width: 256 },
|
|
76
|
+
upscaled_size: { height: 360, width: 640 },
|
|
77
|
+
model_rank: 4,
|
|
73
78
|
model_url_resolver,
|
|
74
|
-
model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
|
|
75
79
|
worker_uri,
|
|
76
|
-
model_rank: 3,
|
|
77
80
|
},
|
|
78
81
|
};
|
|
79
82
|
let mask_quality_config = {};
|
|
@@ -81,34 +84,51 @@ export const getPreloadConfig = (quality = Quality.LOW, generator = 'local', mod
|
|
|
81
84
|
case Quality.TINY:
|
|
82
85
|
mask_quality_config = {
|
|
83
86
|
generation_interval_ms: 48,
|
|
84
|
-
model_uri: `/models/${model_version}/
|
|
87
|
+
model_uri: `/models/${model_version}/tiny-256x144-256x144.onnx`,
|
|
85
88
|
input_size: { height: 144, width: 256 },
|
|
86
|
-
output_size: { height:
|
|
89
|
+
output_size: { height: 144, width: 256 },
|
|
90
|
+
upscaled_size: { height: 360, width: 640 },
|
|
87
91
|
model_rank: 4,
|
|
88
92
|
};
|
|
89
93
|
break;
|
|
90
94
|
case Quality.LOW:
|
|
91
95
|
mask_quality_config = {
|
|
92
96
|
generation_interval_ms: 48,
|
|
93
|
-
model_uri: `/models/${model_version}/
|
|
97
|
+
model_uri: `/models/${model_version}/low-256x144-256x144.onnx`,
|
|
98
|
+
input_size: { height: 144, width: 256 },
|
|
99
|
+
output_size: { height: 144, width: 256 },
|
|
100
|
+
upscaled_size: { height: 360, width: 640 },
|
|
101
|
+
model_rank: 4,
|
|
94
102
|
};
|
|
95
103
|
break;
|
|
96
104
|
case Quality.MEDIUM:
|
|
97
105
|
mask_quality_config = {
|
|
98
106
|
generation_interval_ms: 24,
|
|
99
|
-
model_uri: `/models/${model_version}/
|
|
107
|
+
model_uri: `/models/${model_version}/medium-256x144-256x144.onnx`,
|
|
108
|
+
input_size: { height: 144, width: 256 },
|
|
109
|
+
output_size: { height: 144, width: 256 },
|
|
110
|
+
upscaled_size: { height: 360, width: 640 },
|
|
111
|
+
model_rank: 4,
|
|
100
112
|
};
|
|
101
113
|
break;
|
|
102
114
|
case Quality.HIGH:
|
|
103
115
|
mask_quality_config = {
|
|
104
116
|
generation_interval_ms: 36,
|
|
105
|
-
model_uri: `/models/${model_version}/
|
|
117
|
+
model_uri: `/models/${model_version}/medium-640x360-256x144.onnx`,
|
|
118
|
+
input_size: { height: 360, width: 640 },
|
|
119
|
+
output_size: { height: 360, width: 640 },
|
|
120
|
+
upscaled_size: { height: 360, width: 640 },
|
|
121
|
+
model_rank: 4,
|
|
106
122
|
};
|
|
107
123
|
break;
|
|
108
124
|
case Quality.ULTRA:
|
|
109
125
|
mask_quality_config = {
|
|
110
126
|
generation_interval_ms: 0,
|
|
111
|
-
model_uri: `/models/${model_version}/
|
|
127
|
+
model_uri: `/models/${model_version}/medium-640x360-256x144.onnx`,
|
|
128
|
+
input_size: { height: 360, width: 640 },
|
|
129
|
+
output_size: { height: 360, width: 640 },
|
|
130
|
+
upscaled_size: { height: 360, width: 640 },
|
|
131
|
+
model_rank: 4,
|
|
112
132
|
};
|
|
113
133
|
break;
|
|
114
134
|
default:
|
|
@@ -126,6 +146,6 @@ export const getConfig = (height, width, quality = Quality.LOW, generator = 'loc
|
|
|
126
146
|
const maskConfig = basePreloadConfig.mask;
|
|
127
147
|
return Object.assign(Object.assign({}, basePreloadConfig), { render: renderConfig, input: { height, width }, mask: Object.assign(Object.assign({}, maskConfig), {
|
|
128
148
|
// Need to ensure we don't override the tiny model's input and output sizes.
|
|
129
|
-
input_size: maskConfig.input_size || { height, width }, output_size: maskConfig.output_size || { height, width } }) });
|
|
149
|
+
input_size: maskConfig.input_size || { height, width }, output_size: maskConfig.output_size || { height, width }, upscaled_size: maskConfig.upscaled_size || { height, width } }) });
|
|
130
150
|
};
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyw2Q0FBNkMsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUM7QUFDbEQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUV6QyxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLHNCQUFXLENBQUE7SUFDWCw0QkFBaUIsQ0FBQTtJQUNqQix3QkFBYSxDQUFBO0lBQ2IsMEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUFFRCxNQUFNLENBQU4sSUFBWSxZQU1YO0FBTkQsV0FBWSxZQUFZO0lBQ3BCLDZCQUFhLENBQUE7SUFDYixxQ0FBcUIsQ0FBQTtJQUNyQixpQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBcUIsQ0FBQTtJQUNyQix1Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBTlcsWUFBWSxLQUFaLFlBQVksUUFNdkI7QUFrRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQ3pCLGFBQTJCLEVBQzNCLGlCQUEyQixFQUNqQixFQUFFO0lBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FB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
|
|
@@ -4,12 +4,19 @@ declare global {
|
|
|
4
4
|
url: string;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
export interface
|
|
7
|
+
export interface FacesAndLandmarks {
|
|
8
8
|
data: Float32Array;
|
|
9
|
+
dims: readonly number[];
|
|
10
|
+
}
|
|
11
|
+
export interface LadonOutput {
|
|
12
|
+
data: Float32Array;
|
|
13
|
+
facesAndLandmarks: FacesAndLandmarks;
|
|
14
|
+
gesture: Float32Array;
|
|
15
|
+
motion: number;
|
|
9
16
|
warm: boolean;
|
|
10
17
|
}
|
|
11
18
|
export interface MaskGenerator {
|
|
12
|
-
|
|
19
|
+
getLadonOutput(input: Uint8ClampedArray): Promise<LadonOutput>;
|
|
13
20
|
load(): Promise<void>;
|
|
14
21
|
isLoaded(): boolean;
|
|
15
22
|
postRender(input: Uint8ClampedArray): Promise<void>;
|
|
@@ -17,8 +24,9 @@ export interface MaskGenerator {
|
|
|
17
24
|
}
|
|
18
25
|
export declare class LocalGenerator implements MaskGenerator {
|
|
19
26
|
readonly config: PipelineConfig;
|
|
20
|
-
private
|
|
21
|
-
private
|
|
27
|
+
private lastResult;
|
|
28
|
+
private lastMask;
|
|
29
|
+
private maskModel?;
|
|
22
30
|
private last_mask_generation;
|
|
23
31
|
private output?;
|
|
24
32
|
constructor(config: PipelineConfig);
|
|
@@ -32,7 +40,7 @@ export declare class LocalGenerator implements MaskGenerator {
|
|
|
32
40
|
* @returns {Float32Array} - The processed data
|
|
33
41
|
*/
|
|
34
42
|
private preprocess;
|
|
35
|
-
|
|
43
|
+
getLadonOutput(input: Uint8ClampedArray): Promise<LadonOutput>;
|
|
36
44
|
load(): Promise<void>;
|
|
37
45
|
isLoaded(): boolean;
|
|
38
46
|
postRender(_: Uint8ClampedArray): Promise<void>;
|
|
@@ -40,9 +48,9 @@ export declare class LocalGenerator implements MaskGenerator {
|
|
|
40
48
|
}
|
|
41
49
|
export declare class NullGenerator implements MaskGenerator {
|
|
42
50
|
readonly config: PipelineConfig;
|
|
43
|
-
private
|
|
51
|
+
private lastMask;
|
|
44
52
|
constructor(config: PipelineConfig);
|
|
45
|
-
|
|
53
|
+
getLadonOutput(_: Uint8ClampedArray): Promise<LadonOutput>;
|
|
46
54
|
load(): Promise<void>;
|
|
47
55
|
isLoaded(): boolean;
|
|
48
56
|
postRender(_: Uint8ClampedArray): Promise<void>;
|
|
@@ -50,11 +58,12 @@ export declare class NullGenerator implements MaskGenerator {
|
|
|
50
58
|
}
|
|
51
59
|
export declare class WorkerGenerator implements MaskGenerator {
|
|
52
60
|
readonly config: PipelineConfig;
|
|
53
|
-
private
|
|
61
|
+
private lastMask;
|
|
62
|
+
private newMask;
|
|
54
63
|
private worker?;
|
|
55
|
-
private
|
|
64
|
+
private lastResult;
|
|
56
65
|
constructor(config: PipelineConfig);
|
|
57
|
-
|
|
66
|
+
getLadonOutput(_: Uint8ClampedArray): Promise<LadonOutput>;
|
|
58
67
|
load(): Promise<void>;
|
|
59
68
|
isLoaded(): boolean;
|
|
60
69
|
postRender(input: Uint8ClampedArray): Promise<void>;
|
|
@@ -13,7 +13,14 @@ export class LocalGenerator {
|
|
|
13
13
|
constructor(config) {
|
|
14
14
|
this.config = config;
|
|
15
15
|
this.last_mask_generation = 0;
|
|
16
|
-
this.
|
|
16
|
+
this.lastMask = new ort.Tensor('float32', new Float32Array(this.config.mask.output_size.height * this.config.mask.output_size.width), [1, 1, this.config.mask.output_size.height, this.config.mask.output_size.width]);
|
|
17
|
+
this.lastResult = {
|
|
18
|
+
data: this.lastMask.data,
|
|
19
|
+
facesAndLandmarks: { data: new Float32Array(0), dims: [] },
|
|
20
|
+
gesture: new Float32Array(0),
|
|
21
|
+
motion: 0,
|
|
22
|
+
warm: false,
|
|
23
|
+
};
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
26
|
* This method preprocesses an input Uint8ClampedArray to a Float32Array
|
|
@@ -25,14 +32,14 @@ export class LocalGenerator {
|
|
|
25
32
|
* @returns {Float32Array} - The processed data
|
|
26
33
|
*/
|
|
27
34
|
preprocess(input, alpha) {
|
|
35
|
+
var _a;
|
|
28
36
|
const { model_rank, input_size, output_size } = this.config.mask;
|
|
29
37
|
const { height, width } = input_size;
|
|
30
38
|
const numImagePixels = height * width;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
39
|
+
// Initialize the output buffer if it is not already set
|
|
40
|
+
(_a = this.output) !== null && _a !== void 0 ? _a : (this.output = new Float32Array(numImagePixels * model_rank));
|
|
34
41
|
// In-place modification of class-scoped output buffer
|
|
35
|
-
const channelFlipOffset =
|
|
42
|
+
const channelFlipOffset = 2;
|
|
36
43
|
const numInputPixels = input.length / 4;
|
|
37
44
|
// Loop over all color channels in the image
|
|
38
45
|
for (let channel = 0; channel < 3; channel++) {
|
|
@@ -44,63 +51,62 @@ export class LocalGenerator {
|
|
|
44
51
|
input[pixel * 4 + Math.abs(channelFlipOffset - channel)];
|
|
45
52
|
}
|
|
46
53
|
}
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.output[outputIdx] = normalizedValue;
|
|
64
|
-
}
|
|
54
|
+
// Scaling factors for width and height based on the ratio of output to input sizes
|
|
55
|
+
const widthScale = output_size.width / width;
|
|
56
|
+
const heightScale = output_size.height / height;
|
|
57
|
+
// Iterate over each pixel in the width of the input image
|
|
58
|
+
for (let x = 0; x < width; x++) {
|
|
59
|
+
const nearestNeighborX = Math.floor(x * widthScale);
|
|
60
|
+
// Iterate over each pixel in the height of the input image
|
|
61
|
+
for (let y = 0; y < height; y++) {
|
|
62
|
+
const nearestNeighborY = Math.floor(y * heightScale);
|
|
63
|
+
const maskIdx = nearestNeighborX + nearestNeighborY * output_size.width;
|
|
64
|
+
const outputIdx = x + y * width + 3 * numImagePixels;
|
|
65
|
+
// Normalize the alpha value to range between 0 and 1, and scale it to the range of 0-255
|
|
66
|
+
// This step is necessary because the rendering pipeline expects alpha values in the [0, 255] range
|
|
67
|
+
const normalizedValue = Math.min(Math.max(alpha[maskIdx], 0), 255);
|
|
68
|
+
// Assign the normalized value to the output at the computed index
|
|
69
|
+
this.output[outputIdx] = normalizedValue;
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
72
|
return this.output;
|
|
68
73
|
}
|
|
69
|
-
|
|
74
|
+
getLadonOutput(input) {
|
|
75
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
70
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
if (!this.
|
|
77
|
+
if (!this.maskModel) {
|
|
72
78
|
throw new Error('[ladon-ts] - mask model not loaded.');
|
|
73
79
|
}
|
|
74
80
|
const mask_generation_timeout = Date.now() - this.last_mask_generation > this.config.mask.generation_interval_ms;
|
|
75
81
|
if (!mask_generation_timeout) {
|
|
76
82
|
return {
|
|
77
|
-
data: this.
|
|
83
|
+
data: this.lastMask.data,
|
|
84
|
+
facesAndLandmarks: this.lastResult.facesAndLandmarks,
|
|
85
|
+
gesture: this.lastResult.gesture,
|
|
86
|
+
motion: this.lastResult.motion,
|
|
78
87
|
warm: false,
|
|
79
88
|
};
|
|
80
89
|
}
|
|
81
90
|
this.last_mask_generation = Date.now();
|
|
82
|
-
const
|
|
91
|
+
const imageTensor = new ort.Tensor('float32', this.preprocess(input, this.lastMask.data), [
|
|
83
92
|
1,
|
|
84
93
|
this.config.mask.model_rank,
|
|
85
94
|
this.config.mask.input_size.height,
|
|
86
95
|
this.config.mask.input_size.width,
|
|
87
96
|
]);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
this.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this.last_mask = results.output_mask;
|
|
99
|
-
}
|
|
100
|
-
return {
|
|
101
|
-
data: this.last_mask.data,
|
|
97
|
+
const results = yield this.maskModel.run({ input: imageTensor });
|
|
98
|
+
this.lastMask = results.segmentation;
|
|
99
|
+
this.lastResult = {
|
|
100
|
+
data: (_a = this.lastMask.data) !== null && _a !== void 0 ? _a : new Float32Array(0),
|
|
101
|
+
facesAndLandmarks: {
|
|
102
|
+
data: (_c = (_b = results.faces_and_landmarks) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : new Float32Array(0),
|
|
103
|
+
dims: (_e = (_d = results.faces_and_landmarks) === null || _d === void 0 ? void 0 : _d.dims) !== null && _e !== void 0 ? _e : [],
|
|
104
|
+
},
|
|
105
|
+
gesture: (_g = (_f = results.gesture) === null || _f === void 0 ? void 0 : _f.data) !== null && _g !== void 0 ? _g : new Float32Array(0),
|
|
106
|
+
motion: (_j = (_h = results.motion) === null || _h === void 0 ? void 0 : _h.data[0]) !== null && _j !== void 0 ? _j : 0,
|
|
102
107
|
warm: true,
|
|
103
108
|
};
|
|
109
|
+
return this.lastResult;
|
|
104
110
|
});
|
|
105
111
|
}
|
|
106
112
|
load() {
|
|
@@ -108,16 +114,16 @@ export class LocalGenerator {
|
|
|
108
114
|
return __awaiter(this, void 0, void 0, function* () {
|
|
109
115
|
const modelUrl = yield sharedResourceManager.getModelUrl(this.config);
|
|
110
116
|
// Attempt to retrieve a preloaded InferenceSession from the shared resource manager.
|
|
111
|
-
this.
|
|
117
|
+
this.maskModel = sharedResourceManager.getModelSession(modelUrl);
|
|
112
118
|
// If the model is not preloaded, load it from the provided model URL.
|
|
113
|
-
(_a = this.
|
|
114
|
-
if (!this.
|
|
119
|
+
(_a = this.maskModel) !== null && _a !== void 0 ? _a : (this.maskModel = yield sharedResourceManager.preloadModel(this.config));
|
|
120
|
+
if (!this.maskModel) {
|
|
115
121
|
throw new Error('Failed to load the ONNX model.');
|
|
116
122
|
}
|
|
117
123
|
});
|
|
118
124
|
}
|
|
119
125
|
isLoaded() {
|
|
120
|
-
return !!this.
|
|
126
|
+
return !!this.maskModel;
|
|
121
127
|
}
|
|
122
128
|
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
|
123
129
|
postRender(_) {
|
|
@@ -132,13 +138,16 @@ export class LocalGenerator {
|
|
|
132
138
|
export class NullGenerator {
|
|
133
139
|
constructor(config) {
|
|
134
140
|
this.config = config;
|
|
135
|
-
this.
|
|
141
|
+
this.lastMask = new Float32Array(this.config.mask.output_size.height * this.config.mask.output_size.width);
|
|
136
142
|
}
|
|
137
143
|
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
|
138
|
-
|
|
144
|
+
getLadonOutput(_) {
|
|
139
145
|
return __awaiter(this, void 0, void 0, function* () {
|
|
140
146
|
return {
|
|
141
|
-
data: this.
|
|
147
|
+
data: this.lastMask,
|
|
148
|
+
facesAndLandmarks: { data: new Float32Array(0), dims: [] },
|
|
149
|
+
gesture: new Float32Array(0),
|
|
150
|
+
motion: 0,
|
|
142
151
|
warm: false,
|
|
143
152
|
};
|
|
144
153
|
});
|
|
@@ -164,17 +173,27 @@ export class NullGenerator {
|
|
|
164
173
|
export class WorkerGenerator {
|
|
165
174
|
constructor(config) {
|
|
166
175
|
this.config = config;
|
|
167
|
-
this.
|
|
168
|
-
this.
|
|
176
|
+
this.newMask = true;
|
|
177
|
+
this.lastMask = new Float32Array(this.config.mask.output_size.height * this.config.mask.output_size.width);
|
|
178
|
+
this.lastResult = {
|
|
179
|
+
data: this.lastMask,
|
|
180
|
+
facesAndLandmarks: { data: new Float32Array(0), dims: [] },
|
|
181
|
+
gesture: new Float32Array(0),
|
|
182
|
+
motion: 0,
|
|
183
|
+
warm: false,
|
|
184
|
+
};
|
|
169
185
|
}
|
|
170
186
|
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
|
171
|
-
|
|
187
|
+
getLadonOutput(_) {
|
|
172
188
|
return __awaiter(this, void 0, void 0, function* () {
|
|
173
189
|
const toReturn = {
|
|
174
|
-
data: this.
|
|
175
|
-
|
|
190
|
+
data: this.lastMask,
|
|
191
|
+
facesAndLandmarks: this.lastResult.facesAndLandmarks,
|
|
192
|
+
gesture: this.lastResult.gesture,
|
|
193
|
+
motion: this.lastResult.motion,
|
|
194
|
+
warm: this.newMask,
|
|
176
195
|
};
|
|
177
|
-
this.
|
|
196
|
+
this.newMask = false;
|
|
178
197
|
return toReturn;
|
|
179
198
|
});
|
|
180
199
|
}
|
|
@@ -200,9 +219,16 @@ export class WorkerGenerator {
|
|
|
200
219
|
resolutionCb = resolve;
|
|
201
220
|
});
|
|
202
221
|
this.worker.onmessage = (event) => {
|
|
203
|
-
if (event.data.
|
|
204
|
-
this.
|
|
205
|
-
this.
|
|
222
|
+
if (event.data.status === 'generated') {
|
|
223
|
+
this.lastMask = event.data.mask;
|
|
224
|
+
this.lastResult = {
|
|
225
|
+
data: event.data.mask,
|
|
226
|
+
facesAndLandmarks: event.data.facesAndLandmarks,
|
|
227
|
+
gesture: event.data.gesture,
|
|
228
|
+
motion: event.data.motion,
|
|
229
|
+
warm: true,
|
|
230
|
+
};
|
|
231
|
+
this.newMask = true;
|
|
206
232
|
}
|
|
207
233
|
else {
|
|
208
234
|
const workerUrl = sharedResourceManager.getWorkerUrl();
|
|
@@ -234,4 +260,4 @@ export class WorkerGenerator {
|
|
|
234
260
|
sharedResourceManager.terminateWorker();
|
|
235
261
|
}
|
|
236
262
|
}
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUd2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQXFCbEUsTUFBTSxPQUFPLGNBQWM7SUFNdkIsWUFBNEIsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFIMUMseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBSTdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUMzQixTQUFTLEVBQ1QsSUFBSSxZQUFZLENBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUMzRSxFQUNELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FDbEYsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLFVBQVUsQ0FBQyxLQUF3QixFQUFFLEtBQW1CO1FBQzVELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJ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
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztBQUd2QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQTRCbEUsTUFBTSxPQUFPLGNBQWM7SUFPdkIsWUFBNEIsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFIMUMseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBSTdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUMxQixTQUFTLEVBQ1QsSUFBSSxZQUFZLENBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUMzRSxFQUNELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FDbEYsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ3hCLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDMUQsT0FBTyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksRUFBRSxLQUFLO1NBQ2QsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLFVBQVUs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
|
|
@@ -1,20 +1,52 @@
|
|
|
1
1
|
import { PipelineConfig } from './config';
|
|
2
|
+
import { FacesAndLandmarks } from './generator';
|
|
3
|
+
export interface IFrameInferenceResult {
|
|
4
|
+
facesAndLandmarks: FacesAndLandmarks;
|
|
5
|
+
gesture: Float32Array;
|
|
6
|
+
motion: number;
|
|
7
|
+
skipped: boolean;
|
|
8
|
+
timestamp: number;
|
|
9
|
+
}
|
|
2
10
|
export interface IPipeline {
|
|
3
|
-
onFrame(): Promise<
|
|
11
|
+
onFrame(timestamp: number, maskNeeded?: boolean): Promise<IFrameInferenceResult>;
|
|
4
12
|
isLoaded(): boolean;
|
|
5
13
|
load(): Promise<void>;
|
|
6
14
|
destroy(): void;
|
|
7
15
|
}
|
|
8
16
|
export declare class Pipeline implements IPipeline {
|
|
9
|
-
private
|
|
10
|
-
private
|
|
17
|
+
private inputCanvas;
|
|
18
|
+
private outputCanvas;
|
|
11
19
|
readonly config: PipelineConfig;
|
|
12
20
|
private generator?;
|
|
13
21
|
private renderer?;
|
|
14
22
|
private loaded;
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
private inputCanvasCtx;
|
|
24
|
+
private lastMaskResult?;
|
|
25
|
+
constructor(inputCanvas: HTMLCanvasElement, outputCanvas: HTMLCanvasElement, config: PipelineConfig);
|
|
26
|
+
/**
|
|
27
|
+
* Processes a single frame and returns the inference result.
|
|
28
|
+
*
|
|
29
|
+
* @param timestamp - The timestamp of the frame.
|
|
30
|
+
* @param [performInference=true] - Flag to perform mask inference.
|
|
31
|
+
* @returns The result of the frame processing.
|
|
32
|
+
* @throws If the pipeline (generator or renderer) is not loaded.
|
|
33
|
+
*/
|
|
34
|
+
onFrame(timestamp: number, performInference?: boolean): Promise<IFrameInferenceResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Resizes the image data if the model expects a fixed size input.
|
|
37
|
+
*
|
|
38
|
+
* @param {Uint8ClampedArray} rawImageData - The raw image data.
|
|
39
|
+
* @returns {Uint8ClampedArray} - The processed mask image data.
|
|
40
|
+
*/
|
|
41
|
+
private getMaskImageData;
|
|
42
|
+
/**
|
|
43
|
+
* Creates the inference result object.
|
|
44
|
+
*
|
|
45
|
+
* @param {number} timestamp - The timestamp of the frame.
|
|
46
|
+
* @param {boolean} performedInference - Indicates if the inference was performed.
|
|
47
|
+
* @returns {IFrameInferenceResult} - The result object containing inference details.
|
|
48
|
+
*/
|
|
49
|
+
private createInferenceResult;
|
|
18
50
|
isLoaded(): boolean;
|
|
19
51
|
load(): Promise<void>;
|
|
20
52
|
destroy(): void;
|