Proko

Искусственный интеллект для онлайн-школы рисования

Как всё началось

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

Но есть сфера, которая считалась присущей исключительно человеку — творчество. И пока во всем мире ведутся дискуссии о том, может ли искусственный интеллект творить, нейросети уже сейчас создают невероятные вещи — например, фотореалистичные рисунки из примитивных набросков

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

В конце 2018 года к нам обратился Стэн Прокопенко художник из Калифорнии, преподаватель и ютубер с 1,5 млн подписчиков. Он основал Proko популярный международный образовательный ресурс, где начинающие художники учатся по видеороликам. Со временем учеников значительно прибавилось, и на проверку их работ стало уходить слишком много времени. Будучи художником, учителем и интересующимся IT новинками предпринимателем, Стэн задумался: как объединить искусство, обучение и искусственный интеллект, чтобы автоматизировать рутинные процессы? Для решения этой задачи он обратился к Azoft.

Сначала клиент попросил выполнить два экспериментальных проекта. 

Первый проект: оценка портретов

Стэну было любопытно, можно ли применять нейросети для автоматизации задач, связанных с творчеством. А именно — можно ли применить искусственный интеллект, чтобы различать уровень мастерства в рисунках с изображением людей и проставлять соответствующие оценки? Для этой задачи клиент собрал датасет из порядка 1000 рисунков, расставил им оценки и передал его нам. С помощью датасета наши R&D инженеры натренировали нейронную сеть оценивать рисунки людей по 5-балльной шкале: от скетчей и набросков до полностью завершенных картин. 

Второй проект: проверка перспективы

Стэн убедился, что искусственный интеллект способен помогать учителям. А будет ли он полезен ученикам? 

Основная проблема, с которой сталкиваются ученики это ошибки с перспективой. Тогда клиент попросил создать прототип, который ищет на рисунке с домами или улицами точки схода (одну или несколько) и определяет, правильно ли художник построил перспективу. Если правильно — грани всех объектов сойдутся в этих точках. Для этого мы применили эвристический математический алгоритм. Он находит на рисунке все возможные нарисованные линии. Переносит их в абстрактную систему координат, где каждая линия становится точкой. Затем алгоритм анализирует группы точек, вытянутых в линию — линейные кластеры. Проводит через кластеры линии и по ним определяет точки схода. Получилось решение, которое помогает быстро проверять перспективу в рисунках улиц.

Третий проект: проверка рисунка параллелепипеда

Стэну понравился результат. Тогда он подумал и решил, что наиболее актуальная задача сейчас создать приложение, которое проверяет рисунки начинающих художников. Новички обычно тренируются строить перспективу для простых объектов параллелепипедов. Отсюда вытекала новая задача — создать приложение, которое анализирует рисунок параллелепипеда от руки и проверяет, правильно ли он нарисован с точки зрения одно-, двух- и трехточечной перспективы. 

Чтобы выполнить такую задачу, требовалось решить ряд трудностей. Рассказываем подробнее.

  • Мало информации для эвристического математического алгоритма.

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

  • Неидеальные условия.

Представим, что задание нарисовать параллелепипед и отправить рисунок дали двум ученикам Джорджу и Анне. Джордж подготовился заранее. Нарисовал аккуратно карандашом на белой бумаге. Сфотографировал результат при дневном освещении, держа камеру параллельно поверхности стола. При этом сам параллелепипед расположен в центре и занимает большую часть кадра. А вот Анна торопилась и выполнила задание поздно вечером. Под рукой у неё оказалась ручка и бумага в линейку. Перед тем как отправлять рисунок на проверку, она ещё раз просмотрела свою работу и решила подправить пару ребер: выделила их пожирнее и сделала рядом пометку.

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

В итоге с помощью нейронной сети мы создали алгоритм, работа которого сводится к следующим шагам:

  1. С помощью алгоритма friend-or-foe определяется, есть ли на рисунке параллелепипед.
  2. Если помимо параллелепипеда есть другие объекты, алгоритм “отбрасывает” все лишнее.
  3. Находит параллелепипед, выбирает несколько опорных ребер, анализирует их и пытается определить, какой тип перспективы использован. 
  4. Используя опорные ребра и информацию о типе перспективы, алгоритм дорисовывает правильное положение ребер. Если ребро совпадает, значит, рисунок правильный. Если нет, значит, есть ошибка, и тогда показываются несовпадения. 
Проверка перспективы параллелепипеда

Бывает, что у учеников получается настолько неправильный рисунок, что его можно исправить как в двухточечной, так и трехточечной перспективе. Тогда мы решили добавить опцию, с помощью которой ученик указывает, какую именно перспективу он имел в виду при создании рисунка.

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

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

Исходные и исправленные изображения хранятся в админке. Тут же — данные о скорости обработки каждого изображения и присвоенный учеником рейтинг. На основе этих данных в дальнейшем мы вместе с нашим клиентом будем принимать решение, нужно ли повысить производительность алгоритма.

Текущая цель показать приложение первым пользователям, собрать отзывы и обновленный датасет, проанализировать данные и сделать выводы по дальнейшему улучшению алгоритма.

Результат

С помощью машинного обучения и нейронных сетей мы разработали EdTech решения, которые:

  • оценивают портреты по пятибалльной шкале,
  • проверяют, правильно ли построена перспектива, 
  • исправляют рисунки параллелепипеда.

Для алгоритма, который автоматически ищет и исправляет ошибки в рисунках параллелепипеда, мы создали удобное веб-приложение, которое одновременно помогает преподавателю и ученикам: автоматически проверяет работы и исправляет стандартные ошибки. Клиент дал нам прекрасный отзыв на Clutch.

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

Стек технологий

point_alignments, kNearestNeighbors, Gaussian Mixtures, Python, Yii2, Bootstrap, MySQL, AWS

Примеры проектов

Запросите консультацию эксперта

Отправить заявку

Вы можете загружать файлы до 200 Мб в форматах doc, docx, pdf, odt, ott, txt, jpeg, xls, rar, zip, 7z

Фильтр

Закрыть

Технологии

Индустрии