Di. Apr 13th, 2021
4.7
(3)

Editiert: 26.03.21

Heute nach über einen Monat wieder ein kleiner Artikel was die Nextcloud betrifft. 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 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  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 ö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

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

Wie fandest du den Post?

Auf einen Stern klicken zum bewerten

durchschnittlich 4.7 / 5. bereits abgestimmt haben: 3

Keine Bewertungen bisher, sei der erste

Von lars

Blogger und Fachangestellter für Bäderbetriebe. Fliege in meiner Freizeit mit einer Drohne umher. Absolut interessiert in Sachen Linux, Windows, Serverhosting.

11 Gedanken zu „Facerecognition nutzen mit Nextcloud“
    1. Kannst du gerne ausprobieren, aber ich meine es gescheitert wegen der ARM Architektur auf meinem Odroid C2

  1. Hey ich habe das ganze auch installiert, aber ich sehe nicht die Additional settings und sehe auch nicht das Feld zum memory limit ändern.
    Eine Idee ist ja noch eine Nvidia Grafikkarte zu haben und Cuda zu installieren. dann muss dlib aber neu compiliert werden.
    Dazu den dlib Ordner löschen und neu installieren, da wird geprüft ob cuda installiert ist und ob eine Nvidia Grafikkarte installiert ist.
    Danach wir die Grafikkarte benutzt um Gesichter zu finden, was ca. 50 -100x schneller ist.
    Gruß Jakob

  2. hallo,ich habe das Problemdass ich kein Model laden kann , kann mir jamand sagen woran das liegen kann?
    hier einige infos:
    root@0ab64345f320:/# sudo -u www-data php /var/www/nextcloud/occ face:setup
    PHP Warning: Module ‚pdlib‘ already loaded in Unknown on line 0
    You must indicate the ID of the model to install
    +—-+———+—————+—————————————————————————————————————————————-
    | Id | Enabled | Name | Description
    +—-+———+—————+—————————————————————————————————————————————-
    | 1 | | Default | Main model, using dlib defaults: mmod_human_face_detector.dat, shape_predictor_5_face_landmarks.dat and dlib_face_recognition_resnet_mo
    | 2 | | DlibCnn68 | Alternative default model, using dlib: mmod_human_face_detector.dat, shape_predictor_68_face_landmarks.dat and dlib_face_recognition_re
    | 3 | | DlibHog | DDlib HOG Model which needs lower requirements
    | 4 | | DlibCnnHog5 | Extends the main model, doing a face validation with the Hog detector
    | 5 | | ExternalModel | External Model (EXPERIMENTAL)
    +—-+———+—————+—————————————————————————————————————————————-
    root@0ab64345f320:/# sudo -u www-data php /var/www/nextcloud/occ face:setup -m|–model [1]
    bash: –model: command not found
    PHP Warning: Module ‚pdlib‘ already loaded in Unknown on line 0
    root@0ab64345f320:/#
    mein System
    5.4.0-70-generic #78~18.04.1-Ubuntu SMP Sat Mar 20 14:10:07 UTC 2021 x86_64 GNU/Linux
    core i3 ohne discrete GPU , 32 GB RAM
    ciao Guido

    1. Hallo Guido. Danke erstmal für den Kommentar.
      Ich hab das System gestern selbst aufgesetzt, da neuer Server. Ich konnte direkt den Scan starten. Ohne ein Model anzugeben. Model 1 ist es automatisch.

    2. Hallo ,habemeinen Fehler gefunden, es war lediglich die Syntax beim Laden des Moduls.
      sudo -u www-data php /var/www/nextcloud/occ face:setup -m 1
      sudo -u www-data php /var/www/nextcloud/occ face:setup -m 2
      sudo -u www-data php /var/www/nextcloud/occ face:setup -m 4
      Danke 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

9 + 1 =

Consent Management mit Real Cookie Banner