mirror of
https://github.com/azaion/detections.git
synced 2026-06-21 13:21:08 +00:00
71 lines
3.1 KiB
Markdown
71 lines
3.1 KiB
Markdown
# Module: ai_config
|
|
|
|
## Purpose
|
|
|
|
Data class holding all AI recognition configuration parameters, with factory method for deserialization from dict format.
|
|
|
|
## Public Interface
|
|
|
|
### Class: AIRecognitionConfig
|
|
|
|
#### Fields
|
|
|
|
| Field | Type | Default | Description |
|
|
|-------|------|---------|-------------|
|
|
| `frame_period_recognition` | int | 4 | Process every Nth frame in video |
|
|
| `frame_recognition_seconds` | double | 2.0 | Minimum seconds between valid video annotations |
|
|
| `probability_threshold` | double | 0.25 | Minimum detection confidence |
|
|
| `tracking_distance_confidence` | double | 0.0 | Distance threshold for tracking (model-width units) |
|
|
| `tracking_probability_increase` | double | 0.0 | Required confidence increase for tracking update |
|
|
| `tracking_intersection_threshold` | double | 0.6 | IoU threshold for overlapping detection removal |
|
|
| `model_batch_size` | int | 1 | Batch size for inference |
|
|
| `big_image_tile_overlap_percent` | int | 20 | Tile overlap percentage for large image splitting |
|
|
| `has_camera_config` | bool | false | Whether camera parameters were supplied |
|
|
| `current_height` | double | 0.0 | Camera height in meters, from `camera_config.current_height` |
|
|
| `current_zoom` | double | 1.0 | Camera zoom multiplier |
|
|
| `current_angle` | double | 90.0 | Camera angle in degrees; 90 is nadir/downward |
|
|
| `focal_length` | double | 24 | Camera focal length in mm |
|
|
| `sensor_width` | double | 23.5 | Camera sensor width in mm |
|
|
| `altitude` / `has_altitude` | double / bool | legacy | Backward-compatible aliases for older flat camera config |
|
|
|
|
#### Methods
|
|
|
|
| Method | Signature | Description |
|
|
|--------|-----------|-------------|
|
|
| `from_dict` | `(dict data) -> AIRecognitionConfig` | Static cdef; deserializes from Python dict |
|
|
|
|
## Internal Logic
|
|
|
|
`from_dict` applies defaults for missing keys using full descriptive key names. Camera parameters are read from nested `camera_config` first; legacy flat `altitude`, `focal_length`, and `sensor_width` keys remain supported for older clients.
|
|
|
|
**Removed**: `paths` field and `file_data` field were removed as part of the distributed architecture shift (AZ-174). Media paths are now resolved via the Annotations service API, not passed in config. `from_msgpack()` was also removed as it was unused.
|
|
|
|
## Dependencies
|
|
|
|
- **External**: none
|
|
- **Internal**: none (leaf module)
|
|
|
|
## Consumers
|
|
|
|
- `inference` — creates config from dict, uses all fields for frame selection, detection filtering, image tiling, and tracking
|
|
|
|
## Data Models
|
|
|
|
- `AIRecognitionConfig` — the sole data class
|
|
|
|
## Configuration
|
|
|
|
Camera parameters (`camera_config.focal_length`, `camera_config.sensor_width`, `camera_config.current_zoom`, `camera_config.current_angle`, `camera_config.current_height`) are used for ground sampling distance calculation in aerial image processing. If `camera_config` is missing or height/optics are invalid, the service skips GSD-based size filtering and does not tile large images by physical size.
|
|
|
|
## External Integrations
|
|
|
|
None.
|
|
|
|
## Security
|
|
|
|
None.
|
|
|
|
## Tests
|
|
|
|
- `tests/test_ai_config_from_dict.py` — tests `ai_config_from_dict()` helper with defaults and overrides
|