Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DetectionService

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

Проект состоит из нескольких сервисов и полностью запускается через Docker Compose одной командой.


Общая архитектура

RTSP (эмулятор камеры)
        ↓
     MediaMTX
        ↓
     ML сервис (YOLO + трекинг)
        ↓
     Backend API (FastAPI)
        ↓
     PostgreSQL

Snapshot’ы событий сохраняются в MinIO (S3)
Frontend получает:
- события из Backend API
- HLS-поток напрямую из MediaMTX
- изображения snapshot’ов напрямую из MinIO

Требования

  • Docker Engine / Docker Desktop
  • Docker Compose
  • Git

Устанавливать Python, Node.js или другие зависимости не требуется.


Быстрый запуск

1. Клонировать репозиторий

git clone https://github.com/3garfield5/DetectionService.git
cd DetectionService

2. Создать файл .env

Скопируйте пример и при необходимости измените значения:

cp .env.example .env

3. Запуск всех сервисов

docker compose up --build

Для запуска в фоне:

docker compose up -d --build

Доступные сервисы

После успешного запуска:

Сервис Адрес
Frontend http://localhost:5173
Backend API (Swagger) http://localhost:8000/docs
MinIO (Web UI) http://localhost:9001
HLS-поток http://localhost:8888/live_stream/index.m3u8

Остановка сервисов

docker compose down

Полный сброс данных (PostgreSQL и MinIO):

docker compose down -v

Примечания

  • Snapshot’ы хранятся в MinIO
  • В базе данных сохраняется только ключ объекта, а не путь к файлу
  • Вся конфигурация осуществляется через .env
  • Проект предназначен для локальной разработки и демонстрации
  • Если у вас появляется ошибка
Attaching to backend-1, emulator-1, frontend-1, minio-1, minio-init-1, ml-1, postgres-1, mediamtx
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:1936 -> 0.0.0.0:0: listen tcp 0.0.0.0:1936: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

То нужно открыть командную строку от имени администратора и ввести следующие команды:

net stop winnat
net start winnat

Затем запустить контейнер

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages