Обнаружение дефектов и генерация векторных изображений: над какими проектами работают студенты ГОиГИИ

«Глубокое обучение и генеративный искусственный интеллект» – исследовательская магистратура. Программа готовит специалистов, способных самостоятельно разрабатывать и применять современные алгоритмы машинного обучения в науке и индустрии. Многие первокурсники ГОиГИИ уже с первого семестра занимаются исследованиями, а некоторые продолжают развивать темы своих бакалаврских дипломов. Поговорили с Иваном Жарским и Никитой Новгородцевым, которые работают над крупными исследовательскими проектами в рамках лаборатории «Машинное обучение» и гранта Фонда содействия инновациям.
– Иван, расскажи про проект, в котором ты принимаешь участие.

– Наша команда лаборатории «Машинное обучение» разрабатывает модели и алгоритмы для обработки и генерации векторных изображений.

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

Генерацией изображений исследователи и инженеры занимаются уже давно, но до сих пор есть проблема с созданием картинок высокого качества – от 3000×3000 пикселей и выше. Пока в основном модели неплохо синтезируют изображения не более 1024×1024 пикселей (например, DALL-E 2, Imagen).

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


– Интересно! Чем конкретно ты занимаешься в проекте?

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

Эмоция первой обложки — вдохновение, второй — радость, третей — ностальгия

Сейчас я занимаюсь второй задачей – переносом стиля с входного изображения на заданное векторное изображение. Тут на вход пользователь подает картинку-контент в векторном формате и картинку-стиль любого формата. Задача моей модели – перенести стиль рисовки со второго изображения на первое, при этом не сильно изменяя его содержимое. Тут тоже можно попробовать сервис самим.

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

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


– Каких результатов вы планируете достичь?

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


– Расскажи, почему ты вообще заинтересовался этой темой?

– Я занимался генерацией векторных обложек для музыкальных треков в рамках своего бакалаврского диплома. Тему предложила мой научный консультант Валерия Александровна Ефимова. До этого схожей задачей – генерацией кривых линий – занимался старшекурсник с моей программы. Я взял его наработки и углубился в синтез замкнутых фигур.

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


– Вашу статью по проекту приняли на топ-1 конференцию по компьютерному зрению CVPR 2022. Можешь рассказать про это подробнее?

– На конференцию CVPR 2022 мы подавали статью про генерацию музыкальных обложек. Отправили ее программному комитету в ноябре 2021 года, но спустя пару месяцев пришел отказ. Нам написали, что нужно провести больше сравнительных анализов полученных результатов. На самом деле, в теме генерации «музыкальных» изображений довольно сложно определить метрику, поэтому мы решили проводить опросы пользователей. Мы предлагали им сравнить наши картинки и растровые изображения, сгенерированные популярными моделями AttnGAN и DALL-E.

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


– Расскажите про свои личные планы: чем собираешься заниматься после окончания магистратуры?

– Пока я твердо не определился, чем хочу заниматься дальше, но наверняка это будет связано с программированием. Я получил хорошую базу в бакалавриате КТ и считаю, что обширные знания – это круто. Многие сферы программирования пересекаются, да и само программирование тесно переплетено как с математикой, так и с другими науками. Поэтому моё текущее увлечение машинным обучением хорошо вписывается в такой подход.

– Никита, расскажи, чем ты занимаешься?

– Я работаю над несколькими задачами в рамках гранта Фонда содействия инновациям. Мы с коллегами создаем универсальную open source систему для предприятий, которая будет объединять большое количество задач машинного обучения. Конкретно я пишу интерфейс для этой системы, а также занимаюсь задачей дефектоскопии на основе компьютерного зрения.

Дефектоскопия – по-простому, поиск дефектов, изъянов. Это очень актуальная проблема для самых разных производств: в авиа- и автомобилестроении, производстве металлических конструкций, энергетике и т.д. Сложность этой задачи в том, что данных для обучения ML-модели мало, их не хватает для обеспечения хорошей точности предсказаний. Поэтому моя цель – написать алгоритм, позволяющий на основе небольшого количества данных давать точность, достаточную для работы в реальном мире, разработать модель для обучения с нескольких взглядов (few-shot learning). Алгоритм я пишу на Python c помощью фреймворка PyTorch.


А можешь чуть подробнее рассказать про саму систему? Кто и в каких ситуациях будет ее использовать?

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

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

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


Ты начал работать над этим проектом еще в бакалавриате, а сейчас, в магистратуре, продолжил. Чем он тебя привлек?

— В этом проекте мне нравится то, что он объединяет разработку ПО и машинное обучение. Первое мне было нужно для защиты бакалаврского диплома по направлению «Информационные системы и технологии», а второе просто очень интересовало. Машинным обучением я увлекся на третьем курсе бакалавриата, поэтому и в магистратуру решил поступать на профильное направление – «Глубокое обучение и генеративный искусственный интеллект».


— Расскажи про личные планы: чем собираешься заниматься после окончания магистратуры?

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