Skip to content

beshtim/video_service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Что это такое?

Это сервис разработаный в рамках хакатона. Предназначен для видео-аналитики. Идея была простая мы хотели не углубляться в модель(Yolo и так хорошо справлялась), а сделать полноценный легко масштабируемый сервис. Что из этого вышло см ниже :)

Как использовать

Docker Compose

Для выполнения следующих шагов вам понадобится установленный Docker. Для создания и запуска образа используйте следующую команду:

> docker-compose up --build

Конфигурация создаст кластер с контейнерами:

  • consumer - Потребитель: модель слушающий сервер kafka и обрабатывающий события
  • yolo - Модуль компьютерного зрения с FastAPI внутри
  • kafka - сервер брокера-кафки
  • kafdrop - сервер с UI для кафки
  • zookeeper - модуль управляющий кластером кафки
  • minio - Сервер медиа-зранилища

Контейнер yolo(основной контейнер для демонстрации) создаст RESTful API, который отправляет данные в Kafka и Minio. После поднятия будет доступен по адресу http://localhost:8000.

Контейнер Consumer — это скрипт, предназначенный для ожидания и получения сообщений от Kafka.

Контейнер kafdrop предоставит доступ к веб-интерфейсу для просмотра тем Kafka и просмотра групп потребителей, доступ к которым можно получить по адресу http://localhost:19000.

Доступ к веб-интерфейсу Minio S3 для проверки данных можно получить по адресу http://localhost:9001.

user: minioadmin | psw: minioadmin

FastAPI Swagger

Swagger - интерактивная документация по API, будет доступна по адресу http://localhost:8000/docs.

Структура проекта

Ниже представлена созданная структура проекта:

.
├── README.md
├── docker-compose.yml
├── weights/ <# weight folder>
├── data/ <# sample images / video>
└── services
    ├── consumer
    │   └── <kafka consumer>
    │
    └── yoloAPI
        ├── app
        │   ├── core
        │   │   ├── gateways/ <# init connections>
        │   │   ├── yolov5/ <# model>
        │   │   └── models/ <# schemas>
        │   │
        │   ├── dependencies/ <# checks existence of instances>
        │   │
        │   ├── routers/ <# API rotes>
        │   │   ├── detect.py <# detect | api method>
        │   │   ├── images.py <# images inference>
        │   │   ├── minio.py <# check minio connection | api method>
        │   │   ├── pipeline.py <# video inference | api method>
        │   │   ├── publisher.py <# check kafka connection | api method >
        │   │   └── video.py <video inference>
        │   │
        │   ├── templates/ 
        │   │   └── <*.html>
        │   │
        │   ├── utils/ 
        │   │   └── helpers.py <# usefull functions>
        │   │
        │   ├── enum.py <# EnvironmentVariables>
        │   └── main.py
        │
        ├── Dockerfile
        └── requirements.txt

Переменные среды

Ниже перечислены переменные среды, необходимые для запуска приложения. Их нужно включить в docker-compose(уже настроены в docker-compose).

  • Consumer:
KAFKA_TOPIC_NAME=
KAFKA_SERVER=
KAFKA_PORT=
TELETOKEN=
  • YOLO
KAFKA_SERVER=
KAFKA_TOPIC_NAME=
KAFKA_PORT=
MINIO_HOST=
MINIO_PORT=
MINIO_USER=
MINIO_PASSWORD=
  • Telebot
TELETOKEN=

Ресурсы

Вы можете прочитать больше в документациях к инструментам:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages