Ein Programm, das automatisch feststellt, ob es sich um eine Animation oder ein Foto handelt, wenn Sie das Bild einer Person eingeben [Python]

Einführung

Ich habe Gesichtserkennung studiert, um verschiedene Dinge mit maschinellem Lernen zu tun, aber ich habe es geschafft, ohne eine Pause zu machen. Wenn Sie ein Bild einer Person einfügen, wird beurteilt, ob es sich um eine Animation oder ein Foto handelt. Da es auf dem Gesicht basiert, kann es als Foto beurteilt werden, wenn Sie ein realistisches Bild hinzufügen. Ich denke, es kann vom PC verwendet werden, um durch ein realistisches Bild in einem Live-Action-Stil festzustellen, ob es wirklich realitätsnah ist.

Dinge vorzubereiten

python3.○ OpenCV für Python-Version Kaskadenklassifikator für fotografische Animation (später beschrieben)

Entwicklung von

Es ist eine einfache Sache, also lassen Sie es uns codieren, sobald Sie das bekommen, was Sie brauchen.

Implementierung

(Ordner) img-Bildspeicherung
(Ordner) Haarkaskade-Speicher für Kaskadenklassifizierer
(Datei) auto_anime_classifier.py

Bitte legen Sie die oben genannten Elemente in das gleiche Verzeichnis Die Dateien, die diesmal in den Haarkaskadenordner gelegt werden sollen

Quellcode

auto_anime_classifier.py


import cv2
import numpy as np

if __name__ == '__main__':

    CASCADE_PATH = 'haarcascade/'
    face_count = []

    print('Plz input filename')
    img_name = input('>> ')
    img = cv2.imread('img/'+str(img_name), cv2.IMREAD_COLOR)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    photo = cv2.CascadeClassifier(CASCADE_PATH + 'haarcascade_frontalface_alt.xml')
    anime = cv2.CascadeClassifier(CASCADE_PATH + 'lbpcascade_animeface.xml')

    face_count.append(len(photo.detectMultiScale(gray, 1.1, 3)))
    face_count.append(len(anime.detectMultiScale(gray, 1.1, 3)))

    if face_count[0] > face_count[1]:
        print('Maybe photo.')
    elif face_count[1] > face_count[0]:
        print('Maybe anime.')
        elif face_count[0] >= 1 and face_count[1] >= 1:
        print('Both attributes.')
    elif face_count[0] == 0 and face_count[1] == 0:
        print('Undeciable.')

Kommentar

Ich werde den größten Teil von OpenCV weglassen, da es viele Kommentar-Blogs mit wunderbaren Inhalten gibt. Geben Sie das Bild in den Ordner img ein und lesen Sie es mit imread (). Danach ist es grau.

print('Plz input filename')
img_name = input('>> ')
img = cv2.imread('img/'+str(img_name), cv2.IMREAD_COLOR)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Erstellen Sie einen Klassifizierer, der die Kaskadenklassifizierungsdateien für jedes Foto und jede Animation liest.

photo = cv2.CascadeClassifier(CASCADE_PATH + 'haarcascade_frontalface_alt.xml')
anime = cv2.CascadeClassifier(CASCADE_PATH + 'lbpcascade_animeface.xml')

Speichern Sie die von jedem Klassifikator gelesene Nummer in face_count. Das Vorhandensein oder Fehlen davon ist das Kriterium.

face_count.append(len(photo.detectMultiScale(gray, 1.1, 3)))
face_count.append(len(anime.detectMultiScale(gray, 1.1, 3)))

Schließlich das Urteilsteil. Vergleichen Sie, ob es einfach erkannt wird oder nicht.

if face_count[0] > face_count[1]:
   print('Maybe photo.')
elif face_count[1] > face_count[0]:
   print('Maybe anime.')
elif face_count[0] >= 1 and face_count[1] >= 1:
   print('Both attributes.')
elif face_count[0] == 0 and face_count[1] == 0:
   print('Undeciable.')

Nähe zur Realität Vielleicht Foto (wahrscheinlich ein Live-Foto) → Beide Attribute (eines funktioniert) → Vielleicht Anime (vielleicht ein Bild) → Unentscheidbar (ich weiß nicht, außer Frage)

abspielen

Lassen Sie uns die Erklärung moderat spielen.

Normalerweise verwenden

beatles.jpeg Das sind die Beatles. Es ist cool ~

Plz input filename
>> beatles.jpeg
Maybe photo.

Es sieht aus wie ein Foto. Korrekt.

aoba.jpeg Die Hauptfigur von NEW GAME. süß ~

Plz input filename
>> aoba.jpeg
Maybe anime.

Es scheint eine Animation zu sein. Nun, Sie können es sehen, wenn Sie es betrachten.

Spielen Sie mit subtilen Bildern

Es war nicht interessant, es normal zu machen, also lassen Sie uns ein Video einfügen, von dem Sie nicht wissen, welches das Programm zeigt.

seeu.png Dies ist Mr. Layer SeeU aus China. Das Bild stammt aus seinem Twitter-Account.

Plz input filename
>> seeu.png
Maybe anime.

Es scheint ein Anime zu sein. Aus menschlicher Sicht sieht es nicht wie ein Bild aus. Bedeutet Bildverarbeitung etwas?

kuroisabaku.png Es ist ein von MMORPG erstellter Charakter namens Black Desert. Eine Art von Spiel, dessen Charakterisierung Stunden dauert.

Plz input filename
>> kuroisabaku.png
Both attributes.

Es scheint, dass Sie in beide Richtungen gehen können. Abgesehen von den großen schwarzen Augen und der kleinen Nase denke ich nicht, dass es sich wie ein Bild anfühlt.

honey.jpeg Es ist eine männliche Figur, die in einem Spiel namens Honey Select hergestellt wurde. Sie können Illusionsfiguren ohne Unbehagen erstellen, auch für andere Charaktere als junge Leute.

Plz input filename
>> honey.png
Maybe photo.

Es scheint ein Foto zu sein. Ich frage mich, ob die Form der Nase ein wichtiger Wendepunkt ist. Übrigens wurde die mit PSO2 erstellte männliche Figur als Bild behandelt.

orient.jpg Orient Industriepuppe. Es ist sehr realistisch.

Plz input filename
>> orient.jpg
Both attributes.

Es gab ein Anime-Element. Ich wundere mich warum ...

Am Ende

Bei dem Programm ging es diesmal nur darum, ob jeder Richter das Gesicht erkennen konnte. Wenn es verbessert werden sollte, hielt ich es für notwendig, detaillierte Beurteilungselemente von jedem Beurteilungsgerät auszugeben und Parameter als numerische Werte zu erstellen. Sie müssen Kaskadierung studieren. Es ist lange her, aber danke, dass du es bisher gesehen hast! !!

Recommended Posts

Ein Programm, das automatisch feststellt, ob es sich um eine Animation oder ein Foto handelt, wenn Sie das Bild einer Person eingeben [Python]
Ein Programm, das bestimmt, ob eine in Python eingegebene Zahl eine Primzahl ist
Ein Python-Programm, das die Größe eines Videos ändert und es in ein Bild verwandelt
Es gibt ein Muster, das das Programm bei Verwendung von Python-Threading nicht gestoppt hat
Ein Programm, das die für iOS-App-Symbole in Python erforderliche Bildgröße automatisch ändert
[Python] Ausführungszeit, wenn eine Funktion in einen Wörterbuchwert eingegeben wird
Schneiden Sie ein Bild mit Python aus
Collage automatisch aus Bildliste generieren
Python Docstring-Kommentar automatisch mit Emacs generieren
Ein Programm, das automatisch feststellt, ob es sich um eine Animation oder ein Foto handelt, wenn Sie das Bild einer Person eingeben [Python]
Versuchen Sie, ein Bild mit Entfremdung zu erzeugen
So beschneiden Sie ein Bild mit Python + OpenCV
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Python-Bildverarbeitung
Machen Sie jede PowerPoint-Seite zu einer Bilddatei in Python
Erstellen Sie eine Bilddatei mit PIL (Python Imaging Library).
[Python] [Windows] Speichern Sie einen Screenshot als Bild
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
Beim Schreiben eines Programms in Python
Python-Skript, das mithilfe der Bing-Image-Suche automatisch typische Bilder sammelt
Grundtechnologie, die leicht feststellt, ob der Wert "Ja" oder "Nein" ist
Lösen Sie eine Ausnahme oder ein Protokoll aus, wenn eine Django-Vorlagenvariable ungültig ist
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten