File size: 7,424 Bytes
783ed86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176

---
library_name: ultralytics
pipeline_tag: object-detection
tags:
  - computer-vision
  - object-detection
  - oriented-object-detection
  - yolo
  - yolov8
  - onnx
---

# Outflock Camera Component OBB Model and Dataset

This repository contains a YOLOv8 medium oriented-bounding-box model and its
training dataset. The model detects three parts of fixed camera systems:

| ID | Class | Description |
| ---: | --- | --- |
| 0 | `Body` | Camera body or outer housing. |
| 1 | `Lens` | Visible camera lens or optical module. |
| 2 | `System` | The complete camera assembly or installed system. |

The model was developed for experiments to recognize Flock ALPR camera systems and their specific components. *This model is for educational purposes only and should not be used for illegal purposes.*

 Flock cameras are showing up across the country, without the consent of citizens and are impinging on personal privacy and civil liberties - while also continuously being used for nefarious purposes by the very organizations citizens are told to trust.

For more information on Flock and on the widespread utilization of ALPR camera systems, please see [DeFlock.org](https://deflock.org).

## Model details

| Property | Value |
| --- | --- |
| Architecture | Ultralytics YOLOv8m-OBB |
| Task | Oriented object detection |
| Format | ONNX |
| Model file | `model/best.onnx` |
| Model size | 105,941,004 bytes, approximately 101 MiB |
| SHA-256 | `690f0eb7d626de52902665ccd233629f27a75443b8420aa5e884cc7f248a9860` |
| Ultralytics version recorded in ONNX | 8.4.104 |
| Input | `images`, float32 `[1, 3, 960, 960]` |
| Output | `output0`, float32 `[1, 8, 18900]` |
| ONNX opset | 12 |
| Batch size | 1, fixed |
| Embedded NMS | No |

Each raw output prediction contains four oriented-box values, three class
scores, and one angle value. Confidence filtering and class-aware rotated NMS must be applied by the consumer.

The Outflock OpenCV pipeline letterboxes images to 960 by 960 pixels with a `(114, 114, 114)` fill color, scales pixels by `1 / 255`, converts BGR to RGB, and uses NCHW layout. Detected boxes are mapped back into the original image coordinates after inference.

## Training configuration

The model was initialized from `yolov8m-obb.pt` and trained using
`train/trainObbModel.py` with the following configuration:

| Setting | Value |
| --- | --- |
| Maximum epochs | 50 |
| Early-stopping patience | 20 epochs |
| Image size | 960 |
| Batch size | 16 |
| Optimizer | Automatic selection |
| Mixed precision | Enabled |
| Pretrained weights | Enabled |
| Training device | CUDA device 0 |
| Workers | 8 |

Configured augmentations include limited rotation, translation, scale,
perspective, horizontal flipping, mosaic, and mixup. Vertical flipping and
copy-paste augmentation are disabled. See `train/trainObbModel.py` for the exact values.

No training history, held-out test split, or evaluation metrics are included
with the current export. The validation split was used during training, so it
should not be treated as an independent test set.

## Dataset summary

The uploadable dataset is generated at `train/datasets/camera_obb` in
Ultralytics YOLO OBB format.

| Split | Images | OBB annotations | Body | Lens | System |
| --- | ---: | ---: | ---: | ---: | ---: |
| Train | 152 | 429 | 156 | 152 | 121 |
| Validation | 37 | 98 | 38 | 30 | 30 |
| Total | 189 | 527 | 194 | 182 | 151 |

There is no test split. The preparation script creates a deterministic 80/20
train/validation split using seed 42 and excludes images whose matching label file is absent or fails validation.

The generated dataset contains 149 JPEG, 35 PNG, and 5 WebP images. Image widths range from 320 to 4,032 pixels and heights range from 180 to 3,410 pixels. The median width is 1,200 pixels and the median height is 820 pixels.

### Directory layout

```text
datasets/camera_obb/
β”œβ”€β”€ data.yaml
β”œβ”€β”€ images/
β”‚   β”œβ”€β”€ train/
β”‚   └── val/
└── labels/
    β”œβ”€β”€ train/
    └── val/
```

The generated `labels/*.cache` files are Ultralytics caches and are not part
of the underlying annotation format. They may be deleted and regenerated.

### Annotation format

Each image has a same-stem `.txt` label file. Every line describes one
oriented bounding box:

```text
class_id x1 y1 x2 y2 x3 y3 x4 y4
```

The four corner points are stored in polygon order. Coordinates are normalized to the image width and height and are expected to fall in the inclusive range from 0 to 1.

Example:

```text
1 0.31 0.42 0.46 0.39 0.49 0.53 0.34 0.56
```

## Reproducing the dataset and model

The training script rebuilds the generated dataset from `train/data`, trains the model, and optionally exports ONNX:

```bash
python train/trainObbModel.py --onnx
```

The main dependencies are PyTorch, Ultralytics, and PyYAML. Training expects a CUDA device by default. The generated `data.yaml` contains an absolute local path, so run the preparation script again or update its `path` entry after moving the dataset.

Run OpenCV inference on one image with:

```bash
python train/testObbOpenCv.py path/to/image.jpg \
  --model flight/model/best.onnx \
  --output path/to/output.jpg \
  --conf 0.25 \
  --iou 0.45 \
  --imgsz 960
```

## Intended uses

- Research and development involving oriented detection of the three camera component classes above.
- Testing Outflock's OpenCV and flight-camera inference pipeline.
- Fine-tuning or benchmarking on imagery with a similar viewpoint and domain, after establishing appropriate data rights.

## Limitations and out-of-scope uses

- The dataset is small and was collected around a narrow search concept.
- Search-engine sampling can introduce geographic, product, viewpoint,
  resolution, and source-selection biases.
- Random image splitting does not guarantee that near-duplicate images or the same physical camera do not appear in both splits.
- The dataset has no independent test set and the exported model has no
  published accuracy, precision, recall, or mAP measurements.
- Performance on other camera designs, aerial viewpoints, difficult weather, occlusion, motion blur, or low-light imagery is unknown.
- This model should not be used as the sole input to safety-critical navigation, law enforcement, identification, or surveillance decisions.

## Licensing, provenance, and privacy

The ONNX metadata identifies the exported Ultralytics model as AGPL-3.0. Users are responsible for complying with the applicable Ultralytics and model weight licensing terms.

The image acquisition utility performs a DuckDuckGo image search for
`flock camera` and downloads third-party image results. The current dataset does not include a source URL, author, attribution, consent record, or license manifest for each image. Consequently, the right to redistribute the images cannot be established from this repository alone, and no dataset license is asserted by this card.

Before publishing the dataset, audit every image for copyright and
redistribution rights, remove images without adequate permission, and review the files and embedded metadata for people, license plates, addresses, trademarks, or other sensitive information. Until that audit is complete, a private or access-controlled Hugging Face dataset repository is recommended.

This README documents the current files and does not itself grant permission to redistribute the underlying images.