https://github.com/ai-forever/rsl_aij2023
AI Journey 2023: Russian Sign Language Recognition (Equal AI Track)
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (2.7%) to scientific vocabulary
Keywords
Repository
AI Journey 2023: Russian Sign Language Recognition (Equal AI Track)
Basic Info
Statistics
- Stars: 5
- Watchers: 6
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
Equal AI
Распознавание русского жестового языка 🧏
Несмотря на стремительное развитие технологий, способных облегчить жизнь людям, некоторые группы общества с нарушением слухового и речевого аппарата остаются за пределами подобных возможностей. Одной из таких групп являются люди, которые взаимодействуют между собой с помощью языка жестов. Существует множество ситуаций, когда носители жестового языка сталкиваются с трудностями при взаимодействии с врачами и сотрудниками различных социальных организаций, в которых далеко не всегда предусмотрен сурдопереводчик. Помимо сложностей в коммуникации в бытовой жизни, они также сталкиваются с проблемами в обучении, поиске работы и профессиональной деятельности. Внедрение системы распознавания жестового языка в сервисы видеоконференций, аэропорты, больницы и другие организации и сервисы способно значительно упростить жизнь носителям РЖЯ. Также, это может уменьшить социальный разрыв между людьми, которые знают жестовой язык и теми, кто им не владеет, что, в свою очередь, поможет избежать социальной изоляции слабослышащих.
Лучшими методами для распознавания жестового языка являются нейронные сети на основе сверточных подходов (CNN) и трансформеров (Vision Transformers), такие как I3D-ResNet, VideoSWIN и VIT для задач видео, которые принимают на вход последовательность кадров и сопоставляют им класс.
Сложность данной задачи заключается в том, что жесты из разных классов могут быть визуально похожими, и отличаться только движением рук, кистей, положением позы и мимикой лица. Отметим, что один и тот же жест, показанный разными руками, означает одно и то же. Кроме того, некоторые жесты могут означать разные слова. В России насчитывается более сотни диалектов жестовых языков, в зависимости от региона использования.
Постановка задачи 📚
В рамках конкурса предлагается разработать модель (алгоритм), которая будет классифицировать жесты русского жестового языка на видео. На вход модели будут подаваться кадры, на выходе модель должна выдавать определенный класс жеста из набора 1000 жестов русского жестового языка, либо специальную метку 0, если жеста нет.
В качестве данных для обучения моделей будет предоставлен датасет Slovo, состоящий из 20000 видео, разделенный на 1000 классов (по 20 видео на класс), представляющих из себя часто используемые слова и фразы русского жестового языка, включая отдельные буквы и цифры. Каждое видео было размечено временным интервалом — начало и конец жеста в видео. 194 носителя РЖЯ участвовали в записи видео. Данные представлены в виде zip архива, каталог состоит из 20000 файлов видео, а также файла разметки в формате таблицы. Таблица разметки состоит из колонок:
| | attachmentid | userid | width | height | length | text | begin | end | |---:|:--------------|:--------|------:|-------:|-------:|-------:|:------|:----| | 0 | de81cc1c-... | 1b... | 1440 | 1920 | 14 | привет | 30 | 45 | | 1 | 3c0cec5a-... | 64... | 1440 | 1920 | 32 | утро | 43 | 66 | | 2 | d17ca986-... | cf... | 1920 | 1080 | 44 | улица | 12 | 31 |
attachment_id — имя видео файла без расширения
text — текст жеста
user_id — идентификатор пользователя, записавшего жест
height — количество пикселей по высоте
width — количество пикселей по ширине
length — количество кадров в видео
begin — номер кадра начала жеста
end — номер кадра конца жеста
Можно использовать стандартные аугментации изображений для улучшения метрики. Однако, использование любых других открытых или закрытых наборов данных, а также синтетических датасетов для решения задачи запрещено. Приватный обмен идеями (private sharing), решениями и кодом за пределами одной Команды Участников — запрещен. В случае обнаружения этого факта, все причастные решения аннулируются.
Решение должно быть реализовано в виде программы (solution.py), которая принимает на вход каталог с видео (dataset) и на выходе выдает CSV-файл (predicts.csv) с колонками: имя видео файла (attachment_id) без учета расширения файла и предсказанный класс жеста (predicted_class). Публичные и приватные тестовые данные будут также содержать видео без жестов, предложенная модель должна верно их обрабатывать.
Формат решения 🚀
Проверка решения происходит на публичном датасете, где задача участников максимизировать метрику в условиях ограничения на модель и параметры. Решения запускаются в изолированном окружении при помощи Docker. Время и ресурсы во время тестирования ограничены. Решение должно быть воспроизводимо и не содержать ошибок исполнения кода.
Участникам из призовых мест потребуется дополнительно упаковать в архив весь код, содержащий процесс обучения модели, инференса (валидации) модели и лучший чекпоинт весов модели, а также описанный процесс запуска для каждой стадии в файле readme.md для проверки воспроизводимости решения. Также необходимо указать список используемых библиотек и версию python в файле requirements.txt. Эти артефакты передаются организаторам соревнования от всех участников, занявших призовые места.
Описание метрики задачи Equal AI 📈
В качестве метрики качества для этого соревнования используется средняя метрика попадания или средняя точность — Mean Accuracy (mAcc). mAcc равна средней точности оценок для каждого класса по всей выборке:
$$ mAcc = \dfrac{1}{N}\sum{i=0}^{N-1}\dfrac{TPi}{TNi + FNi} $$
В этой формуле: mAcc — средняя точность, TP (True Positive) — правильно предсказанные положительные ответы, FN (False Negaive) — ложноотрицательные ответы, N — число классов.
Высокое значение оценки показывает, что модель хорошо справляется с задачей классификации в среднем для всех классов. Значение метрики будет округлено до 5 знака после запятой. В случае одинакового значения метрики позиция в рейтинге будет выше у того решения, которое было раньше загружено на платформу.
Псевдокод расчета метрики: ```python import numpy as np from sklearn.metrics import confusion_matrix
def meanclassaccuracy(predicts: list[int], labels: list[int]) -> np.ndarray: """Calculate mean class accuracy.
Args:
predicts (list[int]): Prediction labels for each class.
labels (list[int]): Ground truth labels.
Returns:
np.ndarray: Mean class accuracy.
"""
conf_matrix = confusion_matrix(y_pred=predicts, y_true=labels)
cls_cnt = conf_matrix.sum(axis=1) # all labels
cls_hit = np.diag(conf_matrix) # true positives
metrics = [hit / cnt if cnt else 0.0 for cnt, hit in zip(cls_cnt, cls_hit)]
mean_class_acc = np.mean(metrics)
return mean_class_acc
```
Ограничения ⚠️
В течение одного дня Участник или Команда Участников может загрузить для оценки не более 3 (трех) решений. Учитываются только валидные попытки, получившие численную оценку. Контейнер с решением запускается в следующих условиях: - 32 ГБ оперативной памяти - 2 vCPU - 1 GPU Tesla V100 - время на выполнение решения: 90 минут - решение не имеет доступа к ресурсам интернета - максимальный размер упакованного и распакованного архива с решением: 10 ГБ - максимальный размер используемого Docker-образа: 30 ГБ
Ограничения моделей 💻
В рамках конкурса будут учитываться только те модели, которые не выходят за рамки данных ограничений:
- Модель должна быть одностадийной (содержит одну нейронную сеть)
- Модель должна предсказывать класс 0, если на видео нет жеста
- Модель принимает на вход только кадры из видео, без дополнительной мета-информации
- Разрешение входных кадров не должно быть меньше 224✕224 и не более 448✕448 пикселей
- Веса модели имеют формат FP32 или FP16
- Файл весов модели не превышает 100 МБ
- Модель принимает на вход не менее 1 и не более 32-х кадров за раз
- Время работы модели не должно превышать половины от количества входных кадров $ms<\dfrac{33.333⋅N}{2}$ , где N — количество входных кадров, ms — время работы в миллисекундах на CPU
Ограничения на данные 📚
Для обучения мы предоставляем датасет Slovo без разделения на train, val и test выборки, но вы можете их сформировать, если это потребуется. Можно использовать любые аугментации данных, но требуется соблюдать некоторые ограничения: - Обучение нейронной сети происходит только на исходном датасете Slovo (20000 видео). - Использовать индексы классов можно только из предоставленного файла разметки. - Использовать любые другие открытые датасеты запрещено.
Содержимое контейнера 🛢
Для запуска решений можно использовать существующие окружения: Базовые образы для задач обучения.
Подойдет любой другой образ, доступный для загрузки из cloud.ru. При необходимости, Вы можете подготовить свой образ, добавить в него необходимое ПО и библиотеки.
Призовой фонд 🏆
- 🥇 1 место - 1 000 000 рублей;
- 🥈 2 место - 700 000 рублей;
- 🥉 3 место - 300 000 рублей.
*До вычета НДФЛ
Правила соревнования 📃
Owner
- Name: AI Forever
- Login: ai-forever
- Kind: organization
- Location: Armenia
- Repositories: 60
- Profile: https://github.com/ai-forever
Creating ML for the future. AI projects you already know. We are non-profit organization with members from all over the world.
GitHub Events
Total
Last Year
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0