Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Разработка платформы координации поисково-спасательных работ

Разработка платформы координации поисково-спасательных работ

Подробности изложены в материале первоисточника. 12 августа в Алайском районе развернулась поисково-спасательная операция: волонтеры и спасатели искали группу альпинистов, не вернувшихся с пика Курумды. Массивы видеоматериалов с дронов копились часами, и традиционный ручной разбор отнимал драгоценное время, требуя фиксировать таймкоды, сверять телеметрию и переносить координаты вручную. Чтобы ускорить этот процесс, я сделал специализированную веб-платформу, которая объединила видео, кадры, точную телеметрию и обсуждение находок в едином интерфейсе.

Запуск MVP состоялся 15 августа, после чего инструмент непрерывно дорабатывался прямо в процессе реальных поисков. Платформа изначально создавалась с расчетом на то, чтобы выдерживать высокие нагрузки, работать в условиях нестабильного канала связи и предоставлять координаторам полную прозрачность процессов.

Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ
Разработка платформы координации поисково-спасательных работ

Автоматическая детекция и её ограничения

Изначально задумывалось, что основную работу выполнит искусственный интеллект: модель YOLO-World должна была автоматически находить людей, палатки и рюкзаки на кадрах без предварительного обучения на собственных датасетах. Из-за огромного разрешения 4K кадры нарезались на тайлы с перекрытием, а параллельный детектор цветовых аномалий пытался вычленить яркое снаряжение на сером склоне.

Реклама

Однако на практике модель выдала более 183 тысяч рамок при всего 31 полезной пометке от людей. Отношение полезного сигнала к шуму оказалось слишком низким, а группировка детекций в сцены не спасла ситуацию — проверять ошибки алгоритма стоило дороже, чем искать объекты самостоятельно. В результате упор полностью сместился на ручной просмотр и удобство фиксации данных.

Карточка находки с таймкодом и телеметрией
Карточка конкретной находки с кадром, таймкодом и зашифрованными координатами из телеметрии

Производительность и специфика канала связи

Платформа транслировала данные наружу через бесплатный туннель Cloudflare, так как аренда полноценного сервера требовала регулярных затрат, а прямой проброс портов уперся в ограничения провайдера (CGNAT). Домашний интернет со скоростью отдачи 24 Мбит/с (реально доходило до 18,5 Мбит/с) принимал до десятка одновременных пользователей.

Поскольку исходное видео с дронов шло с битрейтом 30 Мбит/с, пиковые запросы превышали пропускную способность канала почти в пять раз. HTTP-видео деградировало мягко: плеер просто приостанавливал воспроизведение для дозагрузки буфера, обходясь без падений сервера. Тем не менее, для оптимизации работы воркер в фоновом режиме стал создавать облегченные копии файлов с меньшим битрейтом, что снизило нагрузку на сеть в девять раз и позволило хранить оригиналы в облаке Google Диска.

Первый вечер и оперативные правки

Уже в первый вечер эксплуатации выявились архитектурные уязвимости. Общая очередь обработки задерживала быстрые фотографии за многочасовыми видеофайлами, а детектор на CPU забирал все ресурсы процессора, полностью блокируя веб-интерфейс. Потребовалось срочно внедрить приоритезацию процессов, ограничить инференс и добавить тумблер ручного выбора файлов для анализа.

Графики нагрузки на сервер и свободное место на диске
Графики загрузки хранилища и состояния системных воркеров за неделю работы

Для безопасной авторизации десятков волонтеров была внедрена связка с Telegram-ботом. Координатор выдавал персональные ссылки с защищенными ключами доступа, которые автоматически самоуничтожались через пять секунд. Система ролей распределила полномочия от простого просмотра и разметки до загрузки материалов и модерации.

Архитектура без остановок

Главным инженерным решением стало разделение системы на три независимых процесса, общающихся исключительно через базу данных SQLite и файловую систему: веб-сервер, воркер обработки и Telegram-бот. Это позволило непрерывно обновлять код и перезапускать компоненты платформы прямо во время работы пользователей, не прерывая анализ данных ни на секунду.

Статистика активности волонтеров в системе
История присутствия и накопительные показатели работы поисковых групп

Интерфейс разметки был полностью адаптирован под клавиатурные сокращения для работы в полноэкранном режиме с зумом. Инструмент научился автоматически подставлять координаты из телеметрии SRT-файлов по текущему таймкоду, рассчитывать вероятные точки на земле и сохранять контекст обсуждений прямо внутри карточки конкретной находки.

Детальный просмотр видеоматериалов с дрона
Интерфейс покадрового просмотра видео и разметки потенциальных целей

Мониторинг и борьба с системными сбоями

Для контроля работоспособности системы были внедрены эндпоинты проверки здоровья, метрики Prometheus и дашборды Grafana с выводом тревог в Telegram. Ошибки обработки файлов, нехватка свободного дискового пространства и рассинхронизация процессов отслеживались в реальном времени, предотвращая скрытые отказы и падения сервиса.

Разработка платформы координации поисково-спасательных работ
Ошибки по кодам, самые медленные разделы API, файлы по статусам и свободное место. Провал на графике места в середине недели — та самая чистка сирот.
Разработка платформы координации поисково-спасательных работ
История присутствия и накопительные счётчики работы людей. Полка на всех трёх кривых — это и есть окончание активной фазы.

Опыт разработки показал, что генеративные инструменты ускоряют написание кода, но требуют тщательного тестирования для исключения логических ошибок. Итоговый проект с открытым исходным кодом доказал свою надежность в экстремальных условиях реальной спасательной операции, обеспечив координацию поисковых групп и сохранив всю историю находок.

01.