longpipe 0.0.14 → 0.0.15
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/README.md +32 -270
- package/dist/chunk-NYCCJS3G.js +4924 -0
- package/dist/index-BctoEDhZ.d.cts +288 -0
- package/dist/index-BctoEDhZ.d.ts +288 -0
- package/dist/index.d.cts +3 -229
- package/dist/index.d.ts +3 -229
- package/dist/index.js +4 -4926
- package/dist/model.cjs +7008 -0
- package/dist/model.d.cts +155 -0
- package/dist/model.d.ts +155 -0
- package/dist/model.js +2085 -0
- package/package.json +7 -2
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
interface Conv2DWeights {
|
|
2
|
+
weights: ArrayLike<number>;
|
|
3
|
+
bias: ArrayLike<number>;
|
|
4
|
+
}
|
|
5
|
+
interface DepthwiseWeights {
|
|
6
|
+
weights: ArrayLike<number>;
|
|
7
|
+
bias: ArrayLike<number>;
|
|
8
|
+
}
|
|
9
|
+
interface DepthwiseSeparableWeights {
|
|
10
|
+
dw: DepthwiseWeights;
|
|
11
|
+
pw: Conv2DWeights;
|
|
12
|
+
}
|
|
13
|
+
interface MBConvWeights {
|
|
14
|
+
expand: Conv2DWeights;
|
|
15
|
+
dw: DepthwiseWeights;
|
|
16
|
+
proj: Conv2DWeights;
|
|
17
|
+
}
|
|
18
|
+
interface DecoderBlockWeights {
|
|
19
|
+
conv1: Conv2DWeights;
|
|
20
|
+
conv2: Conv2DWeights;
|
|
21
|
+
}
|
|
22
|
+
interface UNetWrapperWeights {
|
|
23
|
+
down1: Conv2DWeights;
|
|
24
|
+
down2?: Conv2DWeights;
|
|
25
|
+
adapter: Conv2DWeights;
|
|
26
|
+
expandFeat: Conv2DWeights;
|
|
27
|
+
up1Combine?: Conv2DWeights;
|
|
28
|
+
upCombine: Conv2DWeights;
|
|
29
|
+
}
|
|
30
|
+
interface FlowWeights {
|
|
31
|
+
stem: Conv2DWeights;
|
|
32
|
+
stages: Conv2DWeights[];
|
|
33
|
+
predictBot: Conv2DWeights;
|
|
34
|
+
deconv: Conv2DWeights[];
|
|
35
|
+
predict: Conv2DWeights[];
|
|
36
|
+
}
|
|
37
|
+
interface FaceWeights {
|
|
38
|
+
proj: Conv2DWeights;
|
|
39
|
+
block1: DecoderBlockWeights;
|
|
40
|
+
block2: DecoderBlockWeights;
|
|
41
|
+
out: Conv2DWeights;
|
|
42
|
+
}
|
|
43
|
+
interface LandmarkWeights {
|
|
44
|
+
stem: Conv2DWeights;
|
|
45
|
+
blocks: Conv2DWeights[];
|
|
46
|
+
headConv: Conv2DWeights;
|
|
47
|
+
fc: Conv2DWeights;
|
|
48
|
+
}
|
|
49
|
+
interface ModelWeights {
|
|
50
|
+
encoder: {
|
|
51
|
+
stem: Conv2DWeights;
|
|
52
|
+
s0: DepthwiseSeparableWeights;
|
|
53
|
+
s1: MBConvWeights[];
|
|
54
|
+
s2: MBConvWeights[];
|
|
55
|
+
s3: MBConvWeights[];
|
|
56
|
+
s4: MBConvWeights[];
|
|
57
|
+
s5?: MBConvWeights[];
|
|
58
|
+
s6?: MBConvWeights[];
|
|
59
|
+
};
|
|
60
|
+
bottleneck: Conv2DWeights;
|
|
61
|
+
decoder: {
|
|
62
|
+
blocks: DecoderBlockWeights[];
|
|
63
|
+
finalUpsample: Conv2DWeights;
|
|
64
|
+
outputConv: Conv2DWeights;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
type Dtype = 'f32' | 'f16';
|
|
69
|
+
interface Tensor {
|
|
70
|
+
readonly h: number;
|
|
71
|
+
readonly w: number;
|
|
72
|
+
readonly c: number;
|
|
73
|
+
}
|
|
74
|
+
interface MLBuffer {
|
|
75
|
+
}
|
|
76
|
+
interface Op {
|
|
77
|
+
readonly inputs: Tensor[];
|
|
78
|
+
readonly output: Tensor;
|
|
79
|
+
run(): void;
|
|
80
|
+
}
|
|
81
|
+
interface Presenter {
|
|
82
|
+
run(): void;
|
|
83
|
+
}
|
|
84
|
+
type RenderTarget = "main" | "preview";
|
|
85
|
+
type Activation = "none" | "relu6" | "relu" | "leaky";
|
|
86
|
+
interface Conv2dParams {
|
|
87
|
+
outChannels: number;
|
|
88
|
+
kernel: number;
|
|
89
|
+
stride: number;
|
|
90
|
+
padding: number | "same" | "valid";
|
|
91
|
+
activation: Activation;
|
|
92
|
+
}
|
|
93
|
+
interface DepthwiseParams {
|
|
94
|
+
kernel: number;
|
|
95
|
+
stride: number;
|
|
96
|
+
padding: number | "same" | "valid";
|
|
97
|
+
activation: Activation;
|
|
98
|
+
}
|
|
99
|
+
interface ConvTranspose2dParams {
|
|
100
|
+
outChannels: number;
|
|
101
|
+
kernel: number;
|
|
102
|
+
stride: number;
|
|
103
|
+
padding: number;
|
|
104
|
+
activation: Activation;
|
|
105
|
+
}
|
|
106
|
+
interface WarpParams {
|
|
107
|
+
flowScale: number;
|
|
108
|
+
}
|
|
109
|
+
interface StabilizeParams {
|
|
110
|
+
tLo: number;
|
|
111
|
+
tHi: number;
|
|
112
|
+
leak: number;
|
|
113
|
+
release: number;
|
|
114
|
+
tDiv: number;
|
|
115
|
+
divScale: number;
|
|
116
|
+
stepX: number;
|
|
117
|
+
stepY: number;
|
|
118
|
+
}
|
|
119
|
+
interface UpsampleParams {
|
|
120
|
+
outH: number;
|
|
121
|
+
outW: number;
|
|
122
|
+
}
|
|
123
|
+
interface FaceBoxParams {
|
|
124
|
+
win: number;
|
|
125
|
+
thresh: number;
|
|
126
|
+
boxScale: number;
|
|
127
|
+
}
|
|
128
|
+
interface FaceBoxesParams extends FaceBoxParams {
|
|
129
|
+
maxFaces: number;
|
|
130
|
+
tol: number;
|
|
131
|
+
}
|
|
132
|
+
interface CropResampleParams {
|
|
133
|
+
outH: number;
|
|
134
|
+
outW: number;
|
|
135
|
+
mean: [number, number, number];
|
|
136
|
+
std: [number, number, number];
|
|
137
|
+
slot?: number;
|
|
138
|
+
}
|
|
139
|
+
interface LandmarkOverlayParams {
|
|
140
|
+
count: number;
|
|
141
|
+
thresh: number;
|
|
142
|
+
pointSize: number;
|
|
143
|
+
color: [number, number, number];
|
|
144
|
+
slot?: number;
|
|
145
|
+
drawImage?: boolean;
|
|
146
|
+
}
|
|
147
|
+
interface ReframeStateParams {
|
|
148
|
+
zoom: number;
|
|
149
|
+
gravity: number;
|
|
150
|
+
margin: number;
|
|
151
|
+
deadband: number;
|
|
152
|
+
ease: number;
|
|
153
|
+
aspect: number;
|
|
154
|
+
}
|
|
155
|
+
interface FaceTouchupStageOp extends Op {
|
|
156
|
+
setActiveSlots(n: number): void;
|
|
157
|
+
}
|
|
158
|
+
interface FaceTopology {
|
|
159
|
+
count: number;
|
|
160
|
+
uv: Float32Array;
|
|
161
|
+
idx: Float32Array;
|
|
162
|
+
weightMask: ImageBitmap;
|
|
163
|
+
}
|
|
164
|
+
type FaceTouchupStyle = "freq-sep" | "bilateral";
|
|
165
|
+
interface FaceTouchupParams {
|
|
166
|
+
strength: number;
|
|
167
|
+
amount: number;
|
|
168
|
+
detail: number;
|
|
169
|
+
thresh: number;
|
|
170
|
+
style?: FaceTouchupStyle;
|
|
171
|
+
slots?: number;
|
|
172
|
+
}
|
|
173
|
+
interface UpsampleConv1x1Params {
|
|
174
|
+
outH: number;
|
|
175
|
+
outW: number;
|
|
176
|
+
outChannels: number;
|
|
177
|
+
activation: Activation;
|
|
178
|
+
}
|
|
179
|
+
interface ProjResidualParams {
|
|
180
|
+
outChannels: number;
|
|
181
|
+
}
|
|
182
|
+
interface ConcatConv2dParams {
|
|
183
|
+
outChannels: number;
|
|
184
|
+
}
|
|
185
|
+
interface DownAdapterParams {
|
|
186
|
+
stride: number;
|
|
187
|
+
}
|
|
188
|
+
type ImageSource = ImageBitmap | VideoFrame;
|
|
189
|
+
interface InputOp {
|
|
190
|
+
readonly output: Tensor;
|
|
191
|
+
setSource(src: ImageSource): void;
|
|
192
|
+
run(): void;
|
|
193
|
+
}
|
|
194
|
+
type DataView_ = Float32Array | Uint16Array;
|
|
195
|
+
interface Backend {
|
|
196
|
+
readonly dtype: Dtype;
|
|
197
|
+
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
198
|
+
tensor(h: number, w: number, c: number, data?: DataView_): Tensor;
|
|
199
|
+
upload(data: DataView_): MLBuffer;
|
|
200
|
+
ops: {
|
|
201
|
+
Conv2d: (input: Tensor, weights: Conv2DWeights, params: Conv2dParams) => Op;
|
|
202
|
+
ConvTranspose2d: (input: Tensor, weights: Conv2DWeights, params: ConvTranspose2dParams) => Op;
|
|
203
|
+
DepthwiseConv2d: (input: Tensor, weights: DepthwiseWeights, params: DepthwiseParams) => Op;
|
|
204
|
+
Add: (a: Tensor, b: Tensor) => Op;
|
|
205
|
+
Sigmoid: (input: Tensor) => Op;
|
|
206
|
+
BilinearUpsample: (input: Tensor, params: UpsampleParams) => Op;
|
|
207
|
+
Crop: (input: Tensor, params: UpsampleParams) => Op;
|
|
208
|
+
BicubicUpsample: (input: Tensor, params: UpsampleParams) => Op;
|
|
209
|
+
ChannelConcat: (a: Tensor, b: Tensor) => Op;
|
|
210
|
+
Tanh: (input: Tensor) => Op;
|
|
211
|
+
ElementwiseMul: (a: Tensor, b: Tensor) => Op;
|
|
212
|
+
Warp: (source: Tensor, flow: Tensor, params: WarpParams) => Op;
|
|
213
|
+
FaceBoxFromHeatmaps: (heatmaps: Tensor, params: FaceBoxParams) => Op;
|
|
214
|
+
FaceBoxesFromHeatmaps: (heatmaps: Tensor, params: FaceBoxesParams) => Op;
|
|
215
|
+
ReframeState: (boxes: Tensor, prev: Tensor, cmd: Tensor, params: ReframeStateParams) => Op;
|
|
216
|
+
Reframe: (src: Tensor, rect: Tensor) => Op;
|
|
217
|
+
FaceTouchupStage: (frame: Tensor, landmarks: Tensor, box: Tensor, topo: FaceTopology, params: FaceTouchupParams) => FaceTouchupStageOp;
|
|
218
|
+
CropResample: (frame: Tensor, box: Tensor, params: CropResampleParams) => Op;
|
|
219
|
+
Stabilize: (flow: Tensor, pred: Tensor, ref: Tensor, envPrev: Tensor, params: StabilizeParams) => Op;
|
|
220
|
+
GatesFused: (uIn: Tensor, hPrev: Tensor, weights: Conv2DWeights) => Op;
|
|
221
|
+
CandUpdateFused: (uIn: Tensor, hPrev: Tensor, gatesOut: Tensor, weights: Conv2DWeights, gamma: ArrayLike<number>) => Op;
|
|
222
|
+
ConvExpand: (input: Tensor, weights: Conv2DWeights) => Op;
|
|
223
|
+
CatConv6to2: (u: Tensor, d: Tensor, weights: Conv2DWeights) => Op;
|
|
224
|
+
DownAdapter: (input: Tensor, downWeights: Conv2DWeights, adaptWeights: Conv2DWeights, params: DownAdapterParams) => Op;
|
|
225
|
+
UpFinal: (u: Tensor, rgb: Tensor, weights: Conv2DWeights) => Op;
|
|
226
|
+
UpFinalSkip: (u: Tensor, dFull: Tensor, rgb: Tensor, weights: Conv2DWeights) => Op;
|
|
227
|
+
Conv2dAdd: (input: Tensor, skip: Tensor, weights: Conv2DWeights, params: Conv2dParams) => Op;
|
|
228
|
+
ProjResidual: (input: Tensor, skip: Tensor, weights: Conv2DWeights, params: ProjResidualParams) => Op;
|
|
229
|
+
ConcatConv2d: (a: Tensor, b: Tensor, weights: Conv2DWeights, params: ConcatConv2dParams) => Op;
|
|
230
|
+
UpsampleConcat: (a: Tensor, b: Tensor, params: UpsampleParams) => Op;
|
|
231
|
+
UpsampleConv1x1: (input: Tensor, weights: Conv2DWeights, params: UpsampleConv1x1Params) => Op;
|
|
232
|
+
UpsampleSigmoid: (input: Tensor, params: UpsampleParams) => Op;
|
|
233
|
+
Input: (h: number, w: number) => InputOp;
|
|
234
|
+
};
|
|
235
|
+
presenters: {
|
|
236
|
+
CompositeSolid: (image: Tensor, alpha: Tensor, bgColor: [number, number, number], target?: RenderTarget) => Presenter;
|
|
237
|
+
CompositeImage: (image: Tensor, alpha: Tensor, bg: Tensor, target?: RenderTarget) => Presenter;
|
|
238
|
+
CompositeImageBilinear: (image: Tensor, alpha: Tensor, bg: Tensor, target?: RenderTarget) => Presenter;
|
|
239
|
+
CompositePassthrough: (image: Tensor, target?: RenderTarget) => Presenter;
|
|
240
|
+
LandmarkOverlay: (image: Tensor, landmarks: Tensor, box: Tensor, params: LandmarkOverlayParams, target?: RenderTarget) => Presenter;
|
|
241
|
+
FaceTouchup: (frame: Tensor, landmarks: Tensor, box: Tensor, topo: FaceTopology, params: FaceTouchupParams, target?: RenderTarget) => Presenter;
|
|
242
|
+
};
|
|
243
|
+
attachCanvas(name: RenderTarget, canvas: HTMLCanvasElement | OffscreenCanvas): void;
|
|
244
|
+
readback(tensor: Tensor): Promise<Float32Array>;
|
|
245
|
+
copyTensor(src: Tensor, dst: Tensor): void;
|
|
246
|
+
sync(): Promise<void>;
|
|
247
|
+
destroy(): void;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
interface WebGPUTensor extends Tensor {
|
|
251
|
+
readonly buffer: GPUBuffer;
|
|
252
|
+
}
|
|
253
|
+
interface WebGPUMLBuffer extends MLBuffer {
|
|
254
|
+
readonly buffer: GPUBuffer;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
interface WebGPUBackendOptions {
|
|
258
|
+
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
259
|
+
device?: GPUDevice;
|
|
260
|
+
dtype?: Dtype;
|
|
261
|
+
}
|
|
262
|
+
declare class WebGPUBackend implements Backend {
|
|
263
|
+
readonly device: GPUDevice;
|
|
264
|
+
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
265
|
+
readonly dtype: Dtype;
|
|
266
|
+
readonly ops: Backend["ops"];
|
|
267
|
+
readonly presenters: Backend["presenters"];
|
|
268
|
+
readonly canvasContext: GPUCanvasContext;
|
|
269
|
+
readonly canvasFormat: GPUTextureFormat;
|
|
270
|
+
readonly bytesPerElement: 2 | 4;
|
|
271
|
+
private readonly contexts;
|
|
272
|
+
private constructor();
|
|
273
|
+
private configureContext;
|
|
274
|
+
attachCanvas(name: RenderTarget, canvas: HTMLCanvasElement | OffscreenCanvas): void;
|
|
275
|
+
static isAvailable(): Promise<boolean>;
|
|
276
|
+
static hasF16Support(): Promise<boolean>;
|
|
277
|
+
static create(opts: WebGPUBackendOptions): Promise<WebGPUBackend>;
|
|
278
|
+
getCurrentDisplayTexture(target?: RenderTarget): GPUTexture;
|
|
279
|
+
tensor(h: number, w: number, c: number, data?: DataView_): WebGPUTensor;
|
|
280
|
+
upload(data: DataView_): WebGPUMLBuffer;
|
|
281
|
+
private writeView;
|
|
282
|
+
readback(tensor: WebGPUTensor): Promise<Float32Array>;
|
|
283
|
+
copyTensor(src: WebGPUTensor, dst: WebGPUTensor): void;
|
|
284
|
+
sync(): Promise<void>;
|
|
285
|
+
destroy(): void;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export { type Activation as A, type Backend as B, type Conv2dParams as C, type Dtype as D, type FaceTouchupStyle as F, type InputOp as I, type LandmarkWeights as L, type MLBuffer as M, type Op as O, type Presenter as P, type RenderTarget as R, type Tensor as T, type UNetWrapperWeights as U, WebGPUBackend as W, type DepthwiseParams as a, type DataView_ as b, type ModelWeights as c, type ImageSource as d, type Conv2DWeights as e, type DecoderBlockWeights as f, type DepthwiseWeights as g, type FaceWeights as h, type FlowWeights as i, type MBConvWeights as j, type UpsampleParams as k };
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
interface Conv2DWeights {
|
|
2
|
+
weights: ArrayLike<number>;
|
|
3
|
+
bias: ArrayLike<number>;
|
|
4
|
+
}
|
|
5
|
+
interface DepthwiseWeights {
|
|
6
|
+
weights: ArrayLike<number>;
|
|
7
|
+
bias: ArrayLike<number>;
|
|
8
|
+
}
|
|
9
|
+
interface DepthwiseSeparableWeights {
|
|
10
|
+
dw: DepthwiseWeights;
|
|
11
|
+
pw: Conv2DWeights;
|
|
12
|
+
}
|
|
13
|
+
interface MBConvWeights {
|
|
14
|
+
expand: Conv2DWeights;
|
|
15
|
+
dw: DepthwiseWeights;
|
|
16
|
+
proj: Conv2DWeights;
|
|
17
|
+
}
|
|
18
|
+
interface DecoderBlockWeights {
|
|
19
|
+
conv1: Conv2DWeights;
|
|
20
|
+
conv2: Conv2DWeights;
|
|
21
|
+
}
|
|
22
|
+
interface UNetWrapperWeights {
|
|
23
|
+
down1: Conv2DWeights;
|
|
24
|
+
down2?: Conv2DWeights;
|
|
25
|
+
adapter: Conv2DWeights;
|
|
26
|
+
expandFeat: Conv2DWeights;
|
|
27
|
+
up1Combine?: Conv2DWeights;
|
|
28
|
+
upCombine: Conv2DWeights;
|
|
29
|
+
}
|
|
30
|
+
interface FlowWeights {
|
|
31
|
+
stem: Conv2DWeights;
|
|
32
|
+
stages: Conv2DWeights[];
|
|
33
|
+
predictBot: Conv2DWeights;
|
|
34
|
+
deconv: Conv2DWeights[];
|
|
35
|
+
predict: Conv2DWeights[];
|
|
36
|
+
}
|
|
37
|
+
interface FaceWeights {
|
|
38
|
+
proj: Conv2DWeights;
|
|
39
|
+
block1: DecoderBlockWeights;
|
|
40
|
+
block2: DecoderBlockWeights;
|
|
41
|
+
out: Conv2DWeights;
|
|
42
|
+
}
|
|
43
|
+
interface LandmarkWeights {
|
|
44
|
+
stem: Conv2DWeights;
|
|
45
|
+
blocks: Conv2DWeights[];
|
|
46
|
+
headConv: Conv2DWeights;
|
|
47
|
+
fc: Conv2DWeights;
|
|
48
|
+
}
|
|
49
|
+
interface ModelWeights {
|
|
50
|
+
encoder: {
|
|
51
|
+
stem: Conv2DWeights;
|
|
52
|
+
s0: DepthwiseSeparableWeights;
|
|
53
|
+
s1: MBConvWeights[];
|
|
54
|
+
s2: MBConvWeights[];
|
|
55
|
+
s3: MBConvWeights[];
|
|
56
|
+
s4: MBConvWeights[];
|
|
57
|
+
s5?: MBConvWeights[];
|
|
58
|
+
s6?: MBConvWeights[];
|
|
59
|
+
};
|
|
60
|
+
bottleneck: Conv2DWeights;
|
|
61
|
+
decoder: {
|
|
62
|
+
blocks: DecoderBlockWeights[];
|
|
63
|
+
finalUpsample: Conv2DWeights;
|
|
64
|
+
outputConv: Conv2DWeights;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
type Dtype = 'f32' | 'f16';
|
|
69
|
+
interface Tensor {
|
|
70
|
+
readonly h: number;
|
|
71
|
+
readonly w: number;
|
|
72
|
+
readonly c: number;
|
|
73
|
+
}
|
|
74
|
+
interface MLBuffer {
|
|
75
|
+
}
|
|
76
|
+
interface Op {
|
|
77
|
+
readonly inputs: Tensor[];
|
|
78
|
+
readonly output: Tensor;
|
|
79
|
+
run(): void;
|
|
80
|
+
}
|
|
81
|
+
interface Presenter {
|
|
82
|
+
run(): void;
|
|
83
|
+
}
|
|
84
|
+
type RenderTarget = "main" | "preview";
|
|
85
|
+
type Activation = "none" | "relu6" | "relu" | "leaky";
|
|
86
|
+
interface Conv2dParams {
|
|
87
|
+
outChannels: number;
|
|
88
|
+
kernel: number;
|
|
89
|
+
stride: number;
|
|
90
|
+
padding: number | "same" | "valid";
|
|
91
|
+
activation: Activation;
|
|
92
|
+
}
|
|
93
|
+
interface DepthwiseParams {
|
|
94
|
+
kernel: number;
|
|
95
|
+
stride: number;
|
|
96
|
+
padding: number | "same" | "valid";
|
|
97
|
+
activation: Activation;
|
|
98
|
+
}
|
|
99
|
+
interface ConvTranspose2dParams {
|
|
100
|
+
outChannels: number;
|
|
101
|
+
kernel: number;
|
|
102
|
+
stride: number;
|
|
103
|
+
padding: number;
|
|
104
|
+
activation: Activation;
|
|
105
|
+
}
|
|
106
|
+
interface WarpParams {
|
|
107
|
+
flowScale: number;
|
|
108
|
+
}
|
|
109
|
+
interface StabilizeParams {
|
|
110
|
+
tLo: number;
|
|
111
|
+
tHi: number;
|
|
112
|
+
leak: number;
|
|
113
|
+
release: number;
|
|
114
|
+
tDiv: number;
|
|
115
|
+
divScale: number;
|
|
116
|
+
stepX: number;
|
|
117
|
+
stepY: number;
|
|
118
|
+
}
|
|
119
|
+
interface UpsampleParams {
|
|
120
|
+
outH: number;
|
|
121
|
+
outW: number;
|
|
122
|
+
}
|
|
123
|
+
interface FaceBoxParams {
|
|
124
|
+
win: number;
|
|
125
|
+
thresh: number;
|
|
126
|
+
boxScale: number;
|
|
127
|
+
}
|
|
128
|
+
interface FaceBoxesParams extends FaceBoxParams {
|
|
129
|
+
maxFaces: number;
|
|
130
|
+
tol: number;
|
|
131
|
+
}
|
|
132
|
+
interface CropResampleParams {
|
|
133
|
+
outH: number;
|
|
134
|
+
outW: number;
|
|
135
|
+
mean: [number, number, number];
|
|
136
|
+
std: [number, number, number];
|
|
137
|
+
slot?: number;
|
|
138
|
+
}
|
|
139
|
+
interface LandmarkOverlayParams {
|
|
140
|
+
count: number;
|
|
141
|
+
thresh: number;
|
|
142
|
+
pointSize: number;
|
|
143
|
+
color: [number, number, number];
|
|
144
|
+
slot?: number;
|
|
145
|
+
drawImage?: boolean;
|
|
146
|
+
}
|
|
147
|
+
interface ReframeStateParams {
|
|
148
|
+
zoom: number;
|
|
149
|
+
gravity: number;
|
|
150
|
+
margin: number;
|
|
151
|
+
deadband: number;
|
|
152
|
+
ease: number;
|
|
153
|
+
aspect: number;
|
|
154
|
+
}
|
|
155
|
+
interface FaceTouchupStageOp extends Op {
|
|
156
|
+
setActiveSlots(n: number): void;
|
|
157
|
+
}
|
|
158
|
+
interface FaceTopology {
|
|
159
|
+
count: number;
|
|
160
|
+
uv: Float32Array;
|
|
161
|
+
idx: Float32Array;
|
|
162
|
+
weightMask: ImageBitmap;
|
|
163
|
+
}
|
|
164
|
+
type FaceTouchupStyle = "freq-sep" | "bilateral";
|
|
165
|
+
interface FaceTouchupParams {
|
|
166
|
+
strength: number;
|
|
167
|
+
amount: number;
|
|
168
|
+
detail: number;
|
|
169
|
+
thresh: number;
|
|
170
|
+
style?: FaceTouchupStyle;
|
|
171
|
+
slots?: number;
|
|
172
|
+
}
|
|
173
|
+
interface UpsampleConv1x1Params {
|
|
174
|
+
outH: number;
|
|
175
|
+
outW: number;
|
|
176
|
+
outChannels: number;
|
|
177
|
+
activation: Activation;
|
|
178
|
+
}
|
|
179
|
+
interface ProjResidualParams {
|
|
180
|
+
outChannels: number;
|
|
181
|
+
}
|
|
182
|
+
interface ConcatConv2dParams {
|
|
183
|
+
outChannels: number;
|
|
184
|
+
}
|
|
185
|
+
interface DownAdapterParams {
|
|
186
|
+
stride: number;
|
|
187
|
+
}
|
|
188
|
+
type ImageSource = ImageBitmap | VideoFrame;
|
|
189
|
+
interface InputOp {
|
|
190
|
+
readonly output: Tensor;
|
|
191
|
+
setSource(src: ImageSource): void;
|
|
192
|
+
run(): void;
|
|
193
|
+
}
|
|
194
|
+
type DataView_ = Float32Array | Uint16Array;
|
|
195
|
+
interface Backend {
|
|
196
|
+
readonly dtype: Dtype;
|
|
197
|
+
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
198
|
+
tensor(h: number, w: number, c: number, data?: DataView_): Tensor;
|
|
199
|
+
upload(data: DataView_): MLBuffer;
|
|
200
|
+
ops: {
|
|
201
|
+
Conv2d: (input: Tensor, weights: Conv2DWeights, params: Conv2dParams) => Op;
|
|
202
|
+
ConvTranspose2d: (input: Tensor, weights: Conv2DWeights, params: ConvTranspose2dParams) => Op;
|
|
203
|
+
DepthwiseConv2d: (input: Tensor, weights: DepthwiseWeights, params: DepthwiseParams) => Op;
|
|
204
|
+
Add: (a: Tensor, b: Tensor) => Op;
|
|
205
|
+
Sigmoid: (input: Tensor) => Op;
|
|
206
|
+
BilinearUpsample: (input: Tensor, params: UpsampleParams) => Op;
|
|
207
|
+
Crop: (input: Tensor, params: UpsampleParams) => Op;
|
|
208
|
+
BicubicUpsample: (input: Tensor, params: UpsampleParams) => Op;
|
|
209
|
+
ChannelConcat: (a: Tensor, b: Tensor) => Op;
|
|
210
|
+
Tanh: (input: Tensor) => Op;
|
|
211
|
+
ElementwiseMul: (a: Tensor, b: Tensor) => Op;
|
|
212
|
+
Warp: (source: Tensor, flow: Tensor, params: WarpParams) => Op;
|
|
213
|
+
FaceBoxFromHeatmaps: (heatmaps: Tensor, params: FaceBoxParams) => Op;
|
|
214
|
+
FaceBoxesFromHeatmaps: (heatmaps: Tensor, params: FaceBoxesParams) => Op;
|
|
215
|
+
ReframeState: (boxes: Tensor, prev: Tensor, cmd: Tensor, params: ReframeStateParams) => Op;
|
|
216
|
+
Reframe: (src: Tensor, rect: Tensor) => Op;
|
|
217
|
+
FaceTouchupStage: (frame: Tensor, landmarks: Tensor, box: Tensor, topo: FaceTopology, params: FaceTouchupParams) => FaceTouchupStageOp;
|
|
218
|
+
CropResample: (frame: Tensor, box: Tensor, params: CropResampleParams) => Op;
|
|
219
|
+
Stabilize: (flow: Tensor, pred: Tensor, ref: Tensor, envPrev: Tensor, params: StabilizeParams) => Op;
|
|
220
|
+
GatesFused: (uIn: Tensor, hPrev: Tensor, weights: Conv2DWeights) => Op;
|
|
221
|
+
CandUpdateFused: (uIn: Tensor, hPrev: Tensor, gatesOut: Tensor, weights: Conv2DWeights, gamma: ArrayLike<number>) => Op;
|
|
222
|
+
ConvExpand: (input: Tensor, weights: Conv2DWeights) => Op;
|
|
223
|
+
CatConv6to2: (u: Tensor, d: Tensor, weights: Conv2DWeights) => Op;
|
|
224
|
+
DownAdapter: (input: Tensor, downWeights: Conv2DWeights, adaptWeights: Conv2DWeights, params: DownAdapterParams) => Op;
|
|
225
|
+
UpFinal: (u: Tensor, rgb: Tensor, weights: Conv2DWeights) => Op;
|
|
226
|
+
UpFinalSkip: (u: Tensor, dFull: Tensor, rgb: Tensor, weights: Conv2DWeights) => Op;
|
|
227
|
+
Conv2dAdd: (input: Tensor, skip: Tensor, weights: Conv2DWeights, params: Conv2dParams) => Op;
|
|
228
|
+
ProjResidual: (input: Tensor, skip: Tensor, weights: Conv2DWeights, params: ProjResidualParams) => Op;
|
|
229
|
+
ConcatConv2d: (a: Tensor, b: Tensor, weights: Conv2DWeights, params: ConcatConv2dParams) => Op;
|
|
230
|
+
UpsampleConcat: (a: Tensor, b: Tensor, params: UpsampleParams) => Op;
|
|
231
|
+
UpsampleConv1x1: (input: Tensor, weights: Conv2DWeights, params: UpsampleConv1x1Params) => Op;
|
|
232
|
+
UpsampleSigmoid: (input: Tensor, params: UpsampleParams) => Op;
|
|
233
|
+
Input: (h: number, w: number) => InputOp;
|
|
234
|
+
};
|
|
235
|
+
presenters: {
|
|
236
|
+
CompositeSolid: (image: Tensor, alpha: Tensor, bgColor: [number, number, number], target?: RenderTarget) => Presenter;
|
|
237
|
+
CompositeImage: (image: Tensor, alpha: Tensor, bg: Tensor, target?: RenderTarget) => Presenter;
|
|
238
|
+
CompositeImageBilinear: (image: Tensor, alpha: Tensor, bg: Tensor, target?: RenderTarget) => Presenter;
|
|
239
|
+
CompositePassthrough: (image: Tensor, target?: RenderTarget) => Presenter;
|
|
240
|
+
LandmarkOverlay: (image: Tensor, landmarks: Tensor, box: Tensor, params: LandmarkOverlayParams, target?: RenderTarget) => Presenter;
|
|
241
|
+
FaceTouchup: (frame: Tensor, landmarks: Tensor, box: Tensor, topo: FaceTopology, params: FaceTouchupParams, target?: RenderTarget) => Presenter;
|
|
242
|
+
};
|
|
243
|
+
attachCanvas(name: RenderTarget, canvas: HTMLCanvasElement | OffscreenCanvas): void;
|
|
244
|
+
readback(tensor: Tensor): Promise<Float32Array>;
|
|
245
|
+
copyTensor(src: Tensor, dst: Tensor): void;
|
|
246
|
+
sync(): Promise<void>;
|
|
247
|
+
destroy(): void;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
interface WebGPUTensor extends Tensor {
|
|
251
|
+
readonly buffer: GPUBuffer;
|
|
252
|
+
}
|
|
253
|
+
interface WebGPUMLBuffer extends MLBuffer {
|
|
254
|
+
readonly buffer: GPUBuffer;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
interface WebGPUBackendOptions {
|
|
258
|
+
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
259
|
+
device?: GPUDevice;
|
|
260
|
+
dtype?: Dtype;
|
|
261
|
+
}
|
|
262
|
+
declare class WebGPUBackend implements Backend {
|
|
263
|
+
readonly device: GPUDevice;
|
|
264
|
+
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
265
|
+
readonly dtype: Dtype;
|
|
266
|
+
readonly ops: Backend["ops"];
|
|
267
|
+
readonly presenters: Backend["presenters"];
|
|
268
|
+
readonly canvasContext: GPUCanvasContext;
|
|
269
|
+
readonly canvasFormat: GPUTextureFormat;
|
|
270
|
+
readonly bytesPerElement: 2 | 4;
|
|
271
|
+
private readonly contexts;
|
|
272
|
+
private constructor();
|
|
273
|
+
private configureContext;
|
|
274
|
+
attachCanvas(name: RenderTarget, canvas: HTMLCanvasElement | OffscreenCanvas): void;
|
|
275
|
+
static isAvailable(): Promise<boolean>;
|
|
276
|
+
static hasF16Support(): Promise<boolean>;
|
|
277
|
+
static create(opts: WebGPUBackendOptions): Promise<WebGPUBackend>;
|
|
278
|
+
getCurrentDisplayTexture(target?: RenderTarget): GPUTexture;
|
|
279
|
+
tensor(h: number, w: number, c: number, data?: DataView_): WebGPUTensor;
|
|
280
|
+
upload(data: DataView_): WebGPUMLBuffer;
|
|
281
|
+
private writeView;
|
|
282
|
+
readback(tensor: WebGPUTensor): Promise<Float32Array>;
|
|
283
|
+
copyTensor(src: WebGPUTensor, dst: WebGPUTensor): void;
|
|
284
|
+
sync(): Promise<void>;
|
|
285
|
+
destroy(): void;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export { type Activation as A, type Backend as B, type Conv2dParams as C, type Dtype as D, type FaceTouchupStyle as F, type InputOp as I, type LandmarkWeights as L, type MLBuffer as M, type Op as O, type Presenter as P, type RenderTarget as R, type Tensor as T, type UNetWrapperWeights as U, WebGPUBackend as W, type DepthwiseParams as a, type DataView_ as b, type ModelWeights as c, type ImageSource as d, type Conv2DWeights as e, type DecoderBlockWeights as f, type DepthwiseWeights as g, type FaceWeights as h, type FlowWeights as i, type MBConvWeights as j, type UpsampleParams as k };
|