Python x Flask x Tensorflow.Keras Web-App, die Katzenrassen vorhersagt 2

Einführung

Das in [Python x Flask x Tensorflow.Keras-Webanwendung, die Katzenrassen vorhersagt] erstellte Python-Programm wurde geändert (https://qiita.com/Susasan/items/52d1c838eb34133042a3).

Änderungen

Datei ändern

sever.py


from flask import Flask, render_template, request
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.models import load_model
import numpy as np
from image_process import examine_cat_breeds
from datetime import datetime
import os
import cv2
import pandas as pd
import base64
from io import BytesIO

app = Flask(__name__)

#Modell-(model.h5)Und eine Liste von Klassen(cat_list)Lesen
model = load_model('model.h5')
cat_list = []
with open('cat_list.txt') as f:
    cat_list = [s.strip() for s in f.readlines()]
print('= = cat_list = =')
print(cat_list)


@app.route("/", methods=["GET","POST"])
def upload_file():
    if request.method == "GET":
        return render_template("index.html")

    if request.method == "POST":
        #Speichern Sie die hochgeladene Datei einmal
        f = request.files["file"]
        #filepath = "./static/" + datetime.now().strftime("%Y%m%d%H%M%S") + ".png "
        #f.save(filepath)
        #Bilddatei laden
        #Ändern Sie die Größe der Bilddatei
        input_img = load_img(f, target_size=(299, 299))
        
        #Ausführung einer Funktion zur Überprüfung des Katzentyps
        result = examine_cat_breeds(input_img, model, cat_list)
        print("result")
        print(result)

        no1_cat = result[0,0]
        no2_cat = result[1,0]
        no3_cat = result[2,0]

        no1_cat_pred = result[0,1]
        no2_cat_pred = result[1,1]
        no3_cat_pred = result[2,1]

        #Sichern Sie sich einen Puffer zum Schreiben von Bildern
        buf = BytesIO()
        #Schreiben Sie Bilddaten in den Puffer
        input_img.save(buf,format="png")

        #Codieren Sie Binärdaten mit base64
        # utf-Bei 8 dekodieren
        input_img_b64str = base64.b64encode(buf.getvalue()).decode("utf-8") 

        #Fügen Sie zufällige Informationen hinzu
        input_img_b64data = "data:image/png;base64,{}".format(input_img_b64str) 

        #An HTML übergeben
        return render_template("index.html", input_img_b64data=input_img_b64data, 
        no1_cat=no1_cat, no2_cat=no2_cat, no3_cat=no3_cat,
        no1_cat_pred=no1_cat_pred, no2_cat_pred=no2_cat_pred, no3_cat_pred=no3_cat_pred)

if __name__ == '__main__':
    app.run(host="0.0.0.0")

index.html


<!DOCTYPE html>
<html>
   <body>
      {% if no1_cat %}
      <img src="{{input_img_b64data}}" border="1" ><br>
Vorhersageergebnis<br>
      {{no1_cat}}:{{no1_cat_pred}}<br>
      {{no2_cat}}:{{no2_cat_pred}}<br>
      {{no3_cat}}:{{no3_cat_pred}}<br>
      <hr>
      {% endif %}
Bitte wählen Sie eine Datei und senden Sie<br>
      <form action = "./" method = "POST" 
         enctype = "multipart/form-data">
         <input type = "file" name = "file" />
         <input type = "submit"/>
      </form>
   </body>
</html>

Ausführungsergebnis

Das Bild wird mit 299 x 299 angezeigt (die Eingabegröße des Modells bleibt erhalten ...)

スクリーンショット 2020-03-29 16.46.18.png

Recommended Posts

Python x Flask x Tensorflow.Keras Web-App, die Katzenrassen vorhersagt 2
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
Python x Flask x PyTorch Einfacher Aufbau einer Webanwendung zur Nummernerkennung
[Python] Webanwendungsdesign für maschinelles Lernen
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
Analysieren und visualisieren Sie JSON (Webanwendung ⑤ mit Python + Flask)
Entwicklung von Webanwendungen mit Flask
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Webanwendung mit Python + Flask (unter Verwendung von VScode) # 1 - Aufbau einer virtuellen Umgebung-
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Web-Lehrmaterialien zum Erlernen von Python
Verwenden Sie als nächstes Python (Flask) für Heroku!
Erstellen einer Webanwendung mit Flask ①
Web Scraping für Anfänger in Python (1)
Erstellen einer Webanwendung mit Flask ③
Web Scraping für Anfänger in Python (4) -1
Erstellen einer Webanwendung mit Flask ④
Anwendungsentwicklung mit Docker + Python + Flask
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (2) [Projekterstellung]
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (1) [Umgebungskonstruktion]
[Python] Webanwendung von 0! Hands-on (2) -Hallo Welt-
[Python] Webanwendung von 0! Hands-on (3) -API-Implementierung-
WEB-Scraping mit Python (für persönliche Notizen)
Versuchen Sie es mit dem Webanwendungsframework Flask
[Python] Webanwendung von 0! Hands-on (4) -Datenformung-
[Python] Eine schnelle Webanwendung mit Bottle!
Einfache Web-App mit Python + Flask + Heroku
Führen Sie eine Python-Webanwendung mit Docker aus
[Python] Webanwendung von 0! Hands-on (0) -Umweltbau-
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Datenerfassung von der Analytics-API mit dem Google API-Client für die Python Part 2-Webanwendung
Kurs zur Erstellung von Webanwendungen, der mit Flask of Python Teil 2 Kapitel 1 ~ JSON-Austausch ~ gelernt wurde
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (3) [Anwendungserstellung / DB-Einstellung]