Facerecognition nutzen mit Nextcloud

Editiert: 26.03.21

Heute nach über einen Monat wieder ein kleiner Artikel über die Nextcloud und deren Plugins. Inzwischen dürfte ja bekannt sein, das ich fast alles auf meinem Server beherberge. Neben Nextcloud einen Pastebin Ersatz, einen URL Shortener sowie (ganz wichtig) einen Mailserver.

Nun ist meine Nextcloud wieder an der Reihe. Diese hat nun für die Galerie eine Gesichtserkennung oder auch Facerecognition bekommen. Mit genau der gleichen Funktion wie bei Google Fotos oder Apple Icloud Photos.
Wie habe ich das gemacht, wollt ihr nun wissen!?
Hier folgt die Anleitung. Diese weicht ein klein wenig vom Original ab, da ich ein paar Fehler beheben musste.

Was wird benötigt?

Der Server sollte mindestens

  • 4 GB RAM haben
  • Mindestens Quad-Core CPU
  • Memory_limit in der php.ini von ca. 4 GB
  • Nextcloud Instanz

Facerecognition App

Vorbereitung

Damit wir mit der eigentlichen Installation begonnen werden kann müssen einige Abhängigkeiten installiert werden.

Die da wären:

  • Dlib PHP
  • Pdlib

Auf gehts!

apt install libx11-dev make cmake

Zuerst wird Dlib von Github heruntergeladen und installiert. Ich habe die Installation mit meinem sudo berechtigten User erledigt und nicht direkt mit dem Root User. Dementsprechend liegen die Ordner in:

/home/USER/dlib
/home/USER/pdlib

Kompilieren von dlib

git clone https://github.com/davisking/dlib.git
cd dlib/dlib
mkdir build
cd build
sudo cmake -DBUILD_SHARED_LIBS=ON ..
sudo make
sudo make install

Im Anschluss folgt die Installation von pdlib. Hier wird PHP 7.3.xx oder 7.4 vorausgesetzt, denn mit dem abgeänderten Configure Befehl wird das Modul mit einer anderen API konfiguriert.Mein geänderter Installationablauf für pdlib.

git clone https://github.com/goodspb/pdlib.git
cd pdlib
sudo apt install pkg-config #ohne der Installation gibt es einen Error https://github.com/goodspb/pdlib/issues/17#issue-507010566
sudo phpize7.3
sudo ./configure --with-php-config=/usr/bin/php-config7.3 #Lösung für die API Version: https://github.com/tideways/php-xhprof-extension/issues/76#issuecomment-469160637
sudo make
sudo make install

Das original: (hier wird auf einer ältern API das Modul kompiliert (php 7.2)

Kompilieren von pdlib

git clone https://github.com/goodspb/pdlib.git
cd pdlib
phpize
./configure --enable-debug
make
sudo make install

Anpassen der PHP.ini

Nach dem hoffentlich alles richtig installiert wurde, muss die php.ini abgeändert werden. Die cli sowie auch die fpm Variante.

sudo vi /etc/php/7.3/cli/php.ini
sudo vi /etc/php/7.3/fpm/php.ini

In beiden INI Dateien wird unter Module folgende Zeile eingefügt.

[pdlib]
extension="pdlib.so"

Danach wird PHP und Apache bzw. Nginx, je nachdem was ihr nutzt neu gestartet. In meinem Fall ist es Nginx.

Damit die Bearbeitung etwas schneller geht in beiden *.ini Dateien das Memory Limit erhöhen.

memory_limit=4028

Mit einem Restart werden die Änderungen übernommen.

sudo service php7.3-fpm restart && sudo nginx restart

Installation von Facerecognition

Nachdem jetzt die Abhängigkeiten installiert wurden, kann es an die Nextcloud App gehen. Diese wird folgend installiert.

sudo apt-get update
sudo apt-get install git-core composer
cd /var/www/nextcloud/apps/   # or whatever is your path to nextcloud
git clone https://github.com/matiasdelellis/facerecognition.git
cd facerecognition/
make
chown -R www-data:www-data /var/www/nextcloud/apps/facerecognition
sudo service nginx restart

Die App ist nun installiert. Wechselt man nun in die Cloud sollte die Einstellung so aussehen.

Einstellungen im Admin Bereich

Wie man sieht ist die Ampel auf Grün und die Indexierung läuft. Dieser brauch bei mir aktuell 21 Tage!!

Ist die Konfiguration komplett, kann die erste Indexierung gestartet werden. Damit man einen User indexieren kann muss dieser in den persönlichen Einstellungen dies aktivieren!

Erst aktivieren, dann klappt das indexieren!

Wie man bei meiner Installation schön sieht kann dies je nachdem wieviele Bilder hier habt, eine Menge Zeit in Anspruch nehmen. Also direkt den OCC Befehl in einen Screen packen, oder in den Hintergrund schieben und den Job enteignen. Danach heisst es abwarten….

sudo -u www-data php /var/www/nextcloud/occ face:background_job -u Username
STRG+Z
disown %1

Nun sollte es laufen und sich die Anzeige stetig in der Cloud verändern.Weitere Infos dazu gibt es auf Github

Falls euch die Anleitung gefallen hat, findet ihr weitere Anleitungen auf meiner Webseite.

Quellen: matiasdelellis/github, goodspb/pdlib(github), tideways(github)