Ended 4 years ago
557 participants
2862 submissions

Hidden
2 этап. Задача 1. Сегментирование строк

Задача сегментации рукописного текста на фото

Задача

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

Предсказанием для входного изображения является бинарная маска размера исходного изображения, в которой 1 - означает, что данный пиксель относится к тексту, 0 - к фону. Таким образом в датасете всего один класс - text.

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

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

В корне архива обязательно должен быть файл metadata.json со структурой:

{
  "image": "<docker image>",
  "entry_point": "<entry point or sh script>"
}
Например:

{
   "image": "maloyan/ai-nto-task1:0.0.1",
   "entry_point": "python run.py"
}
 

Здесь image – поле с названием docker-образа, в котором будет запускаться решение, entrypoint – команда, при помощи которой запускается скрипт инференса. Решение запускается в Docker контейнере. Вы можете воспользоваться готовым образом "maloyan/ai-nto-task1:0.0.1". Dockerfile и requirements.txt для сборки данного образа. В нем предустановлены CUDA 10.1 и актуальные версии Python библиотек для запуска бейзлайна. При желании вы можете использовать свой образ, выложив его на https://hub.docker.com

Вебинар о том, как собрать докер, чтобы он работал, от призера профиля прошлого года Виталия Гребенника

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

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

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

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

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

В контейнер помещается папка images, в которой находятся изображения, на которых необходимо сделать предсказания. Модель должна сформировать файл предсказания, например prediction.npz.

Пути к данным для  (полный путь к папке images) и файл, в котором необходимо сохранить результат (путь куда нужно сохранить файл формата .npz) передаются как первые два аргумента при запуске вашего решения. Их можно считать с помощью sys.argv[1:].

Пример решения

Посмотрите архив sample_submit.zip, в котором содержатся примеры загружаемого решения. 

В загружаемом архиве должны быть следующие файлы:

  • metadata.json - обязательный файл для каждого решения; в нём должны быть указаны пути к образу и скрипту выполнения модели
  • run.py - основной скрипт для инференса модели
  • model_final.pth - веса модели, которые подгружаются во время исполнения скрипта run.py

Метрика

Для оценки качества будет использоваться метрика F1-score:
$$F1 = 2 \cdot \frac{Recall \cdot Precision}{Recall + Precision}$$
F1-score вычисляется на основе значений Precision (точности) и Recall (полноты), которые, в свою очередь, зависят от набора статистик по прогнозам – true positive (TP, истинно-положительный результат), false positive (FP, ложно-положительный результат) и false negative (FN, ложно-отрицательный результат):
$$Precision= \frac{\text{True Positive}}{\text{True Positive + False Positive}}$$
$$Recall = \frac{\text{True Positive}}{\text{True Positive + False Negative}}$$
Сначала F1-score считается для каждого изображения из тестового набора. Для этого попиксельно сравниваются две маски - верная и предсказанная. Затем F1-score усредняются по всем изображениям. Так что, в каком то смысле мы считаем mean F1-score.

Baseline

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

Вебинар с разбором базового решения

Для сегментации рукописного текста в бейзлайне используется фреймворк Detectron2 и архитектура Mask-RCNN. Для запуска бейзлайна скачайте данные для обучения и положите их в папку data. Должна получиться такая структура:

  • baseline.ipynb
  • data
    • train
      • images
      • annotations.json
      • binary.npz

Our website uses cookies, including web analytics services. By using the website, you consent to the processing of personal data using cookies. You can find out more about the processing of personal data in the Privacy policy