Новосибирский турнир по компьютерному зрению для учителей. Задача №2

Финиш 27 декабря 2021


Задача

Распознавание математических выражений (продвинутый уровень)

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

Математическое выражение всегда представлено тремя изображениями. На первом и третьем изображены символы альфа, бета или цифры, на втором изображён знак математического действия. При вычислении значения выражения, следует заменить alpha на 1999, а beta на 2036, цифры на одноимённые числа. В качестве ответа принимается число с плавающей точкой. При проверке учитываются два символа после запятой, используйте round(…, 2).

Выражений с делением на 0 в выборке нет.

Пример математического выражения:

digits-values

Решение

Для Вас подготовлены несколько файлов “.py”, и набор изображений с математическими символами и аннотациями к нему. Среди подготовленных файлов есть:

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

main.py - файл проверяющий точность работы вашего алгоритма. Не редактируйте его. main.py использует, написанные вами функции из eval.py и сверяет истинные ответы с предсказанием вашего алгоритма.

data_train.csv - файл устанавливающий соотношение между изображениями и названиями символов на них. Используйте его при обучении модели машинного обучения. В каждой строке файла содержится путь к файлу с изображением и название знака, изображённого на нём: alpha, beta, числа от 0 до 9 включительно, а также знаки сложения, вычитания, деления и умножения.

data_validate.csv - файл использующийся для проверки точности вашего алгоритма. Не редактируйте его.

В качестве решения, необходимо сдать отредактированный файл eval.py.

Порядок решения (прочитайте до конца, и только потом приступайте к выполнению каждого пункта)

0.1. Посмотрите видео-курс в нем содержатся ценные знания, помогающие при решении задачи.

0.2. Посмотрите короткое видео по работе с платформой Sim

0.3. Скачайте подготовленные для вас файлы

1. Ознакомление с данными

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

2. Алгоритм классификации

Решите, по каким особенностям изображения можно определить знак на нём. Используйте тот алгоритм, который вы способны реализовать. В файле eval.py есть функции которые Вам необходимо дописать и исправить!

3. Проверьте точность своего алгоритма

Запустите файл main.py, он выведет точность работы вашего алгоритма. Если вы получите ошибку, исправьте свою программу. Отправляйте решение, только если файл main отрабатывает без ошибок!

4. Отправьте решение на проверку

Нажмите кнопку “Прислать решение” и выберите файл eval.py.

Если файл eval.py ссылается ещё на какие-то файлы, запакуйте их, вместе с файлом eval.py, в архив “*.zip”. В архиве, должны быть файлы решения, а не одноимённая архиву папка.

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


Технические ограничения:

Размер решения ограничен: не более 30 МБ. Если ваш алгоритм успешно проверен платформой, то следующее решение можно прислать только через 10 минут. Если ваш алгоритм в ходе проверки выдал сообщение об ошибке, то следующее решения можно прислать сразу.

Пакеты, ориентированные на работу с изображениями и данными, использующиеся на платформе проверки: Python 3.8.10 dlib 19.22.1 imutils 0.5.4 keras 2.7.0 Keras-Preprocessing 1.1.2 matplotlib 3.4.3 numpy 1.21.3 opencv-python 4.5.4.58 pandas 1.3.4 scikit-image 0.18.3 scikit-learn 1.0.1 scipy 1.7.2 tensorflow-cpu 2.7.0

Используйте совместимые пакеты.




Очки Участник Дата Команда Город Учебное заведение
0.982 Степан Бурмистров 13.12.2021 16:49 RobotX
0.848 Алексей Паньшин 23.12.2021 17:51 _