Как известно, больше всего времени в программировании занимает не написание и даже не отладка программы (хотя кто знает), а вёрстка, то есть — написание интерфейса. То же справедливо для веб-сайта, ведь заказчик часто просит «сделать красиво», дизайнер рисует прекрасный внешний вид, а программисту предстоит интегрировать его в готовый проект.

И вот датский стартап Uizard Technologies представил нейросеть pix2code, которая умеет «просматривать» изображение или скриншот того или иного пользовательского интерфейса, а затем генерировать готовую страницу со всем необходимым кодом, оформлением и графическими элементами. Полученный код почти не нужно дорабатывать.

Как отмечается, точность генерации уже составляет 77%, так что практически автоматически можно получить интерфейс высокого качества. Скомпилированная версия прототипа нейросети, которую планируется опубликовать на GitHub, умеет генерировать интерфейсы под OS и Android, а также для веб-сайтов. При этом пока разработчики не планировали открывать исходники программы, однако после сильного интереса к ней, главный разработчик Тони Белтрамелли заявил, что исходники всё же могут быть опубликованы. Как отмечается, наборы данных для обучения нейросети станут доступны на GitHub после публикации (или отказа в публикации) его статьи на конференции NIPS 2017. Уведомление от организаторов конференции должно прийти в начале сентября, так что наборы данных появятся в репозитории в то же время. Там будут скриншоты GUI, соответствующий код на языке программы и выдача компилятора для трёх основных платформ.

Отмечается, что x2code построена на свёрточных и рекуррентных нейронных сетях. Обучение на Nvidia Tesla K80 GPU заняло чуть менее пяти часов — за это время система оптимизировала 109×106 параметров для одного набора данных. Так что если вы хотите обучить её для трёх платформ, потребуется около 15-ти часов. Программа может принимать на вход значения пикселей из одного скриншота, без специальной обработки данных, что существенно ускоряет процесс.

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

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