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,145 @@
1
+ /**
2
+ * Pose3DDetector - 3D Pose Estimation API
3
+ * Combines YOLOX detector with RTMW3D 3D pose model
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * // Initialize with default models
8
+ * const detector = new Pose3DDetector();
9
+ * await detector.init();
10
+ *
11
+ * // From canvas
12
+ * const result = await detector.detectFromCanvas(canvas);
13
+ * console.log(result.keypoints[0][0]); // [x, y, z] - 3D coordinates
14
+ *
15
+ * // With custom models
16
+ * const detector2 = new Pose3DDetector({
17
+ * detModel: 'path/to/yolox.onnx',
18
+ * poseModel: 'path/to/rtmw3d.onnx',
19
+ * });
20
+ * ```
21
+ */
22
+ import { Wholebody3DResult } from './wholebody3d';
23
+ /**
24
+ * Configuration options for Pose3DDetector
25
+ */
26
+ export interface Pose3DDetectorConfig {
27
+ /** Path to YOLOX detection model (optional - uses default if not specified) */
28
+ detModel?: string;
29
+ /** Path to RTMW3D 3D pose estimation model (optional - uses default if not specified) */
30
+ poseModel?: string;
31
+ /** Detection input size (default: [640, 640]) */
32
+ detInputSize?: [number, number];
33
+ /** Pose input size (default: [384, 288]) */
34
+ poseInputSize?: [number, number];
35
+ /** Detection confidence threshold (default: 0.45) */
36
+ detConfidence?: number;
37
+ /** NMS IoU threshold (default: 0.7) */
38
+ nmsThreshold?: number;
39
+ /** Pose keypoint confidence threshold (default: 0.3) */
40
+ poseConfidence?: number;
41
+ /** Execution backend (default: 'webgpu') */
42
+ backend?: 'wasm' | 'webgpu';
43
+ /** Enable model caching (default: true) */
44
+ cache?: boolean;
45
+ /** Z-axis range in meters (default: 2.1744869) */
46
+ zRange?: number;
47
+ }
48
+ /**
49
+ * 3D Person result with 3D keypoints
50
+ */
51
+ export interface Person3D {
52
+ /** Bounding box coordinates */
53
+ bbox: {
54
+ x1: number;
55
+ y1: number;
56
+ x2: number;
57
+ y2: number;
58
+ confidence: number;
59
+ };
60
+ /** 17 3D keypoints [x, y, z] in meters */
61
+ keypoints: number[][];
62
+ /** Keypoint scores (0-1) */
63
+ scores: number[];
64
+ /** 2D projection of keypoints */
65
+ keypoints2d: number[][];
66
+ /** Normalized SimCC coordinates */
67
+ keypointsSimcc: number[][];
68
+ }
69
+ /**
70
+ * Detection statistics
71
+ */
72
+ export interface Pose3DStats {
73
+ /** Number of detected people */
74
+ personCount: number;
75
+ /** Detection inference time (ms) */
76
+ detTime: number;
77
+ /** 3D Pose estimation time (ms) */
78
+ poseTime: number;
79
+ /** Total processing time (ms) */
80
+ totalTime: number;
81
+ }
82
+ export declare class Pose3DDetector {
83
+ private config;
84
+ private detSession;
85
+ private poseSession;
86
+ private initialized;
87
+ private outputNamesLogged;
88
+ private canvas;
89
+ private ctx;
90
+ private poseCanvas;
91
+ private poseCtx;
92
+ private poseTensorBuffer;
93
+ private detInputSize;
94
+ private poseInputSize;
95
+ private srcPoseCanvas;
96
+ private srcPoseCtx;
97
+ constructor(config?: Pose3DDetectorConfig);
98
+ /**
99
+ * Initialize both detection and 3D pose models
100
+ */
101
+ init(): Promise<void>;
102
+ /**
103
+ * Detect 3D poses from HTMLCanvasElement
104
+ */
105
+ detectFromCanvas(canvas: HTMLCanvasElement): Promise<Wholebody3DResult>;
106
+ /**
107
+ * Detect 3D poses from HTMLVideoElement
108
+ */
109
+ detectFromVideo(video: HTMLVideoElement, targetCanvas?: HTMLCanvasElement): Promise<Wholebody3DResult>;
110
+ /**
111
+ * Detect 3D poses from HTMLImageElement
112
+ */
113
+ detectFromImage(image: HTMLImageElement, targetCanvas?: HTMLCanvasElement): Promise<Wholebody3DResult>;
114
+ /**
115
+ * Detect 3D poses from ImageBitmap
116
+ */
117
+ detectFromBitmap(bitmap: ImageBitmap, targetCanvas?: HTMLCanvasElement): Promise<Wholebody3DResult>;
118
+ /**
119
+ * Detect 3D poses from File
120
+ */
121
+ detectFromFile(file: File, targetCanvas?: HTMLCanvasElement): Promise<Wholebody3DResult>;
122
+ /**
123
+ * Detect 3D poses from Blob
124
+ */
125
+ detectFromBlob(blob: Blob, targetCanvas?: HTMLCanvasElement): Promise<Wholebody3DResult>;
126
+ /**
127
+ * Detect 3D poses from raw image data
128
+ */
129
+ detect(imageData: Uint8Array, width: number, height: number): Promise<Wholebody3DResult>;
130
+ /**
131
+ * Detect people using YOLOX
132
+ */
133
+ private detectPeople;
134
+ /**
135
+ * Estimate 3D pose for a single person
136
+ */
137
+ private estimatePose3D;
138
+ private preprocessYOLO;
139
+ private postprocessYOLO;
140
+ private preprocessPose;
141
+ private postprocessPose3D;
142
+ private applyNMS;
143
+ private calculateIoU;
144
+ }
145
+ //# sourceMappingURL=pose3dDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pose3dDetector.d.ts","sourceRoot":"","sources":["../../src/solution/pose3dDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOlD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,0CAA0C;IAC1C,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IACtB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iCAAiC;IACjC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,mCAAmC;IACnC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAyCD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAyC;IACpD,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,aAAa,CAAgC;IAGrD,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAAyC;gBAE/C,MAAM,GAAE,oBAAyB;IAQ7C;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwF3B;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAU7E;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAoB7B;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,gBAAgB,EACvB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAoB7B;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAgB7B;;OAEG;IACG,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAgB7B;;OAEG;IACG,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAO7B;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IAoD7B;;OAEG;YACW,YAAY;IAmC1B;;OAEG;YACW,cAAc;IA8E5B,OAAO,CAAC,cAAc;IAqEtB,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,cAAc;IAsGtB,OAAO,CAAC,iBAAiB;IA+EzB,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,YAAY;CAkBrB"}