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.
Files changed (106) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +83 -19
  3. package/dist/oidn.js +3239 -2642
  4. package/dist/oidn.umd.cjs +512 -296
  5. package/lib/UNet.d.ts +54 -20
  6. package/lib/UNet.js +194 -118
  7. package/lib/UNet.js.map +1 -1
  8. package/lib/backend.d.ts +1 -8
  9. package/lib/backend.js +1 -9
  10. package/lib/backend.js.map +1 -1
  11. package/lib/finalRgbShader.d.ts +13 -0
  12. package/lib/finalRgbShader.js +160 -0
  13. package/lib/finalRgbShader.js.map +1 -0
  14. package/lib/graphOptimizer.js +1 -2
  15. package/lib/graphOptimizer.js.map +1 -1
  16. package/lib/hdrTransfer.d.ts +14 -0
  17. package/lib/hdrTransfer.js +61 -0
  18. package/lib/hdrTransfer.js.map +1 -0
  19. package/lib/main.d.ts +16 -7
  20. package/lib/main.js +4 -5
  21. package/lib/main.js.map +1 -1
  22. package/lib/nativeUNet.d.ts +39 -3
  23. package/lib/nativeUNet.js +449 -120
  24. package/lib/nativeUNet.js.map +1 -1
  25. package/lib/process.d.ts +5 -11
  26. package/lib/process.js +35 -49
  27. package/lib/process.js.map +1 -1
  28. package/lib/tileScheduler.d.ts +32 -4
  29. package/lib/tileScheduler.js +133 -20
  30. package/lib/tileScheduler.js.map +1 -1
  31. package/package.json +9 -2
  32. package/src/UNet.ts +287 -158
  33. package/src/backend.ts +1 -14
  34. package/src/finalRgbShader.ts +186 -0
  35. package/src/graphOptimizer.ts +1 -2
  36. package/src/hdrTransfer.ts +88 -0
  37. package/src/main.ts +28 -13
  38. package/src/nativeUNet.ts +515 -116
  39. package/src/process.ts +43 -70
  40. package/src/tileScheduler.ts +216 -24
  41. package/benchmarks/compare.mjs +0 -651
  42. package/benchmarks/leak.mjs +0 -255
  43. package/benchmarks/results/before-spatial.json +0 -391
  44. package/benchmarks/results/before-spatial.md +0 -47
  45. package/benchmarks/results/int8-scan.json +0 -2007
  46. package/benchmarks/results/int8-scan.md +0 -160
  47. package/benchmarks/results/int8-w8a8-scan.json +0 -2007
  48. package/benchmarks/results/int8-w8a8-scan.md +0 -160
  49. package/benchmarks/results/int8-weight-channel.json +0 -1413
  50. package/benchmarks/results/int8-weight-channel.md +0 -118
  51. package/benchmarks/results/int8-weight-only.json +0 -1437
  52. package/benchmarks/results/int8-weight-only.md +0 -118
  53. package/benchmarks/results/kernel-webnn-final.json +0 -1115
  54. package/benchmarks/results/kernel-webnn-final.md +0 -104
  55. package/benchmarks/results/latest-optimized.json +0 -375
  56. package/benchmarks/results/latest-optimized.md +0 -47
  57. package/benchmarks/results/latest.json +0 -391
  58. package/benchmarks/results/latest.md +0 -47
  59. package/benchmarks/results/profile-baseline.json +0 -331
  60. package/benchmarks/results/profile-baseline.md +0 -12
  61. package/benchmarks/results/profile-conv2x.json +0 -331
  62. package/benchmarks/results/profile-conv2x.md +0 -12
  63. package/benchmarks/results/profile-fast-init.json +0 -385
  64. package/benchmarks/results/profile-fast-init.md +0 -47
  65. package/benchmarks/results/profile-fp16-fma.json +0 -369
  66. package/benchmarks/results/profile-fp16-fma.md +0 -47
  67. package/benchmarks/results/profile-fp16-tiled-decoder.json +0 -369
  68. package/benchmarks/results/profile-fp16-tiled-decoder.md +0 -47
  69. package/benchmarks/results/profile-fp16-tiled-encoder.json +0 -369
  70. package/benchmarks/results/profile-fp16-tiled-encoder.md +0 -47
  71. package/benchmarks/results/profile-fp16-unfused-pool.json +0 -385
  72. package/benchmarks/results/profile-fp16-unfused-pool.md +0 -47
  73. package/benchmarks/results/profile-input-major.json +0 -347
  74. package/benchmarks/results/profile-input-major.md +0 -12
  75. package/benchmarks/results/profile-k16.json +0 -347
  76. package/benchmarks/results/profile-k16.md +0 -12
  77. package/benchmarks/results/profile-k4.json +0 -347
  78. package/benchmarks/results/profile-k4.md +0 -12
  79. package/benchmarks/results/profile-pool-reuse.json +0 -331
  80. package/benchmarks/results/profile-pool-reuse.md +0 -12
  81. package/benchmarks/results/profile-precompiled.json +0 -385
  82. package/benchmarks/results/profile-precompiled.md +0 -47
  83. package/benchmarks/results/profile-static-channels.json +0 -385
  84. package/benchmarks/results/profile-static-channels.md +0 -47
  85. package/benchmarks/results/profile-static-io.json +0 -385
  86. package/benchmarks/results/profile-static-io.md +0 -47
  87. package/benchmarks/results/profile-tiled-conv.json +0 -331
  88. package/benchmarks/results/profile-tiled-conv.md +0 -12
  89. package/benchmarks/results/profile-tiled-decoder.json +0 -347
  90. package/benchmarks/results/profile-tiled-decoder.md +0 -12
  91. package/benchmarks/results/profile-tiled-matmul.json +0 -331
  92. package/benchmarks/results/profile-tiled-matmul.md +0 -12
  93. package/benchmarks/results/profile-unfused-decoder.json +0 -379
  94. package/benchmarks/results/profile-unfused-decoder.md +0 -12
  95. package/benchmarks/results/profile-unfused-pool.json +0 -347
  96. package/benchmarks/results/profile-unfused-pool.md +0 -12
  97. package/benchmarks/results/spatial-auto.json +0 -575
  98. package/benchmarks/results/spatial-auto.md +0 -61
  99. package/benchmarks/results/subgroup-smoke.json +0 -1094
  100. package/benchmarks/results/subgroup-smoke.md +0 -104
  101. package/benchmarks/results/webnn-smoke.json +0 -739
  102. package/benchmarks/results/webnn-smoke.md +0 -76
  103. package/scripts/inspect-model.mjs +0 -64
  104. package/tests/modelSpec.test.mjs +0 -128
  105. package/tests/resourceLifecycle.test.mjs +0 -383
  106. package/tests/tileScheduler.test.mjs +0 -90
@@ -1,7 +1,7 @@
1
1
  const defaultMinTileSize = 256;
2
- const defaultInitialTileSize = 384;
2
+ const defaultInitialTileSize = 432;
3
3
  const defaultTargetTileTimeMs = 16;
4
- const defaultAdjustmentStep = 128;
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 median(values) {
126
+ function percentile(values, fraction) {
16
127
  const sorted = [...values].sort((a, b) => a - b);
17
- const middle = Math.floor(sorted.length / 2);
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
- const observedTime = median(validTimes);
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 (observedTime > this.targetTileTimeMs * 1.25) {
184
+ if (this._smoothedTileTimeMs > this.targetTileTimeMs * 1.25) {
64
185
  nextTileSize -= this._adjustmentStep;
65
186
  }
66
- else if (observedTime < this.targetTileTimeMs * 0.65) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"tileScheduler.js","sourceRoot":"","sources":["../src/tileScheduler.ts"],"names":[],"mappings":"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"}
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.4.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"