Распознавание текста на фото
Вам предстоит разработать алгоритм, который сможет распознать текст на фото. Предсказание модели - текстовая строка, соответствующая тексту на картинке.
В проверяющую систему необходимо отправить код алгоритма, запакованный в ZIP-архив. Решения запускаются в изолированном окружении при помощи Docker. Время и ресурсы во время тестирования ограничены.
В корне архива обязательно должен быть файл metadata.json
со структурой:
{
"image": "<docker image>",
"entry_point": "<entry point or sh script>"
}
Например:
{
"image": "skalinin1/baseline-htr:latest",
"entry_point": "python run.py"
}
Здесь image – поле с названием docker-образа, в котором будет запускаться решение, entry_point – команда, при помощи которой запускается скрипт инференса. Решение запускается в Docker контейнере. Вы можете воспользоваться готовым образом "skalinin1/baseline-htr:latest". Подготовленные файлы: Dockerfile и requirements.txt. При желании вы можете использовать свой образ, выложив его на https://hub.docker.com.
Доступные ресурсы
В контейнер помещается папка images с изображениями, на которых необходимо сделать предсказания. Модель должна сформировать файл предсказания, например, prediction.json
.
Пути к данным для изображений (полный путь к папке images) и файл, в котором необходимо сохранить результат (путь куда нужно сохранить файл формата .json
) передаются как первые два аргумента при запуске вашего решения. Их можно считать с помощью sys.argv[1:].
Вам доступен архив sample_submission.zip
, в котором содержатся примеры загружаемого решения. В архиве вы найдете следующие файлы:
metadata.json
- обязательный файл для каждого решения; в нём должны быть указаны пути к образу и скрипту выполнения моделиrun.py
- основной скрипт для инференса моделиmodel-last.ckpt
- веса модели, которые подгружаются во время исполнения скрипта run.py
Для корректной проверки ваш сабмит должен иметь аналогичную структуру.
UPDATE 15.12 - основная метрика для оценки была изменена с Accuracy на CER.
В качестве основной метрики для оценки решений участников используется метрика CER (character error rate). Считается она следующим образом:
$$CER = \frac{\sum\limits_{i=1}^n dist_c (pred_i, true_i)}{\sum\limits_{i=1}^n len_c (true_i)}$$
Здесь $dist_c$ - это расстояние Левенштейна, посчитанное для токенов-символов (включая пробелы), $len_c$ - длина строки в символах.
Метрика CER изменяется от 0 до 1, где 0 – наилучшее значение, 1 - наихудшее.
В качестве дополнительной метрики для оценки решений участников используется метрика Accuracy - отношение количества полностью совпавших транскрибаций строк к количеству всех строк в выборке. Она будет учитываться при равенстве значений CER, а так же полезна как дополнительная информация о качестве работы модели. Считается она следующим образом:
$$Accuracy = \frac{\sum_{n=1}^{n} [pred_i = true_i]}{n}$$
Здесь n
- размер тестовой выборки, predi
– это строка из символов, которую распознала модель на i-ом изображении в выборке, а truei
- это правильный перевод i-ого изображения, произведенный аннотатором, [•]
- скобка Айверсона:
$$[x = y] = \begin{cases} 1, & \mbox{} x = y\\ 0, & \mbox{}x \neq y \end{cases}$$
Метрика String Accuracy изменяется от 0 до 1, где 0 – наихудшее значение, 1 - наилучшее.
Вам доступно базовое решение от разработчиков задачи: OCR_baseline.ipynb
Разбор безлайна от разработчиков
Для распознавания рукописного текста в бейзлайне используется архитектура CRNN и CTC-loss. Для запуска бейзлайна скачайте данные для обучения и положите их в папку data. Должна получиться такая структура:
Cookies help us deliver our services. By using our services, you agree to our use of cookies.