rtmlib-ts 0.0.2

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 (150) hide show
  1. package/.gitattributes +1 -0
  2. package/README.md +202 -0
  3. package/dist/core/base.d.ts +20 -0
  4. package/dist/core/base.d.ts.map +1 -0
  5. package/dist/core/base.js +40 -0
  6. package/dist/core/file.d.ts +11 -0
  7. package/dist/core/file.d.ts.map +1 -0
  8. package/dist/core/file.js +111 -0
  9. package/dist/core/modelCache.d.ts +35 -0
  10. package/dist/core/modelCache.d.ts.map +1 -0
  11. package/dist/core/modelCache.js +161 -0
  12. package/dist/core/posePostprocessing.d.ts +12 -0
  13. package/dist/core/posePostprocessing.d.ts.map +1 -0
  14. package/dist/core/posePostprocessing.js +76 -0
  15. package/dist/core/postprocessing.d.ts +10 -0
  16. package/dist/core/postprocessing.d.ts.map +1 -0
  17. package/dist/core/postprocessing.js +70 -0
  18. package/dist/core/preprocessing.d.ts +14 -0
  19. package/dist/core/preprocessing.d.ts.map +1 -0
  20. package/dist/core/preprocessing.js +79 -0
  21. package/dist/index.d.ts +27 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +31 -0
  24. package/dist/models/rtmpose.d.ts +25 -0
  25. package/dist/models/rtmpose.d.ts.map +1 -0
  26. package/dist/models/rtmpose.js +185 -0
  27. package/dist/models/rtmpose3d.d.ts +28 -0
  28. package/dist/models/rtmpose3d.d.ts.map +1 -0
  29. package/dist/models/rtmpose3d.js +184 -0
  30. package/dist/models/yolo12.d.ts +23 -0
  31. package/dist/models/yolo12.d.ts.map +1 -0
  32. package/dist/models/yolo12.js +165 -0
  33. package/dist/models/yolox.d.ts +18 -0
  34. package/dist/models/yolox.d.ts.map +1 -0
  35. package/dist/models/yolox.js +167 -0
  36. package/dist/solution/animalDetector.d.ts +229 -0
  37. package/dist/solution/animalDetector.d.ts.map +1 -0
  38. package/dist/solution/animalDetector.js +663 -0
  39. package/dist/solution/body.d.ts +16 -0
  40. package/dist/solution/body.d.ts.map +1 -0
  41. package/dist/solution/body.js +52 -0
  42. package/dist/solution/bodyWithFeet.d.ts +16 -0
  43. package/dist/solution/bodyWithFeet.d.ts.map +1 -0
  44. package/dist/solution/bodyWithFeet.js +52 -0
  45. package/dist/solution/customDetector.d.ts +137 -0
  46. package/dist/solution/customDetector.d.ts.map +1 -0
  47. package/dist/solution/customDetector.js +342 -0
  48. package/dist/solution/hand.d.ts +14 -0
  49. package/dist/solution/hand.d.ts.map +1 -0
  50. package/dist/solution/hand.js +20 -0
  51. package/dist/solution/index.d.ts +10 -0
  52. package/dist/solution/index.d.ts.map +1 -0
  53. package/dist/solution/index.js +9 -0
  54. package/dist/solution/objectDetector.d.ts +172 -0
  55. package/dist/solution/objectDetector.d.ts.map +1 -0
  56. package/dist/solution/objectDetector.js +606 -0
  57. package/dist/solution/pose3dDetector.d.ts +145 -0
  58. package/dist/solution/pose3dDetector.d.ts.map +1 -0
  59. package/dist/solution/pose3dDetector.js +611 -0
  60. package/dist/solution/poseDetector.d.ts +198 -0
  61. package/dist/solution/poseDetector.d.ts.map +1 -0
  62. package/dist/solution/poseDetector.js +622 -0
  63. package/dist/solution/poseTracker.d.ts +22 -0
  64. package/dist/solution/poseTracker.d.ts.map +1 -0
  65. package/dist/solution/poseTracker.js +106 -0
  66. package/dist/solution/wholebody.d.ts +19 -0
  67. package/dist/solution/wholebody.d.ts.map +1 -0
  68. package/dist/solution/wholebody.js +82 -0
  69. package/dist/solution/wholebody3d.d.ts +22 -0
  70. package/dist/solution/wholebody3d.d.ts.map +1 -0
  71. package/dist/solution/wholebody3d.js +75 -0
  72. package/dist/types/index.d.ts +52 -0
  73. package/dist/types/index.d.ts.map +1 -0
  74. package/dist/types/index.js +5 -0
  75. package/dist/visualization/draw.d.ts +57 -0
  76. package/dist/visualization/draw.d.ts.map +1 -0
  77. package/dist/visualization/draw.js +400 -0
  78. package/dist/visualization/skeleton/coco133.d.ts +350 -0
  79. package/dist/visualization/skeleton/coco133.d.ts.map +1 -0
  80. package/dist/visualization/skeleton/coco133.js +120 -0
  81. package/dist/visualization/skeleton/coco17.d.ts +180 -0
  82. package/dist/visualization/skeleton/coco17.d.ts.map +1 -0
  83. package/dist/visualization/skeleton/coco17.js +48 -0
  84. package/dist/visualization/skeleton/halpe26.d.ts +278 -0
  85. package/dist/visualization/skeleton/halpe26.d.ts.map +1 -0
  86. package/dist/visualization/skeleton/halpe26.js +70 -0
  87. package/dist/visualization/skeleton/hand21.d.ts +196 -0
  88. package/dist/visualization/skeleton/hand21.d.ts.map +1 -0
  89. package/dist/visualization/skeleton/hand21.js +51 -0
  90. package/dist/visualization/skeleton/index.d.ts +10 -0
  91. package/dist/visualization/skeleton/index.d.ts.map +1 -0
  92. package/dist/visualization/skeleton/index.js +9 -0
  93. package/dist/visualization/skeleton/openpose134.d.ts +357 -0
  94. package/dist/visualization/skeleton/openpose134.d.ts.map +1 -0
  95. package/dist/visualization/skeleton/openpose134.js +116 -0
  96. package/dist/visualization/skeleton/openpose18.d.ts +177 -0
  97. package/dist/visualization/skeleton/openpose18.d.ts.map +1 -0
  98. package/dist/visualization/skeleton/openpose18.js +47 -0
  99. package/docs/ANIMAL_DETECTOR.md +450 -0
  100. package/docs/CUSTOM_DETECTOR.md +568 -0
  101. package/docs/OBJECT_DETECTOR.md +373 -0
  102. package/docs/POSE3D_DETECTOR.md +458 -0
  103. package/docs/POSE_DETECTOR.md +442 -0
  104. package/examples/README.md +119 -0
  105. package/examples/index.html +746 -0
  106. package/package.json +51 -0
  107. package/playground/README.md +114 -0
  108. package/playground/app/favicon.ico +0 -0
  109. package/playground/app/globals.css +17 -0
  110. package/playground/app/layout.tsx +19 -0
  111. package/playground/app/page.tsx +1338 -0
  112. package/playground/eslint.config.mjs +18 -0
  113. package/playground/next.config.ts +34 -0
  114. package/playground/package-lock.json +6723 -0
  115. package/playground/package.json +27 -0
  116. package/playground/postcss.config.mjs +7 -0
  117. package/playground/tsconfig.json +34 -0
  118. package/src/core/base.ts +66 -0
  119. package/src/core/file.ts +141 -0
  120. package/src/core/modelCache.ts +189 -0
  121. package/src/core/posePostprocessing.ts +91 -0
  122. package/src/core/postprocessing.ts +93 -0
  123. package/src/core/preprocessing.ts +127 -0
  124. package/src/index.ts +69 -0
  125. package/src/models/rtmpose.ts +265 -0
  126. package/src/models/rtmpose3d.ts +289 -0
  127. package/src/models/yolo12.ts +220 -0
  128. package/src/models/yolox.ts +214 -0
  129. package/src/solution/animalDetector.ts +955 -0
  130. package/src/solution/body.ts +89 -0
  131. package/src/solution/bodyWithFeet.ts +89 -0
  132. package/src/solution/customDetector.ts +474 -0
  133. package/src/solution/hand.ts +52 -0
  134. package/src/solution/index.ts +10 -0
  135. package/src/solution/objectDetector.ts +816 -0
  136. package/src/solution/pose3dDetector.ts +890 -0
  137. package/src/solution/poseDetector.ts +892 -0
  138. package/src/solution/poseTracker.ts +172 -0
  139. package/src/solution/wholebody.ts +130 -0
  140. package/src/solution/wholebody3d.ts +125 -0
  141. package/src/types/index.ts +62 -0
  142. package/src/visualization/draw.ts +543 -0
  143. package/src/visualization/skeleton/coco133.ts +131 -0
  144. package/src/visualization/skeleton/coco17.ts +49 -0
  145. package/src/visualization/skeleton/halpe26.ts +71 -0
  146. package/src/visualization/skeleton/hand21.ts +52 -0
  147. package/src/visualization/skeleton/index.ts +10 -0
  148. package/src/visualization/skeleton/openpose134.ts +125 -0
  149. package/src/visualization/skeleton/openpose18.ts +48 -0
  150. package/tsconfig.json +32 -0
@@ -0,0 +1,172 @@
1
+ /**
2
+ * ObjectDetector - Universal object detection API
3
+ * Supports YOLO12 and other YOLO models for multi-class detection
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * // Initialize with default model (YOLOv12n from HuggingFace)
8
+ * const detector = new ObjectDetector({
9
+ * classes: ['person', 'car', 'dog'], // Filter specific classes
10
+ * });
11
+ * await detector.init();
12
+ *
13
+ * // Or with custom model
14
+ * const detector = new ObjectDetector({
15
+ * model: 'models/yolov12n.onnx',
16
+ * classes: ['person'],
17
+ * });
18
+ * await detector.init();
19
+ *
20
+ * // Detect from canvas
21
+ * const objects = await detector.detectFromCanvas(canvas);
22
+ *
23
+ * // Detect all classes
24
+ * const allObjects = await detector.detectFromCanvas(canvas, { classes: null });
25
+ * ```
26
+ */
27
+ /**
28
+ * COCO 80-class names
29
+ */
30
+ export declare const COCO_CLASSES: string[];
31
+ /**
32
+ * Configuration options for ObjectDetector
33
+ */
34
+ export interface ObjectDetectorConfig {
35
+ /** Path to YOLO detection model (optional - uses default YOLOv12n from HuggingFace if not specified) */
36
+ model?: string;
37
+ /** Input size (default: [416, 416] for speed) */
38
+ inputSize?: [number, number];
39
+ /** Confidence threshold (default: 0.5) */
40
+ confidence?: number;
41
+ /** NMS IoU threshold (default: 0.45) */
42
+ nmsThreshold?: number;
43
+ /** Classes to detect (null = all, default: ['person']) */
44
+ classes?: string[] | null;
45
+ /** Execution backend (default: 'wasm') */
46
+ backend?: 'wasm' | 'webgpu';
47
+ /** Performance mode (default: 'balanced') */
48
+ mode?: 'performance' | 'balanced' | 'lightweight';
49
+ /** Device type (for future use) */
50
+ device?: 'cpu' | 'gpu';
51
+ /** Enable model caching (default: true) */
52
+ cache?: boolean;
53
+ }
54
+ /**
55
+ * Detected object with bounding box and class
56
+ */
57
+ export interface DetectedObject {
58
+ /** Bounding box coordinates */
59
+ bbox: {
60
+ x1: number;
61
+ y1: number;
62
+ x2: number;
63
+ y2: number;
64
+ confidence: number;
65
+ };
66
+ /** Class ID (0-79 for COCO) */
67
+ classId: number;
68
+ /** Class name */
69
+ className: string;
70
+ /** Detection confidence (0-1) */
71
+ confidence: number;
72
+ }
73
+ /**
74
+ * Detection statistics
75
+ */
76
+ export interface DetectionStats {
77
+ /** Total number of detections */
78
+ totalCount: number;
79
+ /** Detections per class */
80
+ classCounts: Record<string, number>;
81
+ /** Inference time (ms) */
82
+ inferenceTime: number;
83
+ }
84
+ export declare class ObjectDetector {
85
+ private config;
86
+ private session;
87
+ private initialized;
88
+ private classFilter;
89
+ private canvas;
90
+ private ctx;
91
+ private tensorBuffer;
92
+ private inputSize;
93
+ constructor(config: ObjectDetectorConfig);
94
+ /**
95
+ * Update class filter based on config
96
+ */
97
+ private updateClassFilter;
98
+ /**
99
+ * Set which classes to detect
100
+ * @param classes - Array of class names or null for all classes
101
+ */
102
+ setClasses(classes: string[] | null): void;
103
+ /**
104
+ * Get list of available COCO classes
105
+ */
106
+ getAvailableClasses(): string[];
107
+ /**
108
+ * Get currently filtered classes
109
+ */
110
+ getFilteredClasses(): string[] | null;
111
+ /**
112
+ * Initialize detection model and pre-allocate resources
113
+ */
114
+ init(): Promise<void>;
115
+ /**
116
+ * Detect objects from HTMLCanvasElement
117
+ */
118
+ detectFromCanvas(canvas: HTMLCanvasElement): Promise<DetectedObject[]>;
119
+ /**
120
+ * Detect objects from HTMLVideoElement
121
+ */
122
+ detectFromVideo(video: HTMLVideoElement, targetCanvas?: HTMLCanvasElement): Promise<DetectedObject[]>;
123
+ /**
124
+ * Detect objects from HTMLImageElement
125
+ */
126
+ detectFromImage(image: HTMLImageElement, targetCanvas?: HTMLCanvasElement): Promise<DetectedObject[]>;
127
+ /**
128
+ * Detect objects from ImageBitmap
129
+ */
130
+ detectFromBitmap(bitmap: ImageBitmap, targetCanvas?: HTMLCanvasElement): Promise<DetectedObject[]>;
131
+ /**
132
+ * Detect objects from File
133
+ */
134
+ detectFromFile(file: File, targetCanvas?: HTMLCanvasElement): Promise<DetectedObject[]>;
135
+ /**
136
+ * Detect objects from Blob
137
+ */
138
+ detectFromBlob(blob: Blob, targetCanvas?: HTMLCanvasElement): Promise<DetectedObject[]>;
139
+ /**
140
+ * Detect objects from raw image data
141
+ */
142
+ detect(imageData: Uint8Array, width: number, height: number): Promise<DetectedObject[]>;
143
+ /**
144
+ * Optimized preprocess with resource reuse
145
+ */
146
+ private preprocess;
147
+ /**
148
+ * Postprocess YOLO output - supports multiple output formats
149
+ */
150
+ private postprocess;
151
+ /**
152
+ * Multi-class Non-Maximum Suppression
153
+ */
154
+ private applyMultiClassNMS;
155
+ /**
156
+ * Calculate IoU between two boxes
157
+ */
158
+ private calculateIoU;
159
+ /**
160
+ * Calculate detection statistics
161
+ */
162
+ private calculateStats;
163
+ /**
164
+ * Get statistics from last detection
165
+ */
166
+ getStats(): DetectionStats | null;
167
+ /**
168
+ * Dispose resources
169
+ */
170
+ dispose(): void;
171
+ }
172
+ //# sourceMappingURL=objectDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectDetector.d.ts","sourceRoot":"","sources":["../../src/solution/objectDetector.ts"],"names":[],"mappings":"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"}