[Python3] [Ubuntu16] [Docker] Essayez la reconnaissance faciale avec OpenFace

Aperçu

Créez un environnement (image Docker) qui peut exécuter OpenFace sur Python3 + Ubuntu16.04, et exécutez l'exemple de code de reconnaissance faciale OpenFace (comparaison de la distance entre deux faces) sur le conteneur.

Qu'est-ce qu'OpenFace

Créé par Brandon Amos de l'Université Carnegie Mellon. Il s'agit d'une open source spécialisée dans la reconnaissance faciale utilisant un réseau neuronal profond. Il s'agit d'une implémentation Python et Torch et est basée sur CVPR 2015. Vous trouverez ci-dessous un résumé de l'algorithme et des notes de publication. https://cmusatyalab.github.io/openface/

Algorithme OpenFace, (1) Détecter le visage avec un modèle pré-entraîné par dlib ou OpenCV (2) Convertissez pour que les positions des yeux et de la lèvre inférieure du visage soient les mêmes en utilisant la conversion Affin d'OpenCV et l'estimation de pose en temps réel de dlib. (3) Exprimez (ou intégrez) un visage sur une hypersphère unitaire de 128 dimensions à l'aide d'un réseau neuronal profond, et effectuez la reconnaissance faciale par des tâches de regroupement, de détection de similitude et de classification. ... Apparemment ...

supposition

-Docker doit être installé sur le PC

procédure

1. Création d'un Dockerfile

Créez le Dockerfile suivant dans votre répertoire de travail.

Je l'ai créé pour le moment, il peut donc y avoir des commandes supplémentaires.

Dockerfile


FROM ubuntu:16.04

#Mettre à jour le package apt
#Installation des packages apt requis
RUN apt-get update && apt-get upgrade -y && apt-get install -y wget sudo python-setuptools python-pip liblapack-dev libatlas-base-dev gfortran g++ build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev unzip cmake git python-dev python-numpy libboost-dev libboost-python-dev libboost-system-dev
#Installation des packages pip requis
RUN sudo pip install -U pip && sudo pip install numpy==1.12.0 scipy matplotlib cython scikit-image dlib pandas txaio

#Installation de la torche
WORKDIR /root
RUN git clone https://github.com/torch/distro.git ~/torch --recursive
WORKDIR /root/torch
RUN sudo dpkg --configure -a
RUN bash install-deps
RUN ./install.sh -y
RUN . /root/.bashrc
#Passer par le CHEMIN de la e commande
RUN export PATH=/root/torch/bin:$PATH;
RUN export LD_LIBRARY_PATH=/root/torch/lib:$LD_LIBRARY_PATH;

#Installer le package LUA pour Torch
#lua pour construire des luarocks**Pré-installé au besoin.
RUN sudo apt-get install lua5.3
RUN sudo apt-get install -y lua5.3-dev

#Installer luarocks
RUN mkdir luarocks
WORKDIR /root/torch/luarocks
RUN wget https://luarocks.org/releases/luarocks-3.3.1.tar.gz
RUN tar -xf luarocks-3.3.1.tar.gz
WORKDIR /root/torch/luarocks/luarocks-3.3.1
RUN ./configure
RUN make
RUN make install

#Installation du package LUA
RUN for NAME in dpnn nn optim optnet csvigo cutorch cunn fblualib torchx tds image nngraph; do sudo /root/torch/install/bin/luarocks install $NAME; done

#Installez OpenFace
RUN git clone https://github.com/cmusatyalab/openface ~/openface --recursive
WORKDIR /root/openface
RUN sudo python setup.py install
RUN sudo python3 setup.py install

#Installer les éléments supplémentaires requis
RUN ./models/get-models.sh
RUN ./demos/web/install-deps.sh
RUN sudo pip install -r demos/web/requirements.txt

#Installez ce dont vous avez besoin pour exécuter OpenFace sur python3
WORKDIR /root
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
RUN sudo python3 get-pip.py && python3 -m pip install -U pip
RUN sudo apt-get install -y python3-dev
# OpenCV,installation de dlib
RUN python3 -m pip install opencv_python dlib

terminal


usermac:~ user$ ls {Directeur de travail}
Dockerfile #Créé Dockerfile

2. Créez une image Docker (build docker)

terminal


docker build -t openface_ubuntu16_python3:1.0 {Chemin relatif ou absolu du répertoire de travail où se trouve le fichier Docker}

3. Démarrez le conteneur (docker run)

terminal


docker run -it -v {Chemin absolu du répertoire de travail}:/home/ openface_ubuntu16_python3:1.0 /bin/bash .

Le répertoire de travail de l'hôte et le répertoire personnel du conteneur sont partagés (volume).

Commande de confirmation de chemin absolu

terminal


usermac:work user$ pwd
/Users/{username}/openface_sample/work

4. Exécutez le code de démonstration OpenFace

Vérifiez la source d'OpenFace et le code de démonstration dans ~ / openface.

container


root@bb9464b46285:~# ls openface/
CONTRIBUTING.md  LICENSE    api-docs         build    data   docs        images      models                        openface          run-tests.sh  tests     util
Dockerfile       README.md  batch-represent  cloc.sh  demos  evaluation  mkdocs.yml  opencv-dlib-torch.Dockerfile  requirements.txt  setup.py      training

Cette fois, exécutez le code de démonstration compare.py pour déterminer si les visages des deux photos sont la même personne.

container


root@bb9464b46285:~# python3 openface/demos/compare.py openface/images/examples/lennon-1.jpg openface/images/examples/lennon-2.jpg 
Comparing images/examples/lennon-1.jpg with images/examples/lennon-2.jpg.
  + Squared l2 distance between representations: 0.782  #Résultat d'exécution

Je veux comparer ʻopenface / images / examples / lennon-1.jpg et ʻopenface / images / examples / lennon-2.jpg spécifiés après python3 openface / demos / compare.py 2 Spécifiez le nombre d'images. Cette fois, j'ai utilisé l'image d'exemple placée sous openface. Si le visage ne peut pas être détecté à partir de l'image spécifiée, une erreur se produit.

La distance entre les deux faces comparée à "0,782" Plus il est proche de «0», plus il est probable qu'il s'agisse de la même personne. Il semble que la valeur standard doit être jugée en la vérifiant avec les photos réellement utilisées.

Recommended Posts

[Python3] [Ubuntu16] [Docker] Essayez la reconnaissance faciale avec OpenFace
Essayez la reconnaissance faciale avec Python
Essayez la reconnaissance faciale avec python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
[python, openCV] base64 Reconnaissance faciale dans les images
API de reconnaissance faciale sans serveur conçue avec Python
Essayez de gratter avec Python.
Reconnaissance faciale avec Edison
Utiliser python avec docker
Maintenant, essayons la reconnaissance faciale avec Chainer (phase de prédiction)
Essai de reconnaissance faciale facile avec Jetson Nano et caméra Web
Maintenant, essayons la reconnaissance faciale avec Chainer (phase d'apprentissage)
Reconnaissance faciale avec OpenCV de Python
Essayez la sortie Python avec Haxe 3.2
Reconnaissance faciale par Amazon Rekognition
Détection de visage avec Python + dlib
Créer un environnement python3 avec ubuntu 16.04
Préparer l'environnement python3 avec Docker
Détection de visage avec Python + OpenCV
Essayez d'exécuter Python avec Try Jupyter
Reconnaissance faciale / coupe avec OpenCV
Essayez Selenium Grid avec Docker
Essayez de créer Jupyter Hub avec Docker
Reconnaissance des nombres dans les images avec Python
Essayez de gratter avec Python + Beautiful Soup
Détection de visage avec YOLO Face (Windows10, Python3.6)
Essayez d'exploiter Facebook avec Python
Détection de visage avec Lambda (Python) + Rekognition
Essayez la décomposition de valeurs singulières avec Python
Construire un environnement Mysql + Python avec docker
python x tensoflow x reconnaissance de visage d'image
Première reconnaissance faciale d'anime avec Chainer
Découpez le visage avec Python + OpenCV
Essayez la simulation de contrôle de fréquence avec Python
Développement d'applications avec Docker + Python + Flask
J'ai essayé la reconnaissance faciale avec OpenCV
[Pyenv] Construire un environnement python avec ubuntu 16.04
[Ubuntu 18.04] Créer un environnement Python avec pyenv + pipenv
Détection de visage avec Python + OpenCV (rotation invariante)
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Reconnaissance vocale en anglais avec python [speech to text]
Créer un environnement Jupyter Lab (Python) avec Docker
Essayez une formule utilisant Σ avec python
Derrière le flyer: utiliser Docker avec Python
Essayez de travailler avec des données binaires en Python
Essayez Python
Essayons gRPC avec Go et Docker
Introduction facile de la reconnaissance vocale avec Python
Essayez d'utiliser Python avec Google Cloud Functions
Reconnaissance faciale des personnages d'anime avec Keras
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Créer un environnement Python + uWSGI + Nginx avec Docker
Création d'un environnement Ubuntu, Python, OpenCV sur Docker
Essayez rapidement l'API Face de Microsoft en Python
Essayez le scraping HTML avec la bibliothèque Python
Essayez d'appeler Python depuis Ruby avec une économie
Environnement de lancement avec LineBot + Heroku + Docker + Python
Exécutez une application Web Python avec Docker
Essayez de dessiner une carte avec python + cartopy 0.18.0