[PYTHON] Inférence d'image de visage à l'aide de Flask et TensorFlow

introduction

--Modification du tutoriel MNIST CNN de TensorFlow pour apprendre et déduire les images faciales. --Cette fois, j'effectuerai l'inférence à partir de Flask et afficherai le résultat.

Aperçu

40q6c-l084k.gif

Flask

Importer un modèle de formation

import face_deep

inférence

―― Nous permettons de faire des inférences avec des images de formation et des images de test. --Tous les .jpeg du dossier sont ciblés pour l'inférence.

@app.route('/predict/<folder>/<item>')
def predict(folder, item):
    """Inférence d'image."""

    if folder not in ['train', 'test']:
        abort(404)

    filename_list = sorted(glob.glob(os.path.join(DATA_PATH, folder, item, '*.jpeg')))

--Chaque image est lue avec «Oreiller» et redimensionnée, en niveaux de gris et la valeur est modifiée de «0-255» à «0-1».

    image_list = []
    for filename in filename_list:

        face = Image.open(filename)
        face = face.resize((IMG_ROWS, IMG_COLS), Image.LANCZOS)
        face = face.convert('L')
        face = np.array(face, dtype=np.float32) / 255.0
        face = np.ravel(face)
        image_list.append(face)

--Recueillez chaque image et entrez-la dans predict of face_deep.py --Comme pour le résultat de l'inférence, un tableau contenant une probabilité telle que «[99 0 0 0 0 0 0 0 0 0]» est renvoyé pour chaque image.

    percent_list = face_deep.predict(image_list, dtype='int')
    rows = []
    for filename, percent in zip(filename_list, percent_list):
        color = CLASSES.index(item) in [index for index, value in enumerate(percent) if value == max(percent)]
        row = {'filename': os.path.basename(filename), 'percent': percent, 'color': color}
        rows.append(row)

    return render_template('predict.html', folder=folder, item=item, headers=CLASSES, rows=rows)

modèle

--Par la "couleur" ci-dessus, le bleu "table-primaire" est défini si la réponse est correcte, et le rouge "table-danger" est défini si la réponse est incorrecte.

          {% if row.color %}
          <tr class="table-primary">
          {% else %}
          <tr class="table-danger">
          {% endif %}
            <td>
                <figure class="figure">
                  <img src="/data/{{ folder }}/{{ item }}/{{ row.filename }}?size=100" />
                  <figcaption class="figure-caption">{{ row.filename }}</figcaption>
                </figure>
            </td>

--La probabilité pour chaque classe de chaque image est affichée.

            {% for percent in row.percent %}
            <td scope="row">{{ percent }}%</td>

en conclusion

Recommended Posts

Inférence d'image de visage à l'aide de Flask et TensorFlow
Répondre à l'image redimensionnée à l'aide de Flask et PILImage
Détection d'image de visage similaire utilisant la reconnaissance faciale et le clustering PCA et K-means
Créer un outil de reconnaissance de visage à l'aide de TensorFlow
Reconnaissance d'image à l'aide de chevaux et de cerfs CNN
J'ai essayé de transformer l'image du visage en utilisant sparse_image_warp de TensorFlow Addons
Essayez d'utiliser tensorflow ① Créez un environnement python et introduisez tensorflow
POSTER l'image avec json et la recevoir avec flask
Créer un discriminateur Sato Yohei en utilisant OpenCV et TensorFlow
Segmentation d'image à l'aide de U-net
Téléchargeur d'images avec Flask
L'authentification Twitter utilisant Flask et React est très agressive avec WebSocket
[Python] Accès et recadrage des pixels d'image à l'aide d'OpenCV (pour les débutants)