@camstack/addon-pipeline 1.2.324 → 1.2.326
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/THIRD_PARTY_MODELS.md +6 -30
- package/dist/audio-analyzer/index.js +2 -2
- package/dist/audio-analyzer/index.mjs +2 -2
- package/dist/{default-detection-model-lWMQATmQ.mjs → default-detection-model-Bu4So71h.mjs} +96 -476
- package/dist/{default-detection-model-4nJVRIT6.js → default-detection-model-WnGDQAQh.js} +95 -481
- package/dist/detection-pipeline/index.js +9 -4
- package/dist/detection-pipeline/index.mjs +9 -4
- package/dist/{dist-DlgXwnqU.js → dist-BTBbIGSC.js} +31 -49
- package/dist/{dist-CbRb0Zyj.mjs → dist-BuU8Y4o1.mjs} +31 -49
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/{node-s3wZnnJg.js → node-UK2v2ZSw.js} +1 -1
- package/dist/{node-CZ5DXcvq.mjs → node-inZFYgkm.mjs} +1 -1
- package/dist/pipeline-runner/index.js +3 -5
- package/dist/pipeline-runner/index.mjs +3 -5
- package/dist/{process-memory-C-mZ1LNi.js → process-memory-BfDlwJc4.js} +1 -1
- package/dist/{process-memory-CJsA4yRc.mjs → process-memory-DbSOL63T.mjs} +1 -1
- package/dist/recorder/index.js +3 -4
- package/dist/recorder/index.mjs +3 -4
- package/dist/{segment-demux-js-BbM0_Fmz.js → segment-demux-js-C1GXgxZ0.js} +1 -1
- package/dist/{segment-demux-js-CuwXgwpj.mjs → segment-demux-js-CMj020zz.mjs} +1 -1
- package/dist/stream-broker/_stub.js +1 -1
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Duo5d4kr.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-qHD9Dl1z.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BpXPNINd.mjs +26 -0
- package/dist/stream-broker/demux-worker-child.js +1 -1
- package/dist/stream-broker/demux-worker-child.mjs +1 -1
- package/dist/stream-broker/{hostInit-C-RUqF9D.mjs → hostInit-BgWrKrQn.mjs} +2 -2
- package/dist/stream-broker/index.js +3 -3
- package/dist/stream-broker/index.mjs +3 -3
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/python/edgetpu_dequant.py +55 -0
- package/python/inference_pool.py +19 -3
- package/python/postprocessors/__init__.py +2 -0
- package/python/postprocessors/test_ssd.py +5 -6
- package/python/postprocessors/test_yolo_split_dfl.py +135 -0
- package/python/postprocessors/yolo_split_dfl.py +255 -0
- package/python/test_dequant_edgetpu.py +65 -0
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-mEJkrfvj.mjs +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
1
|
+
const require_dist = require("./dist-BTBbIGSC.js");
|
|
2
2
|
const require_worker_protocol = require("./worker-protocol-C-G8qmye.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
//#region src/detection-pipeline/registry/effective-confidence.ts
|
|
@@ -51,7 +51,8 @@ var ULTRALYTICS_YOLOV9_AGPL = {
|
|
|
51
51
|
...ULTRALYTICS_AGPL,
|
|
52
52
|
attribution: "© Ultralytics, AGPL-3.0 (Ultralytics YOLOv9 weights). YOLOv9 architecture: Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao, GPL-3.0 (https://github.com/WongKinYiu/yolov9). Corresponding source: the upstream Ultralytics checkpoint and scripts/build-camstack-models.py in https://github.com/camstack/server."
|
|
53
53
|
};
|
|
54
|
-
|
|
54
|
+
/** The CamStack Coral COCO detector (SSD MobileNet V2). */
|
|
55
|
+
var CORAL_COCO_APACHE = {
|
|
55
56
|
weights: "Apache-2.0",
|
|
56
57
|
code: "Apache-2.0",
|
|
57
58
|
upstream: {
|
|
@@ -60,19 +61,9 @@ var CORAL_APACHE = {
|
|
|
60
61
|
},
|
|
61
62
|
url: "https://github.com/google-coral/test_data/blob/master/LICENSE",
|
|
62
63
|
attribution: "Coral Edge TPU models and AIY Vision Birds V1 © Google LLC, Apache-2.0.",
|
|
63
|
-
hosting: "third-party"
|
|
64
|
-
};
|
|
65
|
-
/** The Coral COCO detectors (SSD MobileNet V2, EfficientDet-Lite0). */
|
|
66
|
-
var CORAL_COCO_APACHE = {
|
|
67
|
-
...CORAL_APACHE,
|
|
64
|
+
hosting: "third-party",
|
|
68
65
|
data: COCO_DATA
|
|
69
66
|
};
|
|
70
|
-
/** The Coral MobileDet build, mirrored byte for byte on the CamStack HF repo. */
|
|
71
|
-
var CORAL_MOBILEDET_MIRRORED = {
|
|
72
|
-
...CORAL_COCO_APACHE,
|
|
73
|
-
modifications: "none: ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite mirrored byte for byte (sha256 b69e508e…434a2e), with the CPU build and coco_labels.txt beside it (scripts/build-ssdlite-mobiledet-model.py)",
|
|
74
|
-
hosting: "camstack-hf"
|
|
75
|
-
};
|
|
76
67
|
var RFDETR_APACHE = {
|
|
77
68
|
weights: "Apache-2.0",
|
|
78
69
|
code: "Apache-2.0",
|
|
@@ -89,20 +80,6 @@ var RFDETR_APACHE = {
|
|
|
89
80
|
modifications: "RF-DETR-M fine-tuned to 2 classes at 576; exported to ONNX, OpenVINO IR and CoreML; training checkpoint .pth also published",
|
|
90
81
|
hosting: "camstack-hf"
|
|
91
82
|
};
|
|
92
|
-
var INSIGHTFACE_SCRFD_NC = {
|
|
93
|
-
weights: "LicenseRef-InsightFace-NonCommercial-Research",
|
|
94
|
-
code: "MIT",
|
|
95
|
-
data: WIDER_FACE_DATA,
|
|
96
|
-
upstream: {
|
|
97
|
-
name: "InsightFace SCRFD",
|
|
98
|
-
url: "https://github.com/deepinsight/insightface/tree/master/detection/scrfd"
|
|
99
|
-
},
|
|
100
|
-
url: "https://github.com/deepinsight/insightface#license",
|
|
101
|
-
attribution: "SCRFD © InsightFace. Pretrained models released for non-commercial research purposes only.",
|
|
102
|
-
modifications: "obtained via RuteNL/SCRFD-face-detection-ONNX; converted to OpenVINO IR and CoreML FP16",
|
|
103
|
-
hosting: "camstack-hf",
|
|
104
|
-
nonCommercial: true
|
|
105
|
-
};
|
|
106
83
|
var YUNET_MIT = {
|
|
107
84
|
weights: "MIT",
|
|
108
85
|
code: "BSD-3-Clause",
|
|
@@ -116,27 +93,6 @@ var YUNET_MIT = {
|
|
|
116
93
|
modifications: "input contract baked into the graph (the pool RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather); internal tensor names cleared in the OpenVINO IR; ONNX fp32, OpenVINO IR fp32, CoreML fp16 (scripts/build-yunet-model.py)",
|
|
117
94
|
hosting: "camstack-hf"
|
|
118
95
|
};
|
|
119
|
-
var SCRYPTED_UNKNOWN = {
|
|
120
|
-
weights: "UNKNOWN",
|
|
121
|
-
upstream: {
|
|
122
|
-
name: "Scrypted plugin-models (repository tagged MIT, no per-model terms)",
|
|
123
|
-
url: "https://huggingface.co/scrypted/plugin-models"
|
|
124
|
-
},
|
|
125
|
-
url: "https://huggingface.co/scrypted/plugin-models",
|
|
126
|
-
attribution: "Scrypted plugin models, Koushik Dutta: repository tagged MIT (licenses/models/MIT-scrypted-plugin-models.txt), no per-model terms.",
|
|
127
|
-
modifications: "ONNX and CoreML fetched from scrypted/plugin-models; OpenVINO IR converted and re-hosted by CamStack",
|
|
128
|
-
hosting: "camstack-hf"
|
|
129
|
-
};
|
|
130
|
-
var ARCFACE_UNKNOWN = {
|
|
131
|
-
weights: "UNKNOWN",
|
|
132
|
-
upstream: {
|
|
133
|
-
name: "onnx-community/arcface-onnx (re-upload of garavv/arcface-onnx)",
|
|
134
|
-
url: "https://huggingface.co/onnx-community/arcface-onnx"
|
|
135
|
-
},
|
|
136
|
-
url: "https://huggingface.co/onnx-community/arcface-onnx",
|
|
137
|
-
modifications: "converted to OpenVINO IR and CoreML FP16",
|
|
138
|
-
hosting: "camstack-hf"
|
|
139
|
-
};
|
|
140
96
|
var AURAFACE_APACHE = {
|
|
141
97
|
weights: "Apache-2.0",
|
|
142
98
|
upstream: {
|
|
@@ -164,18 +120,6 @@ var FAST_PLATE_OCR_MIT = {
|
|
|
164
120
|
modifications: "input head removed (recorded in the ONNX doc_string); converted to OpenVINO IR and CoreML",
|
|
165
121
|
hosting: "camstack-hf"
|
|
166
122
|
};
|
|
167
|
-
var EASYOCR_APACHE = {
|
|
168
|
-
weights: "Apache-2.0",
|
|
169
|
-
code: "Apache-2.0",
|
|
170
|
-
upstream: {
|
|
171
|
-
name: "JaidedAI EasyOCR (via Scrypted plugin-models)",
|
|
172
|
-
url: "https://github.com/JaidedAI/EasyOCR"
|
|
173
|
-
},
|
|
174
|
-
url: "https://github.com/JaidedAI/EasyOCR/blob/master/LICENSE",
|
|
175
|
-
attribution: "EasyOCR © JaidedAI, Apache-2.0.",
|
|
176
|
-
modifications: "ONNX and CoreML fetched from scrypted/plugin-models; OpenVINO IR converted and re-hosted by CamStack",
|
|
177
|
-
hosting: "camstack-hf"
|
|
178
|
-
};
|
|
179
123
|
var ANIMAL_CLASSIFIER_APACHE = {
|
|
180
124
|
weights: "Apache-2.0",
|
|
181
125
|
code: "Apache-2.0",
|
|
@@ -238,19 +182,6 @@ var U2NET_APACHE = {
|
|
|
238
182
|
modifications: "converted to ONNX, OpenVINO IR and CoreML",
|
|
239
183
|
hosting: "camstack-hf"
|
|
240
184
|
};
|
|
241
|
-
var APPLE_MOBILECLIP_AMLR = {
|
|
242
|
-
weights: "LicenseRef-Apple-AMLR",
|
|
243
|
-
code: "MIT",
|
|
244
|
-
upstream: {
|
|
245
|
-
name: "Apple ml-mobileclip",
|
|
246
|
-
url: "https://github.com/apple/ml-mobileclip"
|
|
247
|
-
},
|
|
248
|
-
url: "https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS",
|
|
249
|
-
attribution: "Apple Machine Learning Research Model is licensed under the Apple Machine Learning Research Model License Agreement.",
|
|
250
|
-
modifications: "model derivative: vision encoders converted to OpenVINO IR and CoreML FP16",
|
|
251
|
-
hosting: "camstack-hf",
|
|
252
|
-
nonCommercial: true
|
|
253
|
-
};
|
|
254
185
|
var SIGLIP2_APACHE = {
|
|
255
186
|
weights: "Apache-2.0",
|
|
256
187
|
code: "Apache-2.0",
|
|
@@ -303,9 +234,7 @@ function licensed(base, overrides) {
|
|
|
303
234
|
//#endregion
|
|
304
235
|
//#region src/detection-pipeline/registry/model-catalogs.ts
|
|
305
236
|
var HF_REPO = "camstack/camstack-models";
|
|
306
|
-
var HF_SCRYPTED = "scrypted/plugin-models";
|
|
307
237
|
var hf = (path) => require_dist.hfModelUrl(HF_REPO, path);
|
|
308
|
-
var hfScrypted = (path) => require_dist.hfModelUrl(HF_SCRYPTED, path);
|
|
309
238
|
/**
|
|
310
239
|
* Build an OpenVINO format entry (always python runtime).
|
|
311
240
|
*
|
|
@@ -664,42 +593,6 @@ var OBJECT_DETECTION_MODELS = [
|
|
|
664
593
|
runtimes: ["python"]
|
|
665
594
|
} }
|
|
666
595
|
},
|
|
667
|
-
{
|
|
668
|
-
id: "efficientdet-lite0-edgetpu",
|
|
669
|
-
license: CORAL_COCO_APACHE,
|
|
670
|
-
name: "EfficientDet-Lite0 (Coral)",
|
|
671
|
-
description: "EfficientDet-Lite0 COCO — EdgeTPU-compiled full-integer TFLite, 320×320; higher accuracy than SSD MobileNet on the Coral USB Edge TPU",
|
|
672
|
-
inputSize: {
|
|
673
|
-
width: 320,
|
|
674
|
-
height: 320
|
|
675
|
-
},
|
|
676
|
-
labels: [],
|
|
677
|
-
preprocessMode: "letterbox",
|
|
678
|
-
postprocessor: "ssd",
|
|
679
|
-
formats: { tflite: {
|
|
680
|
-
url: "https://github.com/google-coral/test_data/raw/master/efficientdet_lite0_320_ptq_edgetpu.tflite",
|
|
681
|
-
sizeMB: 5.7,
|
|
682
|
-
runtimes: ["python"]
|
|
683
|
-
} }
|
|
684
|
-
},
|
|
685
|
-
{
|
|
686
|
-
id: "ssdlite-mobiledet-coco-edgetpu",
|
|
687
|
-
license: CORAL_MOBILEDET_MIRRORED,
|
|
688
|
-
name: "SSDLite MobileDet (Coral)",
|
|
689
|
-
description: "SSDLite MobileDet COCO (QAT) — EdgeTPU-compiled full-integer TFLite, 320×320; runs on the Coral USB Edge TPU. More accurate than SSD MobileNet V2 (32.9 vs 25.6 % COCO mAP, Coral-published). Scores top out near 0.77.",
|
|
690
|
-
inputSize: {
|
|
691
|
-
width: 320,
|
|
692
|
-
height: 320
|
|
693
|
-
},
|
|
694
|
-
labels: [],
|
|
695
|
-
preprocessMode: "letterbox",
|
|
696
|
-
postprocessor: "ssd",
|
|
697
|
-
formats: { tflite: {
|
|
698
|
-
url: hf("objectDetection/ssdlite-mobiledet/edgetpu/ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite"),
|
|
699
|
-
sizeMB: 5.1,
|
|
700
|
-
runtimes: ["python"]
|
|
701
|
-
} }
|
|
702
|
-
},
|
|
703
596
|
ovPrecisionVariant("yolo26n", "objectDetection/yolo26/openvino", "YOLO26 Nano", "fp16", 5, true),
|
|
704
597
|
ovPrecisionVariant("yolo26n", "objectDetection/yolo26/openvino", "YOLO26 Nano", "int8", 3),
|
|
705
598
|
ovPrecisionVariant("yolo26s", "objectDetection/yolo26/openvino", "YOLO26 Small", "fp16", 19, true),
|
|
@@ -807,199 +700,67 @@ var OBJECT_DETECTION_MODELS = [
|
|
|
807
700
|
ovPrecisionVariant("yolo26x", "objectDetection/yolo26/openvino", "YOLO26 XLarge", "fp16", 112, true),
|
|
808
701
|
ovPrecisionVariant("yolo26x", "objectDetection/yolo26/openvino", "YOLO26 XLarge", "int8", 56, true)
|
|
809
702
|
];
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
* A retired id resolves to the step's format default instead.
|
|
819
|
-
*/
|
|
820
|
-
var RETIRED_MODEL_IDS = {
|
|
821
|
-
"face-detection": ["scrypted-yolov9t-face"],
|
|
822
|
-
"animal-classifier": ["animals-10"],
|
|
823
|
-
"bird-classifier": ["bird-nabirds-404"],
|
|
824
|
-
"vehicle-classifier": ["vehicle-type-efficientnet"]
|
|
825
|
-
};
|
|
826
|
-
var FACE_DETECTION_MODELS = [
|
|
827
|
-
{
|
|
828
|
-
id: "scrfd-2.5g",
|
|
829
|
-
license: INSIGHTFACE_SCRFD_NC,
|
|
830
|
-
name: "SCRFD 2.5G",
|
|
831
|
-
description: "SCRFD 2.5G bnkps — balanced face detection with 5 keypoints (WIDER FACE 93.80/92.02/77.13). InsightFace pretrained weights.",
|
|
832
|
-
inputSize: {
|
|
833
|
-
width: 640,
|
|
834
|
-
height: 640
|
|
835
|
-
},
|
|
836
|
-
labels: [{
|
|
837
|
-
id: "face",
|
|
838
|
-
name: "Face"
|
|
839
|
-
}],
|
|
840
|
-
preprocessMode: "letterbox",
|
|
841
|
-
inputNormalization: "scrfd",
|
|
842
|
-
formats: {
|
|
843
|
-
onnx: {
|
|
844
|
-
url: hf("faceDetection/scrfd/onnx/camstack-scrfd-2.5g.onnx"),
|
|
845
|
-
sizeMB: 3.1
|
|
846
|
-
},
|
|
847
|
-
coreml: {
|
|
848
|
-
url: hf("faceDetection/scrfd/coreml/camstack-scrfd-2.5g.mlpackage"),
|
|
849
|
-
sizeMB: 1.7,
|
|
850
|
-
isDirectory: true,
|
|
851
|
-
files: [...MLPACKAGE_FILES],
|
|
852
|
-
runtimes: ["python"]
|
|
853
|
-
},
|
|
854
|
-
openvino: ovFormat(hf("faceDetection/scrfd/openvino/camstack-scrfd-2.5g.xml"), 1.8)
|
|
855
|
-
}
|
|
856
|
-
},
|
|
857
|
-
{
|
|
858
|
-
id: "yunet-2023mar",
|
|
859
|
-
license: YUNET_MIT,
|
|
860
|
-
name: "YuNet 2023mar",
|
|
861
|
-
description: "YuNet (OpenCV Zoo, 2023mar) — tiny face detector with 5 keypoints, MIT weights (WIDER FACE AP 0.884/0.866/0.750). ~0.2 MB. Trained on WIDER FACE (CC BY-NC-ND images).",
|
|
862
|
-
inputSize: {
|
|
863
|
-
width: 640,
|
|
864
|
-
height: 640
|
|
865
|
-
},
|
|
866
|
-
labels: [{
|
|
867
|
-
id: "face",
|
|
868
|
-
name: "Face"
|
|
869
|
-
}],
|
|
870
|
-
preprocessMode: "letterbox",
|
|
871
|
-
postprocessor: "yunet",
|
|
872
|
-
defaultConfidence: .85,
|
|
873
|
-
formats: {
|
|
874
|
-
onnx: {
|
|
875
|
-
url: hf("faceDetection/yunet/onnx/camstack-yunet-2023mar.onnx"),
|
|
876
|
-
sizeMB: .23
|
|
877
|
-
},
|
|
878
|
-
coreml: {
|
|
879
|
-
url: hf("faceDetection/yunet/coreml/camstack-yunet-2023mar.mlpackage"),
|
|
880
|
-
sizeMB: .2,
|
|
881
|
-
isDirectory: true,
|
|
882
|
-
files: [...MLPACKAGE_FILES],
|
|
883
|
-
runtimes: ["python"]
|
|
884
|
-
},
|
|
885
|
-
openvino: ovFormat(hf("faceDetection/yunet/openvino/camstack-yunet-2023mar.xml"), .36)
|
|
886
|
-
}
|
|
703
|
+
var FACE_DETECTION_MODELS = [{
|
|
704
|
+
id: "yunet-2023mar",
|
|
705
|
+
license: YUNET_MIT,
|
|
706
|
+
name: "YuNet 2023mar",
|
|
707
|
+
description: "YuNet (OpenCV Zoo, 2023mar) — tiny face detector with 5 keypoints, MIT weights (WIDER FACE AP 0.884/0.866/0.750). ~0.2 MB. Trained on WIDER FACE (CC BY-NC-ND images).",
|
|
708
|
+
inputSize: {
|
|
709
|
+
width: 640,
|
|
710
|
+
height: 640
|
|
887
711
|
},
|
|
888
|
-
{
|
|
889
|
-
id: "
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
712
|
+
labels: [{
|
|
713
|
+
id: "face",
|
|
714
|
+
name: "Face"
|
|
715
|
+
}],
|
|
716
|
+
preprocessMode: "letterbox",
|
|
717
|
+
postprocessor: "yunet",
|
|
718
|
+
defaultConfidence: .85,
|
|
719
|
+
formats: {
|
|
720
|
+
onnx: {
|
|
721
|
+
url: hf("faceDetection/yunet/onnx/camstack-yunet-2023mar.onnx"),
|
|
722
|
+
sizeMB: .23
|
|
897
723
|
},
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
postprocessor: "ssd",
|
|
904
|
-
formats: { tflite: {
|
|
905
|
-
url: "https://github.com/google-coral/test_data/raw/master/ssd_mobilenet_v2_face_quant_postprocess_edgetpu.tflite",
|
|
906
|
-
sizeMB: 6.7,
|
|
724
|
+
coreml: {
|
|
725
|
+
url: hf("faceDetection/yunet/coreml/camstack-yunet-2023mar.mlpackage"),
|
|
726
|
+
sizeMB: .2,
|
|
727
|
+
isDirectory: true,
|
|
728
|
+
files: [...MLPACKAGE_FILES],
|
|
907
729
|
runtimes: ["python"]
|
|
908
|
-
} }
|
|
909
|
-
}
|
|
910
|
-
];
|
|
911
|
-
var FACE_EMBEDDING_MODELS = [
|
|
912
|
-
{
|
|
913
|
-
id: "arcface-r100",
|
|
914
|
-
license: ARCFACE_UNKNOWN,
|
|
915
|
-
name: "ArcFace (ResNet34)",
|
|
916
|
-
description: "ArcFace ResNet34 — face recognition embeddings (512-d). NOTE: despite the `arcface-r100` id this is a ResNet34, not a ResNet-100 (verified 2026-08-19).",
|
|
917
|
-
inputSize: {
|
|
918
|
-
width: 112,
|
|
919
|
-
height: 112
|
|
920
730
|
},
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
},
|
|
933
|
-
coreml: {
|
|
934
|
-
url: hf("faceRecognition/arcface/coreml/camstack-arcface-r100.mlpackage"),
|
|
935
|
-
sizeMB: 65,
|
|
936
|
-
isDirectory: true,
|
|
937
|
-
files: [...MLPACKAGE_FILES],
|
|
938
|
-
runtimes: ["python"]
|
|
939
|
-
},
|
|
940
|
-
openvino: ovFormat(hf("faceRecognition/arcface/openvino/camstack-arcface-r100.xml"), 65)
|
|
941
|
-
}
|
|
731
|
+
openvino: ovFormat(hf("faceDetection/yunet/openvino/camstack-yunet-2023mar.xml"), .36)
|
|
732
|
+
}
|
|
733
|
+
}];
|
|
734
|
+
var FACE_EMBEDDING_MODELS = [{
|
|
735
|
+
id: "auraface-r100",
|
|
736
|
+
license: AURAFACE_APACHE,
|
|
737
|
+
name: "AuraFace R100",
|
|
738
|
+
description: "AuraFace v1 (fal.ai) — iResNet-100 ArcFace face recognition embeddings (512-d), Apache-2.0. Benchmarks published by fal: LFW 99.65, CFP-FP 95.19, AgeDB 96.10, CALFW 94.70, CPLFW 90.93. Genuinely a ResNet-100 (65 M params) — roughly twice the depth of the former `arcface-r100` entry, which was a ResNet34.",
|
|
739
|
+
inputSize: {
|
|
740
|
+
width: 112,
|
|
741
|
+
height: 112
|
|
942
742
|
},
|
|
943
|
-
{
|
|
944
|
-
id: "
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
743
|
+
labels: [{
|
|
744
|
+
id: "embedding",
|
|
745
|
+
name: "Face Embedding"
|
|
746
|
+
}],
|
|
747
|
+
preprocessMode: "resize",
|
|
748
|
+
faceAlignment: true,
|
|
749
|
+
formats: {
|
|
750
|
+
onnx: {
|
|
751
|
+
url: hf("faceRecognition/auraface/onnx/camstack-auraface-r100.onnx"),
|
|
752
|
+
sizeMB: 261
|
|
951
753
|
},
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
formats: {
|
|
959
|
-
onnx: {
|
|
960
|
-
url: hf("faceRecognition/auraface/onnx/camstack-auraface-r100.onnx"),
|
|
961
|
-
sizeMB: 261
|
|
962
|
-
},
|
|
963
|
-
coreml: {
|
|
964
|
-
url: hf("faceRecognition/auraface/coreml/camstack-auraface-r100.mlpackage"),
|
|
965
|
-
sizeMB: 131,
|
|
966
|
-
isDirectory: true,
|
|
967
|
-
files: [...MLPACKAGE_FILES],
|
|
968
|
-
runtimes: ["python"]
|
|
969
|
-
},
|
|
970
|
-
openvino: ovFormat(hf("faceRecognition/auraface/openvino/camstack-auraface-r100.xml"), 131)
|
|
971
|
-
}
|
|
972
|
-
},
|
|
973
|
-
{
|
|
974
|
-
id: "inception-resnet-v1",
|
|
975
|
-
license: SCRYPTED_UNKNOWN,
|
|
976
|
-
name: "Inception ResNet V1",
|
|
977
|
-
description: "FaceNet-style face recognition embeddings (512-d) — hosted on plugin-models HF repo",
|
|
978
|
-
inputSize: {
|
|
979
|
-
width: 160,
|
|
980
|
-
height: 160
|
|
754
|
+
coreml: {
|
|
755
|
+
url: hf("faceRecognition/auraface/coreml/camstack-auraface-r100.mlpackage"),
|
|
756
|
+
sizeMB: 131,
|
|
757
|
+
isDirectory: true,
|
|
758
|
+
files: [...MLPACKAGE_FILES],
|
|
759
|
+
runtimes: ["python"]
|
|
981
760
|
},
|
|
982
|
-
|
|
983
|
-
id: "embedding",
|
|
984
|
-
name: "Face Embedding"
|
|
985
|
-
}],
|
|
986
|
-
preprocessMode: "resize",
|
|
987
|
-
formats: {
|
|
988
|
-
onnx: {
|
|
989
|
-
url: hfScrypted("onnx/inception_resnet_v1/inception_resnet_v1.onnx"),
|
|
990
|
-
sizeMB: 89.6
|
|
991
|
-
},
|
|
992
|
-
coreml: {
|
|
993
|
-
url: hfScrypted("coreml/inception_resnet_v1/inception_resnet_v1.mlpackage"),
|
|
994
|
-
sizeMB: 45,
|
|
995
|
-
isDirectory: true,
|
|
996
|
-
files: [...MLPACKAGE_FILES],
|
|
997
|
-
runtimes: ["python"]
|
|
998
|
-
},
|
|
999
|
-
openvino: ovFormat(hf("faceRecognition/inception-resnet-v1/openvino/camstack-inception-resnet-v1.xml"), 45)
|
|
1000
|
-
}
|
|
761
|
+
openvino: ovFormat(hf("faceRecognition/auraface/openvino/camstack-auraface-r100.xml"), 131)
|
|
1001
762
|
}
|
|
1002
|
-
];
|
|
763
|
+
}];
|
|
1003
764
|
var PLATE_DETECTION_MODELS = [{
|
|
1004
765
|
id: "yolov8n-plate",
|
|
1005
766
|
license: licensed(ULTRALYTICS_AGPL, {
|
|
@@ -1037,46 +798,10 @@ var PLATE_DETECTION_MODELS = [{
|
|
|
1037
798
|
}
|
|
1038
799
|
}];
|
|
1039
800
|
var PACKAGE_DETECTION_MODELS = [{
|
|
1040
|
-
id: "yolov8n-package",
|
|
1041
|
-
license: licensed(ULTRALYTICS_AGPL, {
|
|
1042
|
-
data: {
|
|
1043
|
-
name: "Roboflow Universe package-at-front-door (most likely)",
|
|
1044
|
-
terms: "UNVERIFIED",
|
|
1045
|
-
url: "https://universe.roboflow.com/package-detection/package-at-front-door"
|
|
1046
|
-
},
|
|
1047
|
-
attribution: "© Ultralytics, AGPL-3.0 (YOLOv8n base, fine-tuned by CamStack with Ultralytics). The fine-tuning checkpoint is not published yet.",
|
|
1048
|
-
modifications: "fine-tuned by CamStack with Ultralytics; exported to ONNX, OpenVINO IR and CoreML"
|
|
1049
|
-
}),
|
|
1050
|
-
name: "YOLOv8 Nano — Package",
|
|
1051
|
-
description: "YOLOv8 Nano fine-tuned for parcel/package detection (mAP50 0.93) — dedicated model, not the COCO suitcase/backpack proxy",
|
|
1052
|
-
inputSize: {
|
|
1053
|
-
width: 640,
|
|
1054
|
-
height: 640
|
|
1055
|
-
},
|
|
1056
|
-
labels: [{
|
|
1057
|
-
id: "package",
|
|
1058
|
-
name: "Package"
|
|
1059
|
-
}],
|
|
1060
|
-
preprocessMode: "letterbox",
|
|
1061
|
-
formats: {
|
|
1062
|
-
onnx: {
|
|
1063
|
-
url: hf("packageDetection/yolov8-package/onnx/camstack-yolov8n-package.onnx"),
|
|
1064
|
-
sizeMB: 12
|
|
1065
|
-
},
|
|
1066
|
-
coreml: {
|
|
1067
|
-
url: hf("packageDetection/yolov8-package/coreml/camstack-yolov8n-package.mlpackage"),
|
|
1068
|
-
sizeMB: 12,
|
|
1069
|
-
isDirectory: true,
|
|
1070
|
-
files: [...MLPACKAGE_FILES],
|
|
1071
|
-
runtimes: ["python"]
|
|
1072
|
-
},
|
|
1073
|
-
openvino: ovFormat(hf("packageDetection/yolov8-package/openvino/camstack-yolov8n-package.xml"), 12)
|
|
1074
|
-
}
|
|
1075
|
-
}, {
|
|
1076
801
|
id: "rfdetr-package",
|
|
1077
802
|
license: RFDETR_APACHE,
|
|
1078
803
|
name: "RF-DETR — Package",
|
|
1079
|
-
description: "RF-DETR parcel detector — DETR-style decode (onnx / coreml / openvino). Separates parcel from doormat far better than yolov8n-package (+0.86 vs +0.21 margin on 615) at ~4× the size and ~6× the latency",
|
|
804
|
+
description: "RF-DETR parcel detector — DETR-style decode (onnx / coreml / openvino). Separates parcel from doormat far better than the former yolov8n-package (+0.86 vs +0.21 margin on 615) at ~4× the size and ~6× the latency",
|
|
1080
805
|
inputSize: {
|
|
1081
806
|
width: 576,
|
|
1082
807
|
height: 576
|
|
@@ -1133,35 +858,6 @@ var PLATE_OCR_MODELS = [{
|
|
|
1133
858
|
},
|
|
1134
859
|
openvino: ovFormat(hf("plateRecognition/cct-s-v2-global/openvino/camstack-cct-s-v2-global.xml"), 5)
|
|
1135
860
|
}
|
|
1136
|
-
}, {
|
|
1137
|
-
id: "vgg-english-g2",
|
|
1138
|
-
license: EASYOCR_APACHE,
|
|
1139
|
-
name: "VGG English G2",
|
|
1140
|
-
description: "EasyOCR VGG English G2 — generic English text recognition. Superseded as the plate-OCR default by cct-s-v2-global (4/21 vs 19/21 exact on the cam-617 set); kept selectable for non-plate scene text and for any node pinned to it",
|
|
1141
|
-
inputSize: {
|
|
1142
|
-
width: 384,
|
|
1143
|
-
height: 64
|
|
1144
|
-
},
|
|
1145
|
-
inputChannels: 1,
|
|
1146
|
-
labels: [{
|
|
1147
|
-
id: "text",
|
|
1148
|
-
name: "Plate Text"
|
|
1149
|
-
}],
|
|
1150
|
-
preprocessMode: "resize",
|
|
1151
|
-
formats: {
|
|
1152
|
-
onnx: {
|
|
1153
|
-
url: hfScrypted("onnx/vgg_english_g2/vgg_english_g2.onnx"),
|
|
1154
|
-
sizeMB: 14.4
|
|
1155
|
-
},
|
|
1156
|
-
coreml: {
|
|
1157
|
-
url: hfScrypted("coreml/vgg_english_g2/vgg_english_g2.mlpackage"),
|
|
1158
|
-
sizeMB: 11.2,
|
|
1159
|
-
isDirectory: true,
|
|
1160
|
-
files: [...MLPACKAGE_FILES],
|
|
1161
|
-
runtimes: ["python"]
|
|
1162
|
-
},
|
|
1163
|
-
openvino: ovFormat(hf("plateRecognition/vgg_english_g2/openvino/vgg_english_g2.xml"), 7.2)
|
|
1164
|
-
}
|
|
1165
861
|
}];
|
|
1166
862
|
var ANIMAL_CLASSIFIER_MODELS = [{
|
|
1167
863
|
id: "animal-classifier",
|
|
@@ -1235,34 +931,6 @@ var BIRD_CLASSIFIER_MODELS = [{
|
|
|
1235
931
|
filename: "bird-classifier-labels.json",
|
|
1236
932
|
sizeMB: .03
|
|
1237
933
|
}]
|
|
1238
|
-
}, {
|
|
1239
|
-
id: "bird-classifier-aiy-edgetpu",
|
|
1240
|
-
license: CORAL_APACHE,
|
|
1241
|
-
legacy: true,
|
|
1242
|
-
name: "Bird Classifier AIY (Coral)",
|
|
1243
|
-
description: "Google AIY Birds V1 (MobileNetV2) — EdgeTPU-compiled full-integer TFLite, 224×224, 964 species + background; runs on the Coral USB Edge TPU. Requires EdgeTPU classifier output dequantization (not yet available).",
|
|
1244
|
-
inputSize: {
|
|
1245
|
-
width: 224,
|
|
1246
|
-
height: 224
|
|
1247
|
-
},
|
|
1248
|
-
inputLayout: "nhwc",
|
|
1249
|
-
inputNormalization: "none",
|
|
1250
|
-
outputProbabilities: true,
|
|
1251
|
-
labels: [{
|
|
1252
|
-
id: "species",
|
|
1253
|
-
name: "Bird Species"
|
|
1254
|
-
}],
|
|
1255
|
-
preprocessMode: "resize",
|
|
1256
|
-
formats: { tflite: {
|
|
1257
|
-
url: "https://github.com/google-coral/test_data/raw/master/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite",
|
|
1258
|
-
sizeMB: 4.3,
|
|
1259
|
-
runtimes: ["python"]
|
|
1260
|
-
} },
|
|
1261
|
-
extraFiles: [{
|
|
1262
|
-
url: hf("animalClassification/bird-classifier/onnx/bird-classifier-labels.json"),
|
|
1263
|
-
filename: "bird-classifier-labels.json",
|
|
1264
|
-
sizeMB: .03
|
|
1265
|
-
}]
|
|
1266
934
|
}];
|
|
1267
935
|
var VEHICLE_CLASSIFIER_MODELS = [{
|
|
1268
936
|
id: "vehicle-type-v1",
|
|
@@ -1409,86 +1077,32 @@ var INSTANCE_SEGMENTATION_MODELS = [
|
|
|
1409
1077
|
}
|
|
1410
1078
|
}
|
|
1411
1079
|
];
|
|
1412
|
-
var CLIP_EMBEDDING_MODELS = [
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
height: 256
|
|
1421
|
-
},
|
|
1422
|
-
labels: [{
|
|
1423
|
-
id: "embedding",
|
|
1424
|
-
name: "CLIP Embedding"
|
|
1425
|
-
}],
|
|
1426
|
-
preprocessMode: "resize",
|
|
1427
|
-
inputNormalization: "none",
|
|
1428
|
-
formats: {
|
|
1429
|
-
openvino: ovFormat(hf("clip/mobileclip-s1/openvino/camstack-mobileclip-s1-vision.xml"), 55),
|
|
1430
|
-
coreml: {
|
|
1431
|
-
url: hf("clip/mobileclip-s1/coreml/camstack-mobileclip-s1-vision.mlpackage"),
|
|
1432
|
-
sizeMB: 65,
|
|
1433
|
-
isDirectory: true,
|
|
1434
|
-
files: [...MLPACKAGE_FILES],
|
|
1435
|
-
runtimes: ["python"]
|
|
1436
|
-
}
|
|
1437
|
-
}
|
|
1438
|
-
},
|
|
1439
|
-
{
|
|
1440
|
-
id: "mobileclip-s2",
|
|
1441
|
-
license: APPLE_MOBILECLIP_AMLR,
|
|
1442
|
-
name: "MobileCLIP S2",
|
|
1443
|
-
description: "MobileCLIP S2 — Apple high-accuracy CLIP vision encoder, 512-dim, 256×256 (fp16 OpenVINO/CoreML)",
|
|
1444
|
-
inputSize: {
|
|
1445
|
-
width: 256,
|
|
1446
|
-
height: 256
|
|
1447
|
-
},
|
|
1448
|
-
labels: [{
|
|
1449
|
-
id: "embedding",
|
|
1450
|
-
name: "CLIP Embedding"
|
|
1451
|
-
}],
|
|
1452
|
-
preprocessMode: "resize",
|
|
1453
|
-
inputNormalization: "none",
|
|
1454
|
-
formats: {
|
|
1455
|
-
openvino: ovFormat(hf("clip/mobileclip-s2/openvino/camstack-mobileclip-s2-vision.xml"), 90),
|
|
1456
|
-
coreml: {
|
|
1457
|
-
url: hf("clip/mobileclip-s2/coreml/camstack-mobileclip-s2-vision.mlpackage"),
|
|
1458
|
-
sizeMB: 110,
|
|
1459
|
-
isDirectory: true,
|
|
1460
|
-
files: [...MLPACKAGE_FILES],
|
|
1461
|
-
runtimes: ["python"]
|
|
1462
|
-
}
|
|
1463
|
-
}
|
|
1080
|
+
var CLIP_EMBEDDING_MODELS = [{
|
|
1081
|
+
id: "siglip2-b16-224",
|
|
1082
|
+
license: SIGLIP2_APACHE,
|
|
1083
|
+
name: "SigLIP2 B/16",
|
|
1084
|
+
description: "Google SigLIP2 base, patch 16, 224×224 — Apache-2.0 CLIP vision encoder, 768-dim (fp16 OpenVINO/CoreML)",
|
|
1085
|
+
inputSize: {
|
|
1086
|
+
width: 224,
|
|
1087
|
+
height: 224
|
|
1464
1088
|
},
|
|
1465
|
-
{
|
|
1466
|
-
id: "
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
inputNormalization: "none",
|
|
1480
|
-
formats: {
|
|
1481
|
-
openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
|
|
1482
|
-
coreml: {
|
|
1483
|
-
url: hf("clip/siglip2/coreml/camstack-siglip2-b16-224-vision.mlpackage"),
|
|
1484
|
-
sizeMB: 185,
|
|
1485
|
-
isDirectory: true,
|
|
1486
|
-
files: [...MLPACKAGE_FILES],
|
|
1487
|
-
runtimes: ["python"]
|
|
1488
|
-
}
|
|
1089
|
+
labels: [{
|
|
1090
|
+
id: "embedding",
|
|
1091
|
+
name: "CLIP Embedding"
|
|
1092
|
+
}],
|
|
1093
|
+
preprocessMode: "resize",
|
|
1094
|
+
inputNormalization: "none",
|
|
1095
|
+
formats: {
|
|
1096
|
+
openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
|
|
1097
|
+
coreml: {
|
|
1098
|
+
url: hf("clip/siglip2/coreml/camstack-siglip2-b16-224-vision.mlpackage"),
|
|
1099
|
+
sizeMB: 185,
|
|
1100
|
+
isDirectory: true,
|
|
1101
|
+
files: [...MLPACKAGE_FILES],
|
|
1102
|
+
runtimes: ["python"]
|
|
1489
1103
|
}
|
|
1490
1104
|
}
|
|
1491
|
-
];
|
|
1105
|
+
}];
|
|
1492
1106
|
var AUDIO_CLASSIFIER_MODELS = [{
|
|
1493
1107
|
id: "yamnet-onnx",
|
|
1494
1108
|
license: YAMNET_APACHE,
|
|
@@ -1950,7 +1564,7 @@ var STEP_CLIP_EMBEDDING = new PipelineStepBase({
|
|
|
1950
1564
|
],
|
|
1951
1565
|
outputClasses: ["embedding"],
|
|
1952
1566
|
models: [...CLIP_EMBEDDING_MODELS],
|
|
1953
|
-
defaultModelId: "
|
|
1567
|
+
defaultModelId: "siglip2-b16-224",
|
|
1954
1568
|
modelScope: "cluster",
|
|
1955
1569
|
enabledByDefault: true,
|
|
1956
1570
|
backfillIntoExistingOverrides: true,
|
|
@@ -2163,10 +1777,11 @@ function getDefaultModelForFormatFromDef(def, format) {
|
|
|
2163
1777
|
* provider `substituteIncompatibleModels`):
|
|
2164
1778
|
*
|
|
2165
1779
|
* - chosen === null → the addon's default model for `format`.
|
|
2166
|
-
* - chosen is a catalog model → keep it if it has a `format` build
|
|
2167
|
-
*
|
|
1780
|
+
* - chosen is a catalog model → keep it if it has a `format` build AND is
|
|
1781
|
+
* not `legacy`; a legacy pin falls back to
|
|
1782
|
+
* the format default (no longer offered).
|
|
1783
|
+
* Else the addon's default for `format`
|
|
2168
1784
|
* (a substitution — the caller surfaces it).
|
|
2169
|
-
* - chosen is RETIRED (`RETIRED_MODEL_IDS`) → the format default (D643).
|
|
2170
1785
|
* - chosen is NOT in the catalog (custom/unknown) → returned unchanged; the
|
|
2171
1786
|
* operator owns a custom model's format compat.
|
|
2172
1787
|
* - unknown stepId → chosen returned unchanged (never throws).
|
|
@@ -2179,9 +1794,9 @@ function resolveModelForFormat(stepId, chosenModelId, format) {
|
|
|
2179
1794
|
return chosenModelId ?? "";
|
|
2180
1795
|
}
|
|
2181
1796
|
if (chosenModelId === null) return getDefaultModelForFormat(stepId, format);
|
|
2182
|
-
if (RETIRED_MODEL_IDS[stepId]?.includes(chosenModelId) === true) return getDefaultModelForFormat(stepId, format);
|
|
2183
1797
|
const entry = def.models.find((m) => m.id === chosenModelId);
|
|
2184
1798
|
if (!entry) return chosenModelId;
|
|
1799
|
+
if (entry.legacy === true) return getDefaultModelForFormat(stepId, format);
|
|
2185
1800
|
if (entry.formats[format]) return chosenModelId;
|
|
2186
1801
|
return getDefaultModelForFormat(stepId, format);
|
|
2187
1802
|
}
|
|
@@ -3585,10 +3200,15 @@ var CustomModelCatalog = class {
|
|
|
3585
3200
|
this.logger = logger;
|
|
3586
3201
|
this.now = now;
|
|
3587
3202
|
}
|
|
3588
|
-
/**
|
|
3589
|
-
|
|
3203
|
+
/**
|
|
3204
|
+
* Re-read the registry when the snapshot is older than the TTL; answer the
|
|
3205
|
+
* snapshot. `force: true` bypasses the TTL — required right after a
|
|
3206
|
+
* Library register when Import+land downloads on the same tick (a warm
|
|
3207
|
+
* empty snapshot otherwise hides the brand-new id for up to 5 s).
|
|
3208
|
+
*/
|
|
3209
|
+
async refresh(api, opts) {
|
|
3590
3210
|
const now = this.now();
|
|
3591
|
-
if (now - this.readAtMs < 5e3) return this.byStep;
|
|
3211
|
+
if (opts?.force !== true && now - this.readAtMs < 5e3) return this.byStep;
|
|
3592
3212
|
this.readAtMs = now;
|
|
3593
3213
|
if (api === void 0) return this.byStep;
|
|
3594
3214
|
try {
|
|
@@ -3713,12 +3333,6 @@ Object.defineProperty(exports, "OBJECT_DETECTION_STEP_ID", {
|
|
|
3713
3333
|
return OBJECT_DETECTION_STEP_ID;
|
|
3714
3334
|
}
|
|
3715
3335
|
});
|
|
3716
|
-
Object.defineProperty(exports, "RETIRED_MODEL_IDS", {
|
|
3717
|
-
enumerable: true,
|
|
3718
|
-
get: function() {
|
|
3719
|
-
return RETIRED_MODEL_IDS;
|
|
3720
|
-
}
|
|
3721
|
-
});
|
|
3722
3336
|
Object.defineProperty(exports, "buildSubtreeCanRun", {
|
|
3723
3337
|
enumerable: true,
|
|
3724
3338
|
get: function() {
|