Um die Leistung des Modells nach dem Erstellen des Modells durch Deep Learning usw. effektiv als Demo darzustellen, ist es für viele Personen (insbesondere Nicht-Ingenieure) vertrauter und vorzuziehen, es in der GUI anzuzeigen, anstatt es in der CUI auszuführen. Es ist jedoch schwierig, bei jeder Demo einen GUI-Bildschirm zu erstellen, der dem Modell entspricht, und die meisten Entwickler haben es satt, das Modell zu lernen und die Parameter anzupassen. Daher besteht immer noch die Motivation, die GUI zu implementieren. Nicht (← Es ist auf persönliche Erfahrung zurückzuführen und ich gebe zu, dass ich nicht einverstanden bin).
Zu dieser Zeit habe ich etwas namens Gradio gefunden, das eine einfache Web-GUI mit einem Minimum an Codierung erstellen kann, also habe ich es tatsächlich versucht.
Dieses Mal werden wir eine Methode zur Ausführung von ESRGAN entwickeln, einer GAN-Methode zur vierfachen Vergrößerung der Auflösung von auf Tensorhub veröffentlichten Bildern über eine Web-GUI.
Der erstellte Webbildschirm sieht folgendermaßen aus.
Greifen Sie nach Ausführung des folgenden Befehls auf http://127.0.0.1:7860/ zu.
git clone https://github.com/sey323/gradio-esrgan.git
cd gradio-esrgan
pip install -r requirements.txt
python gradio-esrgan.py
import gradio as gr
import tensorflow as tf
import tensorflow_hub as hub
model = hub.load("https://tfhub.dev/captain-pool/esrgan-tf2/1")
def predict(
inp,
):
"""
Verwenden Sie ESRGAN, um das Eingabebild in eine 4-fache Auflösung zu konvertieren.
https://tfhub.dev/captain-pool/esrgan-tf2/1
inp :
Bild eingeben
"""
h, w, c = inp.shape #Bildgröße aus Eingabebild abrufen
inp = inp.reshape((-1, h, w, c))
inp = tf.cast(inp, tf.float32)
output = model(inp)
output = tf.cast(tf.clip_by_value(output[0], 0, 255), tf.uint8)
return output
def gradio_gui():
"""
Definieren Sie den Gui-Bildschirm für Gradio
"""
image = gr.inputs.Image(label="Input Image",)
output = gr.outputs.Image(label="Output Image", type="numpy")
interface = gr.Interface(fn=predict, inputs=image, outputs=output)
interface.launch()
if __name__ == "__main__":
gradio_gui()
Installieren Sie den Tensorflow-Hub unter Offizielle Website.
pip install "tensorflow>=2.0.0"
pip install --upgrade tensorflow-hub
Installieren Sie unter Bezugnahme auf Offizielle Website.
pip install gradio
Laden Sie unter Bezugnahme auf die offizielle Website von TensorFlow Hub das ESRGAN-Modell herunter, das das diesmal verwendete Bild mit niedriger Auflösung in hochauflösendes konvertiert, und erstellen Sie ein zu verwendendes Programm. Ich habe eine Methode erstellt, die das Eingabebild in ein Format konvertiert, das von Tensorflow gelernt werden kann, und ein hochauflösendes Bild zurückgibt, damit es von Gradio ausgeführt werden kann.
import tensorflow as tf
import tensorflow_hub as hub
model = hub.load("https://tfhub.dev/captain-pool/esrgan-tf2/1")
def predict(
inp,
):
"""
Verwenden Sie ESRGAN, um das Eingabebild in eine 4-fache Auflösung zu konvertieren.
https://tfhub.dev/captain-pool/esrgan-tf2/1
inp :
Bild eingeben
"""
h, w, c = inp.shape #Bildgröße aus Eingabebild abrufen
inp = inp.reshape((-1, h, w, c))
inp = tf.cast(inp, tf.float32)
output = model(inp)
output = tf.cast(tf.clip_by_value(output[0], 0, 255), tf.uint8)
return output
gradio ist grob in drei klassen unterteilt.
Klasse | Überblick |
---|---|
gr.inputs | Eingabe für das Modell(Image, Textbox,Audio etc.) |
gr.outputs | Modellausgabe(Image, Textbox,Audio etc.) |
gr.Interface | Definieren Sie Funktionen, Eingaben und Ausgaben, die von Gradio ausgeführt werden sollen, und zeichnen Sie einen Webbildschirm. |
Neben Bildern können Sie auch Text, Audio, Kontrollkästchen, Schieberegler usw. für Ein- und Ausgänge auswählen, um flexibel auf das von Ihnen verwendete Modell zu reagieren. ESRGAN verwendet dieses Mal nur Bild für Eingabe und Ausgabe. Wählen Sie daher Bild. Bild wird in Form von "Kissen" übergeben.
python
import gradio as gr
~~~~Kürzung~~~~~
def gradio_gui():
"""
Definieren Sie den Gui-Bildschirm für Gradio
"""
image = gr.inputs.Image(label="Input Image",)
output = gr.outputs.Image(label="Output Image", type="numpy")
interface = gr.Interface(fn=predict, inputs=image, outputs=output)
interface.launch()
if __name__ == "__main__":
gradio_gui()
Nachdem Sie das obige Programm gesteuert haben, führen Sie es mit dem folgenden Befehl aus.
python
$ python gradio-esrgan.py
2020-11-23 01:39:34.566267: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f9d83e7e520 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-11-23 01:39:34.566291: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
Running locally at: http://127.0.0.1:7860/
To get a public link for a hosted model, set Share=True
Interface loading below...
<IPython.lib.display.IFrame object at 0x147170040>
Die URL wird nach der Ausführung angezeigt. Greifen Sie also darauf zu.
Wenn Sie auf den Webbildschirm zugreifen, wird der obige Bildschirm angezeigt. Das linke Feld zeigt das in "gr.inputs" angegebene Eingabeelement, und die Ausgabe zeigt das in "gr.outputs" angegebene Ausgabeelement.
Versuchen Sie, das Bild von Mandrill zu vergrößern. Das einzugebende Bild kann per Drag & Drop in den Eingabebereich gezogen werden. Nach einigen Sekunden Wartezeit wird das verarbeitete Bild im Bereich "OUTPUT IMAGE" angezeigt. Laden Sie das Bild mit der rechten Maustaste herunter, indem Sie es speichern und mit dem vergrößerten Bild vergleichen.
Das Bild links wird vom Finder auf die gleiche Größe vergrößert, und das Bild rechts wird generiert. Es kann bestätigt werden, dass die Felllinien und Konturlinien in der durch ESRGAN vergrößerten Linie viel schärfer ausgedrückt werden.
Mit Gradio konnte ich einen Webbildschirm erstellen, auf dem ich problemlos ein mit Tensorflow erstelltes Modell veröffentlichen kann. Sie müssen nur die drei Module beschreiben, um den Webbildschirm zu definieren. Sobald Sie sich daran gewöhnt haben, können Sie in weniger als 10 Minuten eine Webseite erstellen.
GradioHub bietet eine Vielzahl weiterer interessanter Beispiele. Sehen Sie hier, was passiert, wenn Sie andere Texte und Audiodateien verwenden.
Recommended Posts