# Third-party models CamStack's own source code is MIT-licensed (see `LICENSE`). CamStack does not include model weights in its npm packages or its Docker image. It downloads them, on demand, from the locations listed below. **Each model stays under its own licence.** Converting a model to another format does not change its licence: every CamStack-made build is a modified version (a "model derivative") of the upstream weights, and the change is stated per model. Full licence texts: `licenses/models/` in the CamStack source repository, and [`LICENSES/`](https://huggingface.co/camstack/camstack-models/tree/main/LICENSES) in the model mirror https://huggingface.co/camstack/camstack-models. Some of these models are **not licensed for commercial use**. They are listed under [Non-commercial models](#non-commercial-models). ## Required attributions - © Ultralytics, AGPL-3.0. Corresponding source: the upstream Ultralytics checkpoint and build-camstack-models.py (with convert_lib.py) published at https://huggingface.co/camstack/camstack-models/tree/main/source. https://github.com/ultralytics/ultralytics - Coral Edge TPU models and AIY Vision Birds V1 © Google LLC, Apache-2.0. https://github.com/google-coral/test_data - © 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 build-camstack-models.py (with convert_lib.py) published at https://huggingface.co/camstack/camstack-models/tree/main/source. https://github.com/ultralytics/ultralytics - RF-DETR © Roboflow, Apache-2.0. https://github.com/roboflow/rf-detr - 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 - AuraFace v1 by fal.ai, Apache-2.0. https://huggingface.co/fal/AuraFace-v1 - 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 - 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 - 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 - 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 - SigLIP 2 © Google LLC, Apache-2.0. https://huggingface.co/google/siglip2-base-patch16-224 - U²-Net © Xuebin Qin et al., Apache-2.0. https://github.com/xuebinqin/U-2-Net - YAMNet © Google LLC, Apache-2.0. AudioSet ontology and labels © Google LLC, CC BY 4.0. https://github.com/tensorflow/models/tree/master/research/audioset/yamnet - Qwen models © Alibaba Cloud, Apache-2.0. https://huggingface.co/Qwen · https://huggingface.co/unsloth · https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF - Built with Llama. Llama 3.2 is licensed under the Llama 3.2 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved. https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF Training data under attribution terms: - **COCO 2017** (training data of `yolo26n` and 50 more): annotations CC-BY-4.0; images under their Flickr owners' terms. https://cocodataset.org/#termsofuse - **WIDER FACE** (training data of `yunet-2023mar`): research-oriented terms; images CC BY-NC-ND. http://shuoyang1213.me/WIDERFACE/ - **Open Images V7** (training data of `animal-classifier`): annotations CC-BY-4.0 (Google LLC); images listed as CC-BY-2.0, no warranty. https://storage.googleapis.com/openimages/web/factsfigures_v7.html - **DrBimmer/vehicle-classification** (training data of `vehicle-type-v1`): CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading). https://huggingface.co/datasets/DrBimmer/vehicle-classification - **AudioSet ontology/labels** (training data of `yamnet-onnx`): CC-BY-4.0 (Google LLC). https://research.google.com/audioset/ ## Source offer for the AGPL-3.0 weights The folders `objectDetection/yolo26`, `objectDetection/yolov9` and `segmentation/yolo26-seg` of the model mirror hold Ultralytics weights, modified by CamStack and distributed under AGPL-3.0. Their Corresponding Source is published in the mirror itself, in its **`source/`** folder, **https://huggingface.co/camstack/camstack-models/tree/main/source**, together with the upstream checkpoints it starts from: 1. **The upstream checkpoints.** Ultralytics publishes `yolo26{n,s,m,l,x}.pt`, `yolov9{t,s,m,c}.pt` and `yolo26{n,s,m}-seg.pt` at https://github.com/ultralytics/assets/releases. 2. **The build script** in `source/`: `build-camstack-models.py`, with `convert_lib.py` (the ONNX to OpenVINO / INT8 converter it calls, the same file CamStack's Model Studio runs) and `requirements.txt`. It holds one recipe per hosted file: the upstream checkpoint, the input size, the Ultralytics `export()` arguments, the OpenVINO precision and the INT8 calibration count that file records about itself. Every hosted Ultralytics-derived file is rebuilt by one invocation: `build-camstack-models.py --variant ` (for example `camstack-yolo26n-320` or `camstack-yolov9m-640`), `--family ` or `--all`; `--list` prints the recipes and `--check-hosted` confirms against the mirror that every hosted file is a recipe output. The INT8 builds are NNCF post-training quantisation calibrated on COCO images: 128 for YOLO26, 300 for YOLOv9, as each IR records; the documented set is the first N of COCO val2017 in file-name order. The Python environment, the recorded tool versions and the calibration set are in `source/README.md` and the script's header. These scripts are CamStack's own code and are offered under the MIT licence; the weights they produce keep their upstream licence. Limits of a rebuild: - **Tool versions.** With the Ultralytics, PyTorch, coremltools and OpenVINO versions each recipe names, a rebuild reproduces the hosted weights. Other versions give the same weights in a possibly different graph. - **INT8 calibration.** An IR records how many images calibrated it, not which ones. Calibrating on the same COCO images gives the documented build; a different set gives an equivalent, not bit-identical, INT8 model. ## Non-commercial models These are downloaded by default or selectable, and their terms **do not allow commercial use**: | Model | Used for | Terms | | --- | --- | --- | | `vehicle-type-v1` (default) | Vehicle classifier | CC-BY-NC-4.0; training data: CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading) ([terms](https://creativecommons.org/licenses/by-nc/4.0/)) | ## Models "Mirror" means https://huggingface.co/camstack/camstack-models, folder given. "Code / weights" gives the two licences separately because they often differ. **Unknown** means no licence could be traced; it does not mean free to use. *default* marks the model a step runs when nobody chose one; *hidden* marks an entry kept resolvable for a saved selection but no longer offered. ### Object detection | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `yolo26n` (default), `yolo26s`, `yolo26m`, `yolo26l`, `yolo26x` (hidden), `yolo26n-fp16` (hidden), `yolo26n-int8`, `yolo26s-fp16` (hidden), `yolo26s-int8`, `yolo26m-fp16` (hidden), `yolo26m-int8`, `yolo26l-fp16` (hidden), `yolo26l-int8`, `yolo26n-320`, `yolo26n-320-int8`, `yolo26n-256`, `yolo26n-256-int8`, `yolo26s-320`, `yolo26s-320-int8`, `yolo26s-256`, `yolo26s-256-int8`, `yolo26m-320`, `yolo26m-320-int8`, `yolo26m-256`, `yolo26m-256-int8`, `yolo26l-320`, `yolo26l-320-int8`, `yolo26l-256`, `yolo26l-256-int8`, `yolo26x-fp16` (hidden), `yolo26x-int8` (hidden) | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported to ONNX, OpenVINO IR and CoreML (scripts/build-camstack-models.py); OpenVINO FP16 export; exported to OpenVINO IR, then OpenVINO NNCF INT8 post-training quantisation; re-exported at 320×320 to ONNX, OpenVINO IR and CoreML; re-exported at 320×320 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation; re-exported at 256×256 to ONNX, OpenVINO IR and CoreML; re-exported at 256×256 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation | mirror `objectDetection/yolo26` | | `ssd-mobilenet-v2-coco-edgetpu` (default) | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | none | https://github.com/google-coral/test_data | | `yolov9t-320`, `yolov9t-320-int8`, `yolov9t-640`, `yolov9t-640-int8`, `yolov9s-320`, `yolov9s-320-int8`, `yolov9s-640`, `yolov9s-640-int8`, `yolov9m-320`, `yolov9m-320-int8`, `yolov9m-640`, `yolov9m-640-int8`, `yolov9c-320`, `yolov9c-320-int8`, `yolov9c-640`, `yolov9c-640-int8` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported at 320×320 to ONNX, OpenVINO IR FP16 and CoreML; exported at 320×320 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation; exported at 640×640 to ONNX, OpenVINO IR FP16 and CoreML; exported at 640×640 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation | mirror `objectDetection/yolov9` | ### Package detection | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `rfdetr-package` (default) | [Roboflow RF-DETR](https://github.com/roboflow/rf-detr) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | parcel fine-tuning set (not recorded): UNVERIFIED | RF-DETR-M fine-tuned to 2 classes at 576; exported to ONNX, OpenVINO IR and CoreML; training checkpoint .pth also published | mirror `packageDetection/rfdetr-package` | ### Face detection | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `yunet-2023mar` (default) | [OpenCV Zoo YuNet](https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet) | BSD-3-Clause (`BSD-3-Clause.txt`) / MIT (`MIT-yunet-reference.txt`) | WIDER FACE: research-oriented terms; images CC BY-NC-ND | 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) | mirror `faceDetection/yunet` | ### Face recognition | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `auraface-r100` (default) | [fal.ai AuraFace v1 (glintr100.onnx only)](https://huggingface.co/fal/AuraFace-v1) | — / Apache-2.0 (`Apache-2.0.txt`) | — | input scaling y = 2x - 1 baked ahead of the first Conv (scripts/build-auraface-model.py); converted to OpenVINO IR and CoreML FP16 | mirror `faceRecognition/auraface` | ### Licence plate detection | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `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` | ### Licence plate reading | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `cct-s-v2-global` (default) | [ankandrew/fast-plate-ocr](https://github.com/ankandrew/fast-plate-ocr) | MIT / MIT (`MIT-fast-plate-ocr.txt`) | fast-plate-ocr training set: private, not released upstream | input head removed (recorded in the ONNX doc_string); converted to OpenVINO IR and CoreML | mirror `plateRecognition/cct-s-v2-global` | ### Animal classifier | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `animal-classifier` (default) | [timm EfficientNet-Lite0, fine-tuned by CamStack](https://github.com/huggingface/pytorch-image-models) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | Open Images V7: annotations CC-BY-4.0 (Google LLC); images listed as CC-BY-2.0, no warranty | fine-tuned by CamStack on the Open Images V7 animal subset (8 classes); exported to ONNX, OpenVINO IR and CoreML | mirror `animalClassification/animal-classifier` | ### Bird classifier | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `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` | ### Vehicle classifier | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `vehicle-type-v1` (default) | [torchvision MobileNetV3-Large, fine-tuned by CamStack](https://github.com/pytorch/vision) | BSD-3-Clause (`BSD-3-Clause.txt`) / **CC-BY-NC-4.0** (`CC-BY-NC-4.0.txt`) | DrBimmer/vehicle-classification: CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading) | fine-tuned by CamStack (8 classes); exported to ONNX, OpenVINO IR and CoreML | mirror `vehicleClassification/vehicle-type-v1` | ### Semantic search, image encoders (CLIP) | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `siglip2-b16-224` (default) | [Google SigLIP 2 (google/siglip2-base-patch16-224)](https://huggingface.co/google/siglip2-base-patch16-224) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | WebLI: Google internal, not released | input scaling y = 2x - 1 baked ahead of the patch embedding; converted to OpenVINO IR and CoreML FP16, an FP32 ONNX hosted as the verification reference (scripts/build-siglip2-model.py) | mirror `clip/siglip2` | ### Semantic search, text encoders (CLIP) | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `siglip2-b16-224-text` | [Google SigLIP 2 (google/siglip2-base-patch16-224)](https://huggingface.co/google/siglip2-base-patch16-224) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | WebLI: Google internal, not released | input sliced to the model's 64 positions in the graph; ONNX weights FP16, OpenVINO IR and CoreML FP16; a Lowercase normalizer prepended to the Gemma tokenizer (scripts/build-siglip2-model.py) | mirror `clip/siglip2` | ### Segmentation | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `u2netp` (default) | [xuebinqin/U-2-Net](https://github.com/xuebinqin/U-2-Net) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | DUTS-TR: not checked | converted to ONNX, OpenVINO IR and CoreML | mirror `segmentationRefiner/u2netp` | ### Instance segmentation (dormant step) | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `yolo26n-seg`, `yolo26s-seg`, `yolo26m-seg` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported to ONNX, OpenVINO IR and CoreML | mirror `segmentation/yolo26-seg` | ### Audio | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `yamnet-onnx` (default) | [tensorflow/models research/audioset/yamnet](https://github.com/tensorflow/models/tree/master/research/audioset/yamnet) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | AudioSet ontology/labels: CC-BY-4.0 (Google LLC) | converted from TensorFlow with tf2onnx; OpenVINO IR derived from it | mirror `audioClassification/yamnet` | | `apple-soundanalysis` (default) | [Apple SoundAnalysis (macOS built-in)](https://developer.apple.com/documentation/soundanalysis) | — / LicenseRef-Apple-macOS | — | none | built in, nothing downloaded | ### Language and vision-language models (AI addon) | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from | | --- | --- | --- | --- | --- | --- | | `llm-qwen2.5-1.5b-instruct-q4` | [Qwen (Alibaba Cloud)](https://huggingface.co/Qwen) | — / Apache-2.0 (`Apache-2.0.txt`) | — | none (GGUF Q4_K_M published by Qwen; not re-hosted by CamStack) | https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF | | `llm-llama3.2-3b-instruct-q4` | [Meta Llama 3.2 (GGUF by bartowski)](https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF) | — / LicenseRef-Llama-3.2-Community (`Llama-3.2-Community.txt`) | — | Q4_K_M GGUF quantisation by bartowski (not re-hosted by CamStack) | https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF | | `llm-qwen3-vl-2b-instruct-q4` | [Qwen3-VL (GGUF by unsloth)](https://huggingface.co/unsloth) | — / Apache-2.0 (`Apache-2.0.txt`) | — | Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3-VL-2B-Instruct-GGUF | | `llm-qwen3-vl-4b-instruct-q4` | [Qwen3-VL (GGUF by unsloth)](https://huggingface.co/unsloth) | — / Apache-2.0 (`Apache-2.0.txt`) | — | Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3-VL-4B-Instruct-GGUF | | `llm-qwen3-vl-8b-instruct-q4` | [Qwen3-VL (GGUF by unsloth)](https://huggingface.co/unsloth) | — / Apache-2.0 (`Apache-2.0.txt`) | — | Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3-VL-8B-Instruct-GGUF | | `llm-qwen3.6-35b-a3b-ud-q4` | [Qwen3.6-35B-A3B (GGUF by unsloth)](https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF) | — / Apache-2.0 (`Apache-2.0.txt`) | — | UD-Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF | ### Your own models Model Studio can import third-party models (for example community object-detection catalogs) on request. They are downloaded from their publishers, are not hosted or redistributed by CamStack, and keep their publishers' licences; Model Studio shows the licence where the source declares one. A model you upload or convert yourself, or pull from your own Frigate+ account, likewise keeps whatever licence its author published. CamStack does not change it and does not record it.