Re-Run Lightroom Face Detection

To my knowledge as of today there is no official way to re-run face-detection in Adobe Lightroom (LR), neither for a complete catalogue nor for a single folder. You may find you want this option if for example you deleted a whole bunch of already recognised face-areas and now regret you did so. The following works for me.

First make a backup of your catalogue.

Then get the SQLite Browser (http://sqlitebrowser.org/). You will need it to edit the LR catalogue file. Install it, run it and open a database. Use your catalogue as database. Lightroom must be closed while you do this.

You will see, a LR catalogue is a relational database, it contains a lot of tables. With some experience you’ll be able to guess how these work together. A lot you can do here – a lot you can damage! If you try what I describe here and it fails, don’t come to me for complaining. This is definitely not officially supported, no warranty, at your own risk.

There is one table that can help you if you want to re-run the face-detection: Adobe_libraryImageFaceProcessHistory. It contains information about what happened with the images already, the last status of face-detection, face-recognition and indexing as well as whether you touched the image after detection, for example to confirm the find by adding a name.

The table is pretty useless without additional information. It contains a ID for each image it has data for, which you can use to link to the relevant information in other tables like this:

select Folder.pathFromRoot, File.baseName, File.extension, Hist.*
from  Adobe_libraryImageFaceProcessHistory AS Hist
inner join Adobe_images AS Img ON Hist.image = Img.id_local
inner join AgLibraryFile AS File on  Img.rootFile = File.id_local
inner join AgLibraryFolder AS Folder on File.folder = Folder.id_local

As you have the folder path in the query, you can also use it to filter for photos in a particular folder (including subfolders if you use a wildcard ‘%’). Like this:

select Hist.*
 from  Adobe_libraryImageFaceProcessHistory AS Hist
 inner join Adobe_images AS Img ON Hist.image = Img.id_local
 inner join AgLibraryFile AS File on  Img.rootFile = File.id_local
 inner join AgLibraryFolder AS Folder on File.folder = Folder.id_local
 where Folder.pathFromRoot LIKE 'Photos/2015/2015-04-25/%'

Now, with this you can selectively delete the face detection history entries for photos in a particular folder. Before you do, make sure you have really made that backup.

delete from Adobe_libraryImageFaceProcessHistory
 Where id_local in (
 select Hist.id_local
 from  Adobe_libraryImageFaceProcessHistory AS Hist
 inner join Adobe_images AS Img ON Hist.image = Img.id_local
 inner join AgLibraryFile AS File on  Img.rootFile = File.id_local
 inner join AgLibraryFolder AS Folder on File.folder = Folder.id_local
 where Folder.pathFromRoot LIKE 'Photos/2015/2015-04-25/')

Now, close the database and open Lightroom. Go to the folder and switch to people-view. The detection runs again.

This does not delete already detected face-areas or keyword assignments.

Let me know if this worked for you in the comments.

6 thoughts on “Re-Run Lightroom Face Detection

  1. Hallo Henkki,

    vielen Dank für Deine saubere Recherche in der LR-Datenbank. Hat bei mit geklappt (LR6.7 / Win10) ohne erkennbare Nachteile.

    Für SQL-Befehle verwende ich SQirreL LSQ Client (http://squirrel-sql.sourceforge.net/). Dann hast Du die gleiche Oberfläche für SQLite, mySQL ….

    Gruß
    Thomas

  2. Hi Henkki,

    danke – das hat bei mir funktioniert. ABER: “Dieses Vorgehen löscht übrigens weder bereits erkannte Gesichtsbereiche noch Stichwortzuweisungen.” stimmt nicht ganz: Nachdem ich Deine Anleitung umgesetzt habe, finde ich in einem Ordner tatsächlich noch die erkannten Gesichter mit den zugewiesenen Namen. Aufgrund des Datenbankeingriffes startet LR wie gewünscht erneut mit der Gesichtserkennung. Dabei tauchen aber nicht nur die vorher verworfenen Gesichter wieder auf, sondern die bereits erkannten werden im Zuge der Gesichterkennung nach und nach wieder “unbekannt”. D.h. wenn die erneute Gesichtserkennung abgeschlossen ist, müssen ALLE Gesichter wieder benamst werden.

    Ich benutze LR CC2015 5.1 auf dem Mac.

    bg, Heiko

    • OK, danke, Heiko, wichtige Info. Das war so nicht geplant, also muss ich noch mal drüber grübeln. Vielleicht geht es ja noch besser.
      Grüße
      Henkki

  3. Wenn man sich genau an deine Anleitung hält, dann funktioniert es auch.
    Es war im Nachhinein eigentlich ganz einfach.
    Grüße Jörg

  4. Danke, es hat nun endlich geklappt.
    Ich habe das erste Mal mit dem SQLite-Browser gearbeitet,
    und wusste noch nicht einmal wo man den entsprechenden Befehl ausführen kann.
    Es hat bei mir schon ein paar Std. gedauert, bis ich es hinbekommen hatte.
    Die letzte Klammer am Ende der letzten Eingabe hatte ich übersehen und bekam natürlich einen Syntax Error.
    OS Win 10 64bit
    Vielen Dank und Grüße Jörg

    • Hallo Jörg,

      tut mir leid, dass es dann doch so kompliziert war. Wenn ich die Zeit finde, überarbeite ich den Artikel noch mal, um es leichter zu machen. Ich schreibe so etwas immer erst mal als Erinnerung für mich, daher ist es nicht immer sofort für alle brauchbar.

      Grüße
      Henkki

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.