Ich bin verantwortlich für den Kundensupport eines IT-Unternehmens, das Selen mit Makros und Python ausführt. Ich habe an dem KI-Entwicklungswettbewerb "Neural Network Console Challenge" teilgenommen, den ich zufällig gefunden habe, also werde ich ihn veröffentlichen.
https://nnc-challenge.com/
"Neural Network Console (NNC)", ein GUI-Tool, mit dem Sony Network Communications Co., Ltd. KI ohne Programmierung entwickeln kann, Durch die Bereitstellung von 10.000 Bildpunkten für Personenbilder, die Pixta Co., Ltd. normalerweise nicht verarbeiten kann, scheint es sich um eine KI-Entwicklungsherausforderung zu handeln, die für Anfänger freundlich ist.
Bei dieser Herausforderung entscheidet jede Person über das Thema der Bildklassifizierung und lernt bei NNC. Übermittlung der Lernergebnisse zusammen mit dem Prozess.
Beim Betrachten der Bilder schien es viele Bilder von Menschen zu geben, also extrahierte ich zuerst das Gesicht. Schneiden Sie mit dem OpenCV-Klassifikator eine große Anzahl von Gesichtern aus einem PIXTA-Bild aus.
Bildvorverarbeitung? Ich habe mich auf den folgenden Artikel bezogen. Vielen Dank an die Poster, die auch für Anfänger leicht verständlich sind.
Erstellen Sie eine KI, die Zuckerbergs Gesicht mit tiefem Lernen identifiziert Gesichtserkennung für Momokuro-Mitglieder durch TensorFlow
# -*- coding:utf-8 -*-
import cv2
import numpy as np
from PIL import Image
#Ordner, in dem Sie das Bild gespeichert haben
input_data_path = './pixta_images/'
#Verzeichnis zum Speichern des zugeschnittenen Bildes
save_path = './cutted_face_images/'
#OpenCV-Standardklassifizierungspfad
cascade_path = './opencv/data/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)
#Anzahl erfolgreicher Gesichtserkennungen
face_detect_count = 0
#Wenn aus den gesammelten Bilddaten ein Gesicht erkannt wird, schneiden Sie es aus und speichern Sie es.
types = ['*.jpg']
paths = []
for t in types:
paths.extend(glob.glob(os.path.join(input_data_path, t)))
for p in paths:
img = cv2.imread(p, cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = faceCascade.detectMultiScale(gray, 1.1, 3)
if len(face) > 0:
for rect in face:
x = rect[0]
y = rect[1]
w = rect[2]
h = rect[3]
cv2.imwrite(save_path + 'cutted_face' + str(face_detect_count) + '.jpg', img[y:y+h, x:x+w])
face_detect_count = face_detect_count + 1
Aus 1500 Bildern wurden etwa 2500 Gesichter erkannt. Die erkannten Gesichter enthalten Schatten und Punktmuster, die wie Gesichter aussehen und manuell gelöscht werden. Ich habe ungefähr 1000 Blätter gelöscht und 1500 Gesichter hinterlassen.
Daten zum Lernen: PIXTA
Das Themenbeispiel des Managementbüros war die Klassifizierung nach Gefühlen wie glücklich / traurig / peinlich, aber wenn ich mir das Gesichtsfoto ansehe, lächle ich nur. Aus diesem Grund habe ich beschlossen, das Lächeln in verschiedene Typen einzuteilen.
Um es auf NNC hochladbar zu machen, werden wir 1500 Gesichter nach dem Grad des Lächelns sortieren.
Zuerst habe ich sie in zwei Kategorien eingeteilt, lachend und nicht lachend, und sie in Ordner gelegt. Bereiten Sie außerdem eine CSV vor, die den Dateinamen und die Bezeichnung definiert, und laden Sie sie auf NNC hoch.
Für das Lernmodell habe ich Folgendes basierend auf dem Erklärungsvideo über NNC gemacht, das von SONY auf YouTube verteilt wurde.
Das Lernergebnis ist ...
Nun, es gab Unterschiede in der Anzahl der Bilddaten für jedes Etikett, also frage ich mich, ob dies der Fall ist. Ich bin mir nicht sicher, aber die beiden Kategorien sind nicht interessant, deshalb werde ich die Kategorien als nächstes erhöhen.
Wir führen auch eine zusätzliche Gesichtsextraktion durch, bereiten jeweils etwa 200 Blätter vor und laden sie separat als Lerndaten und Testdaten hoch.
Es ist ein wunderbar hässliches Ergebnis. Wenn Sie diejenigen einschließen, die an einer Seite liegen, passt es irgendwie. Die Ursache kann sein, dass ich es beim Sortieren überhaupt nicht selbst definieren konnte. Wenn ich die ganze Zeit auf das extrahierte Lächeln schaue, verstehe ich nicht, was es ist, lol
Ich habe die Klassifizierung um eins reduziert und die Daten mit vier neu erstellt.
Es hat sich seit einiger Zeit sehr verbessert. Es erreichte jedoch nicht 70%.
Danach habe ich unter Bezugnahme auf den folgenden Videoturm versucht, Bildvergrößerung, Ausschnitt, Ausfall usw. durchzuführen, um ein Überlernen zu verhindern, aber die Genauigkeit hat sich nicht leicht verbessert.
Aufgrund der Frist scheint es, dass die Zeit mit den folgenden Ergebnissen abgelaufen ist, was die Mittelklasse reduziert.
Daten zum Lernen: PIXTA
Ich war mit dem Ergebnis, das ungefähr 75% betrug, nicht ganz zufrieden, aber wenn ich Zeit habe, würde ich es gerne noch einmal mit Bildern versuchen, die ich selbst vorbereitet habe. Ich habe es genossen, ohne Wissen daran zu arbeiten!