Skip to content

Материалы соревнования AI Journey 2020, посвященного распознаванию рукописей Петра Великого

License

Notifications You must be signed in to change notification settings

denndimitrov/digital_peter_aij2020

This branch is 121 commits behind ai-forever/digital_peter_aij2020:master.

Repository files navigation

AI Journey 2020 Digital Peter

The English version of this document is here

Соревнование по распознаванию древних текстов, написанных рукой Петра Великого.

Описание задачи и данных

Участникам предлагается построчно распознавать рукописный текст Петра I.

Развернутое описание задачи (с погружением в проблематику) можно прочитать в desc/detailed_description_of_the_task_ru.pdf

Train выборку можно скачать тут.

Внутри находятся 2 папки: images и words. В папке images лежат jpg-файлы с вырезанными строками из документов Петра Великого, в папке words - txt-файлы (транскрибированные версии jpg-файлов). Маппинг осуществляется по названию.

Например,

оригинал (1_1_10.jpg):

его перевод (1_1_10.txt):

                                  зело многа в гафѣ i непърестано выхо

Выборка была подготовлена совместно с рабочей группой, состоящей из научных сотрудников СПбИИ РАН - специалистов по истории Петровской эпохи, а также палеографии и археографии. Большую помощь оказали Росархив и РГАДА, которые предоставили цифровые копии автографов.

Бейзлайн

Ноутбук с бейзлайном задачи: baseline.ipynb

Для распознавания текста (в бейзлайне) используется следующая архитектура:

Описание метрик

В лидерборде будут учитываться следующие метрики качества распознавания (на тестовой выборке)

  • CER - Character Error Rate

Здесь - это расстояние Левенштейна, посчитанное для токенов-символов (включая пробелы), - длина строки в символах.

  • WER - Word Error Rate

Здесь - это расстояние Левенштейна, посчитанное для токенов-слов, - длина строки в словах.

  • Sentence Accuracy - отношение количества полностью совпавших строк к количеству строк в выборке.

В этой формуле используется скобка Айверсона:

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

Про метрики дополнительно можно прочитать тут.

Методику подсчета метрик можно изучить подробнее в скрипте eval/evaluate.py. Он принимает на вход два параметра - eval/pred_dir и eval/true_dir. В папке eval/true_dir должны находиться txt-файлы с истинным переводом строк (структура как в папке words), в папке eval/pred_dir - txt-файлы, содержащие распознанные (моделью) строки. Маппинг опять же осуществляется по названию, поэтому списки названий файлов в папках eval/true_dir и eval/pred_dir должны полностью совпадать!

Качество можно посчитать следующей командой (вызванной из папки eval):

python evaluate.py pred_dir true_dir

Результат отображается в следующем виде:

Ground truth -> Recognized
[ERR:3] "Это соревнование посвящено" -> "Эт срвнование посвящено"
[ERR:3] "распознаванию строк из рукописей" -> "распознаваниюстр ок из рукписей"
[ERR:2] "Петра I" -> "Птра 1"
[OK] "Удачи!" -> "Удачи!"
Character error rate: 11.267606%
Word error rate: 70.000000%
String accuracy: 25.000000%

Главная метрика, по которой сортируется лидерборд, - CER, %, (меньше - лучше). В случае совпадения CER у двух или более участников, сортировка для них будет вестись по WER, %, (меньше - лучше). Если и CER, и WER совпадают, - смотрим на Sentence Accuracy, %, (больше - лучше). Следующий показатель - время работы модели на тестовой выборке, Time, sec., (меньше - лучше). Если все метрики сопадают, тогда первым будет решение, загруженное раньше по времени (если и тут все совпадает, то сортируем по алфавиту по названиям команд).

Последняя версия модели (см. baseline.ipynb) имеет следующие значения метрик качества, посчитанных на public-части тестовой выборки:

CER = 10.526%
WER = 44.432%
String Accuracy = 21.662%
Time = 60 sec

Формат решения

В качестве решений принимается алгоритм (код + необходимые файлы) и описание точки запуска в виде одного архива. В корне архива с решением должен лежать файл metadata.json со структурой:

{
   "image": "<docker image>",
   "entrypoint": "<entry point or sh script>"
}

Например:

{
   "image": "odsai/python-gpu",
   "entrypoint": "python predict.py"
}

Данные следует читать из папки /data, предсказания писать в /output. Для каждой картинки из папки /data вида <image_name>.jpg нужно записать в /output <image_name>.txt с распознанным текстом.

Решение запускается в Docker контейнере. Вы можете воспользоваться готовым образом https://hub.docker.com/r/odsai/python-gpu. В нем предустановлены CUDA 10.1, CUDNN 7.6 и актуальные версии Python библиотек. При желании вы можете использовать свой образ, выложив его на https://hub.docker.com.

Доступные ресурсы:

  • 8 ядер CPU
  • 94Gb RAM
  • Видеокарта NVidia Tesla V100

Ограниченя:

  • 5Gb памяти для рабочей директории
  • 5Gb на архив с решением
  • 10 минут на работу решения

Пример можно посмотреть в submit_example

About

Материалы соревнования AI Journey 2020, посвященного распознаванию рукописей Петра Великого

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 94.0%
  • Python 6.0%