@camstack/addon-model-studio 1.1.201 → 1.1.202

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 (19) hide show
  1. package/THIRD_PARTY_MODELS.md +34 -26
  2. package/dist/{MotionZonesSettings-C5XCa2RN.mjs → MotionZonesSettings-qabihnVu.mjs} +2 -2
  3. package/dist/{PrivacyMaskSettings-Byby1Qnl.mjs → PrivacyMaskSettings-CGVI9EVl.mjs} +4 -4
  4. package/dist/{SceneMonitorEditor-BehD1iD6.mjs → SceneMonitorEditor-BcAVb1c7.mjs} +3 -3
  5. package/dist/_stub.js +3927 -3903
  6. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BYPEJjop.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CZVL55Bi.mjs} +3 -3
  7. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DMrwYkbN.mjs +26 -0
  8. package/dist/{hostInit-Ds4oKb79.mjs → hostInit-D_0AEBSS.mjs} +2 -2
  9. package/dist/model-studio.addon.js +586 -46
  10. package/dist/model-studio.addon.mjs +586 -46
  11. package/dist/{player-overlays-BdsADMdm.mjs → player-overlays-CgZQeBdy.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-orJ4AkQR.mjs → responsive-dgrtmGP7.mjs} +1 -1
  14. package/dist/{scene-monitor-copy-CRMa4vtd.mjs → scene-monitor-copy-CWuj3twx.mjs} +1 -1
  15. package/dist/{square-CgcW-Db-.mjs → square-U1jjwP1Q.mjs} +1 -1
  16. package/dist/{trash-2-Di341FuZ.mjs → trash-2-B3hyZ06m.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CHD2bVBg.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Rw5qHN1M.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CX_tb6VB.mjs +0 -26
@@ -36,7 +36,7 @@ under [Non-commercial models](#non-commercial-models).
36
36
  - RF-DETR © Roboflow, Apache-2.0. https://github.com/roboflow/rf-detr
37
37
  - YuNet weights Copyright (c) 2020 Shiqi Yu, MIT. Training code: ShiqiYu/libfacedetection.train, BSD-3-Clause. https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet
38
38
  - AuraFace v1 by fal.ai, Apache-2.0. https://huggingface.co/fal/AuraFace-v1
39
- - © Ultralytics, AGPL-3.0 (YOLOv8n base, fine-tuned for plates by an unidentified third party). CamStack holds no training checkpoint; the ONNX file is the only form it has. https://github.com/ultralytics/ultralytics
39
+ - open-lpr models, Copyright the open-lpr contributors, Apache-2.0 (https://huggingface.co/faisalthaheem/open-lpr-models, tag detector-2026.10.1). YOLOX architecture and COCO pretraining by Megvii (https://github.com/Megvii-BaseDetection/YOLOX), Apache-2.0. The upstream NOTICE is reproduced verbatim (`NOTICE-open-lpr.txt`). https://huggingface.co/faisalthaheem/open-lpr-models
40
40
  - fast-plate-ocr, MIT License, copyright (c) 2024 ankandrew (full notice: licenses/models/MIT-fast-plate-ocr.txt). https://github.com/ankandrew/fast-plate-ocr
41
41
  - EfficientNet-Lite0 via timm (Ross Wightman), Apache-2.0. Open Images V7 annotations © Google LLC, CC BY 4.0; images listed by Google as CC BY 2.0, without warranty. https://github.com/huggingface/pytorch-image-models
42
42
  - torchvision MobileNetV3, BSD-3-Clause. Trained on the Vehicle classification dataset by DrBimmer (https://huggingface.co/datasets/DrBimmer/vehicle-classification), CC BY-NC 4.0. https://github.com/pytorch/vision
@@ -62,34 +62,42 @@ Training data under attribution terms:
62
62
  cards link here instead of repeating it.
63
63
  -->
64
64
 
65
- The folders `objectDetection/yolo26`, `objectDetection/yolov9`, `plateDetection/yolov8-plate` and `segmentation/yolo26-seg` of the model mirror hold Ultralytics weights,
65
+ The folders `objectDetection/yolo26`, `objectDetection/yolov9` and `segmentation/yolo26-seg` of the model mirror hold Ultralytics weights,
66
66
  modified by CamStack and distributed under AGPL-3.0. Their Corresponding Source
67
67
  is published in the mirror itself, in its **`source/`** folder,
68
68
  **https://huggingface.co/camstack/camstack-models/tree/main/source**, together
69
69
  with the upstream checkpoints it starts from:
70
70
 
71
- 1. **The upstream checkpoints**, published by Ultralytics at
72
- https://github.com/ultralytics/assets/releases: `yolo26{n,s,m,l,x}.pt`,
73
- `yolov9{t,s,m,c}.pt`, `yolo26{n,s,m}-seg.pt`.
74
- 2. **The export scripts** in `source/`: `build-camstack-models.py` (ONNX
75
- with a dynamic batch axis, CoreML FP16, OpenVINO IR, OpenVINO NNCF INT8),
76
- `convert_lib.py` (the ONNX to OpenVINO / INT8 / CoreML converter it imports,
77
- the same one CamStack's Model Studio runs), `requirements.txt` and
78
- `export-models.py`. The build instructions (Python environment,
79
- invocation, calibration images for INT8) are in `source/README.md` and in
80
- each script's header. These scripts are CamStack's own code and are offered
81
- under the MIT licence; the weights they produce keep their upstream licence.
82
-
83
- What the published scripts do **not** cover yet:
84
-
85
- - **Some hosted sizes and input resolutions.** The export scripts do not list
86
- every variant in the mirror (for example the `-320`/`-256` YOLO26 exports,
87
- `yolov9m`/`yolov9c`, and the `yolo26*-seg` models). Each one is the same
88
- Ultralytics `export()` with a different model id or `imgsz`, but no
89
- published script reproduces it as-is.
90
- - **`yolov8n-plate` has no training checkpoint.** It is a third-party model
91
- (trained 2023-12-05 according to its own metadata, origin not identified).
92
- The ONNX file is the only form CamStack has.
71
+ 1. **The upstream checkpoints.** Ultralytics publishes
72
+ `yolo26{n,s,m,l,x}.pt`, `yolov9{t,s,m,c}.pt` and `yolo26{n,s,m}-seg.pt` at
73
+ https://github.com/ultralytics/assets/releases.
74
+ 2. **The build script** in `source/`: `build-camstack-models.py`, with
75
+ `convert_lib.py` (the ONNX to OpenVINO / INT8 converter it calls, the same
76
+ file CamStack's Model Studio runs) and `requirements.txt`. It holds one
77
+ recipe per hosted file: the upstream checkpoint, the input size, the
78
+ Ultralytics `export()` arguments, the OpenVINO precision and the INT8
79
+ calibration count that file records about itself. Every hosted
80
+ Ultralytics-derived file is rebuilt by one invocation:
81
+ `build-camstack-models.py --variant <file stem>` (for example
82
+ `camstack-yolo26n-320` or `camstack-yolov9m-640`), `--family <folder>`
83
+ or `--all`; `--list` prints the recipes and `--check-hosted` confirms
84
+ against the mirror that every hosted file is a recipe output. The INT8
85
+ builds are NNCF post-training quantisation calibrated on COCO images: 128
86
+ for YOLO26, 300 for YOLOv9, as each IR records; the documented set is the
87
+ first N of COCO val2017 in file-name order. The Python
88
+ environment, the recorded tool versions and the calibration set are in
89
+ `source/README.md` and the script's header. These scripts are CamStack's
90
+ own code and are offered under the MIT licence; the weights they produce
91
+ keep their upstream licence.
92
+
93
+ Limits of a rebuild:
94
+
95
+ - **Tool versions.** With the Ultralytics, PyTorch, coremltools and OpenVINO
96
+ versions each recipe names, a rebuild reproduces the hosted weights. Other
97
+ versions give the same weights in a possibly different graph.
98
+ - **INT8 calibration.** An IR records how many images calibrated it, not
99
+ which ones. Calibrating on the same COCO images gives the documented build;
100
+ a different set gives an equivalent, not bit-identical, INT8 model.
93
101
 
94
102
  ## Non-commercial models
95
103
 
@@ -138,7 +146,7 @@ entry kept resolvable for a saved selection but no longer offered.
138
146
 
139
147
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
140
148
  | --- | --- | --- | --- | --- | --- |
141
- | `yolov8n-plate` (default) | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | unidentified plate dataset (third-party model, trained 2023-12-05 per its ONNX metadata): UNKNOWN | converted to OpenVINO IR and CoreML | mirror `plateDetection/yolov8-plate` |
149
+ | `yolox-tiny-plate` (default) | [open-lpr models (faisalthaheem/open-lpr-models), YOLOX-tiny](https://huggingface.co/faisalthaheem/open-lpr-models) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | Simanno annotated plate corpus plus community-contributed photographs, pseudo-labelled by a teacher model (not published; the upstream NOTICE says the photographs were uploaded without consent obtained): UNKNOWN | input contract baked into the graph (static 1x3x640x640 RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather) and the output reshaped to the YOLOv8 layout (cx, cy, w, h, obj*cls); ONNX fp32, OpenVINO IR fp16, CoreML fp16 (scripts/build-yolox-plate-model.py) | mirror `plateDetection/yolox-tiny-plate` |
142
150
 
143
151
  ### Licence plate reading
144
152
 
@@ -156,7 +164,7 @@ entry kept resolvable for a saved selection but no longer offered.
156
164
 
157
165
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
158
166
  | --- | --- | --- | --- | --- | --- |
159
- | `bird-classifier` (default) | [Google AIY Vision birds_V1](https://github.com/google-coral/test_data) | — / Apache-2.0 (`Apache-2.0.txt`) | — | converted from TensorFlow with tf2onnx; OpenVINO IR and CoreML derived from it | mirror `animalClassification/bird-classifier` |
167
+ | `bird-classifier` (default) | [Google AIY Vision birds_V1](https://github.com/google-coral/test_data) | — / Apache-2.0 (`Apache-2.0.txt`) | — | converted from TensorFlow with tf2onnx; OpenVINO IR and CoreML derived from it; the Edge TPU build is the Google full-integer quantised TFLite of the same model, compiled with edgetpu_compiler 14 (scripts/build-bird-classifier-edgetpu.py) | mirror `animalClassification/bird-classifier` |
160
168
 
161
169
  ### Vehicle classifier
162
170
 
@@ -1,6 +1,6 @@
1
1
  import { c as e, h as t, m as n, p as r, u as i, y as a } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
2
- import { a as o, n as s, r as c, s as l, t as u } from "./responsive-orJ4AkQR.mjs";
3
- import { n as d, t as f } from "./player-overlays-BdsADMdm.mjs";
2
+ import { a as o, n as s, r as c, s as l, t as u } from "./responsive-dgrtmGP7.mjs";
3
+ import { n as d, t as f } from "./player-overlays-CgZQeBdy.mjs";
4
4
  import { n as p, r as m, t as ee } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
5
5
  import { MaskShapeCanvas as h } from "./MaskShapeCanvas-C4g96eMz.mjs";
6
6
  var g = l("grid-2x2", [
@@ -1,8 +1,8 @@
1
1
  import { c as e, h as t, m as n, p as r, u as i, y as a } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
2
- import { a as ee, n as te, r as ne, s as o, t as s } from "./responsive-orJ4AkQR.mjs";
3
- import { n as re, t as ie } from "./player-overlays-BdsADMdm.mjs";
4
- import { n as ae, r as oe, t as se } from "./square-CgcW-Db-.mjs";
5
- import { t as c } from "./trash-2-Di341FuZ.mjs";
2
+ import { a as ee, n as te, r as ne, s as o, t as s } from "./responsive-dgrtmGP7.mjs";
3
+ import { n as re, t as ie } from "./player-overlays-CgZQeBdy.mjs";
4
+ import { n as ae, r as oe, t as se } from "./square-U1jjwP1Q.mjs";
5
+ import { t as c } from "./trash-2-B3hyZ06m.mjs";
6
6
  import { n as l, r as u, t as ce } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
7
7
  import { MaskShapeCanvas as le } from "./MaskShapeCanvas-C4g96eMz.mjs";
8
8
  var ue = o("hexagon", [["path", {
@@ -1,7 +1,7 @@
1
1
  import { c as e, h as t, m as n, p as r, u as i, y as a } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DJDHChgO.mjs";
2
- import { a as o, i as s, n as c, r as l, s as u, t as d } from "./responsive-orJ4AkQR.mjs";
3
- import { a as f, c as p, d as ee, i as m, l as h, n as g, o as _, r as v, s as y, t as b, u as x } from "./scene-monitor-copy-CRMa4vtd.mjs";
4
- import { t as S } from "./trash-2-Di341FuZ.mjs";
2
+ import { a as o, i as s, n as c, r as l, s as u, t as d } from "./responsive-dgrtmGP7.mjs";
3
+ import { a as f, c as p, d as ee, i as m, l as h, n as g, o as _, r as v, s as y, t as b, u as x } from "./scene-monitor-copy-CWuj3twx.mjs";
4
+ import { t as S } from "./trash-2-B3hyZ06m.mjs";
5
5
  import { n as C, r as w, t as T } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
6
6
  import { MaskShapeCanvas as E } from "./MaskShapeCanvas-C4g96eMz.mjs";
7
7
  var D = u("settings-2", [