@camstack/addon-vision 0.1.7 → 0.1.9

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 (136) hide show
  1. package/dist/addons/animal-classifier/index.d.mts +30 -0
  2. package/dist/addons/animal-classifier/index.d.ts +30 -0
  3. package/dist/addons/animal-classifier/index.js +822 -999
  4. package/dist/addons/animal-classifier/index.js.map +1 -1
  5. package/dist/addons/animal-classifier/index.mjs +7 -242
  6. package/dist/addons/animal-classifier/index.mjs.map +1 -1
  7. package/dist/addons/audio-classification/index.d.mts +36 -0
  8. package/dist/addons/audio-classification/index.d.ts +36 -0
  9. package/dist/addons/audio-classification/index.js +378 -501
  10. package/dist/addons/audio-classification/index.js.map +1 -1
  11. package/dist/addons/audio-classification/index.mjs +4 -224
  12. package/dist/addons/audio-classification/index.mjs.map +1 -1
  13. package/dist/addons/bird-global-classifier/index.d.mts +31 -0
  14. package/dist/addons/bird-global-classifier/index.d.ts +31 -0
  15. package/dist/addons/bird-global-classifier/index.js +825 -1002
  16. package/dist/addons/bird-global-classifier/index.js.map +1 -1
  17. package/dist/addons/bird-global-classifier/index.mjs +7 -248
  18. package/dist/addons/bird-global-classifier/index.mjs.map +1 -1
  19. package/dist/addons/bird-nabirds-classifier/index.d.mts +33 -0
  20. package/dist/addons/bird-nabirds-classifier/index.d.ts +33 -0
  21. package/dist/addons/bird-nabirds-classifier/index.js +825 -1002
  22. package/dist/addons/bird-nabirds-classifier/index.js.map +1 -1
  23. package/dist/addons/bird-nabirds-classifier/index.mjs +7 -289
  24. package/dist/addons/bird-nabirds-classifier/index.mjs.map +1 -1
  25. package/dist/addons/face-detection/index.d.mts +29 -0
  26. package/dist/addons/face-detection/index.d.ts +29 -0
  27. package/dist/addons/face-detection/index.js +934 -1196
  28. package/dist/addons/face-detection/index.js.map +1 -1
  29. package/dist/addons/face-detection/index.mjs +7 -227
  30. package/dist/addons/face-detection/index.mjs.map +1 -1
  31. package/dist/addons/face-recognition/index.d.mts +29 -0
  32. package/dist/addons/face-recognition/index.d.ts +29 -0
  33. package/dist/addons/face-recognition/index.js +807 -1003
  34. package/dist/addons/face-recognition/index.js.map +1 -1
  35. package/dist/addons/face-recognition/index.mjs +6 -197
  36. package/dist/addons/face-recognition/index.mjs.map +1 -1
  37. package/dist/addons/motion-detection/index.d.mts +28 -0
  38. package/dist/addons/motion-detection/index.d.ts +28 -0
  39. package/dist/addons/motion-detection/index.js +111 -214
  40. package/dist/addons/motion-detection/index.js.map +1 -1
  41. package/dist/addons/motion-detection/index.mjs +9 -12
  42. package/dist/addons/motion-detection/index.mjs.map +1 -1
  43. package/dist/addons/object-detection/index.d.mts +31 -0
  44. package/dist/addons/object-detection/index.d.ts +31 -0
  45. package/dist/addons/object-detection/index.js +1082 -1287
  46. package/dist/addons/object-detection/index.js.map +1 -1
  47. package/dist/addons/object-detection/index.mjs +7 -373
  48. package/dist/addons/object-detection/index.mjs.map +1 -1
  49. package/dist/addons/plate-detection/index.d.mts +30 -0
  50. package/dist/addons/plate-detection/index.d.ts +30 -0
  51. package/dist/addons/plate-detection/index.js +868 -1075
  52. package/dist/addons/plate-detection/index.js.map +1 -1
  53. package/dist/addons/plate-detection/index.mjs +7 -230
  54. package/dist/addons/plate-detection/index.mjs.map +1 -1
  55. package/dist/addons/plate-recognition/index.d.mts +31 -0
  56. package/dist/addons/plate-recognition/index.d.ts +31 -0
  57. package/dist/addons/plate-recognition/index.js +505 -684
  58. package/dist/addons/plate-recognition/index.js.map +1 -1
  59. package/dist/addons/plate-recognition/index.mjs +5 -244
  60. package/dist/addons/plate-recognition/index.mjs.map +1 -1
  61. package/dist/addons/segmentation-refiner/index.d.mts +30 -0
  62. package/dist/addons/segmentation-refiner/index.d.ts +30 -0
  63. package/dist/addons/segmentation-refiner/index.js +790 -967
  64. package/dist/addons/segmentation-refiner/index.js.map +1 -1
  65. package/dist/addons/segmentation-refiner/index.mjs +17 -21
  66. package/dist/addons/segmentation-refiner/index.mjs.map +1 -1
  67. package/dist/addons/vehicle-classifier/index.d.mts +31 -0
  68. package/dist/addons/vehicle-classifier/index.d.ts +31 -0
  69. package/dist/addons/vehicle-classifier/index.js +410 -581
  70. package/dist/addons/vehicle-classifier/index.js.map +1 -1
  71. package/dist/addons/vehicle-classifier/index.mjs +16 -20
  72. package/dist/addons/vehicle-classifier/index.mjs.map +1 -1
  73. package/dist/chunk-22BHCDT5.mjs +101 -0
  74. package/dist/{chunk-WG66JYYW.mjs.map → chunk-22BHCDT5.mjs.map} +1 -1
  75. package/dist/chunk-2IOKI4ES.mjs +335 -0
  76. package/dist/{chunk-PIFS7AIT.mjs.map → chunk-2IOKI4ES.mjs.map} +1 -1
  77. package/dist/chunk-7DYHXUPZ.mjs +36 -0
  78. package/dist/{chunk-BS4DKYGN.mjs.map → chunk-7DYHXUPZ.mjs.map} +1 -1
  79. package/dist/chunk-BJTO5JO5.mjs +11 -0
  80. package/dist/chunk-BP7H4NFS.mjs +412 -0
  81. package/dist/{chunk-MGT6RUVX.mjs.map → chunk-BP7H4NFS.mjs.map} +1 -1
  82. package/dist/chunk-BR2FPGOX.mjs +98 -0
  83. package/dist/{chunk-YYDM6V2F.mjs.map → chunk-BR2FPGOX.mjs.map} +1 -1
  84. package/dist/chunk-D6WEHN33.mjs +276 -0
  85. package/dist/chunk-D6WEHN33.mjs.map +1 -0
  86. package/dist/chunk-DRYFGARD.mjs +289 -0
  87. package/dist/chunk-DRYFGARD.mjs.map +1 -0
  88. package/dist/chunk-DUN6XU3N.mjs +72 -0
  89. package/dist/{chunk-XD7WGXHZ.mjs.map → chunk-DUN6XU3N.mjs.map} +1 -1
  90. package/dist/chunk-ESLHNWWE.mjs +387 -0
  91. package/dist/chunk-ESLHNWWE.mjs.map +1 -0
  92. package/dist/chunk-JUQEW6ON.mjs +256 -0
  93. package/dist/chunk-JUQEW6ON.mjs.map +1 -0
  94. package/dist/chunk-KUO2BVFY.mjs +90 -0
  95. package/dist/{chunk-DE7I3VHO.mjs.map → chunk-KUO2BVFY.mjs.map} +1 -1
  96. package/dist/chunk-R5J3WAUI.mjs +645 -0
  97. package/dist/chunk-R5J3WAUI.mjs.map +1 -0
  98. package/dist/chunk-XZ6ZMXXU.mjs +39 -0
  99. package/dist/{chunk-K36R6HWY.mjs.map → chunk-XZ6ZMXXU.mjs.map} +1 -1
  100. package/dist/chunk-YPU4WTXZ.mjs +269 -0
  101. package/dist/chunk-YPU4WTXZ.mjs.map +1 -0
  102. package/dist/chunk-YUCD2TFH.mjs +242 -0
  103. package/dist/chunk-YUCD2TFH.mjs.map +1 -0
  104. package/dist/chunk-ZTJENCFC.mjs +379 -0
  105. package/dist/chunk-ZTJENCFC.mjs.map +1 -0
  106. package/dist/chunk-ZWYXXCXP.mjs +248 -0
  107. package/dist/chunk-ZWYXXCXP.mjs.map +1 -0
  108. package/dist/index.d.mts +183 -0
  109. package/dist/index.d.ts +183 -0
  110. package/dist/index.js +3930 -4449
  111. package/dist/index.js.map +1 -1
  112. package/dist/index.mjs +250 -2698
  113. package/dist/index.mjs.map +1 -1
  114. package/package.json +5 -5
  115. package/dist/chunk-2YMA6QOV.mjs +0 -193
  116. package/dist/chunk-2YMA6QOV.mjs.map +0 -1
  117. package/dist/chunk-3IIFBJCD.mjs +0 -45
  118. package/dist/chunk-BS4DKYGN.mjs +0 -48
  119. package/dist/chunk-DE7I3VHO.mjs +0 -106
  120. package/dist/chunk-F6D2OZ36.mjs +0 -89
  121. package/dist/chunk-F6D2OZ36.mjs.map +0 -1
  122. package/dist/chunk-GAOIFQDX.mjs +0 -59
  123. package/dist/chunk-GAOIFQDX.mjs.map +0 -1
  124. package/dist/chunk-HUIX2XVR.mjs +0 -159
  125. package/dist/chunk-HUIX2XVR.mjs.map +0 -1
  126. package/dist/chunk-K36R6HWY.mjs +0 -51
  127. package/dist/chunk-MBTAI3WE.mjs +0 -78
  128. package/dist/chunk-MBTAI3WE.mjs.map +0 -1
  129. package/dist/chunk-MGT6RUVX.mjs +0 -423
  130. package/dist/chunk-PIFS7AIT.mjs +0 -446
  131. package/dist/chunk-WG66JYYW.mjs +0 -116
  132. package/dist/chunk-XD7WGXHZ.mjs +0 -82
  133. package/dist/chunk-YYDM6V2F.mjs +0 -113
  134. package/dist/chunk-ZK7P3TZN.mjs +0 -286
  135. package/dist/chunk-ZK7P3TZN.mjs.map +0 -1
  136. /package/dist/{chunk-3IIFBJCD.mjs.map → chunk-BJTO5JO5.mjs.map} +0 -0
@@ -0,0 +1,183 @@
1
+ import { BoundingBox, SpatialDetection, IInferenceEngine, DetectionRuntime, DetectionDevice, ModelCatalogEntry, IAddonModelManager, ModelFormat } from '@camstack/types';
2
+ export { default as ObjectDetectionAddon } from './addons/object-detection/index.js';
3
+ export { default as FaceDetectionAddon } from './addons/face-detection/index.js';
4
+ export { default as FaceRecognitionAddon } from './addons/face-recognition/index.js';
5
+ export { default as PlateDetectionAddon } from './addons/plate-detection/index.js';
6
+ export { default as PlateRecognitionAddon } from './addons/plate-recognition/index.js';
7
+ export { default as AudioClassificationAddon } from './addons/audio-classification/index.js';
8
+ export { default as BirdGlobalClassifierAddon } from './addons/bird-global-classifier/index.js';
9
+ export { default as BirdNABirdsClassifierAddon } from './addons/bird-nabirds-classifier/index.js';
10
+ export { default as AnimalClassifierAddon } from './addons/animal-classifier/index.js';
11
+
12
+ /** Decode JPEG to raw RGB pixels */
13
+ declare function jpegToRgb(jpeg: Buffer): Promise<{
14
+ data: Buffer;
15
+ width: number;
16
+ height: number;
17
+ }>;
18
+ /** Crop a region from a JPEG buffer */
19
+ declare function cropRegion(jpeg: Buffer, roi: BoundingBox): Promise<Buffer>;
20
+ /** Letterbox resize for YOLO: resize preserving aspect ratio, pad to square */
21
+ declare function letterbox(jpeg: Buffer, targetSize: number): Promise<{
22
+ data: Float32Array;
23
+ scale: number;
24
+ padX: number;
25
+ padY: number;
26
+ originalWidth: number;
27
+ originalHeight: number;
28
+ }>;
29
+ /** Resize and normalize to Float32Array */
30
+ declare function resizeAndNormalize(jpeg: Buffer, targetWidth: number, targetHeight: number, normalization: 'zero-one' | 'imagenet' | 'none', layout: 'nchw' | 'nhwc'): Promise<Float32Array>;
31
+ /** Convert raw RGB to grayscale Uint8Array */
32
+ declare function rgbToGrayscale(rgb: Buffer, width: number, height: number): Uint8Array;
33
+
34
+ interface YoloPostprocessOptions {
35
+ readonly confidence: number;
36
+ readonly iouThreshold: number;
37
+ readonly labels: readonly string[];
38
+ readonly scale: number;
39
+ readonly padX: number;
40
+ readonly padY: number;
41
+ readonly originalWidth: number;
42
+ readonly originalHeight: number;
43
+ }
44
+ /** Calculate IoU between two bounding boxes */
45
+ declare function iou(a: BoundingBox, b: BoundingBox): number;
46
+ /** Non-maximum suppression — returns indices of kept boxes (sorted by score desc) */
47
+ declare function nms(boxes: ReadonlyArray<{
48
+ readonly bbox: BoundingBox;
49
+ readonly score: number;
50
+ }>, iouThreshold: number): number[];
51
+ /** Full YOLO v8/v9 postprocessing: filter → NMS → scale back to original coords */
52
+ declare function yoloPostprocess(output: Float32Array, numClasses: number, numBoxes: number, options: YoloPostprocessOptions): SpatialDetection[];
53
+
54
+ interface ScrfdRawOutputs {
55
+ readonly [key: string]: Float32Array;
56
+ }
57
+ declare function scrfdPostprocess(outputs: ScrfdRawOutputs, confidence: number, inputSize: number, originalWidth: number, originalHeight: number): SpatialDetection[];
58
+
59
+ /** L2 normalize a vector in-place, returning a new Float32Array */
60
+ declare function l2Normalize(vec: Float32Array): Float32Array;
61
+ /** Cosine similarity between two embeddings (assumes they are already L2-normalized) */
62
+ declare function cosineSimilarity(a: Float32Array, b: Float32Array): number;
63
+
64
+ /** Decode CTC output to text.
65
+ *
66
+ * Output shape: [1, seqLen, numChars]
67
+ * Algorithm: argmax per timestep → collapse consecutive duplicates → remove blank (index 0) → join
68
+ */
69
+ declare function ctcDecode(output: Float32Array, seqLen: number, numChars: number, charset: readonly string[]): {
70
+ text: string;
71
+ confidence: number;
72
+ };
73
+
74
+ interface AudioClassification {
75
+ readonly className: string;
76
+ readonly score: number;
77
+ }
78
+ /** Average YAMNET scores across frames, return top classes above threshold */
79
+ declare function yamnetPostprocess(output: Float32Array, numFrames: number, numClasses: number, classNames: readonly string[], minScore: number): AudioClassification[];
80
+
81
+ declare class NodeInferenceEngine implements IInferenceEngine {
82
+ private readonly modelPath;
83
+ private readonly backend;
84
+ readonly runtime: DetectionRuntime;
85
+ readonly device: DetectionDevice;
86
+ private session;
87
+ constructor(modelPath: string, backend: string);
88
+ initialize(): Promise<void>;
89
+ run(input: Float32Array, inputShape: readonly number[]): Promise<Float32Array>;
90
+ runMultiOutput(input: Float32Array, inputShape: readonly number[]): Promise<Record<string, Float32Array>>;
91
+ dispose(): Promise<void>;
92
+ }
93
+
94
+ declare class PythonInferenceEngine implements IInferenceEngine {
95
+ private readonly pythonPath;
96
+ private readonly scriptPath;
97
+ private readonly modelPath;
98
+ private readonly extraArgs;
99
+ readonly runtime: DetectionRuntime;
100
+ readonly device: DetectionDevice;
101
+ private process;
102
+ private receiveBuffer;
103
+ private pendingResolve;
104
+ private pendingReject;
105
+ constructor(pythonPath: string, scriptPath: string, runtime: DetectionRuntime, modelPath: string, extraArgs?: readonly string[]);
106
+ initialize(): Promise<void>;
107
+ private _tryReceive;
108
+ /** Send JPEG buffer, receive JSON detection results */
109
+ runJpeg(jpeg: Buffer): Promise<Record<string, unknown>>;
110
+ /** IInferenceEngine.run — wraps runJpeg for compatibility */
111
+ run(_input: Float32Array, _inputShape: readonly number[]): Promise<Float32Array>;
112
+ /** IInferenceEngine.runMultiOutput — not supported by Python engine (operates on JPEG input) */
113
+ runMultiOutput(_input: Float32Array, _inputShape: readonly number[]): Promise<Record<string, Float32Array>>;
114
+ dispose(): Promise<void>;
115
+ }
116
+
117
+ interface EngineResolverOptions {
118
+ readonly runtime: DetectionRuntime | 'auto';
119
+ readonly backend: string;
120
+ readonly modelEntry: ModelCatalogEntry;
121
+ readonly modelsDir: string;
122
+ readonly pythonPath?: string;
123
+ /** Model service for downloading models. When provided, used instead of raw filesystem probing. */
124
+ readonly models?: IAddonModelManager;
125
+ }
126
+ interface ResolvedEngine {
127
+ readonly engine: IInferenceEngine;
128
+ readonly format: ModelFormat;
129
+ readonly modelPath: string;
130
+ }
131
+ declare function resolveEngine(options: EngineResolverOptions): Promise<ResolvedEngine>;
132
+ /** Probe which ONNX execution providers are available on this system */
133
+ declare function probeOnnxBackends(): Promise<string[]>;
134
+
135
+ interface MotionRegion {
136
+ readonly bbox: BoundingBox;
137
+ readonly pixelCount: number;
138
+ readonly intensity: number;
139
+ }
140
+ /**
141
+ * Detect motion by frame differencing.
142
+ *
143
+ * @param current - Grayscale pixel array for the current frame (Uint8Array, length = width * height)
144
+ * @param previous - Grayscale pixel array for the previous frame
145
+ * @param width - Frame width in pixels
146
+ * @param height - Frame height in pixels
147
+ * @param threshold - Pixel diff threshold 0-255; differences below this are ignored
148
+ * @param minArea - Minimum number of changed pixels for a region to be reported
149
+ */
150
+ declare function detectMotion(current: Uint8Array, previous: Uint8Array, width: number, height: number, threshold: number, minArea: number): MotionRegion[];
151
+
152
+ /** Standard files inside every .mlpackage directory bundle */
153
+ declare const MLPACKAGE_FILES: readonly ["Manifest.json", "Data/com.apple.CoreML/model.mlmodel", "Data/com.apple.CoreML/weights/weight.bin"];
154
+ declare const OBJECT_DETECTION_MODELS: readonly ModelCatalogEntry[];
155
+
156
+ declare const FACE_DETECTION_MODELS: readonly ModelCatalogEntry[];
157
+
158
+ declare const FACE_RECOGNITION_MODELS: readonly ModelCatalogEntry[];
159
+
160
+ declare const PLATE_DETECTION_MODELS: readonly ModelCatalogEntry[];
161
+
162
+ declare const PLATE_RECOGNITION_MODELS: readonly ModelCatalogEntry[];
163
+
164
+ /**
165
+ * General-purpose OCR models for scene text recognition in camera feeds.
166
+ * These complement the plate-specific PaddleOCR models for broader text detection
167
+ * (signs, labels, addresses, etc.).
168
+ */
169
+ declare const GENERAL_OCR_MODELS: readonly ModelCatalogEntry[];
170
+
171
+ declare const AUDIO_CLASSIFICATION_MODELS: readonly ModelCatalogEntry[];
172
+
173
+ declare const SEGMENTATION_MODELS: readonly ModelCatalogEntry[];
174
+
175
+ declare const BIRD_SPECIES_MODELS: readonly ModelCatalogEntry[];
176
+ declare const BIRD_NABIRDS_MODELS: readonly ModelCatalogEntry[];
177
+ declare const ANIMAL_TYPE_MODELS: readonly ModelCatalogEntry[];
178
+
179
+ declare const VEHICLE_TYPE_MODELS: readonly ModelCatalogEntry[];
180
+
181
+ declare const SEGMENTATION_REFINER_MODELS: readonly ModelCatalogEntry[];
182
+
183
+ export { ANIMAL_TYPE_MODELS, AUDIO_CLASSIFICATION_MODELS, BIRD_NABIRDS_MODELS, BIRD_SPECIES_MODELS, type EngineResolverOptions, FACE_DETECTION_MODELS, FACE_RECOGNITION_MODELS, GENERAL_OCR_MODELS, MLPACKAGE_FILES, type MotionRegion, NodeInferenceEngine, OBJECT_DETECTION_MODELS, PLATE_DETECTION_MODELS, PLATE_RECOGNITION_MODELS, PythonInferenceEngine, type ResolvedEngine, SEGMENTATION_MODELS, SEGMENTATION_REFINER_MODELS, VEHICLE_TYPE_MODELS, cosineSimilarity, cropRegion, ctcDecode, detectMotion, iou, jpegToRgb, l2Normalize, letterbox, nms, probeOnnxBackends, resizeAndNormalize, resolveEngine, rgbToGrayscale, scrfdPostprocess, yamnetPostprocess, yoloPostprocess };