Перебирать списки вакансий, которые могут быть потеряны навсегда из-за ИИ или роботизированных систем, вызывает печальное увлечение — игрок в гоу, водитель грузовика, складской рабочий, водитель такси, курьер, разработчик интерфейса. Да, фронтенд-разработчик.
Тони Белтрамелли из UIzard Technologies только что опубликовал статью и видео о pix2code. Основная идея довольно проста, хотя поначалу удивляет. Возьмите нейронную сеть, покажите ей пользовательский интерфейс и научите ее создавать код, создающий пользовательский интерфейс. Вы можете обучить сеть для ряда различных систем — iOS, HTML и так далее. Уловка многоязычия заключается в использовании специального DSL (Domain Specific Language), который описывает пользовательский интерфейс, а затем компилируется на целевой язык. Следовательно, нейронная сеть изучает только одно языковое представление, которое упрощает обучение.
Интересна архитектура pix2code. Визуальный компонент обрабатывается сверточной нейронной сетью, а языковая часть обрабатывается долгосрочной краткосрочной памятью, то есть сетью обратной связи.
Если обучение прошло успешно, то вы создали нейронную сеть, которая при отображении пользовательского интерфейса выводит код, который его создает.
Не верите, что это сработает?
Тогда взгляните на это в действии:
Это впечатляет, но есть некоторые вещи, о которых стоит подумать, чтобы поместить это в контекст.
В аннотации к статье говорится:
Преобразование снимка экрана графического пользовательского интерфейса, созданного дизайнером, в компьютерный код — типичная задача, выполняемая разработчиком для создания настраиваемого программного обеспечения, веб-сайтов и мобильных приложений. В этой статье мы показываем, что методы глубокого обучения могут использоваться для автоматической генерации кода с учетом снимка экрана графического пользовательского интерфейса в качестве входных данных. Наша модель способна сгенерировать код для трех разных платформ (например, iOS, Android и веб-технологии) из одного входного изображения с точностью более 77%.
Первое наблюдение: точность 77% не так уж и высока. Это достижение, потому что задача очень сложная — сопоставить структурированное изображение с языковым описанием. Однако для реальной работы этого недостаточно. Возможно, можно было бы улучшить производительность за счет большего обучения — на самом деле почти наверняка можно повысить точность, но этого недостаточно.
Два примера пользовательских интерфейсов ввода и сгенерированных пользовательских интерфейсов. Обратите внимание, что для c и d есть ошибка в количестве кнопок. Также обратите внимание, что система не стремится воспроизводить текстовые метки — контент, который она генерирует случайным образом.
Сгенерированный код описывает только макет пользовательского интерфейса, а не способ его подключения. То есть, даже если бы он был на 100% точным, он решал бы только самые тривиальные проблемы внешнего программирования. Он объединяет описание того, какие элементы находятся в пользовательском интерфейсе, где они расположены и так далее. Ему по-прежнему нужен интерфейсный программист, чтобы написать код, который определяет, что происходит при нажатии кнопки или вводе каких-либо данных.
Также есть небольшой момент: если вы используете редактор с перетаскиванием, вы можете получить код, сгенерированный во время создания дизайна. Во многих отношениях проблема, которую пытается решить нейронная сеть, уже решена, просто по непонятным причинам конструкторы с перетаскиванием не являются универсальной функцией внешнего интерфейса. Это особенно верно в случае HTML, но даже дизайнеры Android, iOS и XAML, как правило, не используют тот, который доступен.
Так что, возможно, роботы пока не придут на работу фронтенд-программистом, но имейте в виду, что таковы грядущие события.