@camstack/addon-post-analysis 1.2.331 → 1.2.332
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/{clip-model-registry-DQmmIYXS.js → clip-model-registry-CthiqMDB.js} +120 -254
- package/dist/{clip-model-registry-CGaaUvAD.mjs → clip-model-registry-cujWRWxP.mjs} +120 -254
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CwzVobgb.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BthiFwI_.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DxUsRAkr.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DxCdw-h4.mjs → hostInit-CR18-6F0.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +487 -183
- package/dist/pipeline-analytics/index.mjs +487 -183
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-n9xCtjjZ.mjs +0 -26
|
@@ -11521,11 +11521,11 @@ var ModelVariantGroupSchema = object({
|
|
|
11521
11521
|
/** Quantization axis. Omit ⇒ the fp32 base build. */
|
|
11522
11522
|
precision: _enum(["fp32", "int8"]).optional(),
|
|
11523
11523
|
/**
|
|
11524
|
-
*
|
|
11525
|
-
*
|
|
11526
|
-
*
|
|
11524
|
+
* Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
|
|
11525
|
+
* an alternate training of the same family (Scrypted `relu_test`); chip
|
|
11526
|
+
* label is "Test".
|
|
11527
11527
|
*/
|
|
11528
|
-
optimization: _enum(["standard", "
|
|
11528
|
+
optimization: _enum(["standard", "test"]).optional(),
|
|
11529
11529
|
/**
|
|
11530
11530
|
* Input-resolution axis (square input side, px). Omit ⇒ the family's native
|
|
11531
11531
|
* resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
|
|
@@ -11548,9 +11548,10 @@ var ModelProviderIdSchema = _enum([
|
|
|
11548
11548
|
* are per upstream. A persisted custom-model row written when this field was a
|
|
11549
11549
|
* string still parses — the string is lifted into `{ weights }`.
|
|
11550
11550
|
*
|
|
11551
|
-
* Every licence surface (the
|
|
11552
|
-
*
|
|
11553
|
-
*
|
|
11551
|
+
* Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
|
|
11552
|
+
* model table) is GENERATED from these records by
|
|
11553
|
+
* `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
|
|
11554
|
+
* `camstack/docs` → `/docs/detection/models`.
|
|
11554
11555
|
*/
|
|
11555
11556
|
var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { weights: value } : value, object({
|
|
11556
11557
|
/** SPDX id of the WEIGHTS' terms, a `LicenseRef-*` for non-SPDX terms, or `UNKNOWN`. */
|
|
@@ -18385,7 +18386,7 @@ method(object({
|
|
|
18385
18386
|
timeoutMs: 6e5
|
|
18386
18387
|
});
|
|
18387
18388
|
method(object({
|
|
18388
|
-
|
|
18389
|
+
targetNodeId: string(),
|
|
18389
18390
|
modelId: string(),
|
|
18390
18391
|
format: _enum(MODEL_FORMATS),
|
|
18391
18392
|
entry: ModelCatalogEntrySchema
|
|
@@ -23248,39 +23249,19 @@ var CLUSTER_MODEL_SCOPED_STEPS = [{
|
|
|
23248
23249
|
label: "Face recognition model",
|
|
23249
23250
|
defaultModelId: "auraface-r100",
|
|
23250
23251
|
indexName: "the enrolled face gallery",
|
|
23251
|
-
options: [
|
|
23252
|
-
|
|
23253
|
-
|
|
23254
|
-
|
|
23255
|
-
},
|
|
23256
|
-
{
|
|
23257
|
-
id: "arcface-r100",
|
|
23258
|
-
label: "ArcFace (ResNet34)"
|
|
23259
|
-
},
|
|
23260
|
-
{
|
|
23261
|
-
id: "inception-resnet-v1",
|
|
23262
|
-
label: "Inception ResNet V1"
|
|
23263
|
-
}
|
|
23264
|
-
]
|
|
23252
|
+
options: [{
|
|
23253
|
+
id: "auraface-r100",
|
|
23254
|
+
label: "AuraFace R100"
|
|
23255
|
+
}]
|
|
23265
23256
|
}, {
|
|
23266
23257
|
stepId: "clip-embedding",
|
|
23267
23258
|
label: "Semantic search model",
|
|
23268
|
-
defaultModelId: "
|
|
23259
|
+
defaultModelId: "siglip2-b16-224",
|
|
23269
23260
|
indexName: "the object semantic-search index",
|
|
23270
|
-
options: [
|
|
23271
|
-
|
|
23272
|
-
|
|
23273
|
-
|
|
23274
|
-
},
|
|
23275
|
-
{
|
|
23276
|
-
id: "mobileclip-s2",
|
|
23277
|
-
label: "MobileCLIP S2"
|
|
23278
|
-
},
|
|
23279
|
-
{
|
|
23280
|
-
id: "siglip2-b16-224",
|
|
23281
|
-
label: "SigLIP2 B/16 (Apache-2.0)"
|
|
23282
|
-
}
|
|
23283
|
-
]
|
|
23261
|
+
options: [{
|
|
23262
|
+
id: "siglip2-b16-224",
|
|
23263
|
+
label: "SigLIP2 B/16 (Apache-2.0)"
|
|
23264
|
+
}]
|
|
23284
23265
|
}];
|
|
23285
23266
|
/**
|
|
23286
23267
|
* The settings key holding one step's cluster model choice.
|
|
@@ -36576,7 +36557,13 @@ var OsdStatusSchema = object({ overlays: array(object({
|
|
|
36576
36557
|
*/
|
|
36577
36558
|
availablePositions: array(OsdPositionEnum).readonly(),
|
|
36578
36559
|
/** Firmware does not allow editing the `text` field (e.g. timestamp). */
|
|
36579
|
-
readOnly: boolean().optional()
|
|
36560
|
+
readOnly: boolean().optional(),
|
|
36561
|
+
/**
|
|
36562
|
+
* Firmware text ceiling for this overlay. Absent = no known limit.
|
|
36563
|
+
* The OSD manager truncates here on every write — never stores its own
|
|
36564
|
+
* copy on the binding.
|
|
36565
|
+
*/
|
|
36566
|
+
maxCharacters: number().int().positive().optional()
|
|
36580
36567
|
})).readonly() });
|
|
36581
36568
|
var OsdOverlayPatchSchema = object({
|
|
36582
36569
|
enabled: boolean().optional(),
|
|
@@ -36627,7 +36614,9 @@ var OsdTemplateBindingSchema = object({
|
|
|
36627
36614
|
valuePath: string().min(1).max(64),
|
|
36628
36615
|
/** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
|
|
36629
36616
|
displayUnit: string().max(16).optional(),
|
|
36630
|
-
maxDecimals: number().int().min(0).max(4).default(1)
|
|
36617
|
+
maxDecimals: number().int().min(0).max(4).default(1),
|
|
36618
|
+
/** Raw value → display text (same shape as slot binding). Empty string hides. */
|
|
36619
|
+
valueMap: record(string(), string()).optional()
|
|
36631
36620
|
});
|
|
36632
36621
|
/**
|
|
36633
36622
|
* A named template: bindings (alias → leaf field) + a parser that
|
|
@@ -36677,18 +36666,11 @@ var OsdSlotBindingSchema = object({
|
|
|
36677
36666
|
source: OsdSourceSchema,
|
|
36678
36667
|
/** `${value}` and `${unit}` are substituted; every occurrence. */
|
|
36679
36668
|
template: string().max(96).default("${value}"),
|
|
36680
|
-
/** Truncate with an ellipsis past this length. Absent = no limit. */
|
|
36681
|
-
maxCharacters: number().int().min(4).max(64).optional(),
|
|
36682
36669
|
/**
|
|
36683
36670
|
* Decimal places for a numeric value. `0` yields an integer — the
|
|
36684
36671
|
* documented workaround for firmwares that reject `.` in overlay text.
|
|
36685
36672
|
*/
|
|
36686
36673
|
maxDecimals: number().int().min(0).max(4).default(1),
|
|
36687
|
-
/**
|
|
36688
|
-
* Appended via `${unit}` when no unit conversion produces a label.
|
|
36689
|
-
* Prefer `source.displayUnit` for converted device-state values.
|
|
36690
|
-
*/
|
|
36691
|
-
unitLabel: string().max(8).optional(),
|
|
36692
36674
|
/** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
|
|
36693
36675
|
valueMap: record(string(), string()).optional(),
|
|
36694
36676
|
/** Time windows in which the slot is shown. Absent = always. */
|
|
@@ -36697,9 +36679,7 @@ var OsdSlotBindingSchema = object({
|
|
|
36697
36679
|
* Display gate, in the notification centre's condition vocabulary.
|
|
36698
36680
|
* Only the keys reported by `getConditionSupport` are accepted.
|
|
36699
36681
|
*/
|
|
36700
|
-
conditions: NcConditionsSchema.optional()
|
|
36701
|
-
/** Rendered when the gate is closed or the value unreadable. Empty = hide. */
|
|
36702
|
-
fallbackText: string().max(64).default("")
|
|
36682
|
+
conditions: NcConditionsSchema.optional()
|
|
36703
36683
|
});
|
|
36704
36684
|
/** One camera slot, as the operator sees it: firmware truth + our binding. */
|
|
36705
36685
|
var OsdSlotViewSchema = object({
|
|
@@ -56016,7 +55996,7 @@ var NC_TEMPLATE_VARS = [
|
|
|
56016
55996
|
{
|
|
56017
55997
|
name: "devices",
|
|
56018
55998
|
label: "Devices",
|
|
56019
|
-
description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / refusal: HOW MANY devices are armed (or open).",
|
|
55999
|
+
description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / arming / refusal: HOW MANY devices are armed (or open).",
|
|
56020
56000
|
example: "Ingresso, Garage",
|
|
56021
56001
|
group: "system",
|
|
56022
56002
|
families: ["rule"],
|
|
@@ -56025,6 +56005,7 @@ var NC_TEMPLATE_VARS = [
|
|
|
56025
56005
|
systemEventKinds: [
|
|
56026
56006
|
"node-inference-unavailable",
|
|
56027
56007
|
"alarm-armed",
|
|
56008
|
+
"alarm-arming",
|
|
56028
56009
|
"alarm-arm-refused"
|
|
56029
56010
|
]
|
|
56030
56011
|
},
|
|
@@ -56245,18 +56226,18 @@ var NC_TEMPLATE_VARS = [
|
|
|
56245
56226
|
{
|
|
56246
56227
|
name: "rules",
|
|
56247
56228
|
label: "Covering rules",
|
|
56248
|
-
description: "How many enabled rules the armed mode gates.",
|
|
56229
|
+
description: "How many enabled rules the armed / arming mode gates.",
|
|
56249
56230
|
example: "2",
|
|
56250
56231
|
group: "system",
|
|
56251
56232
|
families: ["rule"],
|
|
56252
56233
|
fields: [...RULE_TEXT],
|
|
56253
56234
|
kinds: ["system"],
|
|
56254
|
-
systemEventKinds: ["alarm-armed"]
|
|
56235
|
+
systemEventKinds: ["alarm-armed", "alarm-arming"]
|
|
56255
56236
|
},
|
|
56256
56237
|
{
|
|
56257
56238
|
name: "names",
|
|
56258
56239
|
label: "Device names",
|
|
56259
|
-
description: "Armed: the devices
|
|
56240
|
+
description: "Armed / arming: the Active devices (or every skipped name when none are Active). Refusal: the open sensors.",
|
|
56260
56241
|
example: "Ingresso, Garage",
|
|
56261
56242
|
group: "system",
|
|
56262
56243
|
families: ["rule"],
|
|
@@ -56277,7 +56258,29 @@ var NC_TEMPLATE_VARS = [
|
|
|
56277
56258
|
families: ["rule"],
|
|
56278
56259
|
fields: [...RULE_TEXT],
|
|
56279
56260
|
kinds: ["system"],
|
|
56280
|
-
systemEventKinds: ["alarm-armed"]
|
|
56261
|
+
systemEventKinds: ["alarm-armed", "alarm-arming"]
|
|
56262
|
+
},
|
|
56263
|
+
{
|
|
56264
|
+
name: "active",
|
|
56265
|
+
label: "Active count",
|
|
56266
|
+
description: "How many named devices the armed / arming mode is watching (title: n attivi / n active).",
|
|
56267
|
+
example: "3",
|
|
56268
|
+
group: "system",
|
|
56269
|
+
families: ["rule"],
|
|
56270
|
+
fields: [...RULE_TEXT],
|
|
56271
|
+
kinds: ["system"],
|
|
56272
|
+
systemEventKinds: ["alarm-armed", "alarm-arming"]
|
|
56273
|
+
},
|
|
56274
|
+
{
|
|
56275
|
+
name: "skipped",
|
|
56276
|
+
label: "Skipped count",
|
|
56277
|
+
description: "How many named devices the mode cannot arm — muted, detection off, offline (title: m saltati).",
|
|
56278
|
+
example: "1",
|
|
56279
|
+
group: "system",
|
|
56280
|
+
families: ["rule"],
|
|
56281
|
+
fields: [...RULE_TEXT],
|
|
56282
|
+
kinds: ["system"],
|
|
56283
|
+
systemEventKinds: ["alarm-armed", "alarm-arming"]
|
|
56281
56284
|
},
|
|
56282
56285
|
{
|
|
56283
56286
|
name: "bypassedNames",
|
|
@@ -57954,23 +57957,8 @@ async function readClusterModelPinStrict(api, stepId) {
|
|
|
57954
57957
|
reason: choice.reason
|
|
57955
57958
|
};
|
|
57956
57959
|
}
|
|
57957
|
-
|
|
57958
|
-
|
|
57959
|
-
code: "MIT",
|
|
57960
|
-
upstream: {
|
|
57961
|
-
name: "Apple ml-mobileclip",
|
|
57962
|
-
url: "https://github.com/apple/ml-mobileclip"
|
|
57963
|
-
},
|
|
57964
|
-
url: "https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS",
|
|
57965
|
-
attribution: "Apple Machine Learning Research Model is licensed under the Apple Machine Learning Research Model License Agreement.",
|
|
57966
|
-
modifications: "model derivative: vision encoders converted to OpenVINO IR and CoreML FP16",
|
|
57967
|
-
hosting: "camstack-hf",
|
|
57968
|
-
nonCommercial: true
|
|
57969
|
-
};
|
|
57970
|
-
var APPLE_MOBILECLIP_TEXT_AMLR = {
|
|
57971
|
-
...APPLE_MOBILECLIP_AMLR,
|
|
57972
|
-
modifications: "model derivative: text encoders quantised to INT8 ONNX and converted to OpenVINO IR"
|
|
57973
|
-
};
|
|
57960
|
+
//#endregion
|
|
57961
|
+
//#region src/embedding-encoder/catalogs/model-licenses.ts
|
|
57974
57962
|
var SIGLIP2_APACHE = {
|
|
57975
57963
|
weights: "Apache-2.0",
|
|
57976
57964
|
code: "Apache-2.0",
|
|
@@ -57996,13 +57984,11 @@ var SIGLIP2_TEXT_APACHE = {
|
|
|
57996
57984
|
var HF_REPO = "camstack/camstack-models";
|
|
57997
57985
|
var hf = (path) => hfModelUrl(HF_REPO, path);
|
|
57998
57986
|
/**
|
|
57999
|
-
*
|
|
58000
|
-
* text-encoder onnx
|
|
58001
|
-
* it lands beside the model.
|
|
58002
|
-
*
|
|
57987
|
+
* SigLIP2's tokenizer (HF `tokenizers` format, Gemma SentencePiece, 256k,
|
|
57988
|
+
* lower-casing), hosted next to the text-encoder onnx and fetched as a sibling
|
|
57989
|
+
* file so it lands beside the model. It has its own file name on purpose: see
|
|
57990
|
+
* `ClipModelMeta.tokenizerFile`.
|
|
58003
57991
|
*/
|
|
58004
|
-
var TOKENIZER_FILE = "tokenizer.json";
|
|
58005
|
-
/** SigLIP2's tokenizer — a DIFFERENT file name on purpose: see `ClipModelMeta.tokenizerFile`. */
|
|
58006
57992
|
var SIGLIP2_TOKENIZER_FILE = "camstack-siglip2-b16-224-tokenizer.json";
|
|
58007
57993
|
var ovFormat = (url, sizeMB) => {
|
|
58008
57994
|
const base = url.split("/").pop() ?? "";
|
|
@@ -58015,195 +58001,75 @@ var ovFormat = (url, sizeMB) => {
|
|
|
58015
58001
|
};
|
|
58016
58002
|
};
|
|
58017
58003
|
/**
|
|
58018
|
-
* Files inside an .mlpackage directory bundle.
|
|
58019
|
-
* Must be fetched alongside the package root when isDirectory is true.
|
|
58020
|
-
*/
|
|
58021
|
-
var MLPACKAGE_FILES = [
|
|
58022
|
-
"Manifest.json",
|
|
58023
|
-
"Data/com.apple.CoreML/model.mlmodel",
|
|
58024
|
-
"Data/com.apple.CoreML/weights/weight.bin"
|
|
58025
|
-
];
|
|
58026
|
-
/**
|
|
58027
|
-
* The MobileCLIP feature-space contract (D649 — see `clip-model.ts` in
|
|
58028
|
-
* `@camstack/types`). S1 and S2 share the historical 512-d `object-clip` index,
|
|
58029
|
-
* separated by each row's `modelId`; the CLIP BPE window is 77 tokens padded
|
|
58030
|
-
* with 0; 0.2 is the floor the search always shipped with, measured to keep 96%
|
|
58031
|
-
* of matched COCO caption-image pairs on S1.
|
|
58032
|
-
*/
|
|
58033
|
-
var mobileclipMeta = (textModelId) => ({
|
|
58034
|
-
textModelId,
|
|
58035
|
-
embeddingDim: 512,
|
|
58036
|
-
vectorIndex: "object-clip",
|
|
58037
|
-
tokenizerFile: TOKENIZER_FILE,
|
|
58038
|
-
contextLength: 77,
|
|
58039
|
-
padId: 0,
|
|
58040
|
-
searchMinScore: .2
|
|
58041
|
-
});
|
|
58042
|
-
/**
|
|
58043
|
-
* SigLIP2 B/16-224 (D649). 768-d, so its OWN index; a 64-token Gemma
|
|
58044
|
-
* SentencePiece window padded with 0 (the hosted `tokenizer.json` lower-cases,
|
|
58045
|
-
* see `scripts/build-siglip2-model.py`). The floor is SIGLIP2_SEARCH_MIN_SCORE.
|
|
58046
|
-
*/
|
|
58047
|
-
var SIGLIP2_META = {
|
|
58048
|
-
textModelId: "siglip2-b16-224-text",
|
|
58049
|
-
embeddingDim: 768,
|
|
58050
|
-
vectorIndex: "object-clip-siglip2-b16-224",
|
|
58051
|
-
tokenizerFile: SIGLIP2_TOKENIZER_FILE,
|
|
58052
|
-
contextLength: 64,
|
|
58053
|
-
padId: 0,
|
|
58054
|
-
searchMinScore: .1
|
|
58055
|
-
};
|
|
58056
|
-
/**
|
|
58057
58004
|
* NO onnx vision builds, deliberately (2026-08-21). The int8 ONNX vision
|
|
58058
58005
|
* exports were measured misaligned with the text encoders (matched image↔text
|
|
58059
58006
|
* cosine ≈ 0.01 vs ≈ 0.22 for the fp16 openvino/coreml builds) — see the
|
|
58060
58007
|
* catalog note in `addon-pipeline/.../model-catalogs.ts`. The image-encode leg
|
|
58061
58008
|
* that consumed them here (`embeddingEncoder.encode` → PythonRawTensorEngine)
|
|
58062
|
-
* is retired with them
|
|
58063
|
-
*
|
|
58064
|
-
*
|
|
58065
|
-
|
|
58066
|
-
|
|
58067
|
-
|
|
58068
|
-
|
|
58069
|
-
|
|
58070
|
-
|
|
58071
|
-
|
|
58072
|
-
|
|
58073
|
-
|
|
58074
|
-
|
|
58075
|
-
|
|
58076
|
-
|
|
58077
|
-
|
|
58078
|
-
|
|
58079
|
-
|
|
58080
|
-
|
|
58081
|
-
|
|
58082
|
-
|
|
58083
|
-
|
|
58084
|
-
|
|
58085
|
-
|
|
58086
|
-
|
|
58087
|
-
|
|
58088
|
-
|
|
58089
|
-
|
|
58090
|
-
|
|
58091
|
-
|
|
58092
|
-
|
|
58093
|
-
|
|
58094
|
-
|
|
58095
|
-
|
|
58096
|
-
|
|
58097
|
-
|
|
58098
|
-
|
|
58099
|
-
labels: [],
|
|
58100
|
-
inputNormalization: "none",
|
|
58101
|
-
clip: mobileclipMeta("mobileclip-s2-text"),
|
|
58102
|
-
formats: {
|
|
58103
|
-
openvino: ovFormat(hf("clip/mobileclip-s2/openvino/camstack-mobileclip-s2-vision.xml"), 90),
|
|
58104
|
-
coreml: {
|
|
58105
|
-
url: hf("clip/mobileclip-s2/coreml/camstack-mobileclip-s2-vision.mlpackage"),
|
|
58106
|
-
sizeMB: 110,
|
|
58107
|
-
isDirectory: true,
|
|
58108
|
-
files: [...MLPACKAGE_FILES],
|
|
58109
|
-
runtimes: ["python"]
|
|
58110
|
-
}
|
|
58111
|
-
}
|
|
58112
|
-
},
|
|
58113
|
-
{
|
|
58114
|
-
id: "siglip2-b16-224",
|
|
58115
|
-
license: SIGLIP2_APACHE,
|
|
58116
|
-
name: "SigLIP2 B/16",
|
|
58117
|
-
description: "Google SigLIP2 base, patch 16, 224×224 — Apache-2.0 vision encoder, 768-dim (fp16 OpenVINO/CoreML)",
|
|
58118
|
-
inputSize: {
|
|
58119
|
-
width: 224,
|
|
58120
|
-
height: 224
|
|
58121
|
-
},
|
|
58122
|
-
labels: [],
|
|
58123
|
-
inputNormalization: "none",
|
|
58124
|
-
clip: SIGLIP2_META,
|
|
58125
|
-
formats: {
|
|
58126
|
-
openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
|
|
58127
|
-
coreml: {
|
|
58128
|
-
url: hf("clip/siglip2/coreml/camstack-siglip2-b16-224-vision.mlpackage"),
|
|
58129
|
-
sizeMB: 185,
|
|
58130
|
-
isDirectory: true,
|
|
58131
|
-
files: [...MLPACKAGE_FILES],
|
|
58132
|
-
runtimes: ["python"]
|
|
58133
|
-
}
|
|
58009
|
+
* is retired with them.
|
|
58010
|
+
*
|
|
58011
|
+
* SigLIP2 is the SOLE survivor: MobileCLIP S0/S1/S2 (Apple AMLR, non-commercial)
|
|
58012
|
+
* left the catalog and the cluster for good (D703).
|
|
58013
|
+
*/
|
|
58014
|
+
var CLIP_IMAGE_MODELS = [{
|
|
58015
|
+
id: "siglip2-b16-224",
|
|
58016
|
+
license: SIGLIP2_APACHE,
|
|
58017
|
+
name: "SigLIP2 B/16",
|
|
58018
|
+
description: "Google SigLIP2 base, patch 16, 224×224 — Apache-2.0 vision encoder, 768-dim (fp16 OpenVINO/CoreML)",
|
|
58019
|
+
inputSize: {
|
|
58020
|
+
width: 224,
|
|
58021
|
+
height: 224
|
|
58022
|
+
},
|
|
58023
|
+
labels: [],
|
|
58024
|
+
inputNormalization: "none",
|
|
58025
|
+
clip: {
|
|
58026
|
+
textModelId: "siglip2-b16-224-text",
|
|
58027
|
+
embeddingDim: 768,
|
|
58028
|
+
vectorIndex: "object-clip-siglip2-b16-224",
|
|
58029
|
+
tokenizerFile: SIGLIP2_TOKENIZER_FILE,
|
|
58030
|
+
contextLength: 64,
|
|
58031
|
+
padId: 0,
|
|
58032
|
+
searchMinScore: .1
|
|
58033
|
+
},
|
|
58034
|
+
formats: {
|
|
58035
|
+
openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
|
|
58036
|
+
coreml: {
|
|
58037
|
+
url: hf("clip/siglip2/coreml/camstack-siglip2-b16-224-vision.mlpackage"),
|
|
58038
|
+
sizeMB: 185,
|
|
58039
|
+
isDirectory: true,
|
|
58040
|
+
files: [...[
|
|
58041
|
+
"Manifest.json",
|
|
58042
|
+
"Data/com.apple.CoreML/model.mlmodel",
|
|
58043
|
+
"Data/com.apple.CoreML/weights/weight.bin"
|
|
58044
|
+
]],
|
|
58045
|
+
runtimes: ["python"]
|
|
58134
58046
|
}
|
|
58135
58047
|
}
|
|
58136
|
-
];
|
|
58137
|
-
/**
|
|
58138
|
-
|
|
58139
|
-
|
|
58140
|
-
|
|
58141
|
-
|
|
58142
|
-
|
|
58143
|
-
|
|
58144
|
-
|
|
58145
|
-
|
|
58146
|
-
|
|
58147
|
-
|
|
58148
|
-
|
|
58149
|
-
|
|
58150
|
-
|
|
58151
|
-
|
|
58152
|
-
|
|
58153
|
-
},
|
|
58154
|
-
labels: [],
|
|
58155
|
-
formats: {
|
|
58156
|
-
onnx: {
|
|
58157
|
-
url: hf("clip/mobileclip-s1/onnx/camstack-mobileclip-s1-text.onnx"),
|
|
58158
|
-
sizeMB: 61,
|
|
58159
|
-
files: [TOKENIZER_FILE]
|
|
58160
|
-
},
|
|
58161
|
-
openvino: ovFormat(hf("clip/mobileclip-s1/openvino/camstack-mobileclip-s1-text.xml"), 121)
|
|
58162
|
-
}
|
|
58163
|
-
},
|
|
58164
|
-
{
|
|
58165
|
-
id: "mobileclip-s2-text",
|
|
58166
|
-
license: APPLE_MOBILECLIP_TEXT_AMLR,
|
|
58167
|
-
name: "MobileCLIP S2 Text Encoder",
|
|
58168
|
-
description: "Text encoder for MobileCLIP S2, 512-dim, int8 quantized (61 MB)",
|
|
58169
|
-
inputSize: {
|
|
58170
|
-
width: 0,
|
|
58171
|
-
height: 0
|
|
58172
|
-
},
|
|
58173
|
-
labels: [],
|
|
58174
|
-
formats: {
|
|
58175
|
-
onnx: {
|
|
58176
|
-
url: hf("clip/mobileclip-s2/onnx/camstack-mobileclip-s2-text.onnx"),
|
|
58177
|
-
sizeMB: 61,
|
|
58178
|
-
files: [TOKENIZER_FILE]
|
|
58179
|
-
},
|
|
58180
|
-
openvino: ovFormat(hf("clip/mobileclip-s2/openvino/camstack-mobileclip-s2-text.xml"), 121)
|
|
58181
|
-
}
|
|
58182
|
-
},
|
|
58183
|
-
{
|
|
58184
|
-
id: "siglip2-b16-224-text",
|
|
58185
|
-
license: SIGLIP2_TEXT_APACHE,
|
|
58186
|
-
name: "SigLIP2 B/16 Text Encoder",
|
|
58187
|
-
description: "Text encoder for SigLIP2 B/16, 768-dim, fp16 (565 MB)",
|
|
58188
|
-
inputSize: {
|
|
58189
|
-
width: 0,
|
|
58190
|
-
height: 0
|
|
58048
|
+
}];
|
|
58049
|
+
/** The text tower of the one CLIP model (fp16 onnx, aligned with the fp16 vision space). */
|
|
58050
|
+
var CLIP_TEXT_MODELS = [{
|
|
58051
|
+
id: "siglip2-b16-224-text",
|
|
58052
|
+
license: SIGLIP2_TEXT_APACHE,
|
|
58053
|
+
name: "SigLIP2 B/16 Text Encoder",
|
|
58054
|
+
description: "Text encoder for SigLIP2 B/16, 768-dim, fp16 (565 MB)",
|
|
58055
|
+
inputSize: {
|
|
58056
|
+
width: 0,
|
|
58057
|
+
height: 0
|
|
58058
|
+
},
|
|
58059
|
+
labels: [],
|
|
58060
|
+
formats: {
|
|
58061
|
+
onnx: {
|
|
58062
|
+
url: hf("clip/siglip2/onnx/camstack-siglip2-b16-224-text.onnx"),
|
|
58063
|
+
sizeMB: 565,
|
|
58064
|
+
files: [SIGLIP2_TOKENIZER_FILE]
|
|
58191
58065
|
},
|
|
58192
|
-
|
|
58193
|
-
formats: {
|
|
58194
|
-
onnx: {
|
|
58195
|
-
url: hf("clip/siglip2/onnx/camstack-siglip2-b16-224-text.onnx"),
|
|
58196
|
-
sizeMB: 565,
|
|
58197
|
-
files: [SIGLIP2_TOKENIZER_FILE]
|
|
58198
|
-
},
|
|
58199
|
-
openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-text.xml"), 565)
|
|
58200
|
-
}
|
|
58066
|
+
openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-text.xml"), 565)
|
|
58201
58067
|
}
|
|
58202
|
-
];
|
|
58068
|
+
}];
|
|
58203
58069
|
//#endregion
|
|
58204
58070
|
//#region src/shared/clip/clip-model-registry.ts
|
|
58205
58071
|
/** The model in force when nobody has chosen — the cluster row's default. */
|
|
58206
|
-
var DEFAULT_CLIP_MODEL = "
|
|
58072
|
+
var DEFAULT_CLIP_MODEL = "siglip2-b16-224";
|
|
58207
58073
|
/**
|
|
58208
58074
|
* Build a registry from catalog entries. Throws when two models share an index
|
|
58209
58075
|
* at different dimensions: that is a catalog defect, and the vector store would
|