@richardmcquiston01/ai-tools 0.2.0 → 0.3.1

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 CHANGED
@@ -25,6 +25,7 @@ import {
25
25
  // Pass a URL, ArrayBuffer or Uint8Array of the bundled `models/u2netp.onnx`.
26
26
  const bg = await loadBackgroundRemovalModel("/models/u2netp.onnx", {
27
27
  wasmPaths: "/ort/", // where ort-wasm*.wasm is served from (bundlers like Vite need this)
28
+ // executionProviders: ["wasm"], // the default; see the note below before adding "webgpu"
28
29
  });
29
30
  const cutout: ImageData = await bg.removeBackground(image);
30
31
 
@@ -36,6 +37,40 @@ const upscaler = await loadUpscaleModel(4);
36
37
  const bigger: ImageData = await upscaler.upscale(image);
37
38
  ```
38
39
 
40
+ Background removal runs on WebAssembly by default. onnxruntime-web's WebGPU
41
+ provider can't run U²-Net-P's MaxPool layers (it fails with "using ceil() in
42
+ shape computation is not yet supported for MaxPool" when the model runs, not
43
+ when the session is created), so `"webgpu"` is opt-in through
44
+ `executionProviders`. If a run fails on WebGPU the model rebuilds its session
45
+ on WebAssembly and retries that run once.
46
+
47
+ ## Entry points
48
+
49
+ TensorFlow.js and ONNX Runtime are large, and most apps need only one of them. Import from the entry point you need so a bundler never has to include the rest:
50
+
51
+ | Import | Brings | Heavy dependency |
52
+ | ------------------------------------------------- | ----------------------------------- | --------------------------- |
53
+ | `@richardmcquiston01/ai-tools/background-removal` | `loadBackgroundRemovalModel` | ONNX Runtime Web |
54
+ | `@richardmcquiston01/ai-tools/auto-crop` | `computeCropRegion` | none |
55
+ | `@richardmcquiston01/ai-tools/upscale` | `loadUpscaleModel` | TensorFlow.js, the upscaler |
56
+ | `@richardmcquiston01/ai-tools/provider` | `OnnxBackgroundRemover` (see below) | none until the model loads |
57
+ | `@richardmcquiston01/ai-tools` | all of the above except `provider` | everything |
58
+
59
+ The main entry keeps working as before; the others are for apps that care about size. `computeCropRegion` is plain maths, so auto-crop's region helper never needs a model runtime (running the model for the saliency mask still does: that is `background-removal`).
60
+
61
+ ## The model file
62
+
63
+ The U²-Net model is exported, so a bundler can emit it for you and you can drop any copy step. With Vite:
64
+
65
+ ```ts
66
+ import modelUrl from "@richardmcquiston01/ai-tools/models/u2netp.onnx?url";
67
+ import { loadBackgroundRemovalModel } from "@richardmcquiston01/ai-tools/background-removal";
68
+
69
+ const model = await loadBackgroundRemovalModel(modelUrl);
70
+ ```
71
+
72
+ In Node, `import.meta.resolve("@richardmcquiston01/ai-tools/models/u2netp.onnx")` gives its location. The licence and attribution files in `models/` are exported the same way.
73
+
39
74
  ## As an `ImageGenerator` (optional)
40
75
 
41
76
  `@richardmcquiston01/ai-tools/provider` wraps background removal as an `ImageGenerator` from [`@richardmcquiston01/ai-providers`](https://www.npmjs.com/package/@richardmcquiston01/ai-providers), so an app can offer it next to other providers (a local ComfyUI, a hosted API) and swap between them through one interface. `ai-providers` is an optional peer dependency: install it only if you use this entry point.
@@ -70,7 +105,7 @@ else console.error(result.error); // names the provider and what failed
70
105
 
71
106
  ## Model files and offline use
72
107
 
73
- - **Background removal:** the package ships `models/u2netp.onnx` (about 4.5 MB). Serve or import it yourself and pass it to `loadBackgroundRemovalModel`; nothing is fetched on your behalf.
108
+ - **Background removal:** the package ships `models/u2netp.onnx` (about 4.5 MB) and exports it (see above). Serve or import it and pass it to `loadBackgroundRemovalModel`; nothing is fetched on your behalf.
74
109
  - **Upscaling:** by default the model definitions load their weights from a public CDN mirror of `@upscalerjs/esrgan-slim`. For a self-contained deployment, serve that package's `models/<scale>x/` directory and pass the resolved `model.json` URL as `modelUrl`.
75
110
  - **Size:** TensorFlow.js and ONNX Runtime are large. Load this package lazily (`await import(...)`) rather than in your main bundle.
76
111
 
@@ -7,7 +7,21 @@ export interface LoadBackgroundRemovalModelOptions {
7
7
  * copied. If omitted, onnxruntime-web's own default resolution is used.
8
8
  */
9
9
  wasmPaths?: string;
10
+ /**
11
+ * onnxruntime-web execution providers to try, in order. Defaults to
12
+ * `["wasm"]` (the CPU/WebAssembly backend), which runs this model correctly
13
+ * everywhere and takes well under a second at 320x320.
14
+ *
15
+ * `"webgpu"` is opt-in because U2NETP's MaxPool layers use ceil mode, which
16
+ * onnxruntime-web's WebGPU provider rejects when the model *runs* ("using
17
+ * ceil() in shape computation is not yet supported for MaxPool"), not when
18
+ * the session is created, so listing it first can't fall back by itself.
19
+ * If you do opt in and a run fails on WebGPU, the model rebuilds its session
20
+ * on WebAssembly and retries that run once.
21
+ */
22
+ executionProviders?: readonly ExecutionProvider[];
10
23
  }
24
+ export type ExecutionProvider = "webgpu" | "wasm";
11
25
  export interface SaliencyMask {
12
26
  /** Row-major foreground-probability values in [0, 1], one per pixel of the source image. */
13
27
  values: Float32Array;
@@ -1 +1 @@
1
- {"version":3,"file":"background-removal.d.ts","sourceRoot":"","sources":["../src/background-removal.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,4FAA4F;IAC5F,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9D;AAoED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,EACxC,OAAO,CAAC,EAAE,iCAAiC,GAC1C,OAAO,CAAC,sBAAsB,CAAC,CAoDjC"}
1
+ {"version":3,"file":"background-removal.d.ts","sourceRoot":"","sources":["../src/background-removal.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACnD;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,4FAA4F;IAC5F,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9D;AAgED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,EACxC,OAAO,CAAC,EAAE,iCAAiC,GAC1C,OAAO,CAAC,sBAAsB,CAAC,CAiEjC"}
@@ -66,17 +66,16 @@ function upsampleMask(mask, width, height) {
66
66
  }
67
67
  return result;
68
68
  }
69
- function supportsWebGpu() {
70
- return typeof navigator !== "undefined" && "gpu" in navigator && navigator.gpu != null;
71
- }
72
69
  export async function loadBackgroundRemovalModel(model, options) {
73
70
  if (options?.wasmPaths !== undefined) {
74
71
  ort.env.wasm.wasmPaths = options.wasmPaths;
75
72
  }
76
- const executionProviders = supportsWebGpu() ? ["webgpu", "wasm"] : ["wasm"];
77
- const session = typeof model === "string"
78
- ? await ort.InferenceSession.create(model, { executionProviders })
79
- : await ort.InferenceSession.create(model instanceof Uint8Array ? model : new Uint8Array(model), { executionProviders });
73
+ const source = typeof model === "string" || model instanceof Uint8Array ? model : new Uint8Array(model);
74
+ const createSession = (executionProviders) => typeof source === "string"
75
+ ? ort.InferenceSession.create(source, { executionProviders: [...executionProviders] })
76
+ : ort.InferenceSession.create(source, { executionProviders: [...executionProviders] });
77
+ let providers = options?.executionProviders ?? ["wasm"];
78
+ let session = await createSession(providers);
80
79
  const rawInputName = session.inputNames[0];
81
80
  const rawOutputName = session.outputNames[0];
82
81
  if (!rawInputName || !rawOutputName) {
@@ -84,9 +83,22 @@ export async function loadBackgroundRemovalModel(model, options) {
84
83
  }
85
84
  const inputName = rawInputName;
86
85
  const outputName = rawOutputName;
86
+ /** Runs the model; a failure on WebGPU rebuilds the session on WebAssembly and retries once. */
87
+ async function runModel(feeds) {
88
+ try {
89
+ return await session.run(feeds);
90
+ }
91
+ catch (cause) {
92
+ if (!providers.includes("webgpu"))
93
+ throw cause;
94
+ providers = ["wasm"];
95
+ session = await createSession(providers);
96
+ return session.run(feeds);
97
+ }
98
+ }
87
99
  async function computeSaliencyMask(image) {
88
100
  const tensor = preprocess(image);
89
- const results = await session.run({ [inputName]: tensor });
101
+ const results = await runModel({ [inputName]: tensor });
90
102
  const output = results[outputName];
91
103
  if (!output) {
92
104
  throw new Error(`Background removal model did not produce output "${outputName}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"background-removal.js","sourceRoot":"","sources":["../src/background-removal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"background-removal.js","sourceRoot":"","sources":["../src/background-removal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@richardmcquiston01/ai-tools",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "In-browser AI image tools (background removal, upscaling, auto-crop) for laser/CNC/maker workflows",
5
5
  "keywords": [
6
6
  "background-removal",
@@ -33,10 +33,23 @@
33
33
  "types": "./dist/index.d.ts",
34
34
  "default": "./dist/index.js"
35
35
  },
36
+ "./background-removal": {
37
+ "types": "./dist/background-removal.d.ts",
38
+ "default": "./dist/background-removal.js"
39
+ },
40
+ "./upscale": {
41
+ "types": "./dist/upscale.d.ts",
42
+ "default": "./dist/upscale.js"
43
+ },
44
+ "./auto-crop": {
45
+ "types": "./dist/auto-crop.d.ts",
46
+ "default": "./dist/auto-crop.js"
47
+ },
36
48
  "./provider": {
37
49
  "types": "./dist/provider.d.ts",
38
50
  "default": "./dist/provider.js"
39
- }
51
+ },
52
+ "./models/*": "./models/*"
40
53
  },
41
54
  "files": [
42
55
  "dist",
@@ -53,7 +66,7 @@
53
66
  "typecheck": "tsc -p tsconfig.json --noEmit"
54
67
  },
55
68
  "dependencies": {
56
- "@richardmcquiston01/core-image": "0.2.0",
69
+ "@richardmcquiston01/core-image": "0.3.1",
57
70
  "@tensorflow/tfjs": "4.11.0",
58
71
  "@upscalerjs/esrgan-slim": "1.0.0",
59
72
  "onnxruntime-web": "1.27.0",
@@ -61,6 +74,7 @@
61
74
  },
62
75
  "devDependencies": {
63
76
  "@richardmcquiston01/ai-providers": "^0.1.0",
77
+ "esbuild": "^0.25.12",
64
78
  "jsdom": "^25.0.1",
65
79
  "typescript": "^5.7.3",
66
80
  "vitest": "^3.0.4"
@@ -72,5 +86,6 @@
72
86
  "@richardmcquiston01/ai-providers": {
73
87
  "optional": true
74
88
  }
75
- }
89
+ },
90
+ "sideEffects": false
76
91
  }