Mémo Primer Flask

Aidemy 2020/10/4

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Cette fois, je publierai une introduction au mémo Flask. Ravi de vous rencontrer.

À propos de Flask

Qu'est-ce que Flask

-Flask est un framework d'application Web Python. Similaire à Rails en Ruby. ・ Flask est utilisé comme suit.

#Importer le package Flask
from flask import Flask
#Créer une instance de la classe Flask
app=Flask(__name__)
#Définir la fonction lors de l'accès à l'URL
@app.route('/')
def hello_world():
    return "Hello World"
#Exécuter uniquement lorsque le code est exécuté directement.
if __name__=='__main__':
    app.run()

[email protected] ("URL") __ consiste à exécuter la fonction définie après celle-ci lors de l'accès à l'URL. -Le nom sera décrit plus tard.

Quel est le nom_

-Name est une variable qui est automatiquement définie pour chaque fichier, et __le nom de fichier est stocké. __ -De plus, main est stocké lorsque "lorsque le fichier est exécuté directement (lorsque le fichier est exécuté par une commande, etc.)". __ (Donc, si vous définissez name == ' main', la condition est que le fichier soit exécuté directement)

Mise en œuvre de l'application de discrimination de caractères manuscrits

Description du code

@app.route('/')
def hello_world():
    return render_template('index.html')

-HTML peut être reflété lors de l'accès à l'URL de @ app.route () avec __render_template ('HTML file') __. -Le fichier HTML à ce moment doit être placé dans le dossier templates.

Écoulement brutal

#Tout d'abord, listez les classes à classer
classes = ["0","1","2","3","4","5","6","7","8","9","10"]
#Spécifier la taille de l'image
image_size = 28
#Spécifiez le dossier pour enregistrer l'image téléchargée et spécifiez l'extension pour permettre le téléchargement
UPLOAD_FOLDER = "uploads"
ALLOWED_EXTENSIONS = set(['png','jpg','jpeg'])

#Instanciation de classe Flask
app = Flask(__name__)

#Jugement de l'extension de l'image téléchargée
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

#Chargement du modèle
model = load_model('./model.h5')

-Les jugements d'extension "'.' In filename" et "filename.rsplit ('.', 1) [1] .lower () in ALLOWED_EXTENSIONS" sont des __ expressions conditionnelles__. Le résultat du jugement d'exactitude de ceci est retourné par retour.

Traiter les fichiers image téléchargés côté HTML

・ Du côté HTML, j'ai expliqué que "・ Formulaire de saisie: __ \

\ </ form> __ (télécharger l'image avec method =" POST ")", mais ici, les données saisies dans le formulaire de saisie sont reçues. Voir le déroulement de l'exécution de la fonction.

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':

-Si vous définissez \ côté HTML puis __ "if request.method == 'POST'" "__ dans Flask, il est défini après cela pour le fichier téléchargé. Des fonctions, etc. peuvent être appliquées.

-De plus, si le fichier n'est pas stocké dans le 'POST' reçu, ou si le nom du fichier n'est pas attaché en premier lieu, l'apprentissage par le modèle n'est pas possible, donc dans un tel cas, redirigez vers la page d'origine.

#Que faire si le fichier n'existe pas
  if 'file' not in request.files:
            flash('Pas de fichier')
            return redirect(request.url)
        file = request.files['file']
#Traitement lorsque le nom de fichier est vide
        if file.filename == '':
            flash('Pas de fichier')
            return redirect(request.url)

-Après cela, déterminez si l'extension est appropriée avec le "allowed_file ()" défini précédemment, et enregistrez-le avec "file.save".

Chargez l'image enregistrée et appliquez le modèle

#Lisez l'image reçue et convertissez-la au format np
            img = image.load_img(filepath, grayscale=True, target_size=(image_size,image_size))
            img = image.img_to_array(img)
            data = np.array([img])
#Transmettre les données transformées au modèle pour la prédiction
            result = model.predict(data)[0]
            predicted = result.argmax()
            pred_answer = "c'est" + classes[predicted] + "est"

-Par __image.load_img (URL de l'image, target_size = (vertical, horizontal)) , l'image est chargée et redimensionnée en même temps. grayscale = True signifie que la lecture se fait en monochrome. - Image.img_to_array (image) __ fait de l'image un tableau NumPy. De plus, __np.array ([img]) __ répertorie img. -La raison de la conversion de cette manière est que seule une liste de NumPy peut être passée à la prédiction par le modèle (model.predict ()).

  return render_template("index.html",answer=pred_answer)

-En définissant __render_template ("fichier HTML", réponse = résultat de la prédiction) __, le résultat de la prédiction peut être passé à {{}} du fichier HTML.

Déployer

-Déployer signifie publier l'application créée via Heroku.

Recommended Posts

Mémo Primer Flask
Mémo de base Flask
Introduction de flacon - Mémo d'application Blueprint
ballon
ballon
Hello World avec Flask [Mémo approprié]
mémo gzip
Mémo Raspberry-pi
Mémo Pandas
Mémo HackerRank
Premier flacon
Mémo Python
mémo python
mémo graphène
mémo pyenv
Mémo Matplotlib
mémo pytest
mémo sed
Mémo Python
Installer Memo
Mémo BeautifulSoup4
mémo networkx
mémo python
mémo Tomcat
mémo de commande
Mémo du générateur.
mémo psycopg2
Mémo Python
Mémo SSH
Mémo pour l'envoi et la réception d'images avec Python (Flask)
Mémo: rtl8812
mémo pandas
Mémo Shell
Mémo Python
Mémo Pycharm