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