Comparaison de 6 API de description d’images appliquées à des pages couvertures de livres (deuxième partie)

Pour connaître le contexte de cette comparaison et la méthodologie utilisée, il faut lire la première partie du texte.

Barème d’évaluation des résultats

Nous avons généré une version tabulaire des résultats détaillés obtenus avec Cloudy Vision, contenant également nos annotations humaines, de façon à accorder une note à chaque résultat d’API. L’évaluation des résultats étant subjective, nous avons choisi de la limiter à une catégorisation selon le barème suivant :

  • A : les résultats pourraient être utilisés dans l’état ou presque
  • B : les résultats pourraient être utilisés en partie suite à une intervention humaine (corrections, retraits, ajouts)
  • C : les résultats ne sont pas utilisables

Il faut noter que notre évaluation est faite dans une perspective d’indexation, pas de description. Il nous apparaît utopique, à ce stade, d’espérer qu’une des API génère des mots-clés suffisamment précis pour décrire la couverture. Nous cherchons plutôt à générer des mots-clés qui peuvent alimenter un moteur d’indexation et de recherche. Le souhait est que l’image soit identifiée quand un consommateur cherche un des mots-clés obtenus par l’API, mais pas d’afficher cette liste de mots au consommateur. Pour cette raison, nous avons accordé des A ou des B quand plusieurs mots-clés convenaient, même si certains pouvaient être parfois être à la limite de ce qui décrit l’image (pourvu que cela restait dans la bonne thématique).

quebec_amerique_9782764421246
À titre d’exemple, nous avons accordé un A à Amazon Rekognition pour les mots-clés « Glacier (0.99), Ice(0.99), Mountain(0.99), Nature (0.99), Outdoors(0.99), Snow(0.99) ».

Notre évaluation détaillée est disponible ici.

Évaluation des API

En résumé, nos notes se répartissent comme ceci :

Note Amazon Rekognition Microsoft IBM Google Cloudsight Clarifai
A 6 2 1 3 0 2
B 16 19 15 20 2 30
C 26 27 32 25 44 16

On constate que nous avons accordé très peu de A. En effet, malgré plusieurs résultats impressionnants, il est assez fréquent que les mots-clés contiennent également des termes qui ne s’appliquent pas du tout, ou qu’il manque un élément essentiel. Dans ces cas, nous avons attribué un B.

Si on analyse la situation strictement du point de vue de la note A, la solution Rekognition d’Amazon semble être la meilleure (mais encore, à moins de 13 % d’efficacité, on hésite à utiliser le superlatif). On obtient un portrait différent si on considère les A et les B de façon cumulative :

Note Amazon Rekognition Microsoft IBM Google Cloudsight Clarifai
A et B 22 21 16 23 2 32
En % 46 % 44 % 33 % 48 % 4 % 67 %

Dans ce cas, c’est Clarifiai qui se démarque positivement.

Notons que le mauvais résultat de Cloudsight s’applique à notre contexte : dans pratiquement tous les cas, Cloudsight indique « couverture du livre [titre] ». C’est une bonne description dans un contexte généraliste de reconnaissance d’image, mais c’est inutile (d’où les C) pour nos besoins.

Notons enfin que pour la plupart des API, il y a de grands écarts dans la qualité des résultats selon le type d’image utilisé sur la page couverture. En faisant l’analyse seulement sur les photographies, les résultats Amazon Rekognition se rapprochent de Clarifai sur les notes A et B (63 et 68 % respectivement). Sur les illustrations figuratives (réalistes, pas stylisées), les résultats sont encore meilleurs (88 % pour Clarifai, suivie de Amazon Rekognition et Microsoft à égalité à 75 %).

Vous pouvez pousser l’analyse à l’onglet Sommaire de notre compilation des données.

Notes sur les couleurs

Notre expérience portait également sur l’identification des couleurs dominantes des pages couvertures. Voici quelques notes à ce sujet :

  • L’API de Google nous fournit des couleurs sous forme de code hexadécimal. C’est utile pour générer d’autres images dans les mêmes tons, mais inutile pour atteindre les objectifs qu’on cherche (un humain va demander « vert », pas « #00FF00 »).
  • L’API de Microsoft retourne certaines couleurs en mélangeant des appellations « humaines » (comme « White ») et des codes hexadécimaux. Elle indique également si la couleur est une couleur d’avant-plan, d’arrière-plan, ou d’accent. Les résultats sont parfois bons, mais aussi parfois plus douteux, comme lorsque le blanc est identifié comme couleur dominante de couvertures pour lesquelles notre classificateur humain n’avait même pas remarqué cette couleur.
  • L’API d’IBM identifie les couleurs par leur nom. Toutefois, dans certains cas, l’appellation de la couleur est trop précise pour correspondre à une requête humaine (il apparaît peu probable qu’un consommateur de livre mentionne que la couverture est « rouge d’alizarine »). De plus, elle semble se limiter aux couleurs d’accent, ignorant souvent les couleurs d’arrière-plan, en particulier s’il s’agit de blanc.
editions_hurtubise_9782897234737
Ici, on ne comprend pas pourquoi l’API de Microsoft identifie le blanc comme couleur dominante d’arrière et d’avant-plan.

Au final, les résultats des l’API d’IBM et de Microsoft (nous avons exclu Google parce qu’il n’offre pas de noms « humains » pour les couleurs) sont similaires selon notre barème d’évaluation. Toutefois, considérant que les résultats sont imparfaits et contiennent des termes peu représentatifs du langage utilisé par les consommateurs, nous croyons qu’il serait possible de faire aussi bien sans utiliser d’API ni d’algorithmes d’apprentissage automatique. Nous explorerons cette option plus tard dans le cadre des travaux de Projet TAMIS.

Notons que nous pourrions également tenter de convertir les codes de couleur fournis par Google vers des noms de couleurs. Nous avons choisi de ne pas le faire ici puisque nous voulions comparer les API disponibles sur le marché sans adaptation supplémentaire.

Autres observations

L’observation détaillée des mots-clés identifiés par les API a permis de constater que dans certains cas, les IA sont en mesure d’identifier des concepts associés aux images, pas seulement les objets qui y apparaissent.

editions_hurtubise_9782897239480
Clarifai voit de la « togetherness » dans cette illustration.
quebec_amerique_9782764424018
Clarifai voit « love » et « freedom » dans celle-ci.

Alors qu’on cherchait à décrire factuellement ce qui était illustré dans les images, nos API nous amènent plus loin. Ces mots-clés ne seraient certainement pas nuisibles pour les objectifs que nous avons, mais ils pourraient également être à la base d’outils de mise en marché innovants (une sélection de livres qui regroupés autour d’une idée évoquée par leur page couverture, par exemple).

Conclusions

À ce stade, considérant les faibles résultats, il ne semble pas réaliste d’utiliser des algorithmes de description par mots-clés automatisés sur n’importe quel lot de pages couverture.

Toutefois, cela pourrait s’avérer faisable sur des lots de titres dont la couverture présente une photographie ou une illustration figurative. On peut donc imaginer qu’un traitement automatisé pourrait s’appliquer à certaines collections, voir à une majorité de titres pour les catalogues de certains éditeurs.

Dans une telle situation, notre recommandation serait d’utiliser l’API Clarifai, ou encore mieux, de combiner les résultats de Clarifai et ceux d’Amazon Rekognition.

Comparaison de 6 API de description d’images appliquées à des pages couvertures de livres (première partie)

Le défi

La page couverture d’un livre est un des éléments les plus tangibles pour décrire une oeuvre. Elle est souvent utilisée pour mettre les oeuvres en valeur dans les librairies et les bibliothèques. C’est également cas, quasi systématiquement, dans les références en ligne : librairies et bibliothèques numériques, cartes enrichies dans les résultats sur Google, réseaux sociaux spécialisés dans la lecture…

Il n’est donc pas étonnant que les professionnels de l’édition consacrent tant d’efforts à créer de « bonnes » pages couvertures, et tentent de comprendre les facteurs qui font qu’une couverture « vend ».

D’un autre côté, on constate qu’il existe assez peu de moyens, dans une perspective de découvrabilité, de trouver des oeuvres en fonction de leur couverture. On peut assez facilement retrouver un livre dont on connaît l’auteur, le titre et la maison d’édition. Mais ce n’est pas le cas si on se souvient seulement que la page couverture est bleue et grise et montre un cheval tirant une voiture devant une grande maison.

Or, notre conviction, c’est qu’un certain nombre de consommateurs cherchent des livres comme ça : parfois avec un élément du titre, et typiquement avec une description de la page couverture. Nous émettons donc l’hypothèse qu’il serait avantageux d’enrichir les métadonnées qui décrivent les livres par un descriptif de leur page couverture. Cette description pourrait prendre la forme d’une énumération de ce qu’on y voit et des couleurs dominantes.

Nous croyons également qu’il est nécessaire de le faire de façon automatisée ou semi-automatisée, sur de grands volumes de titres. Cela permettra d’obtenir la masse critique qui amènera les plateformes qui présentent les oeuvres à utiliser ces nouvelles métadonnées.

Nous émettons donc une seconde hypothèse : il est possible d’automatiser la création de métadonnées descriptives d’images. Nous avons donc entrepris une expérience pour vérifier cette seconde hypothèse. Voici notre démarche, et les résultats obtenus à ce jour.

Identification des outils à notre disposition

Les avancées en traitement d’images constituent un des éléments les plus frappants dans le domaine de l’intelligence artificielle. Et il existe une panoplie d’outils disponibles gratuitement ou à peu de frais pour entraîner des réseaux de neurones à identifier les éléments présentés dans une image.

Dans l’esprit d’arriver rapidement à des résultats de façon efficace, nous avons choisi d’aborder le problème en utilisant des algorithmes de reconnaissance d’images préexistants, mais qui ne sont pas spécialisés dans le traitement des couvertures de livres. L’alternative aurait été d’entraîner nous-mêmes des réseaux neuronaux — mais c’est une solution qui aurait été clairement plus complexe et vraisemblablement plus coûteuse.

Il existe différentes API de description d’images. Nous en avons identifié six, offertes par les grands joueurs de l’industrie techno (IBM, Microsoft, Google, Amazon) ou des startups spécialisés en IA (Clarifai, Cloudsight).

Méthodologie d’évaluation

Comme première démarche d’évaluation des différentes API, nous souhaitons avoir un portrait global des résultats obtenus sur un échantillon représentatif de pages couvertures.

Nous avons choisi de façon aléatoire une cinquantaine d’images de notre corpus (environ 2500 titres provenant de 6 éditeurs québécois au moment de faire l’expérience), avec une représentativité de chaque éditeur proportionnelle à la taille du catalogue auquel nous avions accès. Nous avons fait une démarche de description des images, avec des mots-clés et des couleurs, « à la main » (donc pas d’API impliquée, mais un humain qui faisait le travail). Le fichier de travail est ici.

Dès cette première étape, il nous est apparu évident que nos API auraient du mal à décrire certaines images… Notre échantillon contenait certaines couvertures claires, montrant des images simples. Mais il contenait également des images abstraites, floues, ou avec un traitement artistique particulier qui les rend plus difficiles à décrire, même pour un humain.

echantillon
Quelques images de notre échantillon.

Nous souhaitions par la suite obtenir les résultats des API identifiées. Avec 50 images pour 6 API, l’utilisation des outils de tests manuels en ligne aurait impliqué beaucoup, beaucoup de manipulations… Heureusement, Gaurav Oberai a partagé l’outil qu’il a développé, nommé Cloudy Vision, pour automatiser une démarche similaire à la nôtre en 2016. Il s’agit essentiellement d’un script qui utilise les API, soumet les images, et génère un rapport agrégeant tous les résultats.

Après avoir installé le script, nous avons constaté que les API avaient beaucoup changé depuis 2016. Il fut donc nécessaire de faire des adaptations… Nous en avons profité pour bonifier le script pour lui faire extraire quelques informations supplémentaires et les afficher dans le rapport. Il s’agit des couleurs dominantes, et des annotations en français lorsqu’elles étaient disponibles.

Notre version modifiée du code source est disponible sur le compte Github de Projet TAMIS, et nos modifications seront vraisemblablement intégrées dans le projet d’origine.

Résultats

Le rapport généré par Cloudy Vision est intégralement disponible en ligne.

Nous observons toutefois déjà quelques tendances.

Sur les couleurs, seule l’API d’IBM retourne des noms de couleurs qui correspondent (plus ou moins) à une requête que formulerait un humain. Les codes de couleur retournés par l’API de Google ne sont d’aucune utilité pour les besoins qui nous intéressent.

CloudSight semble identifier la majorité de nos livres… comme des livres! Comme il ne fournit pas de description de ce qui est illustré sur la couverture, il est de bien peu d’utilité.

Les résultats de description d’images ont de l’intérêt pour les photos ou les illustrations réalistes. Les résultats se gâtent pour les illustrations trop stylisées, ou les représentations plus abstraites.

editions_multimondes_9782897730543
Une photo qui amène de bons résultats. Rekognition mentionne « Glacier (.98) , Ice (.98) , Mountain (.98) , Nature (.98) , Outdoors (.98) , Snow (.98) , Iceberg (.91) , Arctic (.78) , Winter (.78) , Boat (.51) », Microsoft « outdoor , water , mountain , snow , hill , man , riding , red , people ,surfing , large , skiing », Clarifai « snow (1.00) , winter (1.00) , ice (.98) , frozen (.96) , sport (.96) , outdoors (.95) , nature (.95) , cold (.95) , frosty (.93) , season (.92) , mountain (.90) , glacier (.89) , horizontal (.89) , frost (.88) , travel (.88) , adventure (.88) » (les résultats d’IBM et Google sont similaires; seuls ceux de CloudSight sont décevants).
editions_hurtubise_9782891448093
Les illustrations sont clairement plus difficiles à analyser. Amazon Rekognition y voit d’abord « Bandage (.96) , First Aid (.96) », l’API de Microsoft ne se mouille pas et mentionne « Others ». L’API d’IBM identifie bien les couleurs, mais n’est pas très utile avec « périphérique de stockage (.82), enregistrement (.80) , presse écrite (.80) , CD-ROM (.70) , boite de céréales (.62) , boîte (.62) ». CloudSight remporte la palme du loufoque avec « white and pink Hello Kitty print smartphone case ».

Il faut noter que les résultats sont assez inégaux. Sur l’illustration précédente, Google a donné des résultats corrects : « cartoon (.94) , facial expression (.94) , text (.93) , flower (.83) , emotion (.82) , clip art (.81) , play (.78) , art (.75) , smile (.75) , child (.74) ». Les écarts de performance sont visibles ailleurs également.

presses_de_l_universite_de_montreal_9782760627130
Pour cette image, Rekognition d’Amazon fait un travail honnête : « Building (.74) , Office Building (.74) , Corridor (.63) , Banister (.61) , Handrail (.61) , Lighting (.61) , Indoors (.53) , Interior Design (.53) , Alley (.52) , Alleyway (.52) , City (.52) , Road (.52) , Street (.52) , Town (.52) , Urban (.52) , Housing ». L’API de Microsoft confond toutefois le corridor bleu et sinueux avec un cours d’eau : « water , scene , fence , pier , photo , bridge , body , river , board , sitting , blue , standing , large , riding , white , boat , sign , man , dock , red , night »

Il faut également noter que seule l’API d’IBM permet d’obtenir des résultats en français. Dans tous les autres cas, les résultats sont en anglais. Cela ajoutera un défi supplémentaire à l’utilisation des résultats. Il existe des solutions pour traduire des textes de façon automatique, et on peut penser que les résultats seront plus satisfaisants sur de simples mots (ce que nous traitons) que pour de longs textes. Toutefois, sans le contexte, on peut également émettre l’hypothèse que certaines traductions seront erronées.

Parmi les autres trouvailles étonnantes, notons que l’API de Google permet d’identifier les oeuvres reprises sur les pages couvertures.

Le Coeur gros
L’API de Google a correctement identifié la peinture de Eugenia Martinez Vallejo partiellement reprise dans la composition de cette couverture.

Nous publierons prochainement notre analyse plus détaillée de ces résultats, afin d’identifier si certaines de ces API sont suffisamment précises pour atteindre nos objectifs initiaux, à tout le moins pour certaines catégories d’images.

Mise à jour 27 septembre 2018: la deuxième partie du texte est maintenant disponible.

Passer une œuvre au tamis

Comment découvre-t-on de nouvelles œuvres littéraires ? Traditionnellement, en ayant recours à des passeurs : libraires, bibliothécaires, critiques, amis, famille… Parfois, en cherchant simplement sur Internet : « polar cuba », « biographie rené lévesque », « livre jeunesse 6 ans » etc. Les professionnels eux-mêmes ont recours aux moteurs de recherche, que ce soit ceux que nous utilisons couramment ou les outils qui sont à leur disposition.

Mais tous ces outils dépendent de la façon dont lesdites œuvres ont été présentées. A-t-on décrit tel livre comme un polar ? Sait-on que l’intrigue se passe à Cuba ? Ce livre sur René Lévesque est-il présenté comme une biographie ? Les albums jeunesse sont-ils catégorisés selon l’âge ?

Il existe mille et une façons de décrire un livre, et le temps consacré à cette tâche est limité. Les éditeurs ont leur propre filtre pour parler d’un livre, les bibliothécaires en ont un autre, etc. Une libraire vous dira qu’on lui parle souvent de la couleur de la couverture d’un livre, de la nationalité de l’auteur ou de l’image de la jaquette.

Et, en plus d’apprendre à parler aux êtres humains, il faudrait aussi maintenant apprendre à parler directement aux machines, aux algorithmes, pour comprendre comment est organisée toute la matière à laquelle ils ont recours.

Le projet TAMIS, c’est un peu la réponse à tout ça. Ou, plus modestement, un début de réponse.

TAMIS, c’est le Traitement Algorithmique des Métadonnées en Imagerie et Sémantique. Oui, c’est capilotracté, mais bon, on voulait se concentrer sur les résultats, pas sur le nom. Et puis, passer une œuvre au tamis, ça se tient !

Et donc, concrètement ? C’est l’utilisation d’algorithmes, de librairies à code source libre, ou d’API disponibles à peu de frais, disponibles ici et là, pour tenter de comprendre une œuvre, d’en sortir le jus qu’un curateur humain n’a pas le temps, l’énergie ou la connaissance d’extraire. C’est utiliser le contenu même d’une oeuvre pour tenter de la décrire : mots fréquents, géolocalisation, analyses sémantiques, tout va y passer. Analyse des couvertures, des résumés, mises en relation, travail statistique.

Ça vous semble compliqué ou encore abstrait ? Les prochains billets expliqueront pas à pas nos démarches, nos succès, nos échecs, car nous nous sommes engagés à retourner un maximum d’informations à la communauté.

Ce projet bénéficie du soutien du Conseil des arts du Canada dans le cadre du Fonds stratégie numérique, qui nous permet enfin de réaliser des projets innovants en recherche et développement.

Finalement, ce projet collaboratif ne pourrait fonctionner sans nos partenaires qui nous font confiance et nous donnent accès à leurs ressources.

Merci !

Capture d_écran 2018-09-05 à 11.40.17

Photo : ma bibliothèque qui aurait bien besoin d’organisation !