@mauriciobenjamin700/ort-vision-sdk-web 0.7.0 → 0.8.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 CHANGED
@@ -7,6 +7,124 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.8.0] - 2026-09-04
11
+
12
+ ### Changed
13
+
14
+ - **`Classifier` no longer applies a second softmax to a probability vector.**
15
+ `applySoftmax` defaulted to `true`, but every Ultralytics classification export
16
+ ends in a `Softmax` node, so the task was softmaxing an already-normalized
17
+ vector. It is monotonic, which is why it survived: top-1 is unchanged and every
18
+ confidence attached to it is wrong. Measured in the Python SDK against
19
+ Ultralytics' own pipeline over the same file, the maximum absolute probability
20
+ error went from `7.6e-07` to `0.82`.
21
+
22
+ It now defaults to undefined, which reads the model's metadata and answers
23
+ `false` for that family; passing a boolean still overrides.
24
+ `classifier.appliesSoftmax` reports the choice.
25
+
26
+ - **`Classifier` picks its normalization from the model.** The default was the
27
+ ImageNet mean and deviation for everybody, which is right for a
28
+ torchvision-style model and wrong for an Ultralytics one — its classification
29
+ head consumes raw `[0, 1]`. Loading a `YOLO(...).export(format="onnx")`
30
+ classifier with the old default fed it a tensor it never saw in training, and
31
+ nothing said so: no exception, no warning, a prediction of exactly the right
32
+ shape that is simply worse.
33
+
34
+ The answer was already in the file — every Ultralytics export stamps
35
+ `author: Ultralytics` and `task: classify` into its metadata, the same block
36
+ the class names already came from. The new `normalization` option defaults to
37
+ `"auto"`, which reads it and picks: `"ultralytics"` (identity) for that export,
38
+ `"imagenet"` for anything else. `"imagenet"`, `"ultralytics"` and `"none"` name
39
+ the presets explicitly, `mean`/`std` still override, and passing both throws
40
+ `RangeError` rather than silently preferring one. Supplying only one of
41
+ `mean`/`std` now leaves the other at the preset value.
42
+ `classifier.normalization` reports what is in effect.
43
+
44
+ **This changes what an Ultralytics classifier is fed when loaded with the
45
+ defaults.** Those models were being run degraded, so the change corrects them
46
+ rather than breaking them.
47
+
48
+ Mirrors the same change in `ort-vision-sdk` 0.9.0 (Python), including the
49
+ build-time `fuse_detect_classify`.
50
+
51
+ ### Fixed
52
+
53
+ - **A session asking only for `webgpu` on a device without it now runs, instead
54
+ of failing to load.** Capability detection can rule out every requested
55
+ provider, and handing ORT the unsatisfiable list makes `InferenceSession.create`
56
+ reject with `no available backend found` — the page gets no inference at all
57
+ rather than the slow-but-working fallback. The effective list now floors at
58
+ `wasm`, which ORT-Web can always run, and the warning names it instead of
59
+ claiming the session will run on `[]`. Found in a real Chromium, where
60
+ `navigator.gpu` exists but yields no adapter; no amount of stubbed
61
+ `navigator` in the unit tests reproduced it.
62
+
63
+ - **`OrtSession.providers` no longer names a provider this browser cannot run.**
64
+ It held the result of `resolveProviders(...)` — the list that was *asked for* —
65
+ and ORT-Web falls back in silence, so a page requesting `webgpu` on a device
66
+ without it ran on WASM several times slower with nothing in the console.
67
+
68
+ ORT-Web exposes no equivalent of Node's `getProviders()`, so the effective
69
+ provider cannot be read back. What the browser does answer is whether the
70
+ underlying API exists at all, and the new `detectProviders` uses that:
71
+ `webgpu` survives only where `navigator.gpu` returns an adapter, `webnn` only
72
+ where `navigator.ml` exists, and anything untestable is kept rather than
73
+ guessed away. `providers` now reports that narrowed list — best-effort, so an
74
+ entry means "not ruled out", not "confirmed" — and the requested list is
75
+ preserved as the new `requestedProviders`. Naming a provider explicitly and
76
+ not getting it emits a `console.warn`; the default list falling back stays
77
+ quiet, which is what it is for.
78
+
79
+ Mirrors the same fix in `ort-vision-sdk` 0.9.0 (Python), where ORT does report
80
+ the effective list and it is read back directly.
81
+
82
+ - **The changelog's link table is no longer stuck at 0.7.0.** `[Unreleased]`
83
+ compared against `web-v0.7.0`, so the shipped 0.7.1 read as unreleased work,
84
+ and `[0.7.1]` had no link definition at all — it rendered as literal text.
85
+
86
+ ### Documentation
87
+
88
+ - **`OUTPUT_BOXES` states which box a fused pipeline reports.** A file fused by
89
+ `ort-vision-sdk` 0.9.0 or later reports the box that was actually classified,
90
+ clamped to the image the crop came from; older files report the raw box, which
91
+ draws a rectangle wider than the region the classifier saw. No runtime change
92
+ on this side — the semantics live in the graph — but consumers drawing that
93
+ rectangle need to know which file they have.
94
+
95
+ ## [0.7.1] - 2026-08-14
96
+
97
+ ### Fixed
98
+
99
+ - **A pipeline buffer that a consumer transferred away is replaced instead of
100
+ written into.** `LetterboxPipeline` and `ResizePipeline` hold one
101
+ `Float32Array` and hand the same one out every call, which is the whole point
102
+ of them — but `ort.env.wasm.proxy` (ONNX Runtime in a worker) posts the input
103
+ tensors with their `ArrayBuffer`s in the transfer list, and that **detaches**
104
+ them on this side. A detached `Float32Array` is silently `0` long: the writes
105
+ land nowhere and the next `InferenceSession.run` rejects with
106
+
107
+ ```text
108
+ Tensor's size(1228800) does not match data length(0).
109
+ ```
110
+
111
+ on every other call — the detached buffer throws, the throw leaves the claim
112
+ outstanding, so the call after it allocates a fresh array and succeeds.
113
+ Measured in Chromium against a 640×640 YOLO detector: run 1 ok (195 ms), run 2
114
+ rejected, run 3 ok (206 ms).
115
+
116
+ The buffer holder now treats a length that no longer matches the target as
117
+ spent and allocates a replacement, so the cost is one allocation per transfer
118
+ instead of a failure every second inference — and reuse still holds for every
119
+ consumer that copies the tensor rather than transferring it. Nothing about the
120
+ public shape changed: `run()` still reports `reused: true` when the returned
121
+ data is the pipeline's own buffer.
122
+
123
+ Without this, `env.wasm.proxy` is unusable with the built-in tasks, and that
124
+ flag is the only way to keep inference off the browser's main thread — measured
125
+ at 805 ms of frozen UI for one warm-up on a 32-core desktop, against 18 ms with
126
+ the worker.
127
+
10
128
  ## [0.7.0] - 2026-08-08
11
129
 
12
130
  ### Added
@@ -502,7 +620,9 @@ console.log(r.boxes.xyxy, r.boxes.cls, r.boxes.conf, r.names);
502
620
  - Execution-provider resolution defaulting to `["webgpu", "wasm"]`.
503
621
  - Public types mirroring the Python SDK: `BoundingBox`, `ClassProbability`, `ClassificationResult`, `DetectionResult`, `RGBImage`.
504
622
 
505
- [Unreleased]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.7.0...HEAD
623
+ [Unreleased]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.8.0...HEAD
624
+ [0.8.0]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.7.1...web-v0.8.0
625
+ [0.7.1]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.7.0...web-v0.7.1
506
626
  [0.7.0]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.6.1...web-v0.7.0
507
627
  [0.6.1]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.6.0...web-v0.6.1
508
628
  [0.6.0]: https://github.com/mauriciobenjamin700/ort-vision-sdk/compare/web-v0.5.1...web-v0.6.0
@@ -12,10 +12,41 @@
12
12
  * automatically when WebGPU is not supported by the browser or device.
13
13
  */
14
14
  export declare const DEFAULT_PROVIDERS: readonly string[];
15
+ /**
16
+ * The provider ORT-Web can always run, whatever the device.
17
+ *
18
+ * Used as the floor when capability detection rules everything else out. Passing
19
+ * ORT a list it cannot satisfy is not a graceful failure — `InferenceSession.create`
20
+ * rejects with "no available backend found" and the page gets no inference at
21
+ * all, which is worse than the slow-but-working fallback the warning describes.
22
+ */
23
+ export declare const FALLBACK_PROVIDER = "wasm";
15
24
  /**
16
25
  * Resolve the execution providers to pass to `InferenceSession.create`.
17
26
  *
18
27
  * @param requested Explicit provider list in preference order; `undefined` returns the default.
19
28
  */
20
29
  export declare function resolveProviders(requested?: readonly string[]): string[];
30
+ /**
31
+ * Narrow a provider list to the ones this browser can actually offer.
32
+ *
33
+ * ORT-Web exposes no equivalent of Node's `session.getProviders()`, so there is
34
+ * no way to ask which provider a session ended up on. What the browser *does*
35
+ * answer is whether the underlying API exists at all — no `navigator.gpu`, or no
36
+ * adapter behind it, means `webgpu` was never going to run — and that covers the
37
+ * case that actually bites: a page asking for WebGPU on a device without it,
38
+ * silently getting WASM, and being several times slower than intended with no
39
+ * error to point at.
40
+ *
41
+ * This is best-effort by construction. A provider that survives here can still
42
+ * fail inside ORT for a reason the browser does not surface (a missing shader
43
+ * feature, an exhausted device), so a surviving entry means "not ruled out",
44
+ * not "confirmed running". Anything this function does not know how to test is
45
+ * kept rather than dropped: guessing a provider away would be worse than
46
+ * admitting ignorance about it.
47
+ *
48
+ * @param requested Providers in preference order, already resolved.
49
+ * @returns The subset that is not ruled out, in the same order.
50
+ */
51
+ export declare function detectProviders(requested: readonly string[]): Promise<string[]>;
21
52
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/core/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAuB,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQxE"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/core/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAuB,CAAC;AAEvE;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQxE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB"}
@@ -12,6 +12,15 @@
12
12
  * automatically when WebGPU is not supported by the browser or device.
13
13
  */
14
14
  export const DEFAULT_PROVIDERS = ["webgpu", "wasm"];
15
+ /**
16
+ * The provider ORT-Web can always run, whatever the device.
17
+ *
18
+ * Used as the floor when capability detection rules everything else out. Passing
19
+ * ORT a list it cannot satisfy is not a graceful failure — `InferenceSession.create`
20
+ * rejects with "no available backend found" and the page gets no inference at
21
+ * all, which is worse than the slow-but-working fallback the warning describes.
22
+ */
23
+ export const FALLBACK_PROVIDER = "wasm";
15
24
  /**
16
25
  * Resolve the execution providers to pass to `InferenceSession.create`.
17
26
  *
@@ -26,4 +35,59 @@ export function resolveProviders(requested) {
26
35
  }
27
36
  return [...requested];
28
37
  }
38
+ /**
39
+ * Narrow a provider list to the ones this browser can actually offer.
40
+ *
41
+ * ORT-Web exposes no equivalent of Node's `session.getProviders()`, so there is
42
+ * no way to ask which provider a session ended up on. What the browser *does*
43
+ * answer is whether the underlying API exists at all — no `navigator.gpu`, or no
44
+ * adapter behind it, means `webgpu` was never going to run — and that covers the
45
+ * case that actually bites: a page asking for WebGPU on a device without it,
46
+ * silently getting WASM, and being several times slower than intended with no
47
+ * error to point at.
48
+ *
49
+ * This is best-effort by construction. A provider that survives here can still
50
+ * fail inside ORT for a reason the browser does not surface (a missing shader
51
+ * feature, an exhausted device), so a surviving entry means "not ruled out",
52
+ * not "confirmed running". Anything this function does not know how to test is
53
+ * kept rather than dropped: guessing a provider away would be worse than
54
+ * admitting ignorance about it.
55
+ *
56
+ * @param requested Providers in preference order, already resolved.
57
+ * @returns The subset that is not ruled out, in the same order.
58
+ */
59
+ export async function detectProviders(requested) {
60
+ const webgpu = await hasWebGpuAdapter();
61
+ return requested.filter((provider) => {
62
+ switch (provider) {
63
+ case "webgpu":
64
+ return webgpu;
65
+ case "webnn":
66
+ return typeof navigator !== "undefined" && "ml" in navigator;
67
+ default:
68
+ return true;
69
+ }
70
+ });
71
+ }
72
+ /**
73
+ * Whether this environment exposes a WebGPU adapter.
74
+ *
75
+ * `navigator.gpu` existing is not enough — a browser can ship the API and still
76
+ * hand back no adapter (a blocklisted driver, a headless context, a machine with
77
+ * no suitable GPU), which is exactly the configuration where a page asks for
78
+ * WebGPU and quietly runs on WASM.
79
+ */
80
+ async function hasWebGpuAdapter() {
81
+ const gpu = globalThis.navigator
82
+ ?.gpu;
83
+ if (gpu === undefined) {
84
+ return false;
85
+ }
86
+ try {
87
+ return (await gpu.requestAdapter()) !== null;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
29
93
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/core/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC5D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/core/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC5D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,OAAO,SAAS,KAAK,WAAW,IAAI,IAAI,IAAI,SAAS,CAAC;YAC/D;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB;IAC7B,MAAM,GAAG,GAAI,UAAU,CAAC,SAA0E;QAChG,EAAE,GAAG,CAAC;IACR,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -6,7 +6,12 @@ import { type DeclaredShape } from "./graph.js";
6
6
  /** Anything `InferenceSession.create` accepts. */
7
7
  export type ModelSource = string | ArrayBufferLike | Uint8Array;
8
8
  export interface OrtSessionOptions {
9
- /** Execution providers in preference order. `undefined` uses {@link DEFAULT_PROVIDERS}. */
9
+ /**
10
+ * Execution providers in preference order. `undefined` uses {@link DEFAULT_PROVIDERS}.
11
+ *
12
+ * Naming one explicitly also opts into a `console.warn` when this browser
13
+ * cannot offer it, instead of falling back in silence.
14
+ */
10
15
  readonly providers?: readonly string[];
11
16
  /** Optional ORT session options forwarded to `InferenceSession.create`. */
12
17
  readonly sessionOptions?: ort.InferenceSession.SessionOptions;
@@ -38,8 +43,32 @@ export interface OrtSessionOptions {
38
43
  */
39
44
  export declare class OrtSession {
40
45
  private readonly _session;
46
+ /**
47
+ * Execution providers this session is expected to run on.
48
+ *
49
+ * The requested list narrowed to what this browser can actually offer — a
50
+ * `webgpu` entry survives only where an adapter exists. Best-effort: ORT-Web
51
+ * exposes no way to ask which provider a session ended up on, so an entry
52
+ * here means "not ruled out", not "confirmed". See
53
+ * {@link requestedProviders} for what was asked for.
54
+ *
55
+ * When nothing survives — a caller asking for `webgpu` alone on a device
56
+ * without it — this falls back to {@link FALLBACK_PROVIDER}, which ORT-Web
57
+ * can always run. Handing ORT the unsatisfiable list instead makes
58
+ * `InferenceSession.create` reject with "no available backend found", so the
59
+ * page gets no inference at all rather than the slow-but-working fallback
60
+ * the `console.warn` describes. Measured in a real Chromium, where
61
+ * `navigator.gpu` exists but yields no adapter.
62
+ */
41
63
  readonly providers: readonly string[];
42
64
  private readonly _metadata;
65
+ /**
66
+ * Execution providers that were asked for, after defaults were applied.
67
+ *
68
+ * Kept separate because ORT-Web falls back silently: a page that asks for
69
+ * `webgpu` on a device without it runs on WASM and is told nothing.
70
+ */
71
+ readonly requestedProviders: readonly string[];
43
72
  private constructor();
44
73
  /**
45
74
  * Load an ONNX model into an ORT inference session.
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,YAAY,CAAC;AAIpE,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,CAAC;AA+ChE,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC;IAC9D;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,SAAS,EAAE,SAAS,MAAM,EAAE;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH5B,OAAO;IAMP;;;;;;;;;;;;;;;;;OAiBG;WACU,MAAM,CACjB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAkCtB,yDAAyD;IACzD,IAAI,UAAU,IAAI,SAAS,MAAM,EAAE,CAElC;IAED,kDAAkD;IAClD,IAAI,SAAS,IAAI,MAAM,CAMtB;IAED,0DAA0D;IAC1D,IAAI,WAAW,IAAI,SAAS,MAAM,EAAE,CAEnC;IAED;;;;;;OAMG;IACH,IAAI,WAAW,IAAI,SAAS,aAAa,EAAE,CAM1C;IAED;;;;OAIG;IACH,IAAI,UAAU,IAAI,aAAa,CAE9B;IAED;;;;;OAKG;IACH,IAAI,YAAY,IAAI,SAAS,aAAa,EAAE,CAM3C;IAED;;;;OAIG;IACH,IAAI,WAAW,IAAI,aAAa,CAE/B;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE/C;IAED;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,wEAAwE;IACxE,IAAI,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAE9B;IAED;;;;;OAKG;IACG,GAAG,CACP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAWvC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,YAAY,CAAC;AAIpE,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,CAAC;AA+ChE,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC;IAC9D;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AA4BD;;;;;;GAMG;AACH,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB;;;;;;;;;;;;;;;;OAgBG;aACa,SAAS,EAAE,SAAS,MAAM,EAAE;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B;;;;;OAKG;aACa,kBAAkB,EAAE,SAAS,MAAM,EAAE;IA3BvD,OAAO;IA8BP;;;;;;;;;;;;;;;;;OAiBG;WACU,MAAM,CACjB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAuCtB,yDAAyD;IACzD,IAAI,UAAU,IAAI,SAAS,MAAM,EAAE,CAElC;IAED,kDAAkD;IAClD,IAAI,SAAS,IAAI,MAAM,CAMtB;IAED,0DAA0D;IAC1D,IAAI,WAAW,IAAI,SAAS,MAAM,EAAE,CAEnC;IAED;;;;;;OAMG;IACH,IAAI,WAAW,IAAI,SAAS,aAAa,EAAE,CAM1C;IAED;;;;OAIG;IACH,IAAI,UAAU,IAAI,aAAa,CAE9B;IAED;;;;;OAKG;IACH,IAAI,YAAY,IAAI,SAAS,aAAa,EAAE,CAM3C;IAED;;;;OAIG;IACH,IAAI,WAAW,IAAI,aAAa,CAE/B;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE/C;IAED;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,wEAAwE;IACxE,IAAI,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAE9B;IAED;;;;;OAKG;IACG,GAAG,CACP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAWvC"}
@@ -5,7 +5,7 @@ import * as ortRuntime from "onnxruntime-web";
5
5
  import { InferenceError, ModelLoadError } from "./exceptions.js";
6
6
  import { declaredShapesFrom } from "./graph.js";
7
7
  import { readModelMetadata } from "./metadata.js";
8
- import { resolveProviders } from "./providers.js";
8
+ import { FALLBACK_PROVIDER, detectProviders, resolveProviders } from "./providers.js";
9
9
  /**
10
10
  * Fetch a model URL as bytes so its metadata can be read.
11
11
  *
@@ -48,6 +48,26 @@ function warnMetadataUnavailable(url, reason) {
48
48
  "class names are unavailable, so labels fall back to class_0, class_1, ... " +
49
49
  "Pass `labels` explicitly to name them.");
50
50
  }
51
+ /**
52
+ * Warn when a provider named explicitly by the caller is not going to run.
53
+ *
54
+ * Only explicit requests are worth a warning. The default list exists precisely
55
+ * so that falling from `webgpu` to `wasm` is the expected outcome — but a caller
56
+ * who wrote `providers: ["webgpu"]` and lands on WASM has a page several times
57
+ * slower than intended and nothing in the console to explain it.
58
+ *
59
+ * @param requested Providers that were asked for.
60
+ * @param effective Providers that survived capability detection.
61
+ */
62
+ function warnOnDroppedProviders(requested, effective) {
63
+ const dropped = requested.filter((provider) => !effective.includes(provider));
64
+ if (dropped.length === 0) {
65
+ return;
66
+ }
67
+ console.warn(`This browser cannot offer the requested execution provider(s) ${JSON.stringify(dropped)}; ` +
68
+ `the session will run on ${JSON.stringify(effective)}. Inference still produces correct ` +
69
+ "results, on the fallback provider.");
70
+ }
51
71
  /**
52
72
  * Wrap an ONNX Runtime Web `InferenceSession` with convenient metadata access.
53
73
  *
@@ -59,10 +79,37 @@ export class OrtSession {
59
79
  _session;
60
80
  providers;
61
81
  _metadata;
62
- constructor(_session, providers, _metadata) {
82
+ requestedProviders;
83
+ constructor(_session,
84
+ /**
85
+ * Execution providers this session is expected to run on.
86
+ *
87
+ * The requested list narrowed to what this browser can actually offer — a
88
+ * `webgpu` entry survives only where an adapter exists. Best-effort: ORT-Web
89
+ * exposes no way to ask which provider a session ended up on, so an entry
90
+ * here means "not ruled out", not "confirmed". See
91
+ * {@link requestedProviders} for what was asked for.
92
+ *
93
+ * When nothing survives — a caller asking for `webgpu` alone on a device
94
+ * without it — this falls back to {@link FALLBACK_PROVIDER}, which ORT-Web
95
+ * can always run. Handing ORT the unsatisfiable list instead makes
96
+ * `InferenceSession.create` reject with "no available backend found", so the
97
+ * page gets no inference at all rather than the slow-but-working fallback
98
+ * the `console.warn` describes. Measured in a real Chromium, where
99
+ * `navigator.gpu` exists but yields no adapter.
100
+ */
101
+ providers, _metadata,
102
+ /**
103
+ * Execution providers that were asked for, after defaults were applied.
104
+ *
105
+ * Kept separate because ORT-Web falls back silently: a page that asks for
106
+ * `webgpu` on a device without it runs on WASM and is told nothing.
107
+ */
108
+ requestedProviders) {
63
109
  this._session = _session;
64
110
  this.providers = providers;
65
111
  this._metadata = _metadata;
112
+ this.requestedProviders = requestedProviders;
66
113
  }
67
114
  /**
68
115
  * Load an ONNX model into an ORT inference session.
@@ -83,7 +130,12 @@ export class OrtSession {
83
130
  * @throws {@link ModelLoadError} if the model cannot be loaded.
84
131
  */
85
132
  static async create(model, options = {}) {
86
- const providers = resolveProviders(options.providers);
133
+ const requested = resolveProviders(options.providers);
134
+ const detected = await detectProviders(requested);
135
+ const providers = detected.length > 0 ? detected : [FALLBACK_PROVIDER];
136
+ if (options.providers !== undefined && options.providers.length > 0) {
137
+ warnOnDroppedProviders(requested, providers);
138
+ }
87
139
  const sessionOptions = {
88
140
  ...(options.sessionOptions ?? {}),
89
141
  executionProviders: providers,
@@ -106,7 +158,7 @@ export class OrtSession {
106
158
  catch (err) {
107
159
  throw new ModelLoadError(`Failed to load ONNX model: ${err.message}`, { cause: err });
108
160
  }
109
- return new OrtSession(session, providers, metadata);
161
+ return new OrtSession(session, providers, metadata, requested);
110
162
  }
111
163
  /** Names of the model's inputs, in declaration order. */
112
164
  get inputNames() {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAsB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKlD;;;;;;;;;GASG;AACH,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/E,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uBAAuB,CAAC,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,GAAW,EAAE,MAAc;IAC1D,OAAO,CAAC,IAAI,CACV,yCAAyC,GAAG,0BAA0B,MAAM,KAAK;QAC/E,8EAA8E;QAC9E,4EAA4E;QAC5E,wCAAwC,CAC3C,CAAC;AACJ,CAAC;AA2BD;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IAEF;IACD;IACC;IAHnB,YACmB,QAA8B,EAC/B,SAA4B,EAC3B,SAA2C;QAF3C,aAAQ,GAAR,QAAQ,CAAsB;QAC/B,cAAS,GAAT,SAAS,CAAmB;QAC3B,cAAS,GAAT,SAAS,CAAkC;IAC3D,CAAC;IAEJ;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,KAAkB,EAClB,UAA6B,EAAE;QAE/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,cAAc,GAAwC;YAC1D,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;YACjC,kBAAkB,EAAE,SAAsE;SAC3F,CAAC;QACF,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC;QACrD,MAAM,MAAM,GACV,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/E,MAAM,QAAQ,GACZ,aAAa,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/E,IAAI,OAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC7E,CAAC;iBAAM,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;gBACxC,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAChD,MAAqB,EACrB,cAAc,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CACtB,8BAA+B,GAAa,CAAC,OAAO,EAAE,EACtD,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,yDAAyD;IACzD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,kDAAkD;IAClD,IAAI,SAAS;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0DAA0D;IAC1D,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,WAAW;QACb,OAAO,kBAAkB,CACvB,IAAI,CAAC,QAAQ,CAAC,aAED,CACd,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,IAAI,YAAY;QACd,OAAO,kBAAkB,CACvB,IAAI,CAAC,QAAQ,CAAC,cAED,CACd,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,wEAAwE;IACxE,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CACP,KAAiC;QAEjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,MAAoC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CACtB,qBAAsB,GAAa,CAAC,OAAO,EAAE,EAC7C,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
package/dist/fusion.d.ts CHANGED
@@ -46,7 +46,14 @@ export declare const INPUT_SOURCE = "source_image";
46
46
  export declare const INPUT_SCALE = "letterbox_scale";
47
47
  /** Name of the `[2]` float32 `[padLeft, padTop]`. Only with `cropSource === "original"`. */
48
48
  export declare const INPUT_PAD = "letterbox_pad";
49
- /** Name of the `[K, 4]` float32 xyxy output, in **letterboxed** input pixels. */
49
+ /**
50
+ * Name of the `[K, 4]` float32 xyxy output, in **letterboxed** input pixels.
51
+ *
52
+ * A file fused by `ort-vision-sdk` 0.9.0 or later reports the box that was
53
+ * actually classified: clamped to the image the crop came from, exactly as
54
+ * RoiAlign received it. Older files report the raw box, so one that ran off the
55
+ * frame draws a rectangle wider than the region the classifier saw.
56
+ */
50
57
  export declare const OUTPUT_BOXES = "boxes";
51
58
  /** Name of the `[K]` float32 detection-confidence output. */
52
59
  export declare const OUTPUT_SCORES = "scores";
@@ -1 +1 @@
1
- {"version":3,"file":"fusion.d.ts","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAEvD,+EAA+E;AAC/E,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAE7D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,gGAAgG;AAChG,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,wFAAwF;AACxF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,+FAA+F;AAC/F,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,4FAA4F;AAC5F,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC,iFAAiF;AACjF,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,6DAA6D;AAC7D,eAAO,MAAM,aAAa,WAAW,CAAC;AAEtC,qDAAqD;AACrD,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD,0FAA0F;AAC1F,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACjD,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnD,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AA8CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GACrD,UAAU,GAAG,IAAI,CAmCnB"}
1
+ {"version":3,"file":"fusion.d.ts","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAEvD,+EAA+E;AAC/E,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAE7D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,gGAAgG;AAChG,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,wFAAwF;AACxF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,+FAA+F;AAC/F,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,4FAA4F;AAC5F,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,6DAA6D;AAC7D,eAAO,MAAM,aAAa,WAAW,CAAC;AAEtC,qDAAqD;AACrD,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD,0FAA0F;AAC1F,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACjD,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnD,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AA8CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GACrD,UAAU,GAAG,IAAI,CAmCnB"}
package/dist/fusion.js CHANGED
@@ -36,7 +36,14 @@ export const INPUT_SOURCE = "source_image";
36
36
  export const INPUT_SCALE = "letterbox_scale";
37
37
  /** Name of the `[2]` float32 `[padLeft, padTop]`. Only with `cropSource === "original"`. */
38
38
  export const INPUT_PAD = "letterbox_pad";
39
- /** Name of the `[K, 4]` float32 xyxy output, in **letterboxed** input pixels. */
39
+ /**
40
+ * Name of the `[K, 4]` float32 xyxy output, in **letterboxed** input pixels.
41
+ *
42
+ * A file fused by `ort-vision-sdk` 0.9.0 or later reports the box that was
43
+ * actually classified: clamped to the image the crop came from, exactly as
44
+ * RoiAlign received it. Older files report the raw box, so one that ran off the
45
+ * frame draws a rectangle wider than the region the classifier saw.
46
+ */
40
47
  export const OUTPUT_BOXES = "boxes";
41
48
  /** Name of the `[K]` float32 detection-confidence output. */
42
49
  export const OUTPUT_SCORES = "scores";
@@ -1 +1 @@
1
- {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fusion.js","sourceRoot":"","sources":["../src/fusion.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,8 +9,9 @@ export { FusionError, ImageLoadError, InferenceError, LabelMapError, ModelLoadEr
9
9
  export { type ModelSource, type OrtSessionOptions, OrtSession, } from "./core/session.js";
10
10
  export { type DeclaredDim, type DeclaredShape, type ResolveInputSizeOptions, classificationNumClasses, declaredShapesFrom, detectionNumClasses, resolveInputSize, spatialInputSize, } from "./core/graph.js";
11
11
  export { modelNames, parseNames, readModelMetadata } from "./core/metadata.js";
12
- export { DEFAULT_PROVIDERS, resolveProviders } from "./core/providers.js";
12
+ export { DEFAULT_PROVIDERS, detectProviders, resolveProviders } from "./core/providers.js";
13
13
  export { type Speed, SpeedTimer } from "./core/timing.js";
14
+ export { CUSTOM_NORMALIZATION, IDENTITY_MEAN, IDENTITY_STD, IMAGENET_MEAN, IMAGENET_STD, type Normalization, type ResolvedNormalization, isUltralyticsClassifier, resolveNormalization, } from "./normalization.js";
14
15
  export { type ImageInput, loadImage } from "./io/image.js";
15
16
  export { FUSION_KIND_DETECT_CLASSIFY, INPUT_IMAGE, INPUT_PAD, INPUT_SCALE, INPUT_SOURCE, METADATA_PREFIX, OUTPUT_BOXES, OUTPUT_CLASSES, OUTPUT_NUM_DETECTIONS, OUTPUT_PROBS, OUTPUT_SCORES, type CropSource, type FusionSpec, readFusionSpec, } from "./fusion.js";
16
17
  export { type LetterboxResult, fromCv2, letterbox, normalize, resize, toCHW, toCv2, toFloat32, toFloat32Tensor, toTensor, } from "./preprocess/image.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,8 +9,9 @@ export { FusionError, ImageLoadError, InferenceError, LabelMapError, ModelLoadEr
9
9
  export { OrtSession, } from "./core/session.js";
10
10
  export { classificationNumClasses, declaredShapesFrom, detectionNumClasses, resolveInputSize, spatialInputSize, } from "./core/graph.js";
11
11
  export { modelNames, parseNames, readModelMetadata } from "./core/metadata.js";
12
- export { DEFAULT_PROVIDERS, resolveProviders } from "./core/providers.js";
12
+ export { DEFAULT_PROVIDERS, detectProviders, resolveProviders } from "./core/providers.js";
13
13
  export { SpeedTimer } from "./core/timing.js";
14
+ export { CUSTOM_NORMALIZATION, IDENTITY_MEAN, IDENTITY_STD, IMAGENET_MEAN, IMAGENET_STD, isUltralyticsClassifier, resolveNormalization, } from "./normalization.js";
14
15
  export { loadImage } from "./io/image.js";
15
16
  export { FUSION_KIND_DETECT_CLASSIFY, INPUT_IMAGE, INPUT_PAD, INPUT_SCALE, INPUT_SOURCE, METADATA_PREFIX, OUTPUT_BOXES, OUTPUT_CLASSES, OUTPUT_NUM_DETECTIONS, OUTPUT_PROBS, OUTPUT_SCORES, readFusionSpec, } from "./fusion.js";
16
17
  export { fromCv2, letterbox, normalize, resize, toCHW, toCv2, toFloat32, toFloat32Tensor, toTensor, } from "./preprocess/image.js";
@@ -23,5 +24,5 @@ export { Classifier, } from "./tasks/classifier.js";
23
24
  export { DetectClassify, } from "./tasks/detectClassify.js";
24
25
  export { Detector, } from "./tasks/detector.js";
25
26
  export { Segmenter, } from "./tasks/segmenter.js";
26
- export const VERSION = "0.7.0";
27
+ export const VERSION = "0.8.0";
27
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,GAKT,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,EACL,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EAGZ,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAmB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EACL,2BAA2B,EAC3B,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,aAAa,EAGb,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAGL,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,OAAO,EACP,IAAI,GACL,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAKL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,GAAG,GACJ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,aAAa,GACd,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAGL,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,OAAO,GAAW,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,GAKT,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,EACL,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EAGZ,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAc,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EAGZ,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAmB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EACL,2BAA2B,EAC3B,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,aAAa,EAGb,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,EACT,eAAe,EACf,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAGL,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,OAAO,EACP,IAAI,GACL,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAKL,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,GAAG,GACJ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,aAAa,GACd,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAGL,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,OAAO,GAAW,OAAO,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Which preprocessing a classifier expects its input to have had.
3
+ *
4
+ * A classifier is trained on a specific tensor, and feeding it a differently
5
+ * prepared one degrades it silently — no exception, no warning, just worse
6
+ * predictions. The two families this SDK sees most disagree completely:
7
+ * torchvision-style models want the ImageNet mean and deviation subtracted and
8
+ * divided out, while an Ultralytics classification head consumes raw `[0, 1]`.
9
+ *
10
+ * Guessing wrong is not detectable from the outside, but it is not a guess: an
11
+ * Ultralytics export stamps `author` and `task` into its own metadata, and every
12
+ * task in this SDK already reads that map for the class names.
13
+ *
14
+ * Mirrors `ort_vision_sdk.normalization` in the Python SDK; the two must agree,
15
+ * because the same model file is driven by both.
16
+ */
17
+ /**
18
+ * Which preprocessing the classifier expects its input to have had.
19
+ *
20
+ * - `"auto"` (the default wherever it is accepted) reads the model's own export
21
+ * metadata and picks. An Ultralytics classification head gets
22
+ * `"ultralytics"`; anything else gets `"imagenet"`.
23
+ * - `"imagenet"` subtracts the ImageNet mean and divides by the ImageNet
24
+ * deviation — the torchvision convention.
25
+ * - `"ultralytics"` leaves the image in `[0, 1]`. Ultralytics' own classifier
26
+ * applies no mean/std at all, so anything else feeds it images it never saw
27
+ * in training.
28
+ * - `"none"` is the same arithmetic as `"ultralytics"` — identity — under a
29
+ * name that says "this model wants raw `[0, 1]`" rather than naming a vendor.
30
+ */
31
+ export type Normalization = "auto" | "imagenet" | "ultralytics" | "none";
32
+ /** Per-channel RGB mean of ImageNet, the torchvision preprocessing convention. */
33
+ export declare const IMAGENET_MEAN: readonly [number, number, number];
34
+ /** Per-channel RGB standard deviation of ImageNet. */
35
+ export declare const IMAGENET_STD: readonly [number, number, number];
36
+ /** Mean that leaves an image untouched — what an Ultralytics classifier expects. */
37
+ export declare const IDENTITY_MEAN: readonly [number, number, number];
38
+ /** Deviation that leaves an image untouched — what an Ultralytics classifier expects. */
39
+ export declare const IDENTITY_STD: readonly [number, number, number];
40
+ /** Name reported when the caller supplied `mean`/`std` directly. */
41
+ export declare const CUSTOM_NORMALIZATION = "custom";
42
+ /** What {@link resolveNormalization} settled on. */
43
+ export interface ResolvedNormalization {
44
+ /** The preset name, or `"custom"` when the caller supplied the values. */
45
+ readonly name: string;
46
+ /** Per-channel mean to subtract. */
47
+ readonly mean: readonly [number, number, number];
48
+ /** Per-channel deviation to divide by. */
49
+ readonly std: readonly [number, number, number];
50
+ }
51
+ /**
52
+ * Whether a metadata map came out of `YOLO(...).export(format="onnx")`.
53
+ *
54
+ * Every Ultralytics export stamps `author` and `task` into its metadata, and the
55
+ * pair is unambiguous: `"Ultralytics"` plus `"classify"` is a classification head
56
+ * from that codebase and nothing else.
57
+ *
58
+ * @param metadata The model's custom metadata map.
59
+ */
60
+ export declare function isUltralyticsClassifier(metadata: Readonly<Record<string, string>>): boolean;
61
+ /**
62
+ * Settle which `mean`/`std` to apply, and what to call the choice.
63
+ *
64
+ * Explicit `mean`/`std` always win — they are the escape hatch for a model whose
65
+ * preprocessing neither preset describes. Anything they leave open falls back to
66
+ * the preset, so passing only a `mean` does not silently reset the deviation
67
+ * to 1.
68
+ *
69
+ * Warns (via `console.warn`) when the model is an Ultralytics export and the
70
+ * supplied values are not the identity it was trained with. Nothing fails in
71
+ * that case: the prediction has the right shape and is simply less accurate,
72
+ * which is exactly why it is worth saying out loud.
73
+ *
74
+ * @param metadata The model's custom metadata map, read to detect the family.
75
+ * @param options The preset asked for, plus any explicit `mean`/`std`.
76
+ * @throws {RangeError} If `normalization` is not a known preset, or names one
77
+ * while `mean`/`std` are also supplied — two answers to the same question.
78
+ */
79
+ export declare function resolveNormalization(metadata: Readonly<Record<string, string>>, options?: {
80
+ readonly normalization?: Normalization;
81
+ readonly mean?: readonly [number, number, number];
82
+ readonly std?: readonly [number, number, number];
83
+ }): ResolvedNormalization;
84
+ //# sourceMappingURL=normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalization.d.ts","sourceRoot":"","sources":["../src/normalization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;AAEzE,kFAAkF;AAClF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAyB,CAAC;AAEtF,sDAAsD;AACtD,eAAO,MAAM,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAyB,CAAC;AAErF,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,CAAC;AAE1E,yFAAyF;AACzF,eAAO,MAAM,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,CAAC;AAEzE,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAU7C,oDAAoD;AACpD,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACzC,OAAO,CAKT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,OAAO,GAAE;IACP,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,GACL,qBAAqB,CAwCvB"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Which preprocessing a classifier expects its input to have had.
3
+ *
4
+ * A classifier is trained on a specific tensor, and feeding it a differently
5
+ * prepared one degrades it silently — no exception, no warning, just worse
6
+ * predictions. The two families this SDK sees most disagree completely:
7
+ * torchvision-style models want the ImageNet mean and deviation subtracted and
8
+ * divided out, while an Ultralytics classification head consumes raw `[0, 1]`.
9
+ *
10
+ * Guessing wrong is not detectable from the outside, but it is not a guess: an
11
+ * Ultralytics export stamps `author` and `task` into its own metadata, and every
12
+ * task in this SDK already reads that map for the class names.
13
+ *
14
+ * Mirrors `ort_vision_sdk.normalization` in the Python SDK; the two must agree,
15
+ * because the same model file is driven by both.
16
+ */
17
+ /** Per-channel RGB mean of ImageNet, the torchvision preprocessing convention. */
18
+ export const IMAGENET_MEAN = [0.485, 0.456, 0.406];
19
+ /** Per-channel RGB standard deviation of ImageNet. */
20
+ export const IMAGENET_STD = [0.229, 0.224, 0.225];
21
+ /** Mean that leaves an image untouched — what an Ultralytics classifier expects. */
22
+ export const IDENTITY_MEAN = [0, 0, 0];
23
+ /** Deviation that leaves an image untouched — what an Ultralytics classifier expects. */
24
+ export const IDENTITY_STD = [1, 1, 1];
25
+ /** Name reported when the caller supplied `mean`/`std` directly. */
26
+ export const CUSTOM_NORMALIZATION = "custom";
27
+ const PRESETS = {
28
+ imagenet: [IMAGENET_MEAN, IMAGENET_STD],
29
+ ultralytics: [IDENTITY_MEAN, IDENTITY_STD],
30
+ none: [IDENTITY_MEAN, IDENTITY_STD],
31
+ };
32
+ /**
33
+ * Whether a metadata map came out of `YOLO(...).export(format="onnx")`.
34
+ *
35
+ * Every Ultralytics export stamps `author` and `task` into its metadata, and the
36
+ * pair is unambiguous: `"Ultralytics"` plus `"classify"` is a classification head
37
+ * from that codebase and nothing else.
38
+ *
39
+ * @param metadata The model's custom metadata map.
40
+ */
41
+ export function isUltralyticsClassifier(metadata) {
42
+ return ((metadata.author ?? "").trim().toLowerCase() === "ultralytics" &&
43
+ (metadata.task ?? "").trim().toLowerCase() === "classify");
44
+ }
45
+ /**
46
+ * Settle which `mean`/`std` to apply, and what to call the choice.
47
+ *
48
+ * Explicit `mean`/`std` always win — they are the escape hatch for a model whose
49
+ * preprocessing neither preset describes. Anything they leave open falls back to
50
+ * the preset, so passing only a `mean` does not silently reset the deviation
51
+ * to 1.
52
+ *
53
+ * Warns (via `console.warn`) when the model is an Ultralytics export and the
54
+ * supplied values are not the identity it was trained with. Nothing fails in
55
+ * that case: the prediction has the right shape and is simply less accurate,
56
+ * which is exactly why it is worth saying out loud.
57
+ *
58
+ * @param metadata The model's custom metadata map, read to detect the family.
59
+ * @param options The preset asked for, plus any explicit `mean`/`std`.
60
+ * @throws {RangeError} If `normalization` is not a known preset, or names one
61
+ * while `mean`/`std` are also supplied — two answers to the same question.
62
+ */
63
+ export function resolveNormalization(metadata, options = {}) {
64
+ const normalization = options.normalization ?? "auto";
65
+ const explicit = options.mean !== undefined || options.std !== undefined;
66
+ if (normalization !== "auto" && PRESETS[normalization] === undefined) {
67
+ throw new RangeError(`normalization must be one of 'auto', 'imagenet', 'ultralytics', 'none'; ` +
68
+ `got ${JSON.stringify(normalization)}.`);
69
+ }
70
+ if (explicit && normalization !== "auto") {
71
+ throw new RangeError(`Pass either normalization=${JSON.stringify(normalization)} or explicit mean/std, not both.`);
72
+ }
73
+ const ultralytics = isUltralyticsClassifier(metadata);
74
+ const preset = normalization === "auto" ? (ultralytics ? "ultralytics" : "imagenet") : normalization;
75
+ const [presetMean, presetStd] = PRESETS[preset];
76
+ if (!explicit) {
77
+ return { name: preset, mean: presetMean, std: presetStd };
78
+ }
79
+ const mean = options.mean ?? presetMean;
80
+ const std = options.std ?? presetStd;
81
+ if (ultralytics && !(isIdentity(mean, IDENTITY_MEAN) && isIdentity(std, IDENTITY_STD))) {
82
+ console.warn("The classifier is an Ultralytics export, whose classification head is trained on raw " +
83
+ `[0, 1] images, but mean=${JSON.stringify(mean)} / std=${JSON.stringify(std)} was ` +
84
+ "requested. It will be fed images normalized in a way it never saw in training, which " +
85
+ "degrades accuracy without raising anything. Drop mean/std to let normalization='auto' " +
86
+ "pick the identity.");
87
+ }
88
+ return { name: CUSTOM_NORMALIZATION, mean, std };
89
+ }
90
+ /**
91
+ * Whether two channel triples are equal.
92
+ *
93
+ * @param value The triple to check.
94
+ * @param reference The triple to compare against.
95
+ */
96
+ function isIdentity(value, reference) {
97
+ return value.every((entry, index) => entry === reference[index]);
98
+ }
99
+ //# sourceMappingURL=normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalization.js","sourceRoot":"","sources":["../src/normalization.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,6 @@ export declare class LetterboxPipeline {
55
55
  private readonly _buffer;
56
56
  private _source;
57
57
  private _sourceContext;
58
- private _bufferInUse;
59
58
  /**
60
59
  * @param targetWidth Model input width in pixels.
61
60
  * @param targetHeight Model input height in pixels.
@@ -71,7 +70,9 @@ export declare class LetterboxPipeline {
71
70
  * still checked out — {@link release} marks it free again. A second `run`
72
71
  * before the first is released allocates a fresh buffer rather than
73
72
  * corrupting it, so concurrent `predict()` calls on one task stay correct at
74
- * the cost of the allocation they were trying to avoid.
73
+ * the cost of the allocation they were trying to avoid. A buffer that was
74
+ * detached by a consumer that transferred it is replaced rather than written
75
+ * into — see {@link ReusableBuffer}.
75
76
  *
76
77
  * @param image Source image in the SDK's canonical HWC RGB layout.
77
78
  */
@@ -156,7 +157,6 @@ export declare class ResizePipeline {
156
157
  private _targetContext;
157
158
  private _source;
158
159
  private _sourceContext;
159
- private _bufferInUse;
160
160
  /**
161
161
  * @param targetWidth Model input width in pixels.
162
162
  * @param targetHeight Model input height in pixels.
@@ -174,6 +174,9 @@ export declare class ResizePipeline {
174
174
  * keeps the result identical to `resize()`, whose own fast path returns the
175
175
  * input untouched.
176
176
  *
177
+ * Buffer reuse follows {@link ReusableBuffer}: held across calls, replaced when
178
+ * a consumer detached it by transferring the tensor.
179
+ *
177
180
  * @param image Source image in the SDK's canonical HWC RGB layout.
178
181
  */
179
182
  run(image: RGBImage): FusedResizeResult;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/preprocess/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;OAIG;gBAED,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAmB;IAe3D,4DAA4D;IAC5D,IAAI,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1C;IAED;;;;;;;;;;OAUG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,oBAAoB;IA4C1C;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;CAOtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,GAAG,UAAU,EACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACvC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACtC,GAAG,EAAE,YAAY,EACjB,MAAM,GAAE,MAAU,GACjB,IAAI,CAaN;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;OAKG;gBAED,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,EACnD,GAAG,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa;IAYpD,wDAAwD;IACxD,IAAI,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1C;IAED;;;;;;;;;OASG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB;IAuBvC;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAUrB,gFAAgF;IAChF,OAAO,CAAC,aAAa;CAOtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,EACnD,GAAG,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,GACjD,iBAAiB,CAEnB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAE1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAmB,GACxD,oBAAoB,CAEtB"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/preprocess/pipeline.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,55 @@
22
22
  */
23
23
  import { createCanvas, get2DContext, rgbToImageData } from "../core/canvas.js";
24
24
  const INV_255 = 1 / 255;
25
+ /**
26
+ * A `Float32Array` held across calls, handed out one claim at a time.
27
+ *
28
+ * Both pipelines want the same thing — allocate once, write into it every frame,
29
+ * and fall back to a fresh array when a previous result has not been released
30
+ * yet — so the bookkeeping lives here instead of twice.
31
+ *
32
+ * The part that is not obvious is {@link claim} re-allocating a buffer that is
33
+ * *detached*. `ort.env.wasm.proxy` runs ONNX Runtime in a worker and posts the
34
+ * input tensors with their `ArrayBuffer`s in the transfer list, which detaches
35
+ * them on this side. A detached `Float32Array` is silently 0 long: writing to it
36
+ * is a no-op, and the next `InferenceSession.run` rejects with
37
+ * `Tensor's size(N) does not match data length(0)` on every other call — once for
38
+ * the detached buffer, then the throw leaves the claim outstanding so the call
39
+ * after it allocates and succeeds. Treating a buffer that changed length as spent
40
+ * turns that into one extra allocation per transfer, which is what reuse was
41
+ * avoiding, and keeps it correct for any consumer that transfers the tensor
42
+ * rather than copying it.
43
+ */
44
+ class ReusableBuffer {
45
+ _size;
46
+ _buffer;
47
+ _inUse = false;
48
+ /** @param size Length in floats of every buffer this hands out. */
49
+ constructor(size) {
50
+ this._size = size;
51
+ this._buffer = new Float32Array(size);
52
+ }
53
+ /**
54
+ * Take the held buffer, or a fresh one when it is unavailable.
55
+ *
56
+ * Unavailable means either still checked out by an unreleased claim, or
57
+ * detached by whoever it was handed to. The first case allocates for this call
58
+ * only; the second replaces the held buffer, so the allocation is paid once per
59
+ * transfer rather than on every call after it.
60
+ */
61
+ claim() {
62
+ if (this._inUse)
63
+ return { data: new Float32Array(this._size), reused: false };
64
+ if (this._buffer.length !== this._size)
65
+ this._buffer = new Float32Array(this._size);
66
+ this._inUse = true;
67
+ return { data: this._buffer, reused: true };
68
+ }
69
+ /** Mark the held buffer free for the next {@link claim}. */
70
+ release() {
71
+ this._inUse = false;
72
+ }
73
+ }
25
74
  /**
26
75
  * Reusable letterbox → tensor pipeline for one target resolution.
27
76
  *
@@ -38,7 +87,6 @@ export class LetterboxPipeline {
38
87
  _buffer;
39
88
  _source = null;
40
89
  _sourceContext = null;
41
- _bufferInUse = false;
42
90
  /**
43
91
  * @param targetWidth Model input width in pixels.
44
92
  * @param targetHeight Model input height in pixels.
@@ -55,7 +103,7 @@ export class LetterboxPipeline {
55
103
  this._targetContext = get2DContext(this._target, { willReadFrequently: true });
56
104
  this._targetContext.imageSmoothingEnabled = true;
57
105
  this._targetContext.imageSmoothingQuality = "high";
58
- this._buffer = new Float32Array(3 * targetHeight * targetWidth);
106
+ this._buffer = new ReusableBuffer(3 * targetHeight * targetWidth);
59
107
  }
60
108
  /** The `[width, height]` this pipeline letterboxes into. */
61
109
  get targetSize() {
@@ -68,7 +116,9 @@ export class LetterboxPipeline {
68
116
  * still checked out — {@link release} marks it free again. A second `run`
69
117
  * before the first is released allocates a fresh buffer rather than
70
118
  * corrupting it, so concurrent `predict()` calls on one task stay correct at
71
- * the cost of the allocation they were trying to avoid.
119
+ * the cost of the allocation they were trying to avoid. A buffer that was
120
+ * detached by a consumer that transferred it is replaced rather than written
121
+ * into — see {@link ReusableBuffer}.
72
122
  *
73
123
  * @param image Source image in the SDK's canonical HWC RGB layout.
74
124
  */
@@ -89,9 +139,7 @@ export class LetterboxPipeline {
89
139
  }
90
140
  context.drawImage(this._source, 0, 0, image.width, image.height, padLeft, padTop, scaledWidth, scaledHeight);
91
141
  const rgba = context.getImageData(0, 0, targetWidth, targetHeight).data;
92
- const reused = !this._bufferInUse;
93
- const data = reused ? this._buffer : new Float32Array(3 * targetHeight * targetWidth);
94
- this._bufferInUse = true;
142
+ const { data, reused } = this._buffer.claim();
95
143
  const plane = targetWidth * targetHeight;
96
144
  for (let pixel = 0, offset = 0; pixel < plane; pixel++, offset += 4) {
97
145
  data[pixel] = rgba[offset] * INV_255;
@@ -108,7 +156,7 @@ export class LetterboxPipeline {
108
156
  * the WASM heap and the buffer can be overwritten.
109
157
  */
110
158
  release() {
111
- this._bufferInUse = false;
159
+ this._buffer.release();
112
160
  }
113
161
  /**
114
162
  * Grow the scratch source canvas to fit an image, reusing it when possible.
@@ -189,7 +237,6 @@ export class ResizePipeline {
189
237
  _targetContext = null;
190
238
  _source = null;
191
239
  _sourceContext = null;
192
- _bufferInUse = false;
193
240
  /**
194
241
  * @param targetWidth Model input width in pixels.
195
242
  * @param targetHeight Model input height in pixels.
@@ -204,7 +251,7 @@ export class ResizePipeline {
204
251
  this._targetHeight = targetHeight;
205
252
  this._mean = mean;
206
253
  this._std = std;
207
- this._buffer = new Float32Array(3 * targetHeight * targetWidth);
254
+ this._buffer = new ReusableBuffer(3 * targetHeight * targetWidth);
208
255
  }
209
256
  /** The `[width, height]` this pipeline resizes into. */
210
257
  get targetSize() {
@@ -218,14 +265,15 @@ export class ResizePipeline {
218
265
  * keeps the result identical to `resize()`, whose own fast path returns the
219
266
  * input untouched.
220
267
  *
268
+ * Buffer reuse follows {@link ReusableBuffer}: held across calls, replaced when
269
+ * a consumer detached it by transferring the tensor.
270
+ *
221
271
  * @param image Source image in the SDK's canonical HWC RGB layout.
222
272
  */
223
273
  run(image) {
224
274
  const targetWidth = this._targetWidth;
225
275
  const targetHeight = this._targetHeight;
226
- const reused = !this._bufferInUse;
227
- const data = reused ? this._buffer : new Float32Array(3 * targetHeight * targetWidth);
228
- this._bufferInUse = true;
276
+ const { data, reused } = this._buffer.claim();
229
277
  if (image.width === targetWidth && image.height === targetHeight) {
230
278
  writePlanarFloat32(image.data, targetWidth, targetHeight, this._mean, this._std, data, 3);
231
279
  return { data, reused };
@@ -246,7 +294,7 @@ export class ResizePipeline {
246
294
  * the WASM heap and the buffer can be overwritten.
247
295
  */
248
296
  release() {
249
- this._bufferInUse = false;
297
+ this._buffer.release();
250
298
  }
251
299
  /**
252
300
  * Build the target canvas on first use.
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/preprocess/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/preprocess/pipeline.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  import { type ModelSource, type OrtSessionOptions } from "../core/session.js";
5
5
  import { type ImageInput } from "../io/image.js";
6
6
  import { type LabelSpec } from "../labels.js";
7
+ import { type Normalization } from "../normalization.js";
7
8
  import { ClassificationResults } from "../results.js";
8
9
  import { VisionTask } from "./base.js";
9
10
  export interface ClassifierOptions extends OrtSessionOptions {
@@ -31,14 +32,27 @@ export interface ClassifierOptions extends OrtSessionOptions {
31
32
  * Runtime will accept. Defaults to `[224, 224]`.
32
33
  */
33
34
  readonly inputSize?: readonly [number, number];
34
- /** Per-channel RGB mean used for normalization. Defaults to ImageNet. */
35
+ /**
36
+ * Which preprocessing this model expects — see {@link Normalization}.
37
+ *
38
+ * Defaults to `"auto"`, which reads the model's own export metadata and picks
39
+ * `"ultralytics"` (raw `[0, 1]`) for an Ultralytics classification head and
40
+ * `"imagenet"` for everything else.
41
+ */
42
+ readonly normalization?: Normalization;
43
+ /** Per-channel RGB mean, overriding the preset. Defaults to the preset's. */
35
44
  readonly mean?: readonly [number, number, number];
36
- /** Per-channel RGB standard deviation. Defaults to ImageNet. */
45
+ /** Per-channel RGB standard deviation, overriding the preset. */
37
46
  readonly std?: readonly [number, number, number];
38
47
  /**
39
- * If `true` (default), apply softmax to the raw model output. Set to
40
- * `false` for models whose final layer already produces a probability
41
- * distribution.
48
+ * Whether the model's output still needs a softmax.
49
+ *
50
+ * Left undefined (the default), this reads the model's metadata and answers
51
+ * `false` for an Ultralytics classification export, whose graph already ends
52
+ * in one — applying a second softmax to a probability vector keeps the
53
+ * ranking but flattens the confidences, so the top-1 stays right while every
54
+ * number attached to it is wrong. Detection covers that family; for any other
55
+ * model that already emits probabilities, pass `false` explicitly.
42
56
  */
43
57
  readonly applySoftmax?: boolean;
44
58
  }
@@ -78,7 +92,27 @@ export declare class Classifier extends VisionTask {
78
92
  private readonly _mean;
79
93
  private readonly _std;
80
94
  private readonly _applySoftmax;
95
+ private readonly _normalization;
81
96
  private constructor();
97
+ /**
98
+ * Whether a softmax is applied to the model's output before ranking.
99
+ *
100
+ * Resolved once at construction. Worth reading when confidences look
101
+ * compressed: a second softmax over an already-normalized vector leaves the
102
+ * ordering intact and the numbers meaningless, which is invisible to any check
103
+ * that only looks at the predicted class.
104
+ */
105
+ get appliesSoftmax(): boolean;
106
+ /**
107
+ * Which preprocessing this classifier applies to every image.
108
+ *
109
+ * One of the {@link Normalization} preset names, or `"custom"` when the caller
110
+ * supplied `mean`/`std` directly. Worth reading when a model underperforms:
111
+ * feeding a classifier a differently prepared tensor than it was trained on
112
+ * degrades it without throwing anything, so "what does this assume" is the
113
+ * first question.
114
+ */
115
+ get normalization(): string;
82
116
  private _pipelineCache;
83
117
  /**
84
118
  * Run the model once on a zero tensor, paying one-time costs up front.
@@ -101,7 +135,14 @@ export declare class Classifier extends VisionTask {
101
135
  * fails if it is actually asked to preprocess something.
102
136
  */
103
137
  private get _pipeline();
104
- /** Load the model and resolve labels. */
138
+ /**
139
+ * Load the model, resolve labels, and settle the preprocessing.
140
+ *
141
+ * @param model The model source — a URL, or the bytes.
142
+ * @param options Labels, input size, normalization, and session options.
143
+ * @throws {RangeError} If `normalization` names an unknown preset, or names
144
+ * one while `mean`/`std` are also given.
145
+ */
105
146
  static create(model: ModelSource, options?: ClassifierOptions): Promise<Classifier>;
106
147
  /** Class labels indexed by class id. */
107
148
  get labels(): readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/tasks/classifier.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAc,MAAM,oBAAoB,CAAC;AAE1F,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,cAAc,CAAC;AAI7D,OAAO,EAAE,qBAAqB,EAAS,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAUvC,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,gEAAgE;IAChE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAW,SAAQ,UAAU;IAGtC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAPhC,OAAO;IAYP,OAAO,CAAC,cAAc,CAA+B;IAErD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;;;;;OAMG;IACH,OAAO,KAAK,SAAS,GAMpB;IAED,yCAAyC;WAC5B,MAAM,CACjB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC;IA0BtB,wCAAwC;IACxC,IAAI,MAAM,IAAI,SAAS,MAAM,EAAE,CAE9B;IAED,uEAAuE;IACvE,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE5C;IAED;;;;;;OAMG;IACH,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAEzC;IAED,+CAA+C;IAC/C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,4EAA4E;IACtE,IAAI,CACR,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAInC,4CAA4C;IACtC,OAAO,CACX,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAkEnC,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/tasks/classifier.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,12 @@ import { loadImage } from "../io/image.js";
7
7
  import { classificationNumClasses, resolveInputSize } from "../core/graph.js";
8
8
  import { modelNames } from "../core/metadata.js";
9
9
  import { resolveLabels } from "../labels.js";
10
+ import { isUltralyticsClassifier, resolveNormalization, } from "../normalization.js";
10
11
  import { softmax, topK } from "../postprocess/classification.js";
11
12
  import { toFloat32Tensor } from "../preprocess/image.js";
12
13
  import { ResizePipeline, zeroTensorData } from "../preprocess/pipeline.js";
13
14
  import { ClassificationResults, Probs } from "../results.js";
14
15
  import { VisionTask } from "./base.js";
15
- const IMAGENET_MEAN = [0.485, 0.456, 0.406];
16
- const IMAGENET_STD = [0.229, 0.224, 0.225];
17
16
  /**
18
17
  * Image classifier wrapping an ONNX model with ImageNet-style preprocessing.
19
18
  *
@@ -42,7 +41,8 @@ export class Classifier extends VisionTask {
42
41
  _mean;
43
42
  _std;
44
43
  _applySoftmax;
45
- constructor(session, _labels, _names, _inputSize, _mean, _std, _applySoftmax) {
44
+ _normalization;
45
+ constructor(session, _labels, _names, _inputSize, _mean, _std, _applySoftmax, _normalization) {
46
46
  super(session);
47
47
  this._labels = _labels;
48
48
  this._names = _names;
@@ -50,6 +50,30 @@ export class Classifier extends VisionTask {
50
50
  this._mean = _mean;
51
51
  this._std = _std;
52
52
  this._applySoftmax = _applySoftmax;
53
+ this._normalization = _normalization;
54
+ }
55
+ /**
56
+ * Whether a softmax is applied to the model's output before ranking.
57
+ *
58
+ * Resolved once at construction. Worth reading when confidences look
59
+ * compressed: a second softmax over an already-normalized vector leaves the
60
+ * ordering intact and the numbers meaningless, which is invisible to any check
61
+ * that only looks at the predicted class.
62
+ */
63
+ get appliesSoftmax() {
64
+ return this._applySoftmax;
65
+ }
66
+ /**
67
+ * Which preprocessing this classifier applies to every image.
68
+ *
69
+ * One of the {@link Normalization} preset names, or `"custom"` when the caller
70
+ * supplied `mean`/`std` directly. Worth reading when a model underperforms:
71
+ * feeding a classifier a differently prepared tensor than it was trained on
72
+ * degrades it without throwing anything, so "what does this assume" is the
73
+ * first question.
74
+ */
75
+ get normalization() {
76
+ return this._normalization;
53
77
  }
54
78
  _pipelineCache = null;
55
79
  /**
@@ -85,9 +109,21 @@ export class Classifier extends VisionTask {
85
109
  }
86
110
  return this._pipelineCache;
87
111
  }
88
- /** Load the model and resolve labels. */
112
+ /**
113
+ * Load the model, resolve labels, and settle the preprocessing.
114
+ *
115
+ * @param model The model source — a URL, or the bytes.
116
+ * @param options Labels, input size, normalization, and session options.
117
+ * @throws {RangeError} If `normalization` names an unknown preset, or names
118
+ * one while `mean`/`std` are also given.
119
+ */
89
120
  static async create(model, options = {}) {
90
121
  const session = await OrtSession.create(model, options);
122
+ const normalization = resolveNormalization(session.metadata, {
123
+ normalization: options.normalization,
124
+ mean: options.mean,
125
+ std: options.std,
126
+ });
91
127
  const numClasses = options.numClasses ?? classificationNumClasses(session.outputShape) ?? undefined;
92
128
  const labels = resolveLabels(options.labels ?? modelNames(session.metadata), {
93
129
  numClasses,
@@ -100,7 +136,7 @@ export class Classifier extends VisionTask {
100
136
  graphShape: session.inputShape,
101
137
  requested: options.inputSize,
102
138
  fallback: [224, 224],
103
- }), options.mean ?? IMAGENET_MEAN, options.std ?? IMAGENET_STD, options.applySoftmax ?? true);
139
+ }), normalization.mean, normalization.std, options.applySoftmax ?? !isUltralyticsClassifier(session.metadata), normalization.name);
104
140
  }
105
141
  /** Class labels indexed by class id. */
106
142
  get labels() {
@@ -1 +1 @@
1
- {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/tasks/classifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/tasks/classifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mauriciobenjamin700/ort-vision-sdk-web",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "High-level TypeScript SDK for browser computer vision inference with ONNX Runtime Web.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",