[PYTHON] Ich habe mit dem Lernprogramm TensorFlow --⑥ einen Dir en grey face-Klassifikator erstellt

Einführung

――Es ist sehr einfach zu lesen und die Kommentare sind sorgfältig geschrieben, sodass selbst ich, ein Anfänger von Python, verstehen konnte, was ich tat.

Programm

main.py


#!/usr/local/bin/python
# -*- coding: utf-8 -*-

import sys
import cv2
import random
import numpy as np
import tensorflow as tf
import tensorflow.python.platform

#Anzahl der Identifikationsetiketten(Diesmal Kyo:0,Kaoru: 1,Shinya:2 so 3)
NUM_CLASSES = 3

#Bildgröße beim Lernen(px)
IMAGE_SIZE = 28

#Anzahl der Abmessungen des Bildes(28* 28*Farbe(?))
IMAGE_PIXELS = IMAGE_SIZE*IMAGE_SIZE*3

#Legen Sie den für das Lernen erforderlichen Datenpfad und den Lernumfang fest
#Integrierte TensorFlow-Funktion, mit der Parametereinstellungen, Standardwerte und Erklärungen zum Hilfebildschirm registriert werden können
flags = tf.app.flags
FLAGS = flags.FLAGS

#Trainingsdaten
flags.DEFINE_string('train', '/workspace/dir/train/data.txt', 'File name of train data')

#Überprüfungstestdaten
flags.DEFINE_string('test', '/workspace/dir/test/data.txt', 'File name of train data')

#Ordner, in dem Daten abgelegt werden
flags.DEFINE_string('train_dir', /workspace/dir/data', 'Directory to put the training data.')

#Anzahl der Trainingsversuche zum Datenlernen
flags.DEFINE_integer('max_steps', 100, 'Number of steps to run trainer.')

#Wie viele Bilder sollen in einer Studie verwendet werden?
flags.DEFINE_integer('batch_size', 20, 'Batch size Must divide evenly into the dataset sizes.')

#Wenn die Lernrate zu klein ist, wird das Lernen nicht fortgesetzt, und wenn sie zu groß ist, konvergiert oder divergiert der Fehler nicht.
flags.DEFINE_float('learning_rate', 1e-4, 'Initial learning rate.')

#Lernmodell Teil der KI(neurales Netzwerk)Erschaffen
# images_placeholder:Platzhalter fuer Bild, keep_prob:Abbrecherquote Ort_Inhaber wird ein Argument
#Gibt die Wahrscheinlichkeit jedes Etiketts für das Eingabebild aus und gibt sie zurück

####
###Fügen Sie hier die Verarbeitung von Trainingsmodellen hinzu
####

if __name__ == '__main__':
  #Datei öffnen
  f = open(FLAGS.train, 'r')

  #Array zum Einfügen von Daten
  train_image = []
  train_label = []

  for line in f:
    #Durch Leerzeichen mit Ausnahme von Zeilenumbrüchen getrennt
    line = line.rstrip()
    l = line.split()

    #Daten lesen und auf 28x28 reduzieren
    img = cv2.imread(l[0])
    img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))

    #Nach dem Anstehen 0-Auf einen Float-Wert von 1 setzen
    train_image.append(img.flatten().astype(np.float32)/255.0)

    #Etikett 1-of-Mit der k-Methode vorbereiten
    tmp = np.zeros(NUM_CLASSES)
    tmp[int(l[1])] = 1
    train_label.append(tmp)
 
  #In das Numpy-Format konvertieren
  train_image = np.asarray(train_image)
  train_label = np.asarray(train_label)
  f.close()

  f = open(FLAGS.test, 'r')
  test_image = []
  test_label = []
  for line in f:
    line = line.rstrip()
    l = line.split()
    img = cv2.imread(l[0])
    img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))
    test_image.append(img.flatten().astype(np.float32)/255.0)
    tmp = np.zeros(NUM_CLASSES)
    tmp[int(l[1])] = 1
    test_label.append(tmp)
  test_image = np.asarray(test_image)
  test_label = np.asarray(test_label)
  f.close()

  #Geben Sie den Bereich an, der in das TensorBoard-Diagramm ausgegeben werden soll
  with tf.Graph().as_default():
    #Tensor zum Einfügen von Bildern(28*28*3(IMAGE_PIXELS)Beliebig viele dimensionale Bilder(None)Ich habe eine Minute)
    images_placeholder = tf.placeholder("float", shape=(None, IMAGE_PIXELS))

    #Tensor, um ein Etikett zu setzen(3(NUM_CLASSES)Beliebig viele dimensionale Beschriftungen(None)Geben Sie die Minuten ein)
    labels_placeholder = tf.placeholder("float", shape=(None, NUM_CLASSES))

    #Temporärer Tensor für die Abbrecherquote
    keep_prob = tf.placeholder("float")

    # inference()Ein Modell machen
    logits = inference(images_placeholder, keep_prob)

    # loss()Den Verlust berechnen
    loss_value = loss(logits, labels_placeholder)

    # training()Trainieren und Anpassen der Parameter des Lernmodells
    train_op = training(loss_value, FLAGS.learning_rate)

    #Berechnung der Genauigkeit
    acc = accuracy(logits, labels_placeholder)

    #Bereit zum Speichern
    saver = tf.train.Saver()

    #Sitzung erstellen(TensorFlow-Berechnungen müssen in einer absoluten Sitzung durchgeführt werden)
    sess = tf.Session()

    #Variable Initialisierung(Nach dem Starten der Sitzung initialisieren)
    sess.run(tf.global_variables_initializer())

    #TensorBoard-Anzeigeeinstellungen(Tensor Board deklarativ?)
    summary_op = tf.summary.merge_all()

    # train_Geben Sie den Pfad für die Ausgabe des TensorBoard-Protokolls mit dir an
    summary_writer = tf.summary.FileWriter(FLAGS.train_dir, sess.graph)

    #Eigentlich max_Führen Sie das Training so oft wie Schritt durch
    for step in range(FLAGS.max_steps):
      for i in range(len(train_image)/FLAGS.batch_size):
        # batch_Durchführung eines Trainings für Größenbilder
        batch = FLAGS.batch_size*i

        # feed_Geben Sie die Daten an, die mit dict in den Platzhalter eingefügt werden sollen
        sess.run(train_op, feed_dict={
          images_placeholder: train_image[batch:batch+FLAGS.batch_size],
          labels_placeholder: train_label[batch:batch+FLAGS.batch_size],
          keep_prob: 0.5})

      #Berechnen Sie die Genauigkeit nach jedem Schritt
      train_accuracy = sess.run(acc, feed_dict={
        images_placeholder: train_image,
        labels_placeholder: train_label,
        keep_prob: 1.0})
      print "step %d, training accuracy %g"%(step, train_accuracy)

      #Fügen Sie nach jedem Schritt einen Wert hinzu, der auf dem TensorBoard angezeigt werden soll
      summary_str = sess.run(summary_op, feed_dict={
        images_placeholder: train_image,
        labels_placeholder: train_label,
        keep_prob: 1.0})
      summary_writer.add_summary(summary_str, step)

  #Anzeigegenauigkeit für Testdaten nach dem Training
  print "test accuracy %g"%sess.run(acc, feed_dict={
    images_placeholder: test_image,
    labels_placeholder: test_label,
    keep_prob: 1.0})

  #Trainieren Sie die Daten und speichern Sie das endgültige Modell
  # "model.ckpt"Ist der Name der Ausgabedatei
  save_path = saver.save(sess, "model2.ckpt")

Ergänzungen und Ausreden

Alle Seitenlinks

Recommended Posts

Ich habe mit dem Lernprogramm TensorFlow --⑥ einen Dir en grey face-Klassifikator erstellt
Ich habe mit TensorFlow --⑧ Learning Execution einen Dir en Grey Face Classifier erstellt
Ich habe mit dem TensorFlow --⑦ Lernmodell einen Dir en grey Gesichtsklassifikator erstellt
Ich habe mit TensorFlow - (1) Introduction einen Dir en grey face-Klassifikator erstellt
Ich habe mit der TensorFlow-④-Gesichtsextraktion einen Dir en grey-Gesichtsklassifikator erstellt
Ich habe mit dem TensorFlow --⑩ Gesichtsklassifizierungstest einen Dir-Grau-Gesichtsklassifikator erstellt
Ich habe mit TensorFlow - Dir Playing (final) einen Dir en grey face-Klassifikator erstellt.
Ich habe mit TensorFlow --⑫ Web Release einen Dir en Grey Face Classifier erstellt
Ich habe mit der TensorFlow --② - Umgebungskonstruktion einen Dir en grey face-Klassifikator erstellt
Ich habe mit TensorFlow --⑪ Web Release Preparation einen Dir en Grey Face Classifier erstellt
[Python] Ich habe einen Klassifikator für Iris erstellt [Maschinelles Lernen]
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Ich habe eine C ++ - Lernseite erstellt
Ich habe einen Line-Bot mit Python gemacht!
Erstellen Sie mit TensorFlow eine Gesichtserkennung
Gesichtserkennung mit einem Kaskadenklassifikator
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
Ich habe mit Ren’py ein Einführungsspiel für das Schulfest gemacht
〇✕ Ich habe ein Spiel gemacht
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Ich habe ein Lernkit für word2vec / doc2vec / GloVe / fastText erstellt
Ich habe versucht, eine Gesichtsdiagnose-KI für professionelle Golferinnen zu erstellen ③
Ich habe mit dem Qore SDK eine App zum Schätzen des Muskeltrainings erstellt
Ich habe einen Original-Programmführer mit der NHK-Programmführer-API erstellt.
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe einen Python-Text gemacht
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe einen Zwietrachtbot gemacht
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Ich habe ein Spiel namens Battle Ship mit Pygame und Tkinter gemacht
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Wollen Sie nicht sagen, dass Sie ein Gesichtserkennungsprogramm erstellt haben?
Ich habe versucht, einen Transvestitenwettbewerb mit der Detect-API von Face ++ zu bewerten
Ich habe ein Ausgabeprogramm für Primzahlentabellen in verschiedenen Sprachen erstellt
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
Ich habe ein Programm erstellt, das den Tierkreis mit tkinter automatisch berechnet
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt