Skip to content

NaRuTagAI is an open-source that automates the assignment and generation of hierarchical tags for videos using a multimodal AI system. We use visual, audio, and text modalities to recommend the most appropriate tags. The tool will be useful for both serious regular tasks of processing large data sets and for user tasks.

License

Notifications You must be signed in to change notification settings

Prischli-Drink-Coffee/NaRuTagAI

Repository files navigation

logo Typing SVG

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

✨NaRuTagAI✨ С каждым днём на платформу RuTube📢 загружается множество видео, большая часть из которых является пользовательским контентом (UGC). Это создает сложности в поиске и классификации, затрудняя пользователям нахождение интересующего контента.👨‍💻 Наш проект ✨NaRuTagAI✨ направлен на разработку системы автоматического тегирования и классификации видео, которая позволила организовать контент по категориям и подкатегориям. Система способна улучшить рекомендации и повысить удовлетворенность пользователей.👍

Решение: модель text2text T5🤖, реализованная на PyTorch, MySQL и API, разработанный с помощью FastAPI. Для обучения модели были использованы вычислительные ресурсы с серверов Selectel, что обеспечило высокую производительность нашей модели.🦾

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


Каждый репозиторий на GitHub — это не просто код, это отражение чьего-то видения, идеи и стремления к совершенству. Проект на GitHub — это живой организм, который эволюционирует, учится и растет.


Внешний вид пользоваетльского интерфейса:

image

Структура репозитория

    .
    ├── logs # - папка храенения логов
    |   ├── setup #
    |   |   ├── *.log #
    |   └── app.log #
    ├── setup - кастомный установщик среды
    |   ├── check_local_modules.py - проверка локальных модулей
    |   ├── debug_info.py - вывод информации
    |   ├── setup_common.py
    |   ├── setup_windows.py - установочное меню
    |   └── validate_requirements.py - валидация модулей
    ├── src
    |   ├── baseline
    |   ├── database - база данных
    |   |   ├── models.py - модели
    |   |   └── my_connector.py - класс для подключения к базе данных
    |   ├── EDA - исследование данных
    |   ├── images - статические файлы
    |   ├── metrics # - метрики
    |   ├── modelling - модульные скрипты
    |   ├── pipeline - пайплайны
    |   |   ├── data_downloader.py - парсер набора данных
    |   |   ├── server.py - uvicorn сервер
    |   |   ├── test.py - тесты CRUD операций
    |   |   └── train.py - тренировка модели
    |   ├── repository - репозитории
    |   |   ├── image_repository.py
    |   |   └── ...
    |   ├── scripts - скрипты
    |   ├── service - сервисы
    |   |   ├── image_services.py
    |   |   └── ...
    |   ├── stuff - дополнительные файлы
    |   ├── utils
    |   |   ├── custom_logging.py - кастомный лог
    |   |   ├── exam_services.py - проверка на дубликаты
    |   |   ├── hashing.py - хеширование паролей
    |   |   ├── return_url_object.py - скрипт для формирования ссылок на изображения
    |   |   ├── write_file_into_server.py - запись файлов на сервер
    |   |   └── ...
    ├── venv # - виртуальная среда
    ├── .env # - переменные среды
    ├── .gitignore
    ├── category.yaml - категории для классификации
    ├── clear_setup_log - очистка логов
    ├── config.yaml - скрипт для работы с переменными средами
    ├── create_sql.py - скрипт для авто создания и заполнения базы данных
    ├── env.py - скрипт для работы с переменными средами
    ├── logging.yaml - конфигурационный файл для лога
    ├── main.bat - запуск сервера на windows
    ├── main.ipynb - доп файл
    ├── main.sh - запуск сервера на linux
    ├── NaRuTagAI.sql - sql скрипт для создания базы данных
    ├── requirements.txt - список зависимостей
    ├── requirements_windows_tensorflow.txt - дополнительныйсписок зависимостей
    ├── server.sh - скрипт для запуска сервера на linux через pm2
    ├── setup.bat - установка среды на windows
    ├── setup.log # - файл лога
    └── setup.sh - установка среды на linux

Реляционная база данных:

image

Требования

  • Python 3.9+
  • pm2 (для управления процессами сервера на Linux/MacOS)

Установка и настройка

1. Установка виртуальной среды и зависимостей

Linux/MacOS

  • Клонируйте репозиторий на сервер:

    git clone https://github.com/Prischli-Drink-Coffee/NaRuTagAI.git
    cd repo
  • Запустите скрипт для установки виртуальной среды и всех необходимых зависимостей:

    bash setup.sh
  • Следуйте инструкциям в консоли для установки пакетов

Windows

  • Клонируйте репозиторий на сервер:

    git clone https://github.com/Prischli-Drink-Coffee/NaRuTagAI.git
    cd repo
  • Запустите скрипт для установки виртуальной среды и всех необходимых зависимостей:

    setup.bat
  • Следуйте инструкциям в консоли для установки пакетов

2. Запуск сервера

  • Запустите скрипт через pm2 для Linux/MacOS
    pm2 start 'bash pm2.sh'
  • Запустите через меню выбора для Linux/MacOS
    main.sh # пункт 3 в меню
  • Запустите скрипт для запуска сервера на Windows
    main.bat # пункт 3 в меню

3. Запуск тестов CRUD операций базы данных

Для запуска автоматической проверки тестов с использованием pytest, выполните:

bash test_main.sh

Для запуска автоматической проверки тестов с использованием pytest, выполните:

 test_main.bat

Как запустить основные скрипты?

  1. Чтобы обучить модель необходимо указать желаемые аргументы в файле config.yaml.

Для запуска скрипта для обучения просто запустите main.sh или main.bat в корневой директории проекта в зависимости от вашей ОС. Выберите пукнт 2 в меню для запуска скрипта для обучения модели.

bash main.sh # пункт 3 в меню
  1. Для того чтобы воспользоваться парсером набора данных рутуб видео, для этого также настройте config.yaml и запустите main.sh или main.bat в корневой директории проекта и выберите пункт 1 в меню.

  2. Сервер можно запустить локально или в веб-пространстве, тогда вы получите доступ к пользовательскому интерфейсу, для настройки сервера достаточно указать переменные среды в таком формате:

DATA_PATH=./data;WEIGHTS_PATH=./src/weights;METRICS_PATH=./src/metrics;HOST=HOST;SERVER_PORT=PORT;DB_HOST=HOST DB=DATABASE;DB_PORT=PORT;DB_USER=USER;DB_PASSWORD=PASSWORD;SECRET_KEY=SECRET_KEY

Argparse

Для разбора аргументов командной строки используется библиотека Argparse.

Пример использования:

python3 source ./venv/bin/activate
python3 ./src/script/predict.py --title "Пример заголовка" --description "Пример описания"
  --use_lemmatization
  --max_length_token 512
  --max_length_generation 10
  --num_beams 5
  --num_return_sequences 5

Выходные данные После выполнения скрипта в командной строке будет выведен список сгенерированных тегов: Generated tags: ['тег1', 'тег2', 'тег3', ...]

About

NaRuTagAI is an open-source that automates the assignment and generation of hierarchical tags for videos using a multimodal AI system. We use visual, audio, and text modalities to recommend the most appropriate tags. The tool will be useful for both serious regular tasks of processing large data sets and for user tasks.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published