Ended 2 years ago
818 participants
1780 submissions

Hidden
2 этап. Задача 2. Распознавание текста

Распознавание текста на фото

Задача

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

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

В проверяющую систему необходимо отправить код алгоритма, запакованный в 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.

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

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

Ограничения:

  • 5Gb на архив с решением
  • 15 минут на работу решения

Структура данных

В контейнер помещается папка 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 - наилучшее.

Baseline

Вам доступно базовое решение от разработчиков задачи: OCR_baseline.ipynb

Разбор безлайна от разработчиков 

Для распознавания рукописного текста в бейзлайне используется архитектура CRNN и CTC-loss. Для запуска бейзлайна скачайте данные для обучения и положите их в папку data. Должна получиться такая структура:

  • OCR_baseline.ipynb
  • train
    • images
    • labels.json

Cookies help us deliver our services. By using our services, you agree to our use of cookies.