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.
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 ...
-Docker doit être installé sur le PC
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
terminal
docker build -t openface_ubuntu16_python3:1.0 {Chemin relatif ou absolu du répertoire de travail où se trouve le fichier Docker}
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).
terminal
usermac:work user$ pwd
/Users/{username}/openface_sample/work
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