edgeflowjs 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +200 -66
  2. package/dist/backends/index.d.ts +9 -2
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +13 -13
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/onnx.d.ts +11 -4
  7. package/dist/backends/onnx.d.ts.map +1 -1
  8. package/dist/backends/onnx.js +97 -78
  9. package/dist/backends/onnx.js.map +1 -1
  10. package/dist/backends/transformers-adapter.d.ts +99 -0
  11. package/dist/backends/transformers-adapter.d.ts.map +1 -0
  12. package/dist/backends/transformers-adapter.js +171 -0
  13. package/dist/backends/transformers-adapter.js.map +1 -0
  14. package/dist/backends/webgpu.d.ts +7 -5
  15. package/dist/backends/webgpu.d.ts.map +1 -1
  16. package/dist/backends/webgpu.js +7 -5
  17. package/dist/backends/webgpu.js.map +1 -1
  18. package/dist/backends/webnn.d.ts +6 -5
  19. package/dist/backends/webnn.d.ts.map +1 -1
  20. package/dist/backends/webnn.js +6 -5
  21. package/dist/backends/webnn.js.map +1 -1
  22. package/dist/core/composer.d.ts +118 -0
  23. package/dist/core/composer.d.ts.map +1 -0
  24. package/dist/core/composer.js +163 -0
  25. package/dist/core/composer.js.map +1 -0
  26. package/dist/core/device-profiler.d.ts +75 -0
  27. package/dist/core/device-profiler.d.ts.map +1 -0
  28. package/dist/core/device-profiler.js +131 -0
  29. package/dist/core/device-profiler.js.map +1 -0
  30. package/dist/core/index.d.ts +4 -0
  31. package/dist/core/index.d.ts.map +1 -1
  32. package/dist/core/index.js +8 -0
  33. package/dist/core/index.js.map +1 -1
  34. package/dist/core/memory.d.ts +22 -2
  35. package/dist/core/memory.d.ts.map +1 -1
  36. package/dist/core/memory.js +49 -13
  37. package/dist/core/memory.js.map +1 -1
  38. package/dist/core/plugin.d.ts +100 -0
  39. package/dist/core/plugin.d.ts.map +1 -0
  40. package/dist/core/plugin.js +106 -0
  41. package/dist/core/plugin.js.map +1 -0
  42. package/dist/core/runtime.d.ts +4 -0
  43. package/dist/core/runtime.d.ts.map +1 -1
  44. package/dist/core/runtime.js +18 -0
  45. package/dist/core/runtime.js.map +1 -1
  46. package/dist/core/scheduler.d.ts +17 -0
  47. package/dist/core/scheduler.d.ts.map +1 -1
  48. package/dist/core/scheduler.js +101 -3
  49. package/dist/core/scheduler.js.map +1 -1
  50. package/dist/core/types.d.ts +14 -0
  51. package/dist/core/types.d.ts.map +1 -1
  52. package/dist/core/types.js.map +1 -1
  53. package/dist/core/worker.d.ts +202 -0
  54. package/dist/core/worker.d.ts.map +1 -0
  55. package/dist/core/worker.js +477 -0
  56. package/dist/core/worker.js.map +1 -0
  57. package/dist/edgeflow.browser.js +9770 -4383
  58. package/dist/edgeflow.browser.js.map +4 -4
  59. package/dist/edgeflow.browser.min.js +435 -5
  60. package/dist/edgeflow.browser.min.js.map +4 -4
  61. package/dist/index.d.ts +7 -4
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +28 -10
  64. package/dist/index.js.map +1 -1
  65. package/dist/pipelines/automatic-speech-recognition.d.ts +63 -0
  66. package/dist/pipelines/automatic-speech-recognition.d.ts.map +1 -0
  67. package/dist/pipelines/automatic-speech-recognition.js +269 -0
  68. package/dist/pipelines/automatic-speech-recognition.js.map +1 -0
  69. package/dist/pipelines/base.d.ts +6 -1
  70. package/dist/pipelines/base.d.ts.map +1 -1
  71. package/dist/pipelines/base.js +12 -2
  72. package/dist/pipelines/base.js.map +1 -1
  73. package/dist/pipelines/feature-extraction.d.ts +5 -40
  74. package/dist/pipelines/feature-extraction.d.ts.map +1 -1
  75. package/dist/pipelines/feature-extraction.js +44 -63
  76. package/dist/pipelines/feature-extraction.js.map +1 -1
  77. package/dist/pipelines/image-classification.d.ts +4 -36
  78. package/dist/pipelines/image-classification.d.ts.map +1 -1
  79. package/dist/pipelines/image-classification.js +22 -60
  80. package/dist/pipelines/image-classification.js.map +1 -1
  81. package/dist/pipelines/image-segmentation.d.ts +221 -0
  82. package/dist/pipelines/image-segmentation.d.ts.map +1 -0
  83. package/dist/pipelines/image-segmentation.js +535 -0
  84. package/dist/pipelines/image-segmentation.js.map +1 -0
  85. package/dist/pipelines/index.d.ts +18 -0
  86. package/dist/pipelines/index.d.ts.map +1 -1
  87. package/dist/pipelines/index.js +51 -2
  88. package/dist/pipelines/index.js.map +1 -1
  89. package/dist/pipelines/object-detection.d.ts +44 -0
  90. package/dist/pipelines/object-detection.d.ts.map +1 -0
  91. package/dist/pipelines/object-detection.js +218 -0
  92. package/dist/pipelines/object-detection.js.map +1 -0
  93. package/dist/pipelines/question-answering.d.ts +41 -0
  94. package/dist/pipelines/question-answering.d.ts.map +1 -0
  95. package/dist/pipelines/question-answering.js +164 -0
  96. package/dist/pipelines/question-answering.js.map +1 -0
  97. package/dist/pipelines/text-classification.d.ts +3 -39
  98. package/dist/pipelines/text-classification.d.ts.map +1 -1
  99. package/dist/pipelines/text-classification.js +29 -67
  100. package/dist/pipelines/text-classification.js.map +1 -1
  101. package/dist/pipelines/text-generation.d.ts +281 -0
  102. package/dist/pipelines/text-generation.d.ts.map +1 -0
  103. package/dist/pipelines/text-generation.js +766 -0
  104. package/dist/pipelines/text-generation.js.map +1 -0
  105. package/dist/pipelines/zero-shot-classification.d.ts +45 -0
  106. package/dist/pipelines/zero-shot-classification.d.ts.map +1 -0
  107. package/dist/pipelines/zero-shot-classification.js +140 -0
  108. package/dist/pipelines/zero-shot-classification.js.map +1 -0
  109. package/dist/tools/benchmark.d.ts +92 -0
  110. package/dist/tools/benchmark.d.ts.map +1 -0
  111. package/dist/tools/benchmark.js +213 -0
  112. package/dist/tools/benchmark.js.map +1 -0
  113. package/dist/tools/debugger.d.ts +258 -0
  114. package/dist/tools/debugger.d.ts.map +1 -0
  115. package/dist/tools/debugger.js +624 -0
  116. package/dist/tools/debugger.js.map +1 -0
  117. package/dist/tools/index.d.ts +8 -0
  118. package/dist/tools/index.d.ts.map +1 -1
  119. package/dist/tools/index.js +16 -0
  120. package/dist/tools/index.js.map +1 -1
  121. package/dist/tools/monitor.d.ts +284 -0
  122. package/dist/tools/monitor.d.ts.map +1 -0
  123. package/dist/tools/monitor.js +921 -0
  124. package/dist/tools/monitor.js.map +1 -0
  125. package/dist/tools/quantization.d.ts +235 -0
  126. package/dist/tools/quantization.d.ts.map +1 -0
  127. package/dist/tools/quantization.js +830 -0
  128. package/dist/tools/quantization.js.map +1 -0
  129. package/dist/utils/hub.d.ts +162 -0
  130. package/dist/utils/hub.d.ts.map +1 -0
  131. package/dist/utils/hub.js +311 -0
  132. package/dist/utils/hub.js.map +1 -0
  133. package/dist/utils/index.d.ts +3 -1
  134. package/dist/utils/index.d.ts.map +1 -1
  135. package/dist/utils/index.js +5 -1
  136. package/dist/utils/index.js.map +1 -1
  137. package/dist/utils/model-loader.d.ts.map +1 -1
  138. package/dist/utils/model-loader.js +106 -30
  139. package/dist/utils/model-loader.js.map +1 -1
  140. package/dist/utils/offline.d.ts +147 -0
  141. package/dist/utils/offline.d.ts.map +1 -0
  142. package/dist/utils/offline.js +405 -0
  143. package/dist/utils/offline.js.map +1 -0
  144. package/dist/utils/preprocessor.d.ts +82 -6
  145. package/dist/utils/preprocessor.d.ts.map +1 -1
  146. package/dist/utils/preprocessor.js +278 -21
  147. package/dist/utils/preprocessor.js.map +1 -1
  148. package/dist/utils/tokenizer.d.ts +197 -72
  149. package/dist/utils/tokenizer.d.ts.map +1 -1
  150. package/dist/utils/tokenizer.js +558 -274
  151. package/dist/utils/tokenizer.js.map +1 -1
  152. package/package.json +26 -11
@@ -0,0 +1,221 @@
1
+ /**
2
+ * edgeFlow.js - Image Segmentation Pipeline
3
+ *
4
+ * Interactive image segmentation using SAM (Segment Anything Model).
5
+ * Supports point prompts and bounding box prompts.
6
+ */
7
+ import { PipelineConfig, PipelineOptions } from '../core/types.js';
8
+ import { EdgeFlowTensor } from '../core/tensor.js';
9
+ import { BasePipeline, PipelineResult } from './base.js';
10
+ /**
11
+ * Point prompt for segmentation
12
+ */
13
+ export interface PointPrompt {
14
+ /** X coordinate (0-1 normalized) */
15
+ x: number;
16
+ /** Y coordinate (0-1 normalized) */
17
+ y: number;
18
+ /** 1 for foreground (include), 0 for background (exclude) */
19
+ label: 0 | 1;
20
+ }
21
+ /**
22
+ * Box prompt for segmentation
23
+ */
24
+ export interface BoxPrompt {
25
+ /** Top-left X (0-1 normalized) */
26
+ x1: number;
27
+ /** Top-left Y (0-1 normalized) */
28
+ y1: number;
29
+ /** Bottom-right X (0-1 normalized) */
30
+ x2: number;
31
+ /** Bottom-right Y (0-1 normalized) */
32
+ y2: number;
33
+ }
34
+ /**
35
+ * Model loading progress callback
36
+ */
37
+ export interface ModelLoadProgress {
38
+ /** Model name (encoder or decoder) */
39
+ model: 'encoder' | 'decoder';
40
+ /** Bytes loaded */
41
+ loaded: number;
42
+ /** Total bytes */
43
+ total: number;
44
+ /** Progress percentage (0-100) */
45
+ progress: number;
46
+ }
47
+ /**
48
+ * Segmentation options
49
+ */
50
+ export interface ImageSegmentationOptions extends PipelineOptions {
51
+ /** Point prompts */
52
+ points?: PointPrompt[];
53
+ /** Box prompts */
54
+ boxes?: BoxPrompt[];
55
+ /** Return all masks or just the best one */
56
+ returnAllMasks?: boolean;
57
+ /** Mask threshold (0-1) */
58
+ maskThreshold?: number;
59
+ }
60
+ /**
61
+ * Segmentation result
62
+ */
63
+ export interface ImageSegmentationResult extends PipelineResult {
64
+ /** Segmentation mask (Uint8Array, 0 or 255) */
65
+ mask: Uint8Array;
66
+ /** Mask width */
67
+ width: number;
68
+ /** Mask height */
69
+ height: number;
70
+ /** Confidence score */
71
+ score: number;
72
+ /** All masks if returnAllMasks is true */
73
+ allMasks?: Array<{
74
+ mask: Uint8Array;
75
+ score: number;
76
+ }>;
77
+ }
78
+ /**
79
+ * Image input types
80
+ */
81
+ export type ImageInput = HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | string;
82
+ /**
83
+ * ImageSegmentationPipeline - Interactive image segmentation
84
+ *
85
+ * Uses SAM-style models for point/box prompted segmentation.
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const segmenter = createImageSegmentationPipeline();
90
+ *
91
+ * // Load models with progress callback
92
+ * await segmenter.loadModels((progress) => {
93
+ * console.log(`Loading ${progress.model}: ${progress.progress}%`);
94
+ * });
95
+ *
96
+ * // Set image and segment
97
+ * await segmenter.setImage(imageElement);
98
+ * const result = await segmenter.segment({
99
+ * points: [{ x: 0.5, y: 0.5, label: 1 }]
100
+ * });
101
+ * ```
102
+ */
103
+ export declare class ImageSegmentationPipeline extends BasePipeline<ImageInput, ImageSegmentationResult> {
104
+ private encoderModel;
105
+ private decoderModel;
106
+ private imageEmbedding;
107
+ private imagePositionalEmbedding;
108
+ private currentImageSize;
109
+ private resizedImageSize;
110
+ private inputSize;
111
+ private modelsLoaded;
112
+ private encoderUrl;
113
+ private decoderUrl;
114
+ constructor(config: PipelineConfig);
115
+ /**
116
+ * Check if models are loaded
117
+ */
118
+ get isModelsLoaded(): boolean;
119
+ /**
120
+ * Set custom model URLs
121
+ */
122
+ setModelUrls(encoder: string, decoder: string): void;
123
+ /**
124
+ * Load both encoder and decoder models with progress callback
125
+ */
126
+ loadModels(onProgress?: (progress: ModelLoadProgress) => void): Promise<void>;
127
+ /**
128
+ * Fetch model with progress tracking
129
+ */
130
+ private fetchModelWithProgress;
131
+ /**
132
+ * Initialize pipeline (override to skip default model loading)
133
+ */
134
+ initialize(): Promise<void>;
135
+ /**
136
+ * Load encoder model (processes the image once)
137
+ */
138
+ loadEncoder(modelUrl: string): Promise<void>;
139
+ /**
140
+ * Load decoder model (processes prompts to generate masks)
141
+ */
142
+ loadDecoder(modelUrl: string): Promise<void>;
143
+ /**
144
+ * Set and encode the image (call once per image)
145
+ */
146
+ setImage(image: ImageInput): Promise<void>;
147
+ /**
148
+ * Segment the image with given prompts
149
+ */
150
+ segment(options?: ImageSegmentationOptions): Promise<ImageSegmentationResult>;
151
+ /**
152
+ * Run segmentation (implements BasePipeline interface)
153
+ */
154
+ run(input: ImageInput, options?: ImageSegmentationOptions): Promise<ImageSegmentationResult>;
155
+ /**
156
+ * Load image from various sources
157
+ */
158
+ private loadImage;
159
+ /**
160
+ * Load image from URL
161
+ */
162
+ private loadImageFromUrl;
163
+ /**
164
+ * Convert HTMLImageElement to ImageData
165
+ */
166
+ private imageElementToImageData;
167
+ /**
168
+ * Convert canvas to ImageData
169
+ */
170
+ private canvasToImageData;
171
+ /**
172
+ * Convert ImageBitmap to ImageData
173
+ */
174
+ private imageBitmapToImageData;
175
+ /**
176
+ * Preprocess image for SAM
177
+ */
178
+ private preprocessImage;
179
+ /**
180
+ * Prepare decoder inputs (prompts) for SlimSAM
181
+ *
182
+ * SlimSAM prompt_encoder_mask_decoder expects these named inputs:
183
+ * - image_embeddings: [1, 256, 64, 64]
184
+ * - point_coords: [batch, num_points, 2]
185
+ * - point_labels: [batch, num_points]
186
+ * - mask_input: [batch, 1, 256, 256]
187
+ * - has_mask_input: [batch, 1]
188
+ * - orig_im_size: [2]
189
+ * - position_ids: [batch, num_points]
190
+ */
191
+ private prepareDecoderInputs;
192
+ /**
193
+ * Post-process masks from decoder output
194
+ */
195
+ private postprocessMasks;
196
+ /**
197
+ * Resize mask from model output size to original image size
198
+ */
199
+ private resizeMask;
200
+ /**
201
+ * Clear the current image embedding
202
+ */
203
+ clearImage(): void;
204
+ /**
205
+ * Preprocess (required by BasePipeline)
206
+ */
207
+ protected preprocess(input: ImageInput): Promise<EdgeFlowTensor[]>;
208
+ /**
209
+ * Postprocess (required by BasePipeline)
210
+ */
211
+ protected postprocess(_outputs: EdgeFlowTensor[], _options?: PipelineOptions): Promise<ImageSegmentationResult>;
212
+ /**
213
+ * Dispose resources
214
+ */
215
+ dispose(): void;
216
+ }
217
+ /**
218
+ * Create image segmentation pipeline
219
+ */
220
+ export declare function createImageSegmentationPipeline(config?: Partial<PipelineConfig>): ImageSegmentationPipeline;
221
+ //# sourceMappingURL=image-segmentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-segmentation.d.ts","sourceRoot":"","sources":["../../src/pipelines/image-segmentation.ts"],"names":[],"mappings":"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"}