@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.
package/CHANGELOG.md CHANGED
@@ -2,13 +2,36 @@
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.0.0](https://github.com/beyonddunbar/ladon-ts/compare/v2.8.0...v4.0.0) (2023-02-11)
5
+ ### [4.1.2](https://github.com/beyonddunbar/ladon-ts/compare/v4.1.1...v4.1.2) (2023-07-20)
6
6
 
7
+ ### [4.1.1](https://github.com/beyonddunbar/ladon-ts/compare/v4.1.0...v4.1.1) (2023-07-19)
7
8
 
8
- ### ⚠ BREAKING CHANGES
9
9
 
10
- * getConfig accepts model_url_resolver (#1)
10
+ ### Bug Fixes
11
+
12
+ * lint ([4a42f88](https://github.com/beyonddunbar/ladon-ts/commit/4a42f882e74029569facf31e72ea2a78869ede95))
13
+ * version injection script (windows support) ([2316d1a](https://github.com/beyonddunbar/ladon-ts/commit/2316d1aaff3519e769389d31d86b7725b34dda35))
14
+
15
+ ## [4.1.0](https://github.com/beyonddunbar/ladon-ts/compare/v4.0.0...v4.1.0) (2023-07-19)
16
+
11
17
 
12
18
  ### Features
13
19
 
14
- * getConfig accepts model_url_resolver ([#1](https://github.com/beyonddunbar/ladon-ts/issues/1)) ([a2699d6](https://github.com/beyonddunbar/ladon-ts/commit/a2699d67bd4d3efd8b1261ec5379d83554b90b6f))
20
+ * initial implementation of the tiny model ([#4](https://github.com/beyonddunbar/ladon-ts/issues/4)) ([553d793](https://github.com/beyonddunbar/ladon-ts/commit/553d79361f9ba133b92fa7dcc62da61ec2d783a7))
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * lint, generate_relase for windows ([5ad039b](https://github.com/beyonddunbar/ladon-ts/commit/5ad039b060ce7a8e5b8bf169f50e4710156587a9))
26
+ * rename main file in package json ([#3](https://github.com/beyonddunbar/ladon-ts/issues/3)) ([d97d15f](https://github.com/beyonddunbar/ladon-ts/commit/d97d15f8a8be99901bcbb764fe1b6ca97bce5123))
27
+
28
+ ## [4.0.0](https://github.com/beyonddunbar/ladon-ts/compare/v2.8.0...v4.0.0) (2023-02-11)
29
+
30
+
31
+ ### ⚠ BREAKING CHANGES
32
+
33
+ * getConfig accepts model_url_resolver (#1)
34
+
35
+ ### Features
36
+
37
+ * getConfig accepts model_url_resolver ([#1](https://github.com/beyonddunbar/ladon-ts/issues/1)) ([a2699d6](https://github.com/beyonddunbar/ladon-ts/commit/a2699d67bd4d3efd8b1261ec5379d83554b90b6f))
package/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
- * Coded instructions, statements, and computer programs are the
2
- * copyrighted works and confidential proprietary information of Cisco, Inc.
3
- * They may not be modified, copied, reproduced, distributed, or disclosed to
4
- * third parties in any manner, medium, or form, in whole or in part, without
5
- * the prior written consent of Cisco, Inc.
1
+ * Coded instructions, statements, and computer programs are the
2
+ * copyrighted works and confidential proprietary information of Cisco, Inc.
3
+ * They may not be modified, copied, reproduced, distributed, or disclosed to
4
+ * third parties in any manner, medium, or form, in whole or in part, without
5
+ * the prior written consent of Cisco, Inc.
package/README.md CHANGED
@@ -1,36 +1,36 @@
1
- # Collaboration Video AI Client Library for Web
2
-
3
- ## Description
4
-
5
- The Video AI Client Library for Web is designed for TypeScript client-application developers. It offers simple, flexible, and powerful APIs for video AI.
6
-
7
- ## Features
8
-
9
- ### ML Annotations
10
-
11
- - Person segmentation
12
-
13
- ### Rendering Effects
14
-
15
- - Horizontal flip
16
- - Variable strength, high quality background blur
17
- - Static image background replacement
18
- - Dynamic video background replacement
19
-
20
- ### Input/Output
21
-
22
- The library supports a HTML canvas input and output interface.
23
-
24
-
25
- # Documentation
26
-
27
- - [Getting Started](docs/START.md)
28
- - [Self-Hosting](docs/HOSTING.md)
29
- - [Content Security Policy](docs/CSP.md)
30
- - [Development](docs/DEVELOPMENT.md)
31
-
32
- ## Links
33
-
34
- - [Live Example](https://models.intelligence.webex.com/ladon/3.0.2/example/index.html)
35
- - [Performance and Visual Tests](https://models.intelligence.webex.com/ladon/3.0.2/test/index.html)
36
- - [Typedocs](https://sqbu-github.cisco.com/pages/WebexIntelligence/ladon-ts/)
1
+ # Collaboration Video AI Client Library for Web
2
+
3
+ ## Description
4
+
5
+ The Video AI Client Library for Web is designed for TypeScript client-application developers. It offers simple, flexible, and powerful APIs for video AI.
6
+
7
+ ## Features
8
+
9
+ ### ML Annotations
10
+
11
+ - Person segmentation
12
+
13
+ ### Rendering Effects
14
+
15
+ - Horizontal flip
16
+ - Variable strength, high quality background blur
17
+ - Static image background replacement
18
+ - Dynamic video background replacement
19
+
20
+ ### Input/Output
21
+
22
+ The library supports a HTML canvas input and output interface.
23
+
24
+
25
+ # Documentation
26
+
27
+ - [Getting Started](docs/START.md)
28
+ - [Self-Hosting](docs/HOSTING.md)
29
+ - [Content Security Policy](docs/CSP.md)
30
+ - [Development](docs/DEVELOPMENT.md)
31
+
32
+ ## Links
33
+
34
+ - [Live Example](https://models.intelligence.webex.com/ladon/3.0.2/example/index.html)
35
+ - [Performance and Visual Tests](https://models.intelligence.webex.com/ladon/3.0.2/test/index.html)
36
+ - [Typedocs](https://sqbu-github.cisco.com/pages/WebexIntelligence/ladon-ts/)
@@ -1,6 +1,6 @@
1
- export * from './lib/config';
2
- export * from './lib/generator';
3
- export * from './lib/pipeline';
4
- export * from './lib/renderer';
5
- export * from './lib/util';
6
- export * from './lib/version';
1
+ export * from './lib/config';
2
+ export * from './lib/generator';
3
+ export * from './lib/pipeline';
4
+ export * from './lib/renderer';
5
+ export * from './lib/util';
6
+ export * from './lib/version';
@@ -1,7 +1,7 @@
1
- export * from './lib/config';
2
- export * from './lib/generator';
3
- export * from './lib/pipeline';
4
- export * from './lib/renderer';
5
- export * from './lib/util';
6
- export * from './lib/version';
1
+ export * from './lib/config';
2
+ export * from './lib/generator';
3
+ export * from './lib/pipeline';
4
+ export * from './lib/renderer';
5
+ export * from './lib/util';
6
+ export * from './lib/version';
7
7
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUMifQ==
@@ -1,61 +1,69 @@
1
- export declare type InputConfig = {
2
- readonly height: number;
3
- readonly width: number;
4
- };
5
- export declare type ModelUrlResolver = string | ((model_path: string) => Promise<string>);
6
- export interface RenderConfig {
7
- readonly type: 'blur' | 'passthrough' | 'replacement';
8
- readonly horizontal_mirror?: boolean;
9
- }
10
- export interface BlurConfig extends RenderConfig {
11
- readonly type: 'blur';
12
- readonly kernel_size: number;
13
- readonly sigma: number;
14
- }
15
- export interface ReplacementConfig extends RenderConfig {
16
- readonly type: 'replacement';
17
- background: HTMLCanvasElement;
18
- readonly static: boolean;
19
- }
20
- export declare type Generator = 'local' | 'worker';
21
- export declare type MaskConfig = {
22
- readonly generator: Generator;
23
- readonly generation_interval_ms: number;
24
- readonly model_url_resolver: ModelUrlResolver;
25
- readonly model_uri: string;
26
- readonly worker_uri: string;
27
- };
28
- export declare type PipelineConfig = {
29
- readonly base_url?: string;
30
- readonly wasm_uri?: string;
31
- readonly render: BlurConfig | RenderConfig | ReplacementConfig;
32
- readonly input: InputConfig;
33
- readonly mask: MaskConfig;
34
- };
35
- export declare enum Quality {
36
- LOW = "LOW",
37
- MEDIUM = "MEDIUM",
38
- HIGH = "HIGH",
39
- ULTRA = "ULTRA"
40
- }
41
- export declare enum BlurStrength {
42
- WEAK = "WEAK",
43
- MODERATE = "MODERATE",
44
- STRONG = "STRONG",
45
- STRONGER = "STRONGER",
46
- STRONGEST = "STRONGEST"
47
- }
48
- export declare const getBlurConfig: (blur_strength: BlurStrength, horizontal_mirror?: boolean) => BlurConfig;
49
- export declare const getConfig: (height: number, width: number, quality?: Quality, generator?: Generator, render_config?: BlurConfig | RenderConfig | ReplacementConfig, model_url_resolver?: ModelUrlResolver, base_url?: string) => {
50
- mask: {
51
- generator: Generator;
52
- generation_interval_ms: number;
53
- model_url_resolver: ModelUrlResolver;
54
- model_uri: string;
55
- worker_uri: string;
56
- };
57
- base_url?: string | undefined;
58
- wasm_uri?: string | undefined;
59
- render: BlurConfig | RenderConfig | ReplacementConfig;
60
- input: InputConfig;
61
- };
1
+ export declare type SizeConfig = {
2
+ readonly height: number;
3
+ readonly width: number;
4
+ };
5
+ export declare type InputConfig = SizeConfig;
6
+ export declare type ModelUrlResolver = string | ((model_path: string) => Promise<string>);
7
+ export interface RenderConfig {
8
+ readonly type: 'blur' | 'passthrough' | 'replacement';
9
+ readonly horizontal_mirror?: boolean;
10
+ }
11
+ export interface BlurConfig extends RenderConfig {
12
+ readonly type: 'blur';
13
+ readonly kernel_size: number;
14
+ readonly sigma: number;
15
+ }
16
+ export interface ReplacementConfig extends RenderConfig {
17
+ readonly type: 'replacement';
18
+ background: HTMLCanvasElement;
19
+ readonly static: boolean;
20
+ }
21
+ export declare type Generator = 'local' | 'worker';
22
+ export declare type MaskConfig = {
23
+ readonly generator: Generator;
24
+ readonly generation_interval_ms: number;
25
+ readonly model_rank: number;
26
+ readonly model_url_resolver: ModelUrlResolver;
27
+ readonly model_uri: string;
28
+ readonly worker_uri: string;
29
+ readonly input_size: SizeConfig;
30
+ readonly output_size: SizeConfig;
31
+ };
32
+ export declare type PipelineConfig = {
33
+ readonly base_url?: string;
34
+ readonly wasm_uri?: string;
35
+ readonly render: BlurConfig | RenderConfig | ReplacementConfig;
36
+ readonly input: InputConfig;
37
+ readonly mask: MaskConfig;
38
+ };
39
+ export declare enum Quality {
40
+ TINY = "TINY",
41
+ LOW = "LOW",
42
+ MEDIUM = "MEDIUM",
43
+ HIGH = "HIGH",
44
+ ULTRA = "ULTRA"
45
+ }
46
+ export declare enum BlurStrength {
47
+ WEAK = "WEAK",
48
+ MODERATE = "MODERATE",
49
+ STRONG = "STRONG",
50
+ STRONGER = "STRONGER",
51
+ STRONGEST = "STRONGEST"
52
+ }
53
+ export declare const getBlurConfig: (blur_strength: BlurStrength, horizontal_mirror?: boolean) => BlurConfig;
54
+ export declare const getConfig: (height: number, width: number, quality?: Quality, generator?: Generator, render_config?: BlurConfig | RenderConfig | ReplacementConfig, model_url_resolver?: ModelUrlResolver, base_url?: string) => {
55
+ mask: {
56
+ generator: Generator;
57
+ generation_interval_ms: number;
58
+ model_rank: number;
59
+ model_url_resolver: ModelUrlResolver;
60
+ model_uri: string;
61
+ worker_uri: string;
62
+ input_size: SizeConfig;
63
+ output_size: SizeConfig;
64
+ };
65
+ base_url?: string | undefined;
66
+ wasm_uri?: string | undefined;
67
+ render: BlurConfig | RenderConfig | ReplacementConfig;
68
+ input: InputConfig;
69
+ };
@@ -1,109 +1,125 @@
1
- import { LIB_VERSION } from './version';
2
- export var Quality;
3
- (function (Quality) {
4
- Quality["LOW"] = "LOW";
5
- Quality["MEDIUM"] = "MEDIUM";
6
- Quality["HIGH"] = "HIGH";
7
- Quality["ULTRA"] = "ULTRA";
8
- })(Quality || (Quality = {}));
9
- export var BlurStrength;
10
- (function (BlurStrength) {
11
- BlurStrength["WEAK"] = "WEAK";
12
- BlurStrength["MODERATE"] = "MODERATE";
13
- BlurStrength["STRONG"] = "STRONG";
14
- BlurStrength["STRONGER"] = "STRONGER";
15
- BlurStrength["STRONGEST"] = "STRONGEST";
16
- })(BlurStrength || (BlurStrength = {}));
17
- export const getBlurConfig = (blur_strength, horizontal_mirror) => {
18
- let kernel_size = 25;
19
- let sigma = 11;
20
- switch (blur_strength) {
21
- case BlurStrength.WEAK:
22
- kernel_size = 9;
23
- sigma = 2;
24
- break;
25
- case BlurStrength.MODERATE:
26
- kernel_size = 15;
27
- sigma = 6;
28
- break;
29
- case BlurStrength.STRONG:
30
- kernel_size = 25;
31
- sigma = 11;
32
- break;
33
- case BlurStrength.STRONGER:
34
- kernel_size = 37;
35
- sigma = 17;
36
- break;
37
- case BlurStrength.STRONGEST:
38
- kernel_size = 49;
39
- sigma = 23;
40
- break;
41
- default:
42
- break;
43
- }
44
- return {
45
- type: 'blur',
46
- horizontal_mirror,
47
- kernel_size,
48
- sigma,
49
- };
50
- };
51
- export const getConfig = (height, width, quality = Quality.LOW, generator = 'local', render_config = {
52
- type: 'blur',
53
- horizontal_mirror: false,
54
- kernel_size: 37,
55
- sigma: 17,
56
- }, model_url_resolver = (model_path) => {
57
- return new Promise((resolve) => {
58
- resolve(model_path);
59
- });
60
- }, base_url = '') => {
61
- const model_version = '1.0.0';
62
- const base_config = {
63
- base_url,
64
- wasm_uri: '/wasm/1.13.1/',
65
- render: render_config,
66
- input: {
67
- height,
68
- width,
69
- },
70
- mask: {
71
- generation_interval_ms: 48,
72
- generator,
73
- model_url_resolver,
74
- model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
75
- worker_uri: `/${LIB_VERSION}/worker/segmentation.js`,
76
- },
77
- };
78
- let mask_quality_config = {};
79
- switch (quality) {
80
- case Quality.LOW:
81
- mask_quality_config = {
82
- generation_interval_ms: 48,
83
- model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
84
- };
85
- break;
86
- case Quality.MEDIUM:
87
- mask_quality_config = {
88
- generation_interval_ms: 24,
89
- model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
90
- };
91
- break;
92
- case Quality.HIGH:
93
- mask_quality_config = {
94
- generation_interval_ms: 36,
95
- model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_full_depth_2.onnx`,
96
- };
97
- break;
98
- case Quality.ULTRA:
99
- mask_quality_config = {
100
- generation_interval_ms: 0,
101
- model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_full_depth_2.onnx`,
102
- };
103
- break;
104
- default:
105
- throw new Error('[ladon-ts] - unknown quality option: ' + quality);
106
- }
107
- return Object.assign(Object.assign({}, base_config), { mask: Object.assign(Object.assign({}, base_config.mask), mask_quality_config) });
108
- };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQStDeEMsTUFBTSxDQUFOLElBQVksT0FLWDtBQUxELFdBQVksT0FBTztJQUNmLHNCQUFXLENBQUE7SUFDWCw0QkFBaUIsQ0FBQTtJQUNqQix3QkFBYSxDQUFBO0lBQ2IsMEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTFcsT0FBTyxLQUFQLE9BQU8sUUFLbEI7QUFFRCxNQUFNLENBQU4sSUFBWSxZQU1YO0FBTkQsV0FBWSxZQUFZO0lBQ3BCLDZCQUFhLENBQUE7SUFDYixxQ0FBcUIsQ0FBQTtJQUNyQixpQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBcUIsQ0FBQTtJQUNyQix1Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBTlcsWUFBWSxLQUFaLFlBQVksUUFNdkI7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDekIsYUFBMkIsRUFDM0IsaUJBQTJCLEVBQ2pCLEVBQUU7SUFDWixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRWYsUUFBUSxhQUFhLEVBQUU7UUFDbkIsS0FBSyxZQUFZLENBQUMsSUFBSTtZQUNsQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDVixNQUFNO1FBQ1YsS0FBSyxZQUFZLENBQUMsUUFBUTtZQUN0QixXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDVixNQUFNO1FBQ1YsS0FBSyxZQUFZLENBQUMsTUFBTTtZQUNwQixXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDWCxNQUFNO1FBQ1YsS0FBSyxZQUFZLENBQUMsUUFBUTtZQUN0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
1
+ import { toAbsoluteURI } from './util';
2
+ import { LIB_VERSION } from './version';
3
+ export var Quality;
4
+ (function (Quality) {
5
+ Quality["TINY"] = "TINY";
6
+ Quality["LOW"] = "LOW";
7
+ Quality["MEDIUM"] = "MEDIUM";
8
+ Quality["HIGH"] = "HIGH";
9
+ Quality["ULTRA"] = "ULTRA";
10
+ })(Quality || (Quality = {}));
11
+ export var BlurStrength;
12
+ (function (BlurStrength) {
13
+ BlurStrength["WEAK"] = "WEAK";
14
+ BlurStrength["MODERATE"] = "MODERATE";
15
+ BlurStrength["STRONG"] = "STRONG";
16
+ BlurStrength["STRONGER"] = "STRONGER";
17
+ BlurStrength["STRONGEST"] = "STRONGEST";
18
+ })(BlurStrength || (BlurStrength = {}));
19
+ export const getBlurConfig = (blur_strength, horizontal_mirror) => {
20
+ let kernel_size = 25;
21
+ let sigma = 11;
22
+ switch (blur_strength) {
23
+ case BlurStrength.WEAK:
24
+ kernel_size = 9;
25
+ sigma = 2;
26
+ break;
27
+ case BlurStrength.MODERATE:
28
+ kernel_size = 15;
29
+ sigma = 6;
30
+ break;
31
+ case BlurStrength.STRONG:
32
+ kernel_size = 25;
33
+ sigma = 11;
34
+ break;
35
+ case BlurStrength.STRONGER:
36
+ kernel_size = 37;
37
+ sigma = 17;
38
+ break;
39
+ case BlurStrength.STRONGEST:
40
+ kernel_size = 49;
41
+ sigma = 23;
42
+ break;
43
+ default:
44
+ break;
45
+ }
46
+ return {
47
+ type: 'blur',
48
+ horizontal_mirror,
49
+ kernel_size,
50
+ sigma,
51
+ };
52
+ };
53
+ export const getConfig = (height, width, quality = Quality.LOW, generator = 'local', render_config = {
54
+ type: 'blur',
55
+ horizontal_mirror: false,
56
+ kernel_size: 37,
57
+ sigma: 17,
58
+ }, model_url_resolver = (model_path) => Promise.resolve(toAbsoluteURI(model_path, `https://models.intelligence.webex.com/ladon`)), base_url = 'https://models.intelligence.webex.com/ladon') => {
59
+ const model_version = '1.0.0';
60
+ const base_config = {
61
+ base_url,
62
+ wasm_uri: '/wasm/1.15.1/',
63
+ render: render_config,
64
+ input: {
65
+ height,
66
+ width,
67
+ },
68
+ mask: {
69
+ generation_interval_ms: 48,
70
+ generator,
71
+ model_url_resolver,
72
+ model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
73
+ worker_uri: `/${LIB_VERSION}/worker/segmentation.js`,
74
+ model_rank: 3,
75
+ input_size: {
76
+ height,
77
+ width,
78
+ },
79
+ output_size: {
80
+ height,
81
+ width,
82
+ },
83
+ },
84
+ };
85
+ let mask_quality_config = {};
86
+ switch (quality) {
87
+ case Quality.TINY:
88
+ mask_quality_config = {
89
+ generation_interval_ms: 48,
90
+ model_uri: `/models/${model_version}/tiny_model.onnx`,
91
+ input_size: { height: 144, width: 256 },
92
+ output_size: { height: 360, width: 640 },
93
+ model_rank: 4,
94
+ };
95
+ break;
96
+ case Quality.LOW:
97
+ mask_quality_config = {
98
+ generation_interval_ms: 48,
99
+ model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
100
+ };
101
+ break;
102
+ case Quality.MEDIUM:
103
+ mask_quality_config = {
104
+ generation_interval_ms: 24,
105
+ model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_mn3sm100.onnx`,
106
+ };
107
+ break;
108
+ case Quality.HIGH:
109
+ mask_quality_config = {
110
+ generation_interval_ms: 36,
111
+ model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_full_depth_2.onnx`,
112
+ };
113
+ break;
114
+ case Quality.ULTRA:
115
+ mask_quality_config = {
116
+ generation_interval_ms: 0,
117
+ model_uri: `/models/${model_version}/mv2_dlv3plus_dynamic_dev_plus_dual_op11_full_depth_2.onnx`,
118
+ };
119
+ break;
120
+ default:
121
+ throw new Error('[ladon-ts] - unknown quality option: ' + quality);
122
+ }
123
+ return Object.assign(Object.assign({}, base_config), { mask: Object.assign(Object.assign({}, base_config.mask), mask_quality_config) });
124
+ };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBb0R4QyxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLHNCQUFXLENBQUE7SUFDWCw0QkFBaUIsQ0FBQTtJQUNqQix3QkFBYSxDQUFBO0lBQ2IsMEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEI7QUFFRCxNQUFNLENBQU4sSUFBWSxZQU1YO0FBTkQsV0FBWSxZQUFZO0lBQ3BCLDZCQUFhLENBQUE7SUFDYixxQ0FBcUIsQ0FBQTtJQUNyQixpQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBcUIsQ0FBQTtJQUNyQix1Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBTlcsWUFBWSxLQUFaLFlBQVksUUFNdkI7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDekIsYUFBMkIsRUFDM0IsaUJBQTJCLEVBQ2pCLEVBQUU7SUFDWixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRWYsUUFBUSxhQUFhLEVBQUU7UUFDbkIsS0FBSyxZQUFZLENBQUMsSUFBSTtZQUNsQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDVixNQUFNO1FBQ1YsS0FBSyxZQUFZLENBQUMsUUFBUTtZQUN0QixXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDVixNQUFNO1FBQ1YsS0FBSyxZQUFZLENBQUMsTUFBTTtZQUNwQixXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLEtB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
@@ -1,52 +1,52 @@
1
- import { PipelineConfig } from './config';
2
- declare global {
3
- interface ImportMeta {
4
- url: string;
5
- }
6
- }
7
- export interface MaskResult {
8
- data: Float32Array;
9
- warm: boolean;
10
- }
11
- export interface MaskGenerator {
12
- getMask(input: Uint8ClampedArray): Promise<MaskResult>;
13
- load(): Promise<void>;
14
- isLoaded(): boolean;
15
- postRender(input: Uint8ClampedArray): Promise<void>;
16
- destroy(): void;
17
- }
18
- export declare class LocalGenerator implements MaskGenerator {
19
- readonly config: PipelineConfig;
20
- private last_mask;
21
- private mask_model?;
22
- private last_mask_generation;
23
- constructor(config: PipelineConfig);
24
- private preprocess;
25
- getMask(input: Uint8ClampedArray): Promise<MaskResult>;
26
- load(): Promise<void>;
27
- isLoaded(): boolean;
28
- postRender(_: Uint8ClampedArray): Promise<void>;
29
- destroy(): void;
30
- }
31
- export declare class NullGenerator implements MaskGenerator {
32
- readonly config: PipelineConfig;
33
- private last_mask;
34
- constructor(config: PipelineConfig);
35
- getMask(_: Uint8ClampedArray): Promise<MaskResult>;
36
- load(): Promise<void>;
37
- isLoaded(): boolean;
38
- postRender(_: Uint8ClampedArray): Promise<void>;
39
- destroy(): void;
40
- }
41
- export declare class WorkerGenerator implements MaskGenerator {
42
- readonly config: PipelineConfig;
43
- private last_mask;
44
- private worker?;
45
- private new_mask;
46
- constructor(config: PipelineConfig);
47
- getMask(_: Uint8ClampedArray): Promise<MaskResult>;
48
- load(): Promise<void>;
49
- isLoaded(): boolean;
50
- postRender(input: Uint8ClampedArray): Promise<void>;
51
- destroy(): void;
52
- }
1
+ import { PipelineConfig } from './config';
2
+ declare global {
3
+ interface ImportMeta {
4
+ url: string;
5
+ }
6
+ }
7
+ export interface MaskResult {
8
+ data: Float32Array;
9
+ warm: boolean;
10
+ }
11
+ export interface MaskGenerator {
12
+ getMask(input: Uint8ClampedArray): Promise<MaskResult>;
13
+ load(): Promise<void>;
14
+ isLoaded(): boolean;
15
+ postRender(input: Uint8ClampedArray): Promise<void>;
16
+ destroy(): void;
17
+ }
18
+ export declare class LocalGenerator implements MaskGenerator {
19
+ readonly config: PipelineConfig;
20
+ private last_mask;
21
+ private mask_model?;
22
+ private last_mask_generation;
23
+ constructor(config: PipelineConfig);
24
+ private preprocess;
25
+ getMask(input: Uint8ClampedArray): Promise<MaskResult>;
26
+ load(): Promise<void>;
27
+ isLoaded(): boolean;
28
+ postRender(_: Uint8ClampedArray): Promise<void>;
29
+ destroy(): void;
30
+ }
31
+ export declare class NullGenerator implements MaskGenerator {
32
+ readonly config: PipelineConfig;
33
+ private last_mask;
34
+ constructor(config: PipelineConfig);
35
+ getMask(_: Uint8ClampedArray): Promise<MaskResult>;
36
+ load(): Promise<void>;
37
+ isLoaded(): boolean;
38
+ postRender(_: Uint8ClampedArray): Promise<void>;
39
+ destroy(): void;
40
+ }
41
+ export declare class WorkerGenerator implements MaskGenerator {
42
+ readonly config: PipelineConfig;
43
+ private last_mask;
44
+ private worker?;
45
+ private new_mask;
46
+ constructor(config: PipelineConfig);
47
+ getMask(_: Uint8ClampedArray): Promise<MaskResult>;
48
+ load(): Promise<void>;
49
+ isLoaded(): boolean;
50
+ postRender(input: Uint8ClampedArray): Promise<void>;
51
+ destroy(): void;
52
+ }