BnF : Détection et classification d'images pour Gallica
Conception d'un pipeline d'IA de Computer Vision pour détecter, segmenter et classifier automatiquement les illustrations patrimoniales de Gallica (BnF).
En quoi consiste le projet Gallica Images ?
La Bibliothèque nationale de France (BnF) a lancé le projet Gallica Images dans le but de rendre accessible à tous l'immense collection visuelle issue de ses millions de manuscrits, livres, cartes, gravures et photographies numérisés. L'objectif est de permettre aux chercheurs, historiens et grand public de rechercher et explorer visuellement ce patrimoine.
La plupart de ces images sont noyées dans des ouvrages volumineux, sans indexation individuelle, obligeant les chercheurs à feuilleter des centaines de pages pour en trouver une seule.
Dans le cadre de notre projet de fin d'études (PFEE) à l'EPITA (majeure IMAGE), notre équipe de 4 étudiants a été chargée de développer la chaîne de pré-annotation automatique pour accélérer la création du jeu de données de validation.
Pourquoi faire de la pré-annotation automatique ?
Même si chaque années les limites de ce que l'IA peut accomplir sont repoussées, la validation humaine reste indispensable pour garantir la qualité des annotations. Cependant, cette étape est chronophage et coûteuse.
Un bon compromis consiste à pré-annoter automatiquement les images avec un pipeline de Computer Vision, puis de laisser les experts humains corriger et valider ces annotations, ce qui permet de réduire drastiquement le temps et le coût de chaque annotation.
Les données et la taxonomie BnF
Les documents de Gallica étant dans le domaine public, ils sont accessibles librement en haute résolution via l'API IIIF de la BnF à partir de simples identifiants ARK.
Chaque illustration détectée doit être classifiée selon une taxonomie hiérarchique définie par les experts :
Cette taxonomie structure les visuels selon 4 critères essentiels :
- Forme & Fonction (Ornements, Enluminures, Illustrations scientifiques, Cartographie, Architecture...)
- Genre (Portraits, Scènes de vie, Paysages, Animaux, Caricatures...)
- Technique & Reproduction (Dessin, Peinture, Estampe, Gravure, Photographie...)
- Rotation (0°, 90°, 180°, 270°) pour redresser les visuels inclinés.
Le Pipeline de Traitement
Notre pipeline Python s'exécute de manière séquentielle et automatisée :
- Ingestion IIIF : Téléchargement des pages haute résolution depuis les serveurs BnF via l'API IIIF.
- Détection (YOLOv11) : Détection des zones d'illustrations et découpage en vignettes.
- Classification (ConvNeXt) : Attribution des labels multi-classes sur chaque vignette extraite.
- Export Label Studio : Génération des fichiers JSON prêts à être importés dans Label Studio pour la validation humaine.
Détection des illustrations : YOLOv11
Pour repérer les illustrations au milieu du texte sur des pages anciennes, nous avons retenu YOLOv11. Ce modèle est rapide, et on peut faire du fine-tuning sur nos propres données pour améliorer la précision de détection. Nous avons annoté un jeu de données d'entraînement avec 1000 images, puis entraîné le modèle sur ces images.
Classification des illustrations : ConvNeXt
Une fois l'image découpée, elle passe dans un modèle de classification chargé de déterminer son genre, sa technique et son orientation. Nous avons choisi l'architecture ConvNeXt-Tiny.
C'est un CNN qui est considéré comme l'un des meilleurs compromis entre rapidité et précision pour la classification d'images. Nous avons entraîné le modèle sur un jeu de données de 1000 images annotées, et obtenus ces résultats :
Epoch [20/20] (temps: 30.5s) :
Train Loss: 0.0095 | Train Acc: 99.80%
Val Loss: 1.2782 | Val Acc: 75.13%
Détail précision par classe val :
- photographie: 96.10%
- impression: 56.32%
- estampe: 60.98%
- dessin: 7.69%
Ces résultats montrent que le modèle est très performant pour certaines classes (photographie, impression), mais moins pour d'autres (dessin). Cela s'explique par le fait que certaines classes sont sous-représentées dans le jeu de données d'entraînement, et nous devons donc continuer à collecter des images pour améliorer la précision globale du modèle.
Export Label Studio & Résultat
À la fin du traitement, le script génère un fichier JSON structuré, directement compatible avec le template XML de Label Studio, ainsi qu'un rapport d'exécution récapitulant les images traitées, le temps d'inférence et la distribution des classes détectées.
Ce pipeline clé en main permet à la BnF de générer rapidement des milliers de pré-annotations et d'accélérer considérablement la valorisation de son patrimoine visuel sur Gallica Images.