[PYTHON] Créer un discriminateur Sato Yohei en utilisant OpenCV et TensorFlow

introduction

Yohei Sato avec moi

Le moment où Yohei Sato et moi aurions dû nous rencontrer pour la première fois était la nouvelle formation de diplômé 2008 de Yahoo Japan Corporation. L'expression «devrait être» s'explique par le fait que le nombre de nouveaux diplômés embauchés par Yahoo Japan Corporation à l'époque dépassait 250. C'était difficile que je n'avais aucune connaissance à moins que je ne devienne la même équipe dans la formation ou le département auquel j'étais affecté était le même.

Au moment de rejoindre l'entreprise, j'étais un débutant en programmation, et je demandais seulement "Puis-je manger des pointeurs?" On dit que Sato s'est porté volontaire pour entrer dans la classe de sélection et a surmonté la formation. Et parce qu'ils étaient affectés à des endroits différents, ils se sont croisés.

Après cela, de @ doradora09 qui est entré dans le département auquel j'appartenais en tant que junior "Sato parraine une session d'étude appelée TokyoR, alors si vous le souhaitez, pourquoi ne pas nous rejoindre?" De temps en temps, je commençais à apparaître au Tokyo R, et je me croisais à plusieurs reprises.

En 2015, après avoir changé d'emploi, j'étais dans un état impeccable après avoir subi une nouvelle restructuration. Quand j'ai contacté @ doradora09 sur un coup de tête, "J'ai rejoint Datum Studio, où Sato est le vice-président, alors pourquoi ne venez-vous pas m'écouter?" J'ai assisté à des séminaires Datum Studio dans le passé et j'ai trouvé que c'était une entreprise intéressante.

C'était censé être juste une histoire, mais c'est devenu une fête à boire et j'ai pu entrer en contact avec le vice-président, Sato. Et, en passant, il a été frappé par une calculatrice sur place et a décidé de rejoindre l'entreprise jusqu'à présent.

Qu'est-ce que Yohei Sato?

Yohei Sato est l'un des principaux spécialistes des données au Japon. En même temps, il est vice-président de Datum Studio Co., Ltd. Nous devrions viser Yohei Sato.

Création du détecteur Yohei Sato

Et si vous êtes un data scientist, vous devez extraire et comprendre les caractéristiques de Yohei Sato. Je pense que nous devons faire un effort pour nous rapprocher de cette fonctionnalité.

Donc, cette fois, j'ai extrait ce qui fait Sato Yohei des images collectées sur le net et dans Datum Studio. J'ai décidé de créer un détecteur Sato Yohei.

Sujet principal

Technologie d'utilisation et flux de traitement

Utilisez OpenCV pour le traitement d'image Nous utilisons tensorflow, qui est une bibliothèque d'apprentissage en profondeur, pour extraire des fonctionnalités. Pour le langage, j'ai choisi python3, qui peut les gérer de manière exhaustive.

Le flux de traitement est le suivant.

  1. Collection d'images (puissance humaine)
  2. Traitement d'image (échelle de gris utilisant OpenCV, identification du visage, recadrage de la partie du visage, conversion en image 64 * 64)
  3. Classer les images dans Yohei Sato et autres
  4. Créer un apprenant à l'aide de tensorflow
  5. Évaluation

environnement

Empruntez une bonne instance sur AWS et supposez que le système d'exploitation est Amazon Linux.

Lors du développement avec python3, nous avons introduit un environnement virtuel utilisant anaconda3.

conda create -n yohei python=3.5 numpy scipy pandas jupyter scikit-learn matplotlib
source activate yohei
conda install tensorflow
conda install -c menpo opencv3=3.1.0

J'ai rencontré un problème selon lequel OpenCV ne fonctionne pas sur Amazon Linux, j'ai donc fait référence à ce qui suit. http://amazarashi.me/archives/855

Collection d'images

Nous recherchons des images de Yohei Sato de face sur Internet et Datum Studio.

advent_2016_03.PNG

Traitement d'image

J'ai utilisé OpenCV pour le traitement d'image. Tout ce que vous avez à faire est d'exécuter le code ci-dessous.

import cv2, matplotlib
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display, Image
import os

def face_detector(img_path, i):
    #Chargement d'image
    img = cv2.imread(img_path)
    
    #Échelle de gris
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    #Détection facial
    img_face = faceCascade.detectMultiScale(img_gray, 1.1, 3)

    #Si le visage peut être détecté, procédez au traitement suivant
    if len(img_face) > 0:
        for rect in img_face:
            x = rect[0]
            y = rect[1]
            width = rect[2]
            height = rect[3]
            #Coupé
            dst = img_gray[y:y+height, x:x+width]
            # 64*Redimensionné à 64
            dst_resized = cv2.resize(dst,(64, 64))
            new_image_path = 'Répertoire de sortie' + str(i) + '.png'
            cv2.imwrite(new_image_path, dst_resized)
            i += 1
        
    return(i)

i = 0

for img_file in file_list:
    full_path_name = 'Stockage d'images'+ img_file
    i = face_detector(full_path_name, i)

De cette façon, vous pouvez créer une image de visage qui a été mise à l'échelle des gris et découpée à 64 * 64.

advent_2016_01.PNG

Classer les images dans Yohei Sato et autres

Les images sont classées manuellement dans Yohei Sato et autres. Préparez également un fichier csv avec l'étiquette de jugement d'exactitude suivante. (1 est Yohei Sato, 0 est autre que cela)

img_0.png 1
img_1.png 0
img_9.png 0
︙

Créer un apprenant à l'aide de tensorflow

Créez un apprenant en vous référant à ce qui suit.

Identifiez la société de production de l'anime Yuruyuri avec TensorFlow http://kivantium.hateblo.jp/entry/2015/11/18/233834

Je l'ajouterai plus tard d'ici. Veuillez patienter encore un peu.

Recommended Posts

Créer un discriminateur Sato Yohei en utilisant OpenCV et TensorFlow
Créer un outil de reconnaissance de visage à l'aide de TensorFlow
Créez un Mario en utilisant Numpy et OpenCV
J'ai créé un jeu ○ ✕ avec TensorFlow
[Introduction à Tensorflow] Comprendre correctement Tensorflow et essayer de créer un modèle
Fabriquez un incubateur à CO2 simple à l'aide de Raspberry PI et d'un capteur de CO2 (MH-Z14A)
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Créer une lecture de feuille de notes avec Python OpenCV (Conseils pour bien lire)
Je souhaite créer une application Web en utilisant React et Python flask
Créer un lecteur vidéo avec PySimpleGUI + OpenCV
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
Faisons un site multilingue en utilisant flask-babel
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
Une histoire addictive lors de l'utilisation de tensorflow sur Android
Une histoire sur l'apprentissage automatique simple avec TensorFlow
Estimation de l'orientation de la tête avec Python et OpenCV + dlib
J'ai essayé la détection d'objets en utilisant Python et OpenCV
Créez un chat bot et entraînez-vous à être populaire.
Créer une carte Web en utilisant Python et GDAL
[Chat De Tornado] Créez un chat en utilisant WebSocket dans Tornado
Essayez d'utiliser tensorflow ① Créez un environnement python et introduisez tensorflow
Faisons un module pour Python en utilisant SWIG
Étapes pour créer rapidement un environnement d'apprentissage en profondeur sur Mac avec TensorFlow et OpenCV