oidn-web 0.4.0 → 0.5.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 +45 -0
- package/README.md +83 -19
- package/dist/oidn.js +3239 -2642
- package/dist/oidn.umd.cjs +512 -296
- package/lib/UNet.d.ts +54 -20
- package/lib/UNet.js +194 -118
- package/lib/UNet.js.map +1 -1
- package/lib/backend.d.ts +1 -8
- package/lib/backend.js +1 -9
- package/lib/backend.js.map +1 -1
- package/lib/finalRgbShader.d.ts +13 -0
- package/lib/finalRgbShader.js +160 -0
- package/lib/finalRgbShader.js.map +1 -0
- package/lib/graphOptimizer.js +1 -2
- package/lib/graphOptimizer.js.map +1 -1
- package/lib/hdrTransfer.d.ts +14 -0
- package/lib/hdrTransfer.js +61 -0
- package/lib/hdrTransfer.js.map +1 -0
- package/lib/main.d.ts +16 -7
- package/lib/main.js +4 -5
- package/lib/main.js.map +1 -1
- package/lib/nativeUNet.d.ts +39 -3
- package/lib/nativeUNet.js +449 -120
- package/lib/nativeUNet.js.map +1 -1
- package/lib/process.d.ts +5 -11
- package/lib/process.js +35 -49
- package/lib/process.js.map +1 -1
- package/lib/tileScheduler.d.ts +32 -4
- package/lib/tileScheduler.js +133 -20
- package/lib/tileScheduler.js.map +1 -1
- package/package.json +9 -2
- package/src/UNet.ts +287 -158
- package/src/backend.ts +1 -14
- package/src/finalRgbShader.ts +186 -0
- package/src/graphOptimizer.ts +1 -2
- package/src/hdrTransfer.ts +88 -0
- package/src/main.ts +28 -13
- package/src/nativeUNet.ts +515 -116
- package/src/process.ts +43 -70
- package/src/tileScheduler.ts +216 -24
- package/benchmarks/compare.mjs +0 -651
- package/benchmarks/leak.mjs +0 -255
- package/benchmarks/results/before-spatial.json +0 -391
- package/benchmarks/results/before-spatial.md +0 -47
- package/benchmarks/results/int8-scan.json +0 -2007
- package/benchmarks/results/int8-scan.md +0 -160
- package/benchmarks/results/int8-w8a8-scan.json +0 -2007
- package/benchmarks/results/int8-w8a8-scan.md +0 -160
- package/benchmarks/results/int8-weight-channel.json +0 -1413
- package/benchmarks/results/int8-weight-channel.md +0 -118
- package/benchmarks/results/int8-weight-only.json +0 -1437
- package/benchmarks/results/int8-weight-only.md +0 -118
- package/benchmarks/results/kernel-webnn-final.json +0 -1115
- package/benchmarks/results/kernel-webnn-final.md +0 -104
- package/benchmarks/results/latest-optimized.json +0 -375
- package/benchmarks/results/latest-optimized.md +0 -47
- package/benchmarks/results/latest.json +0 -391
- package/benchmarks/results/latest.md +0 -47
- package/benchmarks/results/profile-baseline.json +0 -331
- package/benchmarks/results/profile-baseline.md +0 -12
- package/benchmarks/results/profile-conv2x.json +0 -331
- package/benchmarks/results/profile-conv2x.md +0 -12
- package/benchmarks/results/profile-fast-init.json +0 -385
- package/benchmarks/results/profile-fast-init.md +0 -47
- package/benchmarks/results/profile-fp16-fma.json +0 -369
- package/benchmarks/results/profile-fp16-fma.md +0 -47
- package/benchmarks/results/profile-fp16-tiled-decoder.json +0 -369
- package/benchmarks/results/profile-fp16-tiled-decoder.md +0 -47
- package/benchmarks/results/profile-fp16-tiled-encoder.json +0 -369
- package/benchmarks/results/profile-fp16-tiled-encoder.md +0 -47
- package/benchmarks/results/profile-fp16-unfused-pool.json +0 -385
- package/benchmarks/results/profile-fp16-unfused-pool.md +0 -47
- package/benchmarks/results/profile-input-major.json +0 -347
- package/benchmarks/results/profile-input-major.md +0 -12
- package/benchmarks/results/profile-k16.json +0 -347
- package/benchmarks/results/profile-k16.md +0 -12
- package/benchmarks/results/profile-k4.json +0 -347
- package/benchmarks/results/profile-k4.md +0 -12
- package/benchmarks/results/profile-pool-reuse.json +0 -331
- package/benchmarks/results/profile-pool-reuse.md +0 -12
- package/benchmarks/results/profile-precompiled.json +0 -385
- package/benchmarks/results/profile-precompiled.md +0 -47
- package/benchmarks/results/profile-static-channels.json +0 -385
- package/benchmarks/results/profile-static-channels.md +0 -47
- package/benchmarks/results/profile-static-io.json +0 -385
- package/benchmarks/results/profile-static-io.md +0 -47
- package/benchmarks/results/profile-tiled-conv.json +0 -331
- package/benchmarks/results/profile-tiled-conv.md +0 -12
- package/benchmarks/results/profile-tiled-decoder.json +0 -347
- package/benchmarks/results/profile-tiled-decoder.md +0 -12
- package/benchmarks/results/profile-tiled-matmul.json +0 -331
- package/benchmarks/results/profile-tiled-matmul.md +0 -12
- package/benchmarks/results/profile-unfused-decoder.json +0 -379
- package/benchmarks/results/profile-unfused-decoder.md +0 -12
- package/benchmarks/results/profile-unfused-pool.json +0 -347
- package/benchmarks/results/profile-unfused-pool.md +0 -12
- package/benchmarks/results/spatial-auto.json +0 -575
- package/benchmarks/results/spatial-auto.md +0 -61
- package/benchmarks/results/subgroup-smoke.json +0 -1094
- package/benchmarks/results/subgroup-smoke.md +0 -104
- package/benchmarks/results/webnn-smoke.json +0 -739
- package/benchmarks/results/webnn-smoke.md +0 -76
- package/scripts/inspect-model.mjs +0 -64
- package/tests/modelSpec.test.mjs +0 -128
- package/tests/resourceLifecycle.test.mjs +0 -383
- package/tests/tileScheduler.test.mjs +0 -90
package/lib/tileScheduler.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const defaultMinTileSize = 256;
|
|
2
|
-
const defaultInitialTileSize =
|
|
2
|
+
const defaultInitialTileSize = 432;
|
|
3
3
|
const defaultTargetTileTimeMs = 16;
|
|
4
|
-
const defaultAdjustmentStep =
|
|
4
|
+
const defaultAdjustmentStep = 16;
|
|
5
5
|
export const OIDN_TILE_ALIGNMENT = 16;
|
|
6
6
|
function alignUp(value, alignment) {
|
|
7
7
|
return Math.ceil(value / alignment) * alignment;
|
|
@@ -9,15 +9,123 @@ function alignUp(value, alignment) {
|
|
|
9
9
|
function alignDown(value, alignment) {
|
|
10
10
|
return Math.floor(value / alignment) * alignment;
|
|
11
11
|
}
|
|
12
|
+
function partitionRange(length, parts, index) {
|
|
13
|
+
const start = Math.round(index * length / parts);
|
|
14
|
+
const end = Math.round((index + 1) * length / parts);
|
|
15
|
+
return { start, end };
|
|
16
|
+
}
|
|
17
|
+
function alignRangeWithinImage(start, end, imageSize, minimumSize = 0) {
|
|
18
|
+
const currentSize = end - start;
|
|
19
|
+
const alignedSize = Math.max(minimumSize, alignUp(currentSize, OIDN_TILE_ALIGNMENT));
|
|
20
|
+
let alignedStart = start - Math.floor((alignedSize - currentSize) / 2);
|
|
21
|
+
// At an image edge, keep the padded portion on the right/bottom. Input
|
|
22
|
+
// readers replicate the nearest image edge into that portion, while output
|
|
23
|
+
// tiles remain strictly inside the original image.
|
|
24
|
+
alignedStart = clamp(alignedStart, 0, Math.max(0, imageSize - alignedSize));
|
|
25
|
+
return { start: alignedStart, end: alignedStart + alignedSize };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Splits an image into balanced rectangular output regions. Only sides that
|
|
29
|
+
* touch another tile receive a halo; image edges rely on the model's normal
|
|
30
|
+
* boundary behavior instead of doing redundant off-edge work.
|
|
31
|
+
*/
|
|
32
|
+
export function planTileGrid(width, height, maxTileSize, overlap) {
|
|
33
|
+
if (!Number.isInteger(width) || width <= 0 ||
|
|
34
|
+
!Number.isInteger(height) || height <= 0) {
|
|
35
|
+
throw new Error('Tile grid dimensions must be positive integers');
|
|
36
|
+
}
|
|
37
|
+
if (!Number.isFinite(maxTileSize) || maxTileSize <= 0) {
|
|
38
|
+
throw new Error('Maximum tile size must be positive');
|
|
39
|
+
}
|
|
40
|
+
if (!Number.isFinite(overlap) || overlap < 0) {
|
|
41
|
+
throw new Error('Tile overlap must be non-negative');
|
|
42
|
+
}
|
|
43
|
+
const alignedMaximum = Math.max(OIDN_TILE_ALIGNMENT, alignDown(maxTileSize, OIDN_TILE_ALIGNMENT));
|
|
44
|
+
const alignedOverlap = alignUp(overlap, OIDN_TILE_ALIGNMENT);
|
|
45
|
+
const columns = Math.max(1, Math.ceil(width / alignedMaximum));
|
|
46
|
+
const rows = Math.max(1, Math.ceil(height / alignedMaximum));
|
|
47
|
+
const tiles = [];
|
|
48
|
+
let maxOutputWidth = 0;
|
|
49
|
+
let maxOutputHeight = 0;
|
|
50
|
+
for (let row = 0; row < rows; row++) {
|
|
51
|
+
const outputY = partitionRange(height, rows, row);
|
|
52
|
+
for (let column = 0; column < columns; column++) {
|
|
53
|
+
const outputX = partitionRange(width, columns, column);
|
|
54
|
+
const desiredInputX = {
|
|
55
|
+
start: column === 0
|
|
56
|
+
? outputX.start
|
|
57
|
+
: Math.max(0, outputX.start - alignedOverlap),
|
|
58
|
+
end: column === columns - 1
|
|
59
|
+
? outputX.end
|
|
60
|
+
: Math.min(width, outputX.end + alignedOverlap)
|
|
61
|
+
};
|
|
62
|
+
const desiredInputY = {
|
|
63
|
+
start: row === 0
|
|
64
|
+
? outputY.start
|
|
65
|
+
: Math.max(0, outputY.start - alignedOverlap),
|
|
66
|
+
end: row === rows - 1
|
|
67
|
+
? outputY.end
|
|
68
|
+
: Math.min(height, outputY.end + alignedOverlap)
|
|
69
|
+
};
|
|
70
|
+
const inputX = alignRangeWithinImage(desiredInputX.start, desiredInputX.end, width);
|
|
71
|
+
const inputY = alignRangeWithinImage(desiredInputY.start, desiredInputY.end, height);
|
|
72
|
+
const output = {
|
|
73
|
+
x: outputX.start,
|
|
74
|
+
y: outputY.start,
|
|
75
|
+
width: outputX.end - outputX.start,
|
|
76
|
+
height: outputY.end - outputY.start
|
|
77
|
+
};
|
|
78
|
+
const input = {
|
|
79
|
+
x: inputX.start,
|
|
80
|
+
y: inputY.start,
|
|
81
|
+
width: inputX.end - inputX.start,
|
|
82
|
+
height: inputY.end - inputY.start
|
|
83
|
+
};
|
|
84
|
+
maxOutputWidth = Math.max(maxOutputWidth, output.width);
|
|
85
|
+
maxOutputHeight = Math.max(maxOutputHeight, output.height);
|
|
86
|
+
tiles.push({ column, row, input, output });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const inputShapes = () => new Set(tiles.map(({ input }) => `${input.width}x${input.height}`));
|
|
90
|
+
if (inputShapes().size > 2) {
|
|
91
|
+
const maximumInputWidth = Math.max(...tiles.map(({ input }) => input.width));
|
|
92
|
+
const maximumInputHeight = Math.max(...tiles.map(({ input }) => input.height));
|
|
93
|
+
const uniformWidthPixelCount = tiles.reduce((sum, { input }) => sum + maximumInputWidth * input.height, 0);
|
|
94
|
+
const uniformHeightPixelCount = tiles.reduce((sum, { input }) => sum + input.width * maximumInputHeight, 0);
|
|
95
|
+
if (uniformWidthPixelCount <= uniformHeightPixelCount) {
|
|
96
|
+
for (const tile of tiles) {
|
|
97
|
+
const range = alignRangeWithinImage(tile.input.x, tile.input.x + tile.input.width, width, maximumInputWidth);
|
|
98
|
+
tile.input.x = range.start;
|
|
99
|
+
tile.input.width = range.end - range.start;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
for (const tile of tiles) {
|
|
104
|
+
const range = alignRangeWithinImage(tile.input.y, tile.input.y + tile.input.height, height, maximumInputHeight);
|
|
105
|
+
tile.input.y = range.start;
|
|
106
|
+
tile.input.height = range.end - range.start;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const finalInputShapes = inputShapes();
|
|
111
|
+
const inputPixelCount = tiles.reduce((sum, { input }) => sum + input.width * input.height, 0);
|
|
112
|
+
return {
|
|
113
|
+
columns,
|
|
114
|
+
rows,
|
|
115
|
+
overlap: alignedOverlap,
|
|
116
|
+
maxOutputWidth,
|
|
117
|
+
maxOutputHeight,
|
|
118
|
+
inputPixelCount,
|
|
119
|
+
inputShapeCount: finalInputShapes.size,
|
|
120
|
+
tiles
|
|
121
|
+
};
|
|
122
|
+
}
|
|
12
123
|
function clamp(value, min, max) {
|
|
13
124
|
return Math.min(Math.max(value, min), max);
|
|
14
125
|
}
|
|
15
|
-
function
|
|
126
|
+
function percentile(values, fraction) {
|
|
16
127
|
const sorted = [...values].sort((a, b) => a - b);
|
|
17
|
-
|
|
18
|
-
return sorted.length % 2
|
|
19
|
-
? sorted[middle]
|
|
20
|
-
: (sorted[middle - 1] + sorted[middle]) / 2;
|
|
128
|
+
return sorted[Math.ceil(sorted.length * fraction) - 1];
|
|
21
129
|
}
|
|
22
130
|
/** Fits one output dimension without exceeding the configured tile cap. */
|
|
23
131
|
export function fitTileDimension(imageSize, maxTileSize) {
|
|
@@ -37,6 +145,8 @@ export class DynamicTileController {
|
|
|
37
145
|
targetTileTimeMs;
|
|
38
146
|
_tileSize;
|
|
39
147
|
_adjustmentStep;
|
|
148
|
+
_smoothedTileTimeMs;
|
|
149
|
+
_completeExecutionsSinceChange = 0;
|
|
40
150
|
constructor(maxTileSize, setting = true) {
|
|
41
151
|
const options = typeof setting === 'object' ? setting : {};
|
|
42
152
|
this.enabled = setting !== false;
|
|
@@ -58,29 +168,32 @@ export class DynamicTileController {
|
|
|
58
168
|
const validTimes = tileTimesMs.filter((duration) => Number.isFinite(duration) && duration >= 0);
|
|
59
169
|
if (validTimes.length === 0)
|
|
60
170
|
return false;
|
|
61
|
-
|
|
171
|
+
// The first tile may still pay one-time GPU residency costs even after
|
|
172
|
+
// shape preparation. It should not make a stable layout look too slow.
|
|
173
|
+
const representativeTimes = validTimes.length >= 3
|
|
174
|
+
? validTimes.slice(1)
|
|
175
|
+
: validTimes;
|
|
176
|
+
const observedTime = percentile(representativeTimes, 0.75);
|
|
177
|
+
this._smoothedTileTimeMs = this._smoothedTileTimeMs === undefined
|
|
178
|
+
? observedTime
|
|
179
|
+
: this._smoothedTileTimeMs * 0.65 + observedTime * 0.35;
|
|
180
|
+
this._completeExecutionsSinceChange++;
|
|
181
|
+
if (this._completeExecutionsSinceChange < 2)
|
|
182
|
+
return false;
|
|
62
183
|
let nextTileSize = this._tileSize;
|
|
63
|
-
if (
|
|
184
|
+
if (this._smoothedTileTimeMs > this.targetTileTimeMs * 1.25) {
|
|
64
185
|
nextTileSize -= this._adjustmentStep;
|
|
65
186
|
}
|
|
66
|
-
else if (
|
|
187
|
+
else if (this._smoothedTileTimeMs < this.targetTileTimeMs * 0.65) {
|
|
67
188
|
nextTileSize += this._adjustmentStep;
|
|
68
189
|
}
|
|
69
190
|
nextTileSize = clamp(alignUp(nextTileSize, OIDN_TILE_ALIGNMENT), this.minTileSize, this.maxTileSize);
|
|
70
191
|
if (nextTileSize === this._tileSize)
|
|
71
192
|
return false;
|
|
72
193
|
this._tileSize = nextTileSize;
|
|
194
|
+
this._smoothedTileTimeMs = undefined;
|
|
195
|
+
this._completeExecutionsSinceChange = 0;
|
|
73
196
|
return true;
|
|
74
197
|
}
|
|
75
198
|
}
|
|
76
|
-
/** Waits for all work submitted before this call and tolerates device loss. */
|
|
77
|
-
export async function waitForSubmittedGPUWork(queue) {
|
|
78
|
-
try {
|
|
79
|
-
await queue.onSubmittedWorkDone();
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// tileExecute has no error callback. Preserve its completion/cancellation
|
|
83
|
-
// behavior and let the owning GPUDevice report device loss separately.
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
199
|
//# sourceMappingURL=tileScheduler.js.map
|
package/lib/tileScheduler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileScheduler.js","sourceRoot":"","sources":["../src/tileScheduler.ts"],"names":[],"mappings":"AAaA,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,qBAAqB,GAAG,
|
|
1
|
+
{"version":3,"file":"tileScheduler.js","sourceRoot":"","sources":["../src/tileScheduler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oidn-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Run Open Image Denoiser on the Web",
|
|
5
5
|
"main": "lib/main.js",
|
|
6
6
|
"types": "lib/main.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"lib",
|
|
9
|
+
"dist",
|
|
10
|
+
"src",
|
|
11
|
+
"CHANGELOG.md"
|
|
12
|
+
],
|
|
7
13
|
"type": "module",
|
|
8
14
|
"scripts": {
|
|
9
15
|
"build": "vite build",
|
|
10
16
|
"dev": "vite dev",
|
|
11
17
|
"watch": "vite build -w",
|
|
12
|
-
"test": "npm run build:lib && node --test tests/*.test.mjs",
|
|
18
|
+
"test": "npm run build:lib && npm run build && node --test tests/*.test.mjs",
|
|
13
19
|
"test:leak": "node benchmarks/leak.mjs",
|
|
14
20
|
"benchmark": "node benchmarks/compare.mjs",
|
|
15
21
|
"model:inspect": "npm run build:lib && node scripts/inspect-model.mjs",
|
|
22
|
+
"prepare": "npm run build:lib",
|
|
16
23
|
"prepublishOnly": "npm run build && npm run build:lib",
|
|
17
24
|
"build:lib": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\" && tsc",
|
|
18
25
|
"watch:lib": "tsc --watch"
|