[Python3] [Ubuntu16] [Docker] Versuchen Sie die Gesichtserkennung mit OpenFace

Überblick

Erstellen Sie eine Umgebung (Docker-Image), in der OpenFace unter Python3 + Ubuntu16.04 ausgeführt werden kann, und führen Sie den Beispielcode für die OpenFace-Gesichtserkennung (Vergleich des Abstands zwischen zwei Gesichtern) auf dem Container aus.

Was ist OpenFace?

Erstellt von Brandon Amos von der Carnegie Mellon University. Es ist eine Open Source, die sich auf die Gesichtserkennung mithilfe eines tiefen neuronalen Netzwerks spezialisiert hat. Es ist eine Python and Torch-Implementierung und basiert auf CVPR 2015. Unten finden Sie eine Zusammenfassung des Algorithmus und der Versionshinweise. https://cmusatyalab.github.io/openface/

OpenFace-Algorithmus, (1) Erkennen Sie das Gesicht mit einem vorab trainierten Modell mit dlib oder OpenCV (2) Konvertieren Sie so, dass die Positionen der Augen und der Unterlippe im Gesicht gleich sind, indem Sie die Affin-Konvertierung von OpenCV und die Echtzeit-Posenschätzung von dlib verwenden. (3) Drücken (oder Einbetten) eines Gesichts auf einer Hypersphäre mit 128 Dimensionen unter Verwendung eines tiefen neuronalen Netzwerks aus und führen Sie eine Gesichtserkennung durch Clustering, Ähnlichkeitserkennung und Klassifizierungsaufgaben durch. ... anscheinend ...

Annahme

-Docker muss auf dem PC installiert sein

Verfahren

1. Erstellen einer Docker-Datei

Erstellen Sie die folgende Docker-Datei in Ihrem Arbeitsverzeichnis.

Ich habe es vorerst erstellt, daher kann es zusätzliche Befehle geben.

Dockerfile


FROM ubuntu:16.04

#Apt-Paket aktualisieren
#Installation der erforderlichen apt-Pakete
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 der erforderlichen Pip-Pakete
RUN sudo pip install -U pip && sudo pip install numpy==1.12.0 scipy matplotlib cython scikit-image dlib pandas txaio

#Installation der Taschenlampe
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
#Gehen Sie den Pfad des Befehls durch
RUN export PATH=/root/torch/bin:$PATH;
RUN export LD_LIBRARY_PATH=/root/torch/lib:$LD_LIBRARY_PATH;

#Installieren Sie das LUA-Paket für Torch
#lua luarocks bauen**Bei Bedarf vorinstalliert.
RUN sudo apt-get install lua5.3
RUN sudo apt-get install -y lua5.3-dev

#Installieren Sie 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 des LUA-Pakets
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

#Installieren Sie 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

#Installieren Sie zusätzliche erforderliche Elemente
RUN ./models/get-models.sh
RUN ./demos/web/install-deps.sh
RUN sudo pip install -r demos/web/requirements.txt

#Installieren Sie alles, was Sie zum Ausführen von OpenFace auf Python3 benötigen
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,dlib Installation
RUN python3 -m pip install opencv_python dlib

terminal


usermac:~ user$ ls {Arbeitsverzeichnis}
Dockerfile #Dockerfile erstellt

2. Erstellen Sie ein Docker-Image (Docker-Build).

terminal


docker build -t openface_ubuntu16_python3:1.0 {Relativer oder absoluter Pfad zum Arbeitsverzeichnis, in dem sich die Docker-Datei befindet}

3. Starten Sie den Container (Docker-Lauf)

terminal


docker run -it -v {Absoluter Pfad des Arbeitsverzeichnisses}:/home/ openface_ubuntu16_python3:1.0 /bin/bash .

Das Arbeitsverzeichnis des Hosts und das Home-Verzeichnis des Containers werden gemeinsam genutzt (Volume).

Befehl zur Bestätigung des absoluten Pfades

terminal


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

4. Führen Sie den OpenFace-Demo-Code aus

Überprüfen Sie den OpenFace-Quell- und Demo-Code in ~ / 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

Führen Sie dieses Mal den Demo-Code compare.py aus, um festzustellen, ob die Gesichter auf den beiden Fotos dieselbe Person sind.

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  #Ausführungsergebnis

Ich möchte die Teile von openface / images / examples / lennon-1.jpg und openface / images / examples / lennon-2.jpg vergleichen, die nach python3 openface / demos / compare.py 2 angegeben sind Geben Sie die Anzahl der Bilder an. Dieses Mal habe ich das Beispielbild unter openface verwendet. Wenn das Gesicht anhand des angegebenen Bildes nicht erkannt werden kann, tritt ein Fehler auf.

Der Abstand zwischen den beiden Flächen, der mit "0,782" verglichen wurde. Je näher es an "0" liegt, desto wahrscheinlicher ist es, dass es sich um dieselbe Person handelt. Es scheint, dass der Standardwert beurteilt werden muss, indem er anhand der tatsächlich verwendeten Fotos überprüft wird.

Recommended Posts

[Python3] [Ubuntu16] [Docker] Versuchen Sie die Gesichtserkennung mit OpenFace
Versuchen Sie die Gesichtserkennung mit Python
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Gesichtserkennung mit Kamera mit opencv3 + python2.7
[python, openCV] base64 Gesichtserkennung in Bildern
Serverlose Gesichtserkennungs-API mit Python
Versuchen Sie es mit Python.
Gesichtserkennung mit Edison
Verwenden Sie Python mit Docker
Versuchen wir nun die Gesichtserkennung mit Chainer (Vorhersagephase).
Einfacher Gesichtserkennungsversuch mit Jetson Nano und Webkamera
Versuchen wir nun die Gesichtserkennung mit Chainer (Lernphase)
Gesichtserkennung mit OpenCV von Python
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Gesichtserkennung durch Amazon Rekognition
Gesichtserkennung mit Python + dlib
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Bereiten Sie die Python3-Umgebung mit Docker vor
Gesichtserkennung mit Python + OpenCV
Versuchen Sie, Python mit Try Jupyter auszuführen
Gesichtserkennung / Schneiden mit OpenCV
Probieren Sie Selenium Grid mit Docker aus
Versuchen Sie, Jupyter Hub mit Docker zu erstellen
Zahlenerkennung in Bildern mit Python
Versuchen Sie es mit Python + Beautiful Soup
Gesichtserkennung mit YOLO Face (Windows10, Python3.6)
Versuchen Sie, Facebook mit Python zu betreiben
Gesichtserkennung mit Lambda (Python) + Erkennung
Versuchen Sie die Singularwertzerlegung mit Python
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Python x Tensoflow x Gesichtserkennung
Erste Anime-Gesichtserkennung mit Chainer
Schneiden Sie das Gesicht mit Python + OpenCV aus
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Anwendungsentwicklung mit Docker + Python + Flask
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
[Ubuntu 18.04] Erstellen Sie eine Python-Umgebung mit pyenv + pipenv
Gesichtserkennung mit Python + OpenCV (invariante Rotation)
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Englische Spracherkennung mit Python [Rede zu Text]
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Versuchen Sie eine Formel mit Σ mit Python
Hinter dem Flyer: Docker mit Python verwenden
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Versuchen Sie Python
Versuchen wir es mit gRPC mit Go und Docker
Einfache Einführung der Spracherkennung mit Python
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Gesichtserkennung von Anime-Charakteren mit Keras
Verwenden Sie die Verschlüsselung der Verschlüsselungsbibliothek mit dem Python-Image von Docker
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Erstellt Ubuntu, Python, OpenCV-Umgebung auf Docker
Probieren Sie schnell die Microsoft Face API in Python aus
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Versuchen Sie, Python von Ruby aus mit Sparsamkeit aufzurufen
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
Führen Sie eine Python-Webanwendung mit Docker aus
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen