Operational Situation Display System — система, предназначенная для сокращения времени принятия решений и повышения оперативности целеуказания за счёт предоставления точных данных о местоположении, перемещении и действиях объектов интереса в реальном времени.
Модель позволяет находить любые объекты интереса на основе текстового описания, а также уточнять результаты по координатам и временным промежуткам.
Сократить время принятия решений и ускорить целеуказание, предоставляя в реальном времени точные координаты, время и действия любого объекта интереса — через визуально удобный модуль для быстрого поиска.
Для этого реализованы:
- Сбор и агрегация данных в реальном времени
- Быстрая обработка и хранение информации
- Интуитивная карта и панель управления
- Моментальный поиск и фильтрация объектов
- Удобное отображение результатов поиска
Система особенно важна в следующих сферах:
- Безопасность и реагирование на угрозы
- Мониторинг инфраструктуры
- Поиск изменений на местности
- Поиск и спасение людей
- Огромные объёмы данных
- Медленная скорость обработки информации
- Снижение концентрации внимания операторов
- Риск ошибок из-за человеческого фактора
- Необходимость автоматизации
Создан программный модуль с интуитивно понятным интерфейсом, позволяющий в режиме реального времени находить и визуализировать любые объекты интереса на основе текстового описания, с возможностью уточнения по координатам и времени. Это обеспечивает оперативный доступ к точным данным о местоположении, перемещениях и действиях целей и существенно сокращает время принятия решений.
В системе используется набор разнородных данных, охватывающий различные источники визуальной информации:
- 🛰 Спутниковые снимки
- 🚁 Видеоряды, снятые дронами
- 📷 Видео и снимки с видеокамер наблюдения
Эти данные автоматически обрабатываются, очищаются от дубликатов и индексируются для последующего поиска.
operationalSituationDisplaySystem/
├── README.md
├── monitoring-interface/
│ ├── Dockerfile
│ ├── docker-compose.yaml
│ ├── requirements.txt
│ ├── app.py
│ ├── templates/
│ │ └── index.html
│ └── static/
│ ├── style.css
│ └── script.js
└── monitoring-system/
├── Dockerfile
├── docker-compose.yaml
├── environment.yml
├── requirements.txt
├── app.py
├── datasets/
├── image-matching-models/
├── weights/
│ ├── FastSAM-x.pt
│ └── RemoteCLIP-ViT-B-32.pt
└── src/
├── duplicate/
├── embedding/
└── retrieval/
├── base_client.py
├── indexer.py
├── processing/
│ ├── folder_scanner.py
│ ├── image_processor.py
│ └── batch_processor.py
└── utils/
- Поиск по текстовому описанию — векторный поиск через Qdrant
- Фильтрация по координатам — ручной ввод или выделение области на карте
- Фильтрация по времени — поиск по заданному интервалу
- Ограничение количества результатов
- Удаление дубликатов изображений
- Интеграция с Yandex Object Storage (S3 API)
- Микросервисная архитектура с Docker-контейнерами
git clone https://gitlab.mai.ru/DADegtyarev/operationalSituationDisplaySystem.git
cd operationalSituationDisplaySystem
docker network create retrieve_network
cd monitoring-system
docker-compose up --build -d
cd monitoring-interface
docker-compose up --build -d
Для корректной работы с хранилищем необходимо:
- Пройти авторизацию:
aws configure
- Указать:
- AWS Access Key ID
- AWS Secret Access Key
- Регион (например:
ru-central1
) - Формат вывода (
json
)
- Загрузите изображения в бакет:
aws s3 cp ./local-images/ s3://remote-sensing-storage/ --recursive
import requests
url = "http://localhost:8000/process-folder"
params = {
"folder_path": "s3://remote-sensing-storage",
"batch_size": 3
}
response = requests.post(url, params=params)
print("Статус-код:", response.status_code)
print("Ответ сервера:", response.text)
Интерфейс поиска — нажмите на изображение, чтобы посмотреть демонстрационное видео:
Используется для создания эмбеддингов изображений и текстов в едином векторном пространстве.
- Модификация CLIP под задачи наблюдения
- Архитектура: ViT-B/32
- Метрика: косинусная близость
- Позволяет сопоставлять любые изображения и текстовые описания
Находит и удаляет визуально схожие изображения до индексации.
- SuperPoint — извлечение ключевых точек
- LightGlue — сопоставление дескрипторов
- Быстро, устойчиво к деформациям и перспективе
- Опционально заменяемый на более точные, но медленные алгоритмы (например, SuperGlue)
Результат удаления дубликатов:
Хранение и поиск эмбеддингов изображений и описаний.
- Тип: нейровекторная база
- Фильтрация по координатам, времени и метаданным
- Поддержка hot reload, REST API, масштабируемость
- Быстрая интеграция с Python
Проект распространяется под лицензией MIT. См. файл LICENSE
.