Application Web Python x Flask x Tensorflow.Keras qui prédit les races de chats 2

introduction

Modification du programme Python créé dans Application Web Python x Flask x Tensorflow.Keras qui prédit les races de chats.

Changements

Changer de fichier

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__)

#modèle(model.h5)Et une liste de classes(cat_list)Lis
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":
        #Enregistrez le fichier téléchargé une fois
        f = request.files["file"]
        #filepath = "./static/" + datetime.now().strftime("%Y%m%d%H%M%S") + ".png "
        #f.save(filepath)
        #Charger le fichier image
        #Redimensionner le fichier image
        input_img = load_img(f, target_size=(299, 299))
        
        #Exécution d'une fonction pour vérifier le type de chat
        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]

        #Sécuriser un tampon pour écrire des images
        buf = BytesIO()
        #Ecrire les données d'image dans la mémoire tampon
        input_img.save(buf,format="png")

        #Encoder des données binaires avec base64
        # utf-Décoder à 8
        input_img_b64str = base64.b64encode(buf.getvalue()).decode("utf-8") 

        #Ajouter des informations accessoires
        input_img_b64data = "data:image/png;base64,{}".format(input_img_b64str) 

        #Passer au HTML
        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>
Résultat de la prédiction<br>
      {{no1_cat}}:{{no1_cat_pred}}<br>
      {{no2_cat}}:{{no2_cat_pred}}<br>
      {{no3_cat}}:{{no3_cat_pred}}<br>
      <hr>
      {% endif %}
Veuillez sélectionner un fichier et envoyer<br>
      <form action = "./" method = "POST" 
         enctype = "multipart/form-data">
         <input type = "file" name = "file" />
         <input type = "submit"/>
      </form>
   </body>
</html>

Résultat d'exécution

L'image est affichée à 299 x 299 (la taille d'entrée du modèle reste ...)

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

Recommended Posts

Application Web Python x Flask x Tensorflow.Keras qui prédit les races de chats 2
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
Python x Flask x PyTorch Construction facile d'une application Web de reconnaissance numérique
[Python] Conception d'applications Web pour l'apprentissage automatique
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)
Analyser et visualiser JSON (application Web ⑤ avec Python + Flask)
Développement d'applications Web avec Flask
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Application Web réalisée avec Python + Flask (en utilisant VScode) # 1-Construction d'environnement virtuel-
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
Matériel pédagogique Web pour apprendre Python
Ensuite, utilisez Python (Flask) pour Heroku!
Créer une application Web avec Flask ①
Web scraping pour les débutants en Python (1)
Créer une application Web avec Flask ③
Web scraping pour les débutants en Python (4) -1
Créer une application Web avec Flask ④
Développement d'applications avec Docker + Python + Flask
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (2) [Création de projet]
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Je souhaite créer une application Web en utilisant React et Python flask
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (1) [Construction de l'environnement]
[Python] Application Web à partir de 0! Pratique (2) -Bonjour le monde-
[Python] Application Web à partir de 0! Pratique (3) - Mise en œuvre de l'API
Grattage WEB avec Python (pour mémo personnel)
Essayez d'utiliser le framework d'application Web Flask
[Python] Application Web à partir de 0! Pratique (4) - Mise en forme des données-
[Python] Une application web rapide avec Bottle!
Application Web facile avec Python + Flask + Heroku
Exécutez une application Web Python avec Docker
[Python] Application Web à partir de 0! Pratique (0) -Construction environnementale-
[Pour les débutants] Essayez le web scraping avec Python
Acquisition de données à partir de l'API d'analyse avec l'application Web Client API Google pour python Partie 2
Cours de production d'applications Web appris avec Flask of Python Partie 2 Chapitre 1 ~ Échange JSON ~
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (3) [Création d'application / configuration de la base de données]