Поиск по сайту Поиск

Нейросеть распознаёт узор вязания по фото

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

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

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

— автоматический перевод изображения с узором в набор производственных инструкций;

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

— решение обратной задачи проектирования с помощью глубокого обучения;

— использование синтезированных данных в дополнение к реальным.

Несколько слов о вязании

Для тех, кто ни разу не брал в руки спицы, мы немного расскажем о самом процессе вязания. Это одна из самых распространённых форм текстильного производства. Тип вязальной машины, рассматриваемой далее, известен как «плосковязальный». Машина может автоматически создавать целые предметы одежды. В ней используются две фонтуры (игольницы) с индивидуальным управлением, ориентированные в форме перевёрнутой буквы V. Это позволяет им перемещать петли между рядами. Основные действия, выполняемые машиной, показаны на рисунках:

Перенос петли: центральная красная петля перемещается на противоположную фонтуру, которая смещается и надевает петлю обратно на другую фонтуру.
Слева направо: вывязывание, набрасывание нити, пропуск петли.

вывязывание (knit): протягивание новой петли 

набрасывание (tuck): захват новой петли на спицу 

пропуск (miss) петли

перенос (transfer) петли: перемещение петли на другую фонтуру

смещение (racking): смена расположения спиц относительно друг друга.

Пример переноса петли

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

Цель работы — автоматически генерировать машинные инструкции для воспроизведения любого геометрического рисунка из одной фотографии (например, снимка вашей кофты). Для упрощения примем тот факт, что наши узоры будут двумерными и мы не учитываем изменения, связанные с объёмной формой одежды.

Набор инструкций

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

Первая группа инструкций основана на трёх операциях: вывязывание, набрасывание и пропуск. Операции переноса позволяют перемещать петли пряжи через ряды. Это важный момент, поскольку на обратной стороне изделия обычно присутствуют ряды из изнаночных петель. Операция для их создания называется накид (purl)

Комбинация переноса и смещения позволяет перемещать петли между фонтурами. Эти операции были разделены на более низкоуровневые: шаг (move) — набор инструкций для одной фонтуры, пересечение (cross) — парные инструкции для обеих фонтур; и складывание (stack) — перенос нескольких объединённых друг с другом петель. Соответствующие символы и цветовая кодировка инструкций изображены ниже:

Коды инструкций: вывязывание (knit), накид (purl), набрасывание (tuck), пропуск (miss), лицевая сторона (front), изнанка (back), вправо (right), влево (left), складывание (stack). X — пересечение (cross), где + и – обозначают порядок (сверху или снизу). Инструкции шага включают в себя начальную сторону вязания (лицевую или изнаночную), направление движения (влево или вправо) и смещение (1 или 2).

Планирование вязальных операций

Для каждой строки инструкции выполняется следующая последовательность шагов:

  1. Текущие петли переносятся на новый набор операций без смещения;
  2. Базовая операция (вывязывание, набрасывание или пропуск) выполнена;
  3. Все инструкции по переносу переходят на противоположную фонтуру без смещения;
  4. Инструкции по переносу в пределах одной фонтуры переходят к исходной стороне, используя соответствующий порядок;
  5. Инструкции складывания переносятся на исходную сторону без смещения.

Набор данных с шаблонами для вязания

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

Авторы извлекали инструкции к шаблонам из закрытого программного обеспечения KnitPain. Узоры имеют разные размеры и охватывают большое дизайнерское разнообразие: от обычных обратных петель до кружевной вязки. В наборе около тысячи шаблонов, которые были разделены на небольшие участки 20х20. По этим участкам можно сгенерировать двумерный набор команд. Всего получилось 12392 фотографии с узорами. После этого авторы создали новые изображения двумя разными способами: 

  1. связали 1044 реальных шаблона (реальные данные)
  2. сгенерировали те же шаблоны с помощью функции предпросмотра в KnitPaint (cинтезированные данные).

Пример:

Архитектура нейросети

Архитектура сети показана на рисунке ниже (реализована с помощью TensorFlow).

Сеть прогнозирования Img2Prog использует чёрно-белые изображения 160х160 в качестве входных данных и генерирует наборы команд 20х20. Её структура состоит из трёх начальных свёрточных слоёв, которые уменьшают разрешение фотографий до 20х20, и двух выходных слоёв, генерирующих инструкции. Размер ядра равен 3х3 за исключением последнего слоя с ядром 1х1. Для начальных слоёв используется номрализация экземпляра (instance normalization) и для всех слоёв — ReLU.

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

Создание синтезированных узоров происходит с помощью генеративно-состязательной сети (GAN). Чтобы улучшить процесс её обучения, вводятся функции потерь восприятия и стиля между реальными и сгенерированными изображениями, а также между сгенерированными и смоделированными в KnitPaint.

Обучение

Нейросеть обучается на сочетании реальных узоров и синтезированных изображений. Всего использовалось 80% реальных данных для обучения, 5% для проверки и 15% для тестирования. Синтезированные данные использовались только для обучения.

Модель обучалась в течение 150 тыс. итераций с размером пакета 2 для каждой области данных, используя оптимизатор Adam с начальной скоростью обучения 0.0005 и экспоненциальной скоростью затухания 0.3 каждые 50 тыс. итераций. Процесс занимает от трёх до четырёх часов (в зависимости от модели) на GPU Titan Xp.

Эксперименты

Для количественной оценки сети использовались две метрики: метрика точности и метрика восприятия. 

Метрика точности (accuracy) оценивает потери в двух вариантах: FULL — усреднённые по всем инструкциям, и FG — усреднённые по всем инструкциям, кроме наиболее преобладающей.

Метрика восприятия (perceptual) измеряет показатели, оценивающие внешний вид узоров. Для этого используется сравнение сгенерированных инструкций с реальными с помощью стандартных метрик пикового отношения сигнала к шуму (peak signal-to-noise ratio, PSNR) и индекса структурного сходства (structure similarity, SSIM).  Здесь, как и в метрике точности, тоже учитывается распределение инструкций.

Количественные результаты представлены в таблице (для всех метрик чем больше значение, тем лучше):

Качественные результаты:

Первые 5 строк таблицы — это результаты работы предыдущих нейросетей для сравнения. Можно заметить, что наиболее близким к точности Img2prog оказался метод S + U Leaning.

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

В третьей группе показана точность модели с использованием Refiner. Также в ней отражено влияние коэффициента смешивания α.

И в последней строке таблицы показан результат, полученный с сетью Img2prog++. Она использует дополнительные пропуски соединений из каждой нисходящей свёртки, что позволяет улучшить представление. Этот вариант достиг наилучшей точности.

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

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

Заключение

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

С оригинальной статьёй можно ознакомиться на сайте arxiv.org. Репозиторий с исходным кодом доступен на GitHub.

Что такое информационная безопасность

Угрозы для информационной безопасности могут возникать не только извне, но, наример, и внутри компании, а защищать порой стоит не только...
Read More

Для чего нужен межсетевой экран и как он работает

Разберемся, что такое межсетевой экран (иначе называется firewall или файрвол, а также brandmauer или брандмайэр), как он работает и для...
Read More

Аутсорсинг VS собственное производство одежды: опыт бренда кроссовок

Один способ позволяет отслеживать каждую деталь изделия, другой – сфокусироваться на брендинге и маркетинге. Разбираемся в плюсах и минусах каждого варианта и выбираем оптимальный для старта бизнеса.
Read More

Как сократить затраты на инфраструктуру в два раза: опыт ИТ-компании Ctrl2GO

Рассказываем, как помогли российскому разработчику систем аналитики мигрировать в частное облако и сократить затраты на аутсорсинговые услуги. (далее…)
Read More

Каким должен быть сайт-визитка для эксперта

Рассказываем, как создать сайт-визитку и какой должна быть структура. Внутри — инструкция, которая поможет предпринимателям.
Read More

Как продвигать бизнес с помощью геосервисов

Онлайн-карты — хорошая площадка для привлечения аудитории в бизнес. Рассказываем об инструментах продвижения в геосервисах.
Read More

Как открыть своё digital-агентство

Можно стартовать с багажом знаний из найма или практически без опыта. Рассказываем, что нужно делать: от проработки идеи и миссии до поиска первых клиентов и сотрудников.
Read More

Что такое Data Science и кто такой Data Scientist

Что такое наука о данных, чем занимается Data Scientist и можно ли обучиться этой специальности с нуля – об этом...
Read More

Как и зачем малому бизнесу работать с НКО

Начинающим компаниям в сфере IT, дизайна, PR и маркетинга, бухгалтерских и аудиторских услуг НКО могут быть очень полезны как клиенты. Раскрываем все нюансы такого сотрудничества: от выбора партнёра до менеджмента проекта и финансовых отношений.
Read More

K8s для начинающих

Применение контейнеризации стало неотъемлемой частью процесса разработки и тестирования программного обеспечения. Контейнеры позволяют разработчикам упаковывать приложения вместе со всеми зависимостями,...
Read More