Notes de l'atelier

Tes noms de dossiers étaient les données d'entraînement

L'archive sur laquelle cette application a été construite compte 314 391 fichiers : environ 223 000 photos et 91 000 vidéos, sur un disque externe de 6 To. C'est tout l'album visuel d'une famille, et comme beaucoup de familles, elle a traversé deux ères très différentes pour le tenir à jour.

De 2004 à 2016, chaque événement avait son propre dossier, nommé à la main, le lendemain de l'événement : 2012-04 — le voyage de printemps, ce genre de chose. Environ 600 de ces dossiers. Puis, vers 2016, les dossiers ont cessé. Ce qui les a remplacés, c'est le défaut moderne : d'immenses déversements plats de sauvegarde de téléphone, des milliers de fichiers nommés IMG_4471.HEIC, regroupés par rien d'autre que la plage de dates où une sauvegarde s'est produite. (Si tes années récentes sont encore piégées sur le téléphone lui-même, le guide de transfert iPhone explique comment les faire arriver sur le disque.)

Le plan évident pour un outil comme celui-ci, c'est de détecter automatiquement les événements et de générer automatiquement des noms pour toute l'archive, ère nommée et ère déversée confondues. Ce que je n'avais pas anticipé au départ, c'est que l'ère nommée n'était pas seulement plus agréable à regarder — c'était un jeu de données étiqueté, disponible gratuitement, avec douze ans de profondeur.

Une vérité de référence, pas une supposition

Six cents frontières tracées à la main autour de ce qui constitue « un événement », c'est exactement le genre de chose pour laquelle on paierait normalement. Cette famille avait déjà fait le travail de décider, événement par événement, où un moment se termine et où le suivant commence. Alors plutôt que de choisir une approche de regroupement d'événements toute faite en espérant que ça sonne juste, j'ai traité les dossiers nommés comme la vérité de référence sur la façon dont cette famille précise découpe le temps en événements, et j'ai calibré directement en fonction d'eux.

L'approche de regroupement elle-même est délibérément simple : une passe basée sur les écarts de temps, qui regroupe les photos dans le même événement chaque fois que l'écart entre deux horodatages consécutifs reste sous un seuil. Le seul vrai réglage, c'est où placer cet écart. Je l'ai mesuré de la façon ennuyeuse mais correcte — l'accord de co-appartenance par paires. Pour chaque paire de photos de l'ère nommée, je vérifie si le découpage humain en dossiers est d'accord avec le découpage de l'algorithme (les deux ensemble, ou les deux séparés), et je calcule la fraction qui est d'accord. Je fais varier le seuil, je trace la courbe, je prends le pic.

314 391
fichiers dans l'archive fondatrice
~600
dossiers d'événements nommés à la main, 2004–2016
F1 0,93
avec un seuil d'écart de 24 heures

Le pic est tombé à un écart de 24 heures, avec un F1 de 0,93 par rapport aux dossiers nommés. Ce n'est pas un repère tiré d'un article scientifique — c'est un chiffre calibré sur douze ans de jugements propres à une famille sur où leurs événements commencent et finissent. C'est exactement le propos : le « bon » seuil de regroupement n'est pas universel, c'est une propriété de la façon dont une famille précise vit. Cette famille, apparemment, ne découpe pas un voyage de deux jours en deux événements simplement parce qu'elle a dormi quelque part entre les deux. Un écart de 24 heures capture ça. Les dossiers nommés d'une autre famille pourraient culminer complètement ailleurs, et l'application est conçue pour re-mesurer par archive plutôt que de supposer qu'une valeur par défaut suffit.

Une fois que les événements se regroupent comme la famille les regroupe déjà elle-même, le nommage devient le problème suivant, et la même astuce s'applique à nouveau : les 600 dossiers nommés ne sont pas que des frontières, ils sont aussi un guide de style. 2012-04 — le voyage de printemps montre que la convention de la famille, c'est un préfixe de date, un tiret cadratin, des minuscules, court et précis plutôt que générique (« le voyage de printemps », pas « Sortie en famille »). Le nommage automatique de la décennie non nommée apprend cette voix au lieu d'en imposer une générique.

Les écueils qui auraient discrètement tout corrompu

Trois choses sont apparues en construisant ça et valent la peine d'être notées, parce qu'aucune n'est visible avant qu'on aille les chercher, et toutes les trois auraient silencieusement dégradé la chronologie si j'avais fait confiance à la source de vérité évidente.

Les horloges d'appareil photo mentent, les noms de dossiers non. Dans l'ère nommée, les horloges d'appareil photo étaient parfois décalées d'un an — pas énormément, juste fausses de la façon dont une horloge d'appareil photo se dérègle quand personne ne la remet à l'heure après un changement de pile ou un voyage qui traverse une ligne de changement de date. La correction a consisté à arrêter de faire confiance à l'EXIF comme vérité par défaut pour la datation, et à laisser plutôt le préfixe de date tapé à la main dans le nom du dossier l'emporter chaque fois que les deux sont en désaccord. La personne qui a tapé 2012-04 dans un nom de dossier la semaine où c'est arrivé est un meilleur témoin que l'horloge interne d'un appareil photo qui n'a pas été vérifiée depuis des années.

Les médias numérisés portent la mauvaise date, deux fois. Les vieilles cassettes de caméscope, numérisées plus tard, sont pires : l'horodatage propre au fichier reflète le moment de la numérisation, pas celui où les images ont été tournées. Pour cette catégorie de fichiers, l'EXIF n'est pas seulement occasionnellement faux, il est faux d'une façon précise et structurelle. La correction a la même forme que celle de l'horloge d'appareil photo, un niveau plus haut : pour les médias scannés et numérisés, le dossier année sous lequel la famille l'a classé prime sur l'horodatage propre du fichier, parce que le dossier décrit le souvenir et l'horodatage décrit la séance de numérisation.

Les voyages ont besoin d'une définition de « la maison » qui ne se laisse pas berner par l'enthousiasme. Pour détecter un voyage comme un voyage — un départ hors de la vie normale — l'application doit savoir où était « la vie normale », et ça change sur 22 ans à mesure qu'une famille déménage. L'approche naïve, compter les photos par lieu, échoue d'une façon évidente une fois qu'on y réfléchit : des vacances de cinq jours génèrent bien plus de photos que cinq journées ordinaires à la maison, si bien qu'un lieu visité une seule fois pendant une semaine pourrait facilement l'emporter sur la maison où la famille a réellement vécu pendant six mois. La correction est un modèle de « maison » qui vote par semestre en utilisant des jours distincts passés à un endroit, pas des comptes de photos. Un lieu ne compte comme « maison » qu'en étant habité sur de nombreux jours différents, pas photographié beaucoup pendant quelques-uns d'entre eux. Cette seule substitution — des jours plutôt que des photos — c'est ce qui permet à un voyage d'être correctement reconnu comme un départ de la maison plutôt que de réécrire silencieusement où était la maison.

Les années nommées n'ont pas seulement reçu des étiquettes. Elles ont pu définir, de la main même de cette famille, ce qu'est un événement.

Rien de tout ça ne se généralise en « voici le bon seuil, on le publie ». Ce qui se généralise, c'est la méthode : si une partie d'une archive a été étiquetée à la main par les personnes qui l'ont vécue, cette partie n'est pas seulement plus agréable, c'est une vérité de référence, et ça vaut l'effort supplémentaire de mesurer par rapport à elle plutôt que de supposer qu'une valeur par défaut est assez proche. Les vingt mille autres fichiers d'une archive familiale typique n'allaient jamais recevoir l'attention minutieuse d'un responsable. Mais douze ans, généralement, oui.

← Retour à tous les articles