Skip to content

lnikioffic/VisionDataForge

Repository files navigation

Платформа аннотирования видео Vision Data Forge

Python FastAPI Асинхронность Cookies JWT PostgreSQL Alembic SQLAlchemy Docker Uvicorn

Описание

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

Доступный функционал

  • Регистрация пользователей с помощью библиотеки fastapi-users.
  • Аутентификация реализована с помощью куков и JWT-токена.
  • Создание датасетов разрешено толька авторизованным пользователям
  • Возможность получения подробной информации о себе.
  • Возможность развернуть проект в Docker-контейнерах.

Технологии

  • Python 3.12
  • FastAPI
  • Асинхронность
  • JWT
  • Alembic
  • SQLAlchemy
  • Docker
  • PostgreSQL
  • Asyncpg
  • Uvicorn

Локальный запуск проекта

  • Клонировать репозиторий:
git clone https://github.com/lnikioffic/VisionDataForge.git
  • Установка библиотек:
python -m pip install -r requirements/requirements.txt 

на Linux torch CUDA установится сам, если есть CUDA драйвера.

  • Файл окружения .env. Создать файл .env по образцу env-example:
touch .env
  • Установка CUDA для Windows:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  • Генерация ключей для JWT:
mkdir certs && cd certs && openssl genrsa -out jwt-private.pem 2048 && \
openssl rsa -in jwt-private.pem -outform PEM -pubout -out jwt-public.pem
  • Создайте базу данных под названием Forge

  • Применение миграции:

alembic upgrade head
  • Запуск проекта:
uvicorn src.main:app --reload

Запуск в контейнерах Docker

  • Находясь в главной директории проекта:

  • Создать файл .env по образцу .env-example-docker:

touch .env 
  • Запустить проект:
docker-compose up -d --build  

Интерфейс платформы и процесс аннотирования

Платформа Vision Data Forge предоставляет удобный интерфейс для создания датасетов.

Навигационная схема

1. Загрузка видео:

Интерфейс

Загрузка видео

  • Пользователь загружает видеофайл.
  • Система проверяет соответствие формата видео и, при успешной проверке, загружает видео в рабочее пространство.
  • Система определяет скорость воспроизведения видео.

2. Начало аннотирования:

Начало аннотирования

  • Пользователь нажимает кнопку "Начать аннотирование".
  • Система отображает форму для добавления класса аннотирования.

3. Добавление класса аннотирования:

Добавление класса аннотирования

  • Пользователь вводит название нового класса.
  • Система валидирует данные и отображает добавленный класс в панели инструментов.

4. Аннотирование кадра:

Аннотирование кадра

Размеченный кадр

  • Пользователь размечает начальный кадр, используя инструменты платформы.
  • После завершения пользователь нажимает кнопку "Завершить аннотирование".
  • Система сохраняет размеченный кадр и отображает его справа от рабочего пространства.

5. Создание датасета:

Создание датасета

  • Пользователь выбирает размеченный кадр из панели.
  • Нажимает кнопку "Создать датасет".

6. Подтверждение и формирование датасета:

Подтверждение и формирование датасета

Датасет в личном кабинете

  • Пользователь подтверждает формирование датасета.
  • Система начинает процесс генерации и отображает прогресс.
  • После завершения датасет добавляется в личный кабинет пользователя.