mirror of
https://github.com/azaion/detections.git
synced 2026-04-22 22:56:31 +00:00
96 lines
3.3 KiB
Markdown
96 lines
3.3 KiB
Markdown
# Module: constants_inf
|
||
|
||
## Purpose
|
||
|
||
Application-wide constants, logging infrastructure, and the object detection class registry loaded from `classes.json`.
|
||
|
||
## Public Interface
|
||
|
||
### Constants
|
||
|
||
| Name | Type | Value | Description |
|
||
|------|------|-------|-------------|
|
||
| `CONFIG_FILE` | str | `"config.yaml"` | Configuration file path |
|
||
| `QUEUE_CONFIG_FILENAME` | str | `"secured-config.json"` | Queue config filename |
|
||
| `AI_ONNX_MODEL_FILE` | str | `"azaion.onnx"` | ONNX model filename |
|
||
| `CDN_CONFIG` | str | `"cdn.yaml"` | CDN configuration file |
|
||
| `MODELS_FOLDER` | str | `"models"` | Directory for model files |
|
||
| `SMALL_SIZE_KB` | int | `3` | Small file size threshold (KB) |
|
||
| `SPLIT_SUFFIX` | str | `"!split!"` | Delimiter in tiled image names |
|
||
| `TILE_DUPLICATE_CONFIDENCE_THRESHOLD` | double | `0.01` | Threshold for tile duplicate detection equality |
|
||
| `METERS_IN_TILE` | int | `25` | Physical tile size in meters for large image splitting |
|
||
| `weather_switcher_increase` | int | `20` | Offset between weather mode class ID ranges |
|
||
|
||
### Enum: WeatherMode
|
||
|
||
| Value | Name | Meaning |
|
||
|-------|------|---------|
|
||
| 0 | Norm | Normal weather |
|
||
| 20 | Wint | Winter |
|
||
| 40 | Night | Night |
|
||
|
||
### Class: AnnotationClass
|
||
|
||
Fields: `id` (int), `name` (str), `color` (str), `max_object_size_meters` (int).
|
||
|
||
Represents a detection class with its display metadata and physical size constraint.
|
||
|
||
### Functions
|
||
|
||
| Function | Signature | Description |
|
||
|----------|-----------|-------------|
|
||
| `log` | `(str log_message) -> void` | Info-level log via loguru |
|
||
| `logerror` | `(str error) -> void` | Error-level log via loguru |
|
||
| `format_time` | `(int ms) -> str` | Converts milliseconds to compact time string `HMMSSf` |
|
||
|
||
### Global: `annotations_dict`
|
||
|
||
`dict[int, AnnotationClass]` — loaded at module init from `classes.json`. Contains 19 base classes × 3 weather modes (Norm/Wint/Night) = up to 57 entries. Keys are class IDs, values are `AnnotationClass` instances.
|
||
|
||
## Internal Logic
|
||
|
||
- On import, reads `classes.json` and builds `annotations_dict` by iterating 3 weather mode offsets (0, 20, 40) and adding class ID offsets. Weather mode names are appended to class names for non-Norm modes.
|
||
- Configures loguru with:
|
||
- File sink: `Logs/log_inference_YYYYMMDD.txt` (daily rotation, 30-day retention)
|
||
- Stdout: INFO/DEBUG/SUCCESS levels
|
||
- Stderr: WARNING and above
|
||
|
||
## Legacy / Orphaned Declarations
|
||
|
||
The `.pxd` header declares `QUEUE_MAXSIZE`, `COMMANDS_QUEUE`, and `ANNOTATIONS_QUEUE` (with comments referencing RabbitMQ) that are **not defined** in the `.pyx` implementation. These are remnants of a previous queue-based architecture and are unused.
|
||
|
||
## Dependencies
|
||
|
||
- **External**: `json`, `sys`, `loguru`
|
||
- **Internal**: none (leaf module)
|
||
|
||
## Consumers
|
||
|
||
- `ai_availability_status` (logging)
|
||
- `annotation` (tile duplicate threshold)
|
||
- `onnx_engine` (logging)
|
||
- `tensorrt_engine` (logging)
|
||
- `inference` (logging, constants, annotations_dict, format_time, SPLIT_SUFFIX, METERS_IN_TILE, MODELS_FOLDER, AI_ONNX_MODEL_FILE)
|
||
- `main` (annotations_dict for label lookup)
|
||
|
||
## Data Models
|
||
|
||
- `AnnotationClass` — detection class metadata
|
||
- `WeatherMode` — enum for weather conditions
|
||
|
||
## Configuration
|
||
|
||
- Reads `classes.json` at import time (must exist in working directory)
|
||
|
||
## External Integrations
|
||
|
||
None.
|
||
|
||
## Security
|
||
|
||
None.
|
||
|
||
## Tests
|
||
|
||
None found.
|