c't 11/2017
S. 90
Know-how
TensorFlow
Aufmacherbild

Superresolution

Bilder skalieren mit neuronalen Netzen und TensorFlow

Googles Bibliothek TensorFlow eignet sich als Universalwerkzeug für Experimente mit neuronalen Netzen. Wir haben damit ein Netz darauf trainiert, die Auflösung von Bildern zu verbessern. Das Netz erzeugt sichtbar schärfere Bilder als die Standardskalierung in Grafikprogrammen, da es Formen im Eingabebild erkennt und fehlende Pixel sinnvoll ergänzt.

Auch wenn neuronale Netze meist in der Cloud gerechnet werden: Die nötige Software ist Open Source und läuft auf ganz normalen PCs. Die Frameworks nutzen dabei zwei grundsätzlich unterschiedliche Methoden. Die erste verdrahtet vordefinierte Neuronenschichten miteinander, für die die Entwickler sowohl die Berechnung der Neuronenaktivität (Forward Pass) als auch die Ableitung (Backward Pass) im Code definiert haben. Die Optimierungsalgorithmen, die während des Trainings die Gewichte an den Synapsen herausfinden, nutzen die Ableitung der Fitness-Funktion. Die zweite Methode erlaubt völlig frei, einen Forward Pass als Formel zu definieren, und berechnet die Ableitung automatisch. So arbeitet Googles TensorFlow und ermöglicht daher beliebige Experimente mit neuronalen Netzen. Im Prinzip eignet sich das Framework für jedes Problem, bei dem ein Optimierungsalgorithmus automatisch aus Trainingsdaten die Parameter einer Formel schlussfolgern soll.

Die Formeln definiert man in TensorFlow als ganz normalen Quellcode. Das Framework hat Bindings für Python, Go und Java. Wir haben das Python-API verwendet, da es den vollen Funktionsumfang abdeckt und bei TensorFlow-Projekten auf GitHub mit Abstand am häufigsten eingesetzt wird. Der Python-Code