[PYTHON] [Fehler] Finde Maki Horikita durch maschinelles Lernen

【Umgebung】

windows8.1  Anaconda(python2.7)

【Überblick】

Ich habe den Code geschrieben, um anhand des Bildes zu entscheiden, ob es sich um Maki Horikita handelt. Sammeln Sie Gesichtsbildordner, digitalisieren Sie sie und trainieren Sie sie mit scicit-learn.

Ordnerstruktur


|---face_category
     |---horikita_face(Maki Horikitas Gesichtsbildordner 200 Stück)
     |---joyu_face(200 Gesichtsbildordner außer Maki Horikita)
     |---horikita_siken(20 Bildordner von Maki Horikita zum Testen)
     |---face_rec2.py(horikita_Gesicht aus Siken-Bild extrahieren)
     |---LinearSVC.py(Hauptverarbeitung)
     |---haarcascade_frontalface_alt.xml(Kaskadendatei)

face_rec2.py


#-*- coding:utf-8 -*-
def picture_face(before_image, num):

    import cv2
    import os
    import sys
    
    cascade_path = "haarcascade_frontalface_alt.xml"
    
    #Datei lesen
    image_file = cv2.imread('C:/Users/nobu/Desktop/my_programs/face_category/horikita_siken/%s' % before_image)
    
    #Graustufenumwandlung
    image_gray = cv2.cvtColor(image_file, cv2.COLOR_BGR2GRAY)
    
    #Ermitteln Sie die Merkmalsmenge des Kaskadenklassifikators
    cascade = cv2.CascadeClassifier(cascade_path)
    
    #Ausführung der Objekterkennung (Gesichtserkennung)
    facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
    
    if facerect == None:
        sys.exit()
    
    for rect in facerect:
        #Schneiden Sie nur das Gesicht aus und speichern Sie
        x = rect[0]
        y = rect[1]
        width = rect[2]
        height = rect[3]
        dst = image_file[y:y+height, x:x+width]
        resize_image = cv2.resize(dst,(256,256))
        new_image_path = 'C:/Users/nobu/Desktop/my_programs/face_category/' + str(num) + '_face.jpg'
        print new_image_path
        cv2.imwrite(new_image_path, resize_image)

LinearSVC.py


# -*- coding:utf-8 -*-

from sklearn.svm import LinearSVC
from PIL import Image
import os
import glob
import numpy as np
import face_rec2

current_dir = os.getcwd()

#Trainingsdaten
#Konvertieren Sie das Bild von Maki Horikita in einen numerischen Wert
horikita_list = glob.glob(current_dir + "\\horikita_face\\*") 

horikita_dim2 = []

for image in horikita_list:
    #Ausschluss von Systemdateien
    if image == current_dir + "\\horikita_face\\Thumbs.db":
        continue
    else:
        x = np.array([])
        horikita_dim3 = np.array(Image.open(image).convert('L'))
        #scikit-Es scheint, dass Lernen nicht mehr als 3 Dimensionen verarbeiten kann. Konvertieren Sie also in 2 Dimensionen
        for i in xrange(256):
            x = np.r_[x,horikita_dim3[i]]
        horikita_dim2.append(x)

data_training1 = horikita_dim2

#Konvertieren Sie andere Bilder als Maki Horikita in numerische Werte
joyu_list = glob.glob(current_dir + "\\joyu_face\\*") 

joyu_dim2 = []

for image in joyu_list:
    #Ausschluss von Systemdateien
    if image == current_dir + "\\joyu_face\\Thumbs.db":
        continue
    else:
        x = np.array([])
        joyu_dim3 = np.array(Image.open(image).convert('L'))
        #scikit-Es scheint, dass Lernen nicht mehr als 3 Dimensionen verarbeiten kann. Konvertieren Sie also in 2 Dimensionen
        for i in xrange(256):
            x = np.r_[x,joyu_dim3[i]]
        joyu_dim2.append(x)
data_training2 = joyu_dim2

data_training = np.r_[data_training1, data_training2]

#Etiketteneinstellung
label_training = []
for i in xrange(400):
    if i < 200:
        label_training.append(1)
    else:
        label_training.append(0)

 #Lernen
estimator = LinearSVC(C=0.5)
estimator.fit(data_training, label_training)

j = 0
#Testdaten
for i in xrange(1,21):
    face_rec2.picture_face(str(i) + '.jpg', i)
    horikita_siken = np.array([])
    try:
        horikita = np.array(Image.open('C:/Users/nobu/Desktop/my_programs/face_category/' + str(i) + '_face.jpg').convert('L'))
        for j in xrange(256):
                    horikita_siken = np.r_[horikita_siken,horikita[j]]
        data_test = horikita_siken
        
        #Ich werde vorhersagen
        label_prediction = estimator.predict(data_test)
        
        if label_prediction == 1:
            print "----------------------------------------------"
            print str(i) + ".jpg ist Maki Horikita"
            print "----------------------------------------------"
        else:
            print "----------------------------------------------"
            print str(i) + ".jpg ist nicht Maki Horikita"
            print "----------------------------------------------"
    except:
        print "----------------------------------------------"
        print str(i) + ".jpg konnte nicht verarbeitet werden"
        print "----------------------------------------------"
        continue

【Ergebnis】

Misserfolg ...: müde: Ich habe mit 20 Gesichtsbildordnern von Maki Horikita zum Testen getestet, aber aus irgendeinem Grund Ich bekomme eine Ausgabe mit der Aufschrift "Es ist nicht Maki Horikita". Ich würde gerne wissen, ob es Lösungen oder Verbesserungen gibt.

[Referenzseite]

SVM versucht maschinelles Lernen mit Scikit-Learn Gesichtserkennung mit OpenCV durchführen, nur den Gesichtsteil [Python] zuschneiden und speichern

Recommended Posts

[Fehler] Finde Maki Horikita durch maschinelles Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Zusammenfassung des maschinellen Lernens von Python-Anfängern
Maschinelles Lernen
Kontrolle eines Sandwich-Mannes durch maschinelles Lernen ver4
Vier Betriebsregeln mit maschinellem Lernen 6 [Kommerziell]
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
Klassifizieren Sie Informationen zum maschinellen Lernen nach Themenmodellen
Analyse der gemeinsamen Raumnutzung durch maschinelles Lernen
Aktienkursprognose durch maschinelles Lernen Numerai Signals
[Übersetzung] scikit-learn 0.18 Einführung in maschinelles Lernen durch Tutorial scikit-learn
Angemessene Preisschätzung von Mercari durch maschinelles Lernen
[Memo] Maschinelles Lernen
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Klassifikation des maschinellen Lernens
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Beispiel für maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 1 und 2
Vorhersage von Zeitreihendaten durch AutoML (automatisches maschinelles Lernen)
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Machine Sommelier von Keras-
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Sammeln Sie Daten zum maschinellen Lernen, indem Sie aus biobasierten öffentlichen Datenbanken kratzen
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
Identifizieren Sie t + pazolite-Songs durch maschinelles Lernen (NNC-Challenge-Entwicklung)
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai
Ich war frustriert von Kaggle und versuchte, durch Schaben und maschinelles Lernen ein gutes Mietobjekt zu finden