Главная/Портфолио/Искусственный интеллект для онлайн-школы рисования
ProkoИскусственный интеллект для онлайн-школы рисования
Как всё началось
Искусственный интеллект в бизнесе решает задачи в самых разных областях: рекомендует товары в интернет-магазинах, диагностирует тяжелые заболевания, управляет финансовыми портфелями, общается с покупателями и обрабатывает их запросы, распознает речь и помогает строить маршруты в объезд пробок.
Но есть сфера, которая считалась присущей исключительно человеку — творчество. И пока во всем мире ведутся дискуссии о том, может ли искусственный интеллект творить, нейросети уже сейчас создают невероятные вещи — например, фотореалистичные рисунки из примитивных набросков.
Azoft тоже не остался в стороне: мы выполнили несколько проектов на стыке искусства, обучения и технологий искусственного интеллекта. В кейсе рассказываем об идее проектов, наших решениях и к какому результату пришли.
В конце 2018 года к нам обратился Стэн Прокопенко — художник из Калифорнии, преподаватель и ютубер с 1,5 млн подписчиков. Он основал Proko — популярный международный образовательный ресурс, где начинающие художники учатся по видеороликам. Со временем учеников значительно прибавилось, и на проверку их работ стало уходить слишком много времени. Будучи художником, учителем и интересующимся IT новинками предпринимателем, Стэн задумался: как объединить искусство, обучение и искусственный интеллект, чтобы автоматизировать рутинные процессы? Для решения этой задачи он обратился к веб-разработчикам из Azoft.
Сначала клиент попросил выполнить два экспериментальных проекта.
Первый проект: оценка портретов
Стэну было любопытно, можно ли применять нейросети для автоматизации задач, связанных с творчеством. А именно — можно ли применить искусственный интеллект, чтобы различать уровень мастерства в рисунках с изображением людей и проставлять соответствующие оценки? Для этой задачи клиент собрал датасет из порядка 1000 рисунков, расставил им оценки и передал его нам. С помощью датасета наши R&D инженеры натренировали нейронную сеть оценивать рисунки людей по 5-балльной шкале: от скетчей и набросков до полностью завершенных картин.
Второй проект: проверка перспективы
Стэн убедился, что искусственный интеллект способен помогать учителям. А будет ли он полезен ученикам?
Основная проблема, с которой сталкиваются ученики — это ошибки с перспективой. Тогда клиент попросил создать прототип, который ищет на рисунке с домами или улицами точки схода (одну или несколько) и определяет, правильно ли художник построил перспективу. Если правильно — грани всех объектов сойдутся в этих точках. Для этого мы применили эвристический математический алгоритм. Он находит на рисунке все возможные нарисованные линии. Переносит их в абстрактную систему координат, где каждая линия становится точкой. Затем алгоритм анализирует группы точек, вытянутых в линию — линейные кластеры. Проводит через кластеры линии и по ним определяет точки схода. Получилось решение, которое помогает быстро проверять перспективу в рисунках улиц.
Третий проект: проверка рисунка параллелепипеда
Стэну понравился результат. Посоветовавшись с ним, мы решили, что наиболее актуальная задача сейчас — разработать веб-приложение, которое проверяет рисунки начинающих художников. Новички обычно тренируются строить перспективу для простых объектов — параллелепипедов. Отсюда вытекала новая задача — создать приложение, которое анализирует рисунок параллелепипеда от руки и проверяет, правильно ли он нарисован с точки зрения одно-, двух- и трехточечной перспективы.
Чтобы выполнить такую задачу, требовалось решить ряд трудностей. Рассказываем подробнее.
- Мало информации для эвристического математического алгоритма.
На втором проекте мы уже решали задачу, связанную с проверкой перспективы. Однако там было достаточно информации для успешной работы алгоритма: анализировался рисунок улицы со множеством линий. А рисунок куба содержит всего несколько линий, чего на практике оказалось недостаточно. Таким образом, нам пришлось полностью пересмотреть подход к работе и подключить нейросети. Чтобы получить необходимый датасет для обучения нейронной сети в достаточном количестве, мы написали собственный генератор рисунков. Он рисует параллелепипеды в различной перспективе и на разных фонах.
- Неидеальные условия.
Представим, что задание нарисовать параллелепипед и отправить рисунок дали двум ученикам — Джорджу и Анне. Джордж подготовился заранее. Нарисовал аккуратно карандашом на белой бумаге. Сфотографировал результат при дневном освещении, держа камеру параллельно поверхности стола. При этом сам параллелепипед расположен в центре и занимает большую часть кадра. А вот Анна торопилась и выполнила задание поздно вечером. Под рукой у неё оказалась ручка и бумага в линейку. Перед тем как отправлять рисунок на проверку, она ещё раз просмотрела свою работу и решила подправить пару ребер: выделила их пожирнее и сделала рядом пометку.
Одно и то же задание ребята выполнили по-разному. Поэтому чтобы алгоритм успешно распознавал оба их рисунка, требовалось предусмотреть ряд подобных условий.
В итоге с помощью нейронной сети мы создали алгоритм, работа которого сводится к следующим шагам:
- С помощью алгоритма friend-or-foe определяется, есть ли на рисунке параллелепипед.
- Если помимо параллелепипеда есть другие объекты, алгоритм “отбрасывает” все лишнее.
- Находит параллелепипед, выбирает несколько опорных ребер, анализирует их и пытается определить, какой тип перспективы использован.
- Используя опорные ребра и информацию о типе перспективы, алгоритм дорисовывает правильное положение ребер. Если ребро совпадает, значит, рисунок правильный. Если нет, значит, есть ошибка, и тогда показываются несовпадения.

Бывает, что у учеников получается настолько неправильный рисунок, что его можно исправить как в двухточечной, так и трехточечной перспективе. Тогда мы решили добавить опцию, с помощью которой ученик указывает, какую именно перспективу он имел в виду при создании рисунка.
Чтобы ученики школы проверяли свои работы онлайн, мы разработали веб-приложение. Приложение представляет собой страницу, где пользователи загружают фотографию своего рисунка параллелепипеда и указывают тип перспективы. Далее алгоритм обрабатывает полученные данные. В результате на экран выводится исправленная картинка, чтобы ученик понял замечания.
Сейчас вместе с клиентом запускаем бета-релиз, чтобы собрать больше информации о том, как именно рисуют студенты, чтобы при необходимости затем подкорректировать сгенерированный нами тренировочный датасет. После того как ученик загрузил и увидел исправленный вариант своей работы, ему предлагается проставить рейтинг — оценить, насколько, по его мнению, исправление верное.
Исходные и исправленные изображения хранятся в админке. Тут же — данные о скорости обработки каждого изображения и присвоенный учеником рейтинг. На основе этих данных в дальнейшем мы вместе с нашим клиентом будем принимать решение, нужно ли повысить производительность алгоритма.
Текущая цель — показать приложение первым пользователям, собрать отзывы и обновленный датасет, проанализировать данные и сделать выводы по дальнейшему улучшению алгоритма.
Результат
С помощью машинного обучения и нейронных сетей мы разработали EdTech решения, которые:
- оценивают портреты по пятибалльной шкале,
- проверяют, правильно ли построена перспектива,
- исправляют рисунки параллелепипеда.
Для алгоритма, который автоматически ищет и исправляет ошибки в рисунках параллелепипеда, мы создали удобное веб-приложение, которое одновременно помогает преподавателю и ученикам: автоматически проверяет работы и исправляет стандартные ошибки. Клиент дал нам прекрасный отзыв на Clutch.
Теперь планируем повысить производительность и точность работы созданного приложения, в том числе улучшить распознаваемость волнистых линий. Для этого будем тренировать алгоритм на основе реальных рисунков учеников.
Стек технологий
point_alignments, kNearestNeighbors, Gaussian Mixtures, Python, Yii2, Bootstrap, MySQL, AWS