Python Bibliothek dlib zur Gesichtserkennung – Error «Generator NMake Makefiles does not support platform specification, but platform x64 was specified.» bei pip install dlib

Python

Es ist ein großer Vorteil im Leben, die Fehler, aus denen man lernen kann, möglichst früh zu begehen. – Winston Churchill

Die letzten Monate haben meine 14-jährige Tochter und ich zusammen ein Python Bootcamp absolviert. Als Basis diente uns der Kurs «Python Bootcamp: Vom Anfänger zum Profi, inkl. Data Science» auf Udemy. Als eigene gemeinsame Abschlussarbeit haben wir die Grundstücksüberwachung mit Objekterkennung realisiert. Objekterkennung heisst in diesem Zusammenhang die Klassifizierung und Erkennung von Aktivitäten durch Person, Tier oder Fahrzeug.

In einen weiteren Schritt steht als Idee die Identifizierung der Personen an. Wir möchten informiert werden, ob der Bruder, die Tochter oder ein Kollege das Grundstück betritt. Später eventuell auch die Haustiere der Nachbarn oder den Gesichtsausdruck um Infos zu liefern. Meine Tochter war der Meinung, eine Meldung wie: «Achtung, wütender Nachbar in Anmarsch.» wäre Cool. Einige Ideen sind sicher nicht ganz Datenschutz-Konform, wie zum Beispiel die Verwendung unserer Drohne zur Personenidentifizierung.

Für die Identifizierung von Personen stiess ich auf dlib, ein Modul das mit drei Millionen Gesichtern trainiert wurde. Die persönliche Identifizierung soll mit weiteren geringen Trainingsaufwand möglich sein. Beim ersten Versuch diese zu installieren begrüsste mich eine Fehlermeldung, dass cmake nicht gefunden wurde. Der Versuch «cmake» mit pip zu installieren wollte mir auch nicht gelingen. Der nächste Versuch war die Installation mittels MSI Installer von cmake.org. Diese funktionierte, die Installation von dlib aber nicht. Es begrüsste mich die Meldung:

Collecting dlib
Using cached …
Building wheels for collected packages: dlib
  Running setup.py bdist_wheel for dlib ... error
  running bdist_wheel
  running build
  running build_py
  package init file 'dlib\__init__.py' not found (or not a regular file)
  running build_ext
  Building extension for Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)]
  Invoking CMake setup: ….
  -- Building for: NMake Makefiles
  CMake Error in CMakeLists.txt:
    Generator
      NMake Makefiles
    does not support platform specification, but platform
      x64
    was specified.
  CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
  CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
  -- Configuring incomplete, errors occurred!
…

CMake verlangte nach einen C – Kompiler. Ich war etwas überrascht, weil ich bisher dachte pip ist in etwa ähnlich wie Nuget. Ich wurde eines Besseren belehrt. Damit ich einen C-Kompiler habe, musste ich meine Visual Studio Installation anpassen. Die C/C++ SDK Pakete hatte ich bisher nicht installiert. Nach der Aktivierung und Aktualisierung von Visual Studio 2017 mit den C/C++ Komponenten führte ich den Befehl «pip install dlib» erneut aus und siehe da:

Collecting dlib
  Using cached https://files.pythonhosted.org/packages/35/8d/e4ddf60452e2fb1ce3164f774e68968b3f110f1cb4cd353235d56875799e/dlib-19.16.0.tar.gz
Building wheels for collected packages: dlib
  Running setup.py bdist_wheel for dlib ... 
done
  Stored in directory: …
Successfully built dlib
Installing collected packages: dlib
Successfully installed dlib-19.16.0

Ein kurzer Test in Jupyter und die Module waren vorhanden. Unser zweites Experiment kann beginnen.