NaRuTagAI — проект с открытым исходных кодом, позволяющий автоматизировать присваивание и генерацию иерархических тегов для видео с помощьюю мультимодальной системы искусственного интеллекта. Мы используем визуальную, звуковую и текстовую модальности для рекомендации наиболее подходящих тегов. Инструмент окажется полезным как для серьезных штатных задач по обработке крупных наборов данных, так и для повседневных пользователських задач.
✨NaRuTagAI✨ С каждым днём на платформу RuTube📢 загружается множество видео, большая часть из которых является пользовательским контентом (UGC). Это создает сложности в поиске и классификации, затрудняя пользователям нахождение интересующего контента.👨💻 Наш проект ✨NaRuTagAI✨ направлен на разработку системы автоматического тегирования и классификации видео, которая позволила организовать контент по категориям и подкатегориям. Система способна улучшить рекомендации и повысить удовлетворенность пользователей.👍
Решение: модель text2text T5🤖, реализованная на PyTorch, MySQL и API, разработанный с помощью FastAPI. Для обучения модели были использованы вычислительные ресурсы с серверов Selectel, что обеспечило высокую производительность нашей модели.🦾
Проект включает в себя реляционную базу данных, внешний API, он открыт из веб-пространства, а также вы можете запускать его на локальной машине или в облаке.
Каждый репозиторий на GitHub — это не просто код, это отражение чьего-то видения, идеи и стремления к совершенству. Проект на GitHub — это живой организм, который эволюционирует, учится и растет.
.
├── 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
- Python 3.9+
pm2
(для управления процессами сервера на Linux/MacOS)
-
Клонируйте репозиторий на сервер:
git clone https://github.com/Prischli-Drink-Coffee/NaRuTagAI.git cd repo
-
Запустите скрипт для установки виртуальной среды и всех необходимых зависимостей:
bash setup.sh
-
Следуйте инструкциям в консоли для установки пакетов
-
Клонируйте репозиторий на сервер:
git clone https://github.com/Prischli-Drink-Coffee/NaRuTagAI.git cd repo
-
Запустите скрипт для установки виртуальной среды и всех необходимых зависимостей:
setup.bat
-
Следуйте инструкциям в консоли для установки пакетов
- Запустите скрипт через pm2 для Linux/MacOS
pm2 start 'bash pm2.sh'
- Запустите через меню выбора для Linux/MacOS
main.sh # пункт 3 в меню
- Запустите скрипт для запуска сервера на Windows
main.bat # пункт 3 в меню
Для запуска автоматической проверки тестов с использованием pytest
, выполните:
bash test_main.sh
Для запуска автоматической проверки тестов с использованием pytest
, выполните:
test_main.bat
- Чтобы обучить модель необходимо указать желаемые аргументы в файле
config.yaml
.
Для запуска скрипта для обучения просто запустите main.sh или main.bat в корневой директории проекта в зависимости от вашей ОС. Выберите пукнт 2 в меню для запуска скрипта для обучения модели.
bash main.sh # пункт 3 в меню
-
Для того чтобы воспользоваться парсером набора данных рутуб видео, для этого также настройте config.yaml и запустите main.sh или main.bat в корневой директории проекта и выберите пункт 1 в меню.
-
Сервер можно запустить локально или в веб-пространстве, тогда вы получите доступ к пользовательскому интерфейсу, для настройки сервера достаточно указать переменные среды в таком формате:
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.
Пример использования:
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', ...]