Как мы построили вендинговый автомат с вайфу

На фестивале Anime Expo художник пообещал невозможное: он собрался проводить комиссию (в искусстве комиссия — это заказ на создание произведения от частного лица, предприятия или правительства — прим. пер.) каждые пять минут. В чем подвох? Художник был не человеком, а искусственным интеллектом, обученным на миллионах аниме-картинок. В течение следующих четырех дней то, что начиналось как простой эксперимент, стало культовой достопримечательностью на аллее художников.

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

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

[course id =1073]

Что такое вендинговый автомат?

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

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

Подойдите к автомату, и на экране вас встретит множество девушек.

В поисках идеала

После каждого шага автомат сужает ваш выбор. В конце концов всё приведет вас к финальному экрану, где вы можете «удочерить» девушку.

img_3677-8390468
А вот и она

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

screen-shot-2019-07-22-at-6-28-43-pm-3922801
команда прибыла

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

[course id=1046]

Прототип

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

screen-shot-2019-07-22-at-7-47-26-pm-1-8994657

Первые результаты были хорошими, но единственное, что с ними можно было сделать, это сказать: «Да, выглядит круто».

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

screen-shot-2019-07-22-at-6-51-03-pm-7470510
Отличный интерфейс

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

img_0275-1-8646447
Как прийти к успеху

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

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

screen-shot-2019-07-22-at-10-12-05-pm-8937018
Финальный интерфейс! Кажется…

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

С программным обеспечением пришло время сложностей.

Техническое обеспечение

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

screen-shot-2019-07-22-at-10-16-33-pm-7104355
Тщательная проработка дизайна

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

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

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

screen-shot-2019-07-22-at-10-26-49-pm-4026357
Наш талисман

Битва

Наконец, наступили дни фестиваля. После шестичасового переезда в Лос-Анджелес с материалами стенда в багажнике мы вошли в конференц-центр, готовые начать бой!

screen-shot-2019-07-22-at-10-28-49-pm-1942625

Как оказалось, аллея художников — это среда невероятного дефицита. Перед нами стояли две проблемы: отсутствие электричества и Wi-Fi. Наше место — это меньше двух квадратных метров свободного пространства, и нам предстояло сидеть здесь в течение десяти часов.

К счастью, наш стенд был достаточно компактным и влез на стол. Пользователь видел три ключевые области: монитор, купюроприёмник и слот, откуда можно было забрать результат.

screen-shot-2019-07-23-at-2-45-19-pm-6465093

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

screen-shot-2019-07-22-at-10-35-47-pm-4589697

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

screen-shot-2019-07-22-at-10-38-23-pm-1619842

К сожалению, наш сервер не был волшебной машиной. Поскольку интернет не работал, нам пришлось всё обрабатывать локально. Надежный игровой ноутбук с видеокартой и Windows Home Edition мы превратили в самый нестабильный сервер в мире.

screen-shot-2019-07-22-at-10-42-23-pm-5127422
сервер

В итоге обычный цикл выглядел примерно так:

  • Пользователь подходит к внешнему монитору и активирует интерфейс.
  • Мы смотрим, что он там делает.
  • Когда пользователь нажимает кнопку «Отправить», мы считываем его изображение из базы данных и пересылаем на печать.
  • Пока идёт печать, мы проводим платёж через терминал.
  • Наконец, мы вырезаем распечатанный рисунок, пишем имя девушки на сертификате и передаём результаты через специальное окошко.
screen-shot-2019-07-23-at-11-25-26-am-7246393
За стендом. Каждый аппарат на расстоянии вытянутой руки

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

[read id =946]

Топ 10 хаков

Далее мы расскажем о десяти хаках, которые нам прогодились во время работы стенда.

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

Как обычно, Windows ругался и отключался от сети. Чтобы предотвратить это, мы постоянно пинговали собственный IP, чтобы Windows не обновлял соединение.

screen-shot-2019-07-22-at-10-51-14-pm-7265417
Контроллер кластера

Через час работы мы поняли, что в коде была критическая ошибка: когда люди нажимали кнопку «Назад» на первом экране, клиент просто зависал. Мы быстро перенастроили клиентский ноутбук, чтобы он загружал веб-страницы с другого компьютера, и исправили код.

screen-shot-2019-07-22-at-10-57-15-pm-4739777
Два ноутбука — двойная производительность

Последний хак, к которому нам пришлось прибегнуть, пригодился когда нам надо было перенести новое видео с одного ноутбука на другой, чтобы обновить заставку. Мы попробовали Airdrop, но соединение не устанавливалось. Поэтому на одном из ноутбуков нам пришлось захостить python -m SimpleHTTPServer, а затем загрузили файл с другого ноутбука через локальную сеть.

Снова, снова и снова

В первый день нам было трудно привлечь людей на стенд. Приветственный экран сбивал с толку, и стало ясно: люди не понимают, что происходит.

screen-shot-2019-07-22-at-11-03-36-pm-7602653
Заставка

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

screen-shot-2019-07-22-at-11-06-14-pm-7756922
Заставка 2.0

Для тех, кто побывал в первый день, у нас был простой набор из 16 девушек. К полудню мы внедрили кнопку «Отменить», а к утру пятницы пользователи могли перезапустить процесс, обновить набор и даже восстановить свою девушку из резервной копии в случае сбоя системы.

Век героев

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

screen-shot-2019-07-22-at-11-10-15-pm-5984690

Чтобы справиться с таким наплывом людей, мы превратили два ноутбука в экраны для пользователей и разместили их рядом с основным компьютером. Конечно, это означало, что сервер теперь находится под ещё большей нагрузкой — в какой-то момент мы даже использовали принтер (!) в качестве маршрутизатора, когда устройство Android начало сдавать.

[read id =653]

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

К концу фестиваля торговый автомат Waifu распродал все свои запасы в двойном объёме. Это были дни, полные приключений, трудностей и шока от результатов нашей работы. Несмотря на всё это, мы с уверенностью можем сказать, что фестиваль позволил нашей разработке подняться выше звезд и воссиять.

screen-shot-2019-07-22-at-11-20-25-pm-9169469

Будущее и вне времени

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

Оригинал: https://waifulabs.com/blog/ax

Перевод: Астафьева Наталья

(рейтинг: 5, голосов: 3)
Добавить комментарий