Auteur Sujet: Reconnaissance faciale : importer depuis Photoshop Elements  (Lu 11006 fois)

Hors ligne sylvled

  • Nouveau
  • Messages: 4
    • Voir le profil
Bonjour à tous.

Je suis en train de faire un petit script qui me permet de transférer les tags des fichiers sidecar de Photoshop Elements vers les tags de Lightroom. Il est d'ores et déjà fonctionnel, mais manque encore d'automatismes.

Vous pourrez l'utiliser comme moi si vous taguez vos photos avec la reconnaissance faciale sous Photoshop Elements (version 10 pour ma part), mais que vous gérez vos photos sous Lightroom.

Il vaut ce qu'il vaut, je ne suis pas à la hauteur des grands programmeurs ni des créateurs de plugins lightroom comme Jeffrey Friedl, mais je pense que ça peut intéresser certains... si vous utilisez Windows, car le script est en powershell.

Juste faites-moi savoir si vous êtes intéressés dans ce forum... et je posterai mon avancement au fur et à mesure sur ce script (petit et mal fait, mais qui fonctionne) et la façon de l'utiliser.

A vous lire.
Sylvain.

Hors ligne FX Belloir

  • Moderateur
  • Membre héroïque
  • Messages: 2214
    • Live Messenger (MSN) - transfxb@hotmail.fr
    • Voir le profil
    • PHOTO [numérique]
Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #1 le: 27 octobre 2011 à 11:07 »
Merci pour le partage.

Mais je dois dire que je ne suis tant intéressé par le script que par le flux de travail que tu proposes.

Peux-tu en dire plus sur cette reconnaissance faciale dans PSe10, les tags puis le passage dans Lr ?
Quelle partie de PSe10 utilises-tu pour la reco faciale ? La partie organiseur ?
Est-ce fiable ?
Toute la suite LR - CC, mobile, web
Canon  SX260HS, S100, G12, 20D, 7D

Hors ligne sylvled

  • Nouveau
  • Messages: 4
    • Voir le profil
Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #2 le: 04 novembre 2011 à 14:40 »
Bonjour à tous,

Me voici de retour après qq jours pour déposer mon script de transfert de tags de Elements à Lightroom.

Comme Lightroom ne contient pas de reconnaissance de visage, j'utilise Elements et sa fonctionnalité automatique (qui est pas mal efficace) pour envoyer les tags sous Lightroom.


Bon, visiblement pas vraiment beaucoup de monde intéressé (merci FX Belloir), mais je partage quand même, c'est comme ça.
Je comprends bien que les infos ci-dessous ne sont sans doute pas compréhensibles pour tout le monde (et c'est long à lire), mais là n'est pas le but. Je fais juste passer le message que je travaille dessus pour qu'une recherche sur le net montre qu'un travail est en cours.

Quand le script sera terminé, je ferai un modop plus... accessible.


Voici en fin de post, le script en l'état, et il reste beaucoup de trucs à faire. Pour le moment, il ne fonctionne que sur un seul xmp, et n'est en réalité qu'un des 2 moteurs du script.

Le reste à faire est :

- Recherche des XMP dans l'arborescence totale -> priorité haute
- Ecriture dans une arborescence différente de la source -> priorité haute
- Création d'un .BAK de l'ancien fichier pour un rollback et écriture directement dans le bon fichier (tout rollback sera manuel, je ne prévoie pas de scripter ça). -> priorité max
- Gestion du cas du fichier JPG sous Elements (2eme moteur) -> priorité basse
- Emballage cadeau (pour rendre user friendly avec force blablas, interactions etc...) --> priorité basse
- Sécurisation en vérifiant que la source provient bien de elements et que la destination provient bien de lr.-> priorité basse
- Utilisation de paramètres dans la ligne de commande -> priorité moyenne
- ---> Faites-moi vos suggestions.


Bien entendu, ce script est à prendre tel quel. Si vous cassez quelque chose chez vous en utilisant ce script, ne venez pas me voir, ce sera pas ma faute...  Ce n'est pas censé arriver, mais bon, certaines personnes sont tellement tordues....  ;-)



Mode d'emploi :

Copier les lignes ci-dessous dans un fichier texte qui s'appellera "transfert.ps1".
Lancer le script en ligne de commande windows avec :

powershell ./transfert.ps1

et la magie opère.



Prérequis :
Les versions que j'utilise : Elements 10 (maj automatique) et Lightroom 3 (maj automatique) et Powershell sous Windows (de série depuis au moins Windows Seven).

Pour mes besoins, j'ai posé des valeurs par défaut :
Le fichier xmp de photoshop element doit s'appeler el_IMG_7294.xmp
Le fichier xmp de lightroom doit s'appeler lr_IMG_7294.xmp
Les deux fichiers sont dans le répertoire courant, qui contient le fichier de script lui-même.
Le fichier resultant s'appele "retag_IMG_7294.xmp"

La création des fichiers sidecar se fait sous lightroom en choisissant la (les) photos et en cliquant bouton droit sur métadonnées / enregistrer les métadonnées sur le fichier.
La création des fichiers sidecar se fait sous Photoshop elements en choisissant la (les) photos et en tapant CTRL-W (ou fichier / Ecrire infos d'etiq. de mots-clés/de propr. dans photo).

Attention, avec photoshop elements, si les fichiers sont des JPG, les infos sont écrites dans le fichier lui-même. Mon script ne récupère pas ces infos pour le moment et en plus, la manip sous Elements modifie le fichier JPG lui-même en écrivant dans les exifs (sans toucher à l'image).

Important :
Ce script n'est pour le moment utile que pour les photos RAW pour lesquelles Elements crée un fichier sidecar XMP.
Lors de l'export sous XMP dans Elements, il convient donc de ne sélectionner QUE Les fichiers RAW.


Pour ma part, j'ai dupliqué toutes mes photos et tous les side car Lightroom dans un répertoire dédié à Elements. J'ai conservé mes originaux sur un répertoire dédié à Lightroom, que j'utilise principalement. Elements n'est là que pour faire la détection de visages et la pose de tags automatiques (nombre de visages, gros plans, qualité de l'image etc).
Je ne pense pas que je préconiserai d'autre moyen de faire dans le futur.

Une fois le script lancé
Rien ne se passe !
Le fichier nouvellement créé (retag_imgxxx.xmp) doit être renommé et doit être recopié à la place de l'ancien fichier XMP de Lightroom.
Pour importer le nouveau fichier sous lightroom et lui faire prendre en compte les nouveaux tags, il convient de cliquer à droite sur l'image et de faire : métadonnées / lire les métadonnées depuis le fichier.
Si tout est correct, les nouveaux tags sont automatiquement mis dans la base de Lightroom et si ces tags existents déjà, la hierarchisation est automatiquement mise à jour.


Pour vérifier cette hierarchisation, il est possible de réécrire dans le XMP et de l'éditer avec notepad.


Ce que fait le script :

Ceux qui comprennent un peu la programmation comprendront que le script parcourt le fichier xmp de photoshop element à la recherche des tags, qu'il stocke tout ça dans une variable, qu'il parcourt le fichier destination à la recherche d'un endroit où déposer les tags et ajoute ces tags dans le xmp de lightroom à la bonne place (soit : juste avant les tags existants s'il y a déjà des tags, et juste un peu avant la fin s'il n'y a pas déjà des tags).

Et c'est tout ce qu'il fait pour le moment... !


Et voilà le petit script :

-----------------------------------------------------


$nomfichier="IMG_7294.xmp"


$source=(get-content .\el_$nomfichier)
$destination=(get-content .\lr_$nomfichier)
$output="retag_$nomfichier"

$dc=0
$rdf=0
foreach ($linesource in $source)
{
   if ($linesource -match "<dc:subject>")
   {
      $dc=$dc+1
   }

   if ($linesource -match "</dc:subject>")
   {
      $dc=$dc-1
   }

   if ($linesource -match "<rdf:Bag>")
   {
      $rdf=$rdf+1
   }

   if ($linesource -match "</rdf:Bag>")
   {
      $rdf=$rdf-1
   }

   if ($linesource -match "<rdf:li>")
   {
      if ($dc -eq 1)
      {
         if ($rdf -eq 1)
         {
            $remplace += $linesource
            
         }
      }
   }
}


$dc=0
$rdf=0
foreach ($linesource in $destination)
{
   if ($linesource -match "<dc:subject>")
   {
      $dc=$dc+1
   }

   if ($linesource -match "</dc:subject>")
   {
      $dc=$dc-1
   }

   if ($linesource -match "<rdf:Bag>")
   {
      $rdf=$rdf+1
   }

   if ($linesource -match "</rdf:Bag>")
   {
      if ($dc -eq 1)
      {
         if ($rdf -eq 1)
         {
            $remplace>>$output
            $remplacedone=1
         }
      }
      $rdf=$rdf-1
   }


   if ($linesource -match "</rdf:Description>")
   {
      if ($remplacedone -ne 1)
      {
         "<dc:subject><rdf:Bag>$remplace</rdf:Bag></dc:subject>">>$output
         $remplacedone=1
      }
      $rdf=$rdf-1
   }

$linesource>>$output
}

« Modifié: 05 novembre 2011 à 15:00 par sylvled »

Hors ligne sylvled

  • Nouveau
  • Messages: 4
    • Voir le profil
Re : Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #3 le: 04 novembre 2011 à 14:49 »
Peux-tu en dire plus sur cette reconnaissance faciale dans PSe10, les tags puis le passage dans Lr ?
Quelle partie de PSe10 utilises-tu pour la reco faciale ? La partie organiseur ?
Est-ce fiable ?

C'est effectivement la partie organiseur que j'utilise (what else ?)  ;)
Ce que j'ai fait : j'ai dupliqué toutes mes photos et j'ai lancé l'analyse automatique de photoshop elements sur cette copie. L'objectif étant de ne toucher en aucun cas mes originaux.
Elements et Lightroom n'ayant pas la même structure de XMP, il fallait transférer les tags d'une manière ou d'une autre.
J'ai choisi de lire les fichiers XMP de Elements, de rechercher les tags puis de réécrire ces tags dans les XMP de lightroom.

Quant à la fiabilité de la reconnaissance de visage... C'est pour le moment, le meilleur que je connaisse, qui permet de rester à terme sous lightroom, même en utilisant un artifice comme le scripting.

Jeffrey Friedl propose quant à lui un plugin pour importer depuis Picasa... Mais dans ma configuration, Picassa semble ne pas être en mesure de faire ce que je veux (multiples sous-répertoires sur le réseau).

Voilà.

Sylvain.

Hors ligne Gilles

  • Administrateur
  • Membre héroïque
  • Messages: 7433
    • Voir le profil
    • Utiliser Lightroom
    • E-mail
Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #4 le: 07 novembre 2011 à 08:40 »
Le problème n'est pas l'intérêt qu'on peut porter à ton script, mais peut-être qu'une vaste majorité de lecteurs de ce forum n'utilise pas l'Organiseur Elements, tout simplement. En tout cas, merci pour l'effort. D'un point de vue rédactionnel, je reviendrai sûrement un jour sur l'importation à partir de PSE et, par conséquent, sur ton script.

Merci,

Gilles.
Mon QI est tenace...

Hors ligne Hugues

  • Membre junior
  • Messages: 24
    • Voir le profil
Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #5 le: 13 novembre 2011 à 23:01 »
Bonjour , bonsoir, c'est selon...

Merci pour ton travail. C'est très intéressant.
J'avais déjà essayé, il y a un peu plus d'un an de palier cette lacune de Lr en utilisant la reconnaissance faciale de PSE.
J'avais abandonné faute de résultat concluant de la part de PSE pour une reconnaissance un tant soit peu fiable, sans parler de la lenteur.

Cela me motive de savoir que je ne suis pas seul.
Dès que j'ai un peu de temps, j'essaierai ton script - si j'y arrive car je ne suis pas vraiment à l'aise avec tout cela.

Bonne continuation à tous,
Hugues

Hors ligne Jean-Luc MOREAU

  • Nouveau
  • Messages: 4
    • Voir le profil
    • jeanlucmoreau-photographie.fr
    • E-mail
Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #6 le: 10 janvier 2013 à 00:30 »
Je suis tombé sur ce travail, et je dois signifier que ce sujet m'intéresse effectivement.
Je ne comprends pas que cette possibilité n'existe pas sous Lightroom et sur Photoshop CS
Je n'ai pas element (je suis sur CS6 et LR4), et je rêve de pouvoir "taguer" ma bibliothèque Lightroom avec des mots clés issus d'une reconnaissançe faciale.
Depuis 2011, les méthodes ont-elles évoluées, car la mise en œuvre du script me paraît quand même assez complexe et dangereuse.
Jean-Luc MOREAU

Hors ligne sylvled

  • Nouveau
  • Messages: 4
    • Voir le profil
Re : Reconnaissance faciale : importer depuis Photoshop Elements
« Réponse #7 le: 10 janvier 2013 à 02:34 »
Hello !

J'avais trouvé à l'époque un soft qui permettait très proprement de faire ce que je faisais en scripting... Faudrait que je me repenche dessus... et surtout que je retrouve le nom du soft (tout léger).
Je reviens très vite vous dire tout ça.
Sylvain.