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

5.7 KiB

Справочник конфигурации

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

Камера

FPV_SOURCE=0

Если строка состоит только из цифр, она будет преобразована в индекс камеры.

RTSP / HTTP / UDP / RTMP

FPV_SOURCE=rtsp://192.168.1.10:8554/live
FPV_SOURCE=udp://@0.0.0.0:5600

Такие источники открываются как поток.

Видео-файл

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.