Un programme qui détermine automatiquement s'il s'agit d'une animation ou d'une photo lorsque vous entrez l'image d'une personne [python]

introduction

J'étudiais la reconnaissance faciale pour faire diverses choses avec l'apprentissage automatique, mais je l'ai fait sans prendre de pause. Si vous incluez une image d'une personne, il jugera s'il s'agit d'une animation ou d'une photo. Comme il est basé sur le visage, il peut être considéré comme une photo si vous incluez une image réaliste. Je pense qu'il peut être utilisé par le PC pour déterminer s'il est vraiment proche de la réalité grâce à une image réaliste dans un style d'action réelle.

Choses à préparer

python3.○ OpenCV pour la version python Classificateur en cascade pour l'animation photographique (décrit plus loin)

développement de

C'est une chose simple, alors codons-le dès que vous obtenez ce dont vous avez besoin.

la mise en oeuvre

(Dossier) img-Stockage d'images
(Dossier) haarcascade-Stockage du classificateur en cascade
(Fichier) auto_anime_classifier.py

Veuillez placer les éléments ci-dessus dans le même répertoire Les fichiers à mettre dans le dossier haarcascade cette fois

Code source

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.')

Commentaire

J'omettrai la plupart d'OpenCV car il y a beaucoup de blogs de commentaires avec un contenu merveilleux. Entrez l'image dans le dossier img et lisez-la avec imread (). Après cela, il est grisé.

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

Créez un classificateur qui lit les fichiers de classification en cascade pour chaque photo et animation.

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

Stockez le nombre lu par chaque classificateur dans face_count. La présence ou l'absence de ceci est le critère.

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

Enfin, la partie jugement. Comparez s'il est simplement reconnu ou non.

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.')

Proximité de la réalité Peut-être photo (probablement une photo en direct) → Les deux attributs (l'un ou l'autre fonctionne) → Peut-être un anime (probablement une photo) → Indécisable (je ne sais pas, hors de question)

jouer

Jouons modérément l'explication.

Utiliser normalement

beatles.jpeg Ce sont les Beatles. C'est cool ~

Plz input filename
>> beatles.jpeg
Maybe photo.

Cela ressemble à une photo. C'est vrai.

aoba.jpeg Le personnage principal de NEW GAME. mignon ~

Plz input filename
>> aoba.jpeg
Maybe anime.

Cela semble être une animation. Eh bien, vous pouvez le voir si vous le regardez.

Jouez avec des images subtiles

Ce n'était pas intéressant de le faire normalement, alors mettons dans une vidéo que vous ne savez pas laquelle le programme montre.

seeu.png Il s'agit de M. Layer SeeU de Chine. L'image est tirée de son compte Twitter.

Plz input filename
>> seeu.png
Maybe anime.

Cela semble être un anime. D'un point de vue humain, cela ne ressemble pas à une image. Le traitement d'image signifie-t-il quelque chose?

kuroisabaku.png C'est un personnage créé par MMORPG appelé Black Desert. Un type de jeu qui prend des heures à se caractériser.

Plz input filename
>> kuroisabaku.png
Both attributes.

Il semble que vous pouvez aller dans les deux sens. À part les grands yeux noirs et le petit nez, je ne pense pas que cela ressemble à une image.

honey.jpeg C'est un personnage masculin créé dans un jeu appelé Honey Select. Vous pouvez créer des personnages illusoires sans aucune gêne, même pour des personnages autres que des jeunes.

Plz input filename
>> honey.png
Maybe photo.

Cela semble être une photographie. Je me demande si la forme du nez est un tournant important. À propos, le personnage masculin réalisé avec PSO2 a été traité comme une image.

orient.jpg Poupée de l'industrie orientale. C'est très réaliste.

Plz input filename
>> orient.jpg
Both attributes.

Il y avait un élément d'anime. Je me demande pourquoi ...

À la fin

Cette fois, le programme consistait à déterminer si chaque juge pouvait reconnaître le visage. S'il devait être amélioré, j'ai senti qu'il était nécessaire de sortir des éléments de jugement détaillés de chaque appareil de jugement et de créer des paramètres sous forme de valeurs numériques. Vous devez étudier la cascade. Cela fait longtemps, mais merci d'avoir regardé jusqu'à présent! !!

Recommended Posts

Un programme qui détermine automatiquement s'il s'agit d'une animation ou d'une photo lorsque vous entrez l'image d'une personne [python]
Un programme qui détermine si un nombre entré en Python est un nombre premier
Un programme python qui redimensionne une vidéo et la transforme en image
Il y a un modèle que le programme ne s'est pas arrêté lors de l'utilisation du thread Python
Un programme qui redimensionne automatiquement la taille d'image requise pour les icônes d'application iOS en Python
[Python] Temps d'exécution lorsqu'une fonction est saisie dans une valeur de dictionnaire
Découpez une image avec python
Générer automatiquement un collage à partir de la liste d'images
Générer automatiquement un commentaire de chaîne de document Python avec Emacs
Un programme qui détermine automatiquement s'il s'agit d'une animation ou d'une photo lorsque vous entrez l'image d'une personne [python]
Essayez de générer une image avec aliénation
Comment recadrer une image avec Python + OpenCV
Essayez de générer automatiquement des documents Python avec Sphinx
Générez une instruction d'insertion à partir de CSV avec Python.
Créer une image avec des caractères avec python (japonais)
traitement d'image python
Faire de chaque page PowerPoint un fichier image en Python
Créez un fichier image à l'aide de PIL (Python Imaging Library).
[Python] [Windows] Enregistrer une capture d'écran sous forme d'image
Comment créer un téléchargeur d'image avec Bottle (Python)
Lors de l'écriture d'un programme en Python
Script Python qui collecte automatiquement des images typiques à l'aide de la recherche d'images Bing
Technologie de base qui détermine facilement si la valeur est "oui" ou "non"
Lever une exception ou enregistrer lorsqu'une variable de modèle Django n'est pas valide
[Python3] Code qui peut être utilisé lorsque vous souhaitez découper une image dans une taille spécifique