You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MAI/docs/CONFIG_REFERENCE_RU.md

234 lines
5.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Справочник конфигурации
## 1. Общий принцип
У проекта два основных файла конфигурации:
- `config.py`
- `config_intercept.py`
Плюс слой env-overrides:
- `runtime_env.py`
Если проект запускается локально, обычно проще править `config.py` и `config_intercept.py`.
Если проект запускается в Docker, лучше использовать env-переменные.
## 2. Главные параметры `config.py`
### Источник и модель
- `MODEL_PATH` — путь к `best.pt`
- `DEVICE` — индекс CUDA-устройства
- `USE_HALF` — half precision на GPU
- `SOURCE` — видеофайл, индекс камеры, RTSP или UDP
- `VIDEO_REALTIME` — pacing по времени источника
- `CAP_BACKEND` — backend OpenCV для камер
### Вывод
- `SHOW_OUTPUT` — показывать окно OpenCV
- `WINDOW_NAME` — имя окна
- `SAVE_INFER_VIDEO` — писать выходное видео
- `OUT_VIDEO_PATH` — базовое имя выходного видео
### Детектор YOLO
- `CONF`
- `IMG_SIZE_ROI`
- `IMG_SIZE_FULL`
- `MAX_DET`
- `TARGET_CLASS_ID`
### KLT
- `KLT_MAX_CORNERS`
- `KLT_QUALITY`
- `KLT_MIN_DIST`
- `KLT_WIN`
- `KLT_MAX_LEVEL`
- `KLT_OUTLIER_THRESH`
- `KLT_OK_Q`
- `KLT_OK_PTS`
- `KLT_REFRESH_WITH_YOLO`
### ByteTrack / Kalman
- `BT_HIGH`
- `BT_LOW`
- `BT_NEW`
- `BT_MATCH_IOU`
- `BT_BUFFER`
- `BT_MIN_HITS`
- `BT_MAX_PREDICT_AGE`
- `KALMAN_HOLD_MAX`
### Guidance
- `GUIDANCE_ENABLE`
- `DRAW_GUIDANCE`
- `GUIDANCE_EXPORT_ENABLE`
- `GUIDANCE_EXPORT_PATH`
- `GUIDANCE_EXPORT_EVERY`
- `GUIDANCE_CMD_SMOOTH`
- `GUIDANCE_POINT_SMOOTH`
- `GUIDANCE_CONF_MIN`
- `GUIDANCE_OVERRIDE_ENABLE`
- `GUIDANCE_OVERRIDE_MISS_GE`
- `GUIDANCE_OVERRIDE_TTL`
## 3. Главные параметры `config_intercept.py`
### Range estimation
- `RANGE_ENABLE`
- `CAMERA_FOCAL_LENGTH_PX`
- `TARGET_KNOWN_SIZE_M`
- `RANGE_MIN_APPARENT_SIZE_PX`
- `RANGE_MAX_M`
- `RANGE_MIN_M`
### Proportional navigation
- `PN_ENABLE`
- `PN_NAV_GAIN`
- `PN_AUGMENTED`
- `PN_AUG_GAIN`
- `PN_MAX_ACCEL_CMD`
### Intercept FSM
- `INTERCEPT_FSM_ENABLE`
- `FSM_ACQUIRE_RANGE_M`
- `FSM_TRACK_CONFIRM_HITS`
- `FSM_INTERCEPT_RANGE_M`
- `FSM_TERMINAL_TAU_SEC`
- `FSM_TERMINAL_RANGE_M`
- `FSM_LOST_TIMEOUT`
### Внешние backend'ы
- `AUTOPILOT_ENABLE`
- `AUTOPILOT_BACKEND`
- `AUTOPILOT_JSON_PATH`
- `AUTOPILOT_JSON_EVERY`
- `MAVLINK_CONNECTION`
- `MSP_PORT`
- `MSP_BAUD`
### Испытательный UDP-протокол
- `PROTO_UDP_ENABLE`
- `PROTO_UDP_HOST`
- `PROTO_UDP_PORT`
- `PROTO_UDP_DESCRIPTOR`
### IMM / расширенные модули
- `IMM_ENABLE`
- `IMM_REPLACE_KALMAN`
## 4. Env-переменные, которые реально поддерживаются
Ниже перечислен точный набор env-overrides из `runtime_env.py`.
### Переопределения `config.py`
- `FPV_MODEL_PATH`
- `FPV_SOURCE`
- `FPV_VIDEO_REALTIME`
- `FPV_SHOW_OUTPUT`
- `FPV_SAVE_INFER_VIDEO`
- `FPV_OUT_VIDEO_PATH`
- `FPV_GUIDANCE_EXPORT_ENABLE`
- `FPV_GUIDANCE_EXPORT_PATH`
### Переопределения `config_intercept.py`
- `FPV_AUTOPILOT_ENABLE`
- `FPV_AUTOPILOT_BACKEND`
- `FPV_AUTOPILOT_JSON_PATH`
- `FPV_MAVLINK_CONNECTION`
- `FPV_MSP_PORT`
- `FPV_PROTO_UDP_ENABLE`
- `FPV_PROTO_UDP_HOST`
- `FPV_PROTO_UDP_PORT`
- `FPV_PROTO_UDP_DESCRIPTOR`
## 5. Как интерпретируется `FPV_SOURCE`
### Камера
```text
FPV_SOURCE=0
```
Если строка состоит только из цифр, она будет преобразована в индекс камеры.
### RTSP / HTTP / UDP / RTMP
```text
FPV_SOURCE=rtsp://192.168.1.10:8554/live
FPV_SOURCE=udp://@0.0.0.0:5600
```
Такие источники открываются как поток.
### Видео-файл
```text
FPV_SOURCE=/data/input/test.mp4
```
## 6. Рекомендуемые пресеты запуска
### Отладка на видеофайле
- `SOURCE` = путь к файлу
- `AUTOPILOT_BACKEND = "json"`
- `SHOW_OUTPUT = True`
- `SAVE_INFER_VIDEO = True`
### Реальный live-поток
- `SOURCE` = камера/RTSP/UDP
- `AUTOPILOT_BACKEND = "json"` на первом этапе
- `SHOW_OUTPUT` по ситуации
### Испытания протокола
- `AUTOPILOT_BACKEND = "proto_udp"`
- `PROTO_UDP_ENABLE = True`
- `PROTO_UDP_HOST` и `PROTO_UDP_PORT` под вашу сеть
## 7. Что лучше менять через env, а что через файлы
Через env лучше менять:
- источник;
- backend;
- пути к выходным файлам;
- включение UDP-протокола;
- сетевые адреса и порты.
Через `config.py` и `config_intercept.py` лучше менять:
- глубокий тюнинг трекера;
- пороги KLT/ByteTrack/Kalman;
- ROI- и recover-параметры;
- параметры PN/FSM;
- экспериментальные флаги.
## 8. Что не переопределяется через env
На текущий момент через env не вынесены все сотни тюнинговых параметров из `config.py`.
Это сделано специально, чтобы:
- оставить Docker-конфигурацию компактной;
- не раздувать runtime API;
- не превращать проект в огромный набор shell-параметров.
Если вам нужно контейнерно менять дополнительный параметр, его можно добавить в `runtime_env.py`.