--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.
Flask
face_deep.py
précédemment créé.import face_deep
―― 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')
color
est donné comme True
si le résultat de l'inférence de l'image cible est correct et "False" s'il est incorrect.
--Avec filename
, vous pouvez créer un lien d'image à partir du modèle.
--Avec percent
, le modèle affiche la probabilité de chaque classe d'image. 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)
--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 %}
size
. <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>
Flask
, le résultat de l'inférence de l'image du visage était affiché.Recommended Posts