22 July 2020

Software voor gezichts-detectie [1] kan worden gebruikt om te zien óf er een gezicht is in je foto. Óf niet. Niet te verwarren met gezichts-herkenning [1]. Software die hiervoor is ontwikkeld, zal een gezicht vinden en ons vertellen wie het is.

Fotobounce knil 39
Figure 1. Fotobounce knil 39
Fotobounce suggesties
Figure 2. Fotobounce suggesties
SNFaceCrop knil 39
Figure 3. SNFaceCrop knil 39
SNFaceCrop met L12
Figure 4. SNFaceCrop met L12
KL in knil 39
Figure 5. KL crew in knil 39
digiKam suggesties
Figure 6. digiKam suggesties
digiKam tags
Figure 7. digiKam tags
digiKam interface
Figure 8. digiKam interface
digiKam editor
Figure 9. digiKam editor

Het is niet erg moeilijk om met specifieke software portretten foto’s te detecteren. Herkenning van gezichten vereist 'training' voor bruikbare resultaten.

De keuze voor software voor gezichts-detectie is redelijk uitgebreid. Mijn doel is om de portretjes uit foto’s te knippen voor verder gebruik. [2] Bijvoorbeeld om een portretten gallerij te maken. Of een gallerij van een persoon.

Gezichts detectie en -herkenning

3 Voorbeelden van software voor gezichts-detectie en -herkenning):

Picasa

Picasa gebruik ik al jaren. Deze software wordt al lange tijd niet meer door google onderhouden.

Ik heb het gebruikt voor gezichts-detectie van foto’s van 122(NEI)Squadron. Dat lukte redelijk. De meeste portretten moesten handmatig worden toegvoegd, omdat picasa niet elk gezicht als zodanig detecteerde. Met een paar honderd foto’s is de lol er snel af…​ Tijd voor een 'uninstall' denk ik. En zoeken naar vervanging.

Fotobounce

Eenzelfde type 'photo manager', die ook functionaliteit voor gezichts-detectie heeft, is fotobounce. Jammer genoeg ook software die met pensioen is gestuurd.

Het levert vrij goed werk met het detecteren van gezichten. Slechts eentje wordt gemist (figure 1), maar die kan snel handmatig worden toegevoegd. Namen bij de gevonden portretten moeten met de hand worden toevoegd uiteraard. Heb je er een paar gedaan, dan geeft het programma suggesties van portretten uit andere foto’s, die je kunt toevoegen of niet (figure 2). Het heeft geleerd.[3]

In de foto 'knil 39', gemaakt tijdens een sportevent in Medan in 1948, worden 4 van de 11 gezichten herkend.[4] De onbekende 7 zijn aangemerkt als 'KL'.[5] Het kost een paar minuutjes om de onbekenden als 'KL' te labelen en een overzichtje 'KL' te produceren (figure 5). Handy.

Door de training 'herkent' de software nu gezichten. De gevonden portretten zijn te exporteren naar een directory naar keuze.

SNFaceCrop

De 'frontal face detector' SNFaceCrop kan alleen portretten detecteren en de gevonden gezichten exporteren naar een directory.

Toegepast op dezelfde foto als fotobounce, wordt 1 gezicht gemist, zij het een andere (figure 3). We zien een vergelijkbaar resultaat als we een andere plaatje laten onderzoeken. Op de foto met de Lockheed L12 worden gezichten 16 van de 17 personen gedetecteerd (figure 4). Goed. Dat er een gezicht in de rechter motor wordt herkend, laten we zitten en wijten we aan onvoldoende training ..

In tegenstelling tot fotobounce, kan het programma ook worden uitgevoerd 'in batch mode': een of meer foto’s naar keuze laten scannen of zelfs een hele directory ineens. Very handy. In een terminal geef je de opdracht:

SNFaceCrop -d c:\myphotos -f photo1.jpg photo2.jpg photo3.jpg
SNFaceCrop -d c:\myphotos -f *.bmp

En hup. Ineens beschik je over honderden portretten .. Handig.

Digikam

DigiKam heeft net als fotobounce functionaliteit voor zowel gezichts-detectie als gezichts-herkenning. Om een nieuw gezicht automatisch te kunnen herkennen, moeten minimaal 4 vergelijkbare gezichten, getagd in verschillende afbeeldingen, vooraf worden 'getraind'.

In foto 'knil 39' worden 4 van de 11 gezichten gedetecteerd (figure 6), maar de ontbrekende portretten kunnen eveneens eenvoudig worden toegevoegd (figure 7). Het is niet mogelijk om de gevonden gezichten apart te exporteren zoals in fotobunce en picasa. Da’s jammer.

Jammer, want het is een uitstekende 'photo manager' met uitgebreide mogelijkheden voor manipulatie van plaatjes, waaronder in een meegeleverde editor (figure 9). Pluspunt is dat foto’s direct naar mijn Piwigo photoalbum kunnen worden gestuurd met een van de vele plugins.

en dan ..

Het ziet ernaar uit dat de 624 portretjes met de hand moeten worden verwerkt. Ik hoop dat DigiKam snel genoeg leert en gezichten op andere foto’s herkend (..). Als vervanging voor picasa ga ik de mogelijkheden van DigiKam zeker verder onderzoeken.

SNFaceCrop, vooral de 'in batch mode', is voor het moment de beste kandidaat voor het produceren van kleine bestandjes met portretten uit foto’s in een directory.

Lerende systemen, XML, opencv en classifiers

Bij elke foto-scan wordt een XML-bestand [6] geproduceerd die door SNFaceCrop opnieuw kan worden ingelezen i.c. door andere software kunnen worden gebruikt.

<?xml version="1.0" encoding="utf-8"?>
<DetectionResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ImageFileName> KNIL_39.jpg </ImageFileName>
  <ClassifierFileName> haarcascade_frontalface_alt.xml </ClassifierFileName>
  <FaceDetected>
    <Rectangle>
      <Location>
        <X>328</X>
        <Y>368</Y>
      </Location>
....

Uit nadere bestudering van SNFaceCrop blijkt dat de software zelf ook gestuurd wordt door een XML-bestand [6].

<opencv_storage>
<haarcascade_frontalface_alt type_id="opencv-haar-classifier">

opencv? haar-classifier?

OpenCV is 'Open Source Computer Vision Library' en kan worden gebruikt voor gezichts-detectie en -herkenning.

"Face detection is a computer vision technology that helps to locate/visualize human faces in digital images. This technique is a specific use case of object detection technology that deals with detecting instances of semantic objects of a certain class (such as humans, buildings or cars) in digital images and videos."

"Face detection is performed by using classifiers. A classifier is essentially an algorithm that decides whether a given image is positive(face) or negative(not a face). A classifier needs to be trained on thousands of images with and without faces. Fortunately, OpenCV already has two pre-trained face detection classifiers, which can readily be used in a program."

Eén 'classifier' is 'Haar Classifier'.[7]

Ook DigiKam maakt gebruik van OpenCV algoritmes. Zo blijkt.[8]:

  • Local Binary Patterns Histograms (LBPH),

  • Eigen Faces en

  • Fisher Face, naast

  • Deep Neural Network (DNN) DLib

"The idea why four different algorithms were implemented is simply to be able to make a comprehnsive assessment of the currently available technologies applicable in digiKam and eventually choose the best one."

Complexe materie.

Appx A: Software

De gezichts-detectie wordt vaak verward met gezichtsdetectie software. Deze termen worden losjes gebruikt en lijken hetzelfde, maar ze verwijzen naar verschillende systemen.

Gezichtsdetectie kan zien of er een gezicht is of niet, terwijl gezichts-herkenning een gezicht zal vinden en ons vertellen wie het is.

A.2. Facial Recognition

Face Recognition

https://github.com/ageitgey/face_recognition
Recognize and manipulate faces from Python or from the command line with the world’s simplest face recognition library.

Appx B: Background

Face Detection & Recognition

https://facedetection.com/

FACE RECOGNITION HOMEPAGE

https://www.face-rec.org/general-info/


1. Face Recognition = gezichtsdetectie / Face Recognition = gezichts-detectie
3. hij /zij /ding /code /algoritme /ai ..
4. door 122squadron crew Gerardu S
5. Koninklijke Landmacht