Das neuronale Netzwerk generiert GUI-Code aus Screenshots


Ein Screenshot der Aufgabe und der Ausgabe des neuronalen Pix2code-Netzwerks in einer eigenen Sprache, die der Compiler dann in Code für die gewünschte Plattform (Android, iOS) übersetzt.

Das neue pix2code- Programm (ein wissenschaftlicher Artikel ) soll die Arbeit von Programmierern erleichtern, die sich mit dem mühsamen Codieren der Client-GUI beschäftigen.

Der Designer erstellt normalerweise Schnittstellenlayouts, und der Programmierer muss Code schreiben, um dieses Design zu implementieren. Diese Arbeit nimmt wertvolle Zeit in Anspruch, die der Entwickler für interessantere und kreativere Aufgaben aufwenden kann, dh für die Implementierung der tatsächlichen Funktionen und der Logik des Programms, nicht für die grafische Benutzeroberfläche. Bald kann die Codegenerierung auf die Schultern des Programms übertragen werden. Eine Spielzeugdemonstration der zukünftigen Möglichkeiten des maschinellen Lernens ist das pix2code- Projekt, das bereits den ersten Platz in der Liste der heißesten Repositories auf GitHub erreicht hat , obwohl der Autor noch nicht einmal den Quellcode und die Datensätze für das Training des neuronalen Netzwerks veröffentlicht hat! So ein großes Interesse an diesem Thema.

Das Codieren einer GUI ist langweilig. Erschwerend kommt hinzu, dass dies verschiedene Programmiersprachen auf verschiedenen Plattformen sind. Das heißt, Sie müssen separaten Code für Android und separaten Code für iOS schreiben, wenn das Programm nativ funktionieren soll. Dies nimmt noch mehr Zeit in Anspruch und lässt Sie dieselben langweiligen Aufgaben ausführen. Genauer gesagt war es vorher. Das pix2code-Programm generiert GUI-Code für die drei Hauptplattformen - Andriod, iOS und plattformübergreifendes HTML / CSS - mit einer Genauigkeit von 77% (die Genauigkeit wird in der integrierten Programmsprache ermittelt - indem der generierte Code mit dem Ziel- / erwarteten Code für jede Plattform verglichen wird).


Der Programmautor Tony Beltramelli vom dänischen Startup UIzard Technologies nennt dies eine Demonstration des Konzepts. Er glaubt, dass das Modell bei der Skalierung die Codierungsgenauigkeit verbessert und potenziell Menschen davon abhalten kann, die GUI manuell zu codieren.

Das pix2code-Programm basiert auf Faltungsnetzen und wiederkehrenden neuronalen Netzen. Das Training auf der Nvidia Tesla K80 GPU dauerte etwas weniger als fünf Stunden - in dieser Zeit wurde das System optimiert 109×106Parameter für einen Datensatz. Wenn Sie sie also für drei Plattformen trainieren möchten, dauert es ungefähr 15 Stunden.

Das Modell kann Code generieren, indem nur Pixelwerte aus einem Screenshot an der Eingabe akzeptiert werden. Mit anderen Worten, für ein neuronales Netzwerk ist keine spezielle Pipeline erforderlich, um Merkmale zu extrahieren und Eingabedaten vorzuverarbeiten.

Die Erzeugung von Computercode aus dem Screenshot kann mit der Erzeugung einer Textbeschreibung aus einem Foto verglichen werden. Dementsprechend besteht die Architektur des pix2code-Modells aus drei Teilen: 1) einem Computer-Vision-Modul zum Erkennen von Bildern, dort präsentierten Objekten, deren Position, Form und Farbe (Schaltflächen, Beschriftungen, Elementcontainer); 2) ein Sprachmodul zum Verstehen des Textes (in diesem Fall einer Programmiersprache) und zum Erzeugen syntaktisch und semantisch korrekter Beispiele; 3) Verwenden der beiden vorherigen Modelle zum Generieren von Textbeschreibungen (Code) für erkannte Objekte (GUI-Elemente).



Der Autor macht darauf aufmerksam, dass das neuronale Netzwerk auf einem anderen Datensatz trainiert werden kann - und dann beginnt, Code in anderen Sprachen für andere Plattformen zu generieren. Der Autor selbst plant dies nicht, da er pix2code als eine Art Spielzeug betrachtet, das einige der Technologien demonstriert, an denen sein Startup arbeitet. Jeder kann das Projekt jedoch verzweigen und eine Implementierung für andere Sprachen / Plattformen erstellen.

In einem wissenschaftlichen Artikel schrieb Tony Beltramelli, dass er Datensätze für das Training des neuronalen Netzwerks im Repository auf GitHub veröffentlichen würde. Das Repository wurde bereits erstellt. Dort stellt der Autor im FAQ-Bereich klar, dass er Datensätze nach der Veröffentlichung (oder Verweigerung der Veröffentlichung) seines Artikels auf der NIPS 2017-Konferenz veröffentlichen wird . Eine Benachrichtigung der Konferenzorganisatoren sollte Anfang September erfolgen, damit die Datensätze gleichzeitig im Repository angezeigt werden. Es werden Screenshots der GUI, des entsprechenden Codes in der Programmiersprache und der Compilerausgabe für die drei Hauptplattformen angezeigt.

In Bezug auf den Quellcode des Programms versprach der Autor keine Veröffentlichung, aber angesichts des überwältigenden Interesses an seiner Entwicklung beschloss er, es ebenfalls zu öffnen. Dies erfolgt gleichzeitig mit der Veröffentlichung von Datensätzen.

Der wissenschaftliche Artikel wurde am 22. Mai 2017 auf der Preprint-Website arXiv.org (arXiv: 1705.07962) veröffentlicht.

Source: https://habr.com/ru/post/de404245/


All Articles