dans le Recherche Google: Etat de l'Union En mai dernier, John Mueller et Martin Splitt ont consacré environ un quart de l’adresse aux sujets liés à l’image.

Ils ont annoncé une grande liste d'améliorations apportées à Google Recherche d'images et ont prédit qu'il s'agirait d'une énorme opportunité inexploitée pour le référencement.

SEO Clarity, un fournisseur d’outil de référencement, a publié un rapport très intéressant Autour du même moment. Parmi d'autres résultats, ils ont constaté que plus d'un tiers des résultats de recherche sur le Web incluent des images.

Comment générer du texte à partir d'images avec Python

Les images sont importantes pour rechercher des visiteurs non seulement parce qu'elles sont visuellement plus attrayantes que le texte, mais elles fournissent également instantanément un contexte qui nécessiterait beaucoup plus de temps pour la lecture du texte.

Google estime que l'amélioration des images dans les moteurs de recherche aidera les utilisateurs à consulter davantage les pages qui correspondent à leurs intentions.

Maintenant, j’ai quelques bonnes et mauvaises nouvelles pour vous concernant cette nouvelle opportunité.

La mauvaise nouvelle est que pour améliorer la capacité de classement de vos images, vous devez effectuer le travail fastidieux de l'ajout de métadonnées de texte sous la forme de texte de qualité et de texte environnant.

Mais la bonne nouvelle est que nous allons apprendre à automatiser ce travail fastidieux avec Python!

Voici notre plan d'action:

  • Nous utiliserons DeepCrawl pour explorer un site Web et trouver les images importantes pour lesquelles il manque du texte ALT.
  • Nous allons former un modèle utilisant Pythia capable de générer des légendes d’image.
  • Nous allons écrire une fonction Python pour parcourir les images et générer leurs légendes.
  • Nous allons apprendre quelques astuces pour améliorer la qualité des légendes et en produire des plus personnalisées.
  • Nous étudierons les concepts d'apprentissage en profondeur qui rendent cela possible.
  • Je partagerai des ressources pour en apprendre davantage et pour des projets communautaires intéressants.

Présentation de Pythia

Les progrès réalisés dans la communauté d'apprentissage en profondeur sont à la fois passionnants et époustouflants. C'est vraiment difficile à suivre!

Il suffit de regarder le modèle Megatron publié par NVIDIA le mois dernier avec 8,3 milliards de paramètres et 5 fois plus grand que GPT2, l'ancien détenteur du record.

Mais, plus important encore, passons en revue quelques-unes des merveilles qui sont maintenant possibles.

Comment générer du texte à partir d'images avec Python

N'hésitez pas à consulter ce site de démonstration consacré aux questions sur le contenu des images.

Bien devinez quoi? Le framework qui alimente cette démo s’appelle Pythia. C'est l'un des projets d'apprentissage en profondeur de Facebook et nous allons le mettre au travail dans cet article.

Extraction d'images manquantes dans Alt Text avec DeepCrawl

Comment générer du texte à partir d'images avec Python

Nous allons générer des légendes pour cela beau site qui a tout ce dont vous avez besoin sur les alpagas.

Comment générer du texte à partir d'images avec Python

Lorsque vous configurez l'analyse, veillez à inclure les ressources de l'image (internes et externes).

Sélectionnez une extraction personnalisée prédéfinie pour extraire des images sans attribut alt text.

Comment générer du texte à partir d'images avec Python

Une fois l’analyse terminée, exportez la liste des URL d’image sous forme de fichier CSV une fois l’analyse terminée.

Génération de sous-titres à partir d'images à l'aide de Pythia

Dirigez-vous vers la Pythia Page GitHub et cliquez sur le sous-titrage de l'image lien de démonstration. Il porte le libellé «BUTD Image Captioning».

BUTD signifie « Bottom Up and Top Down », ce qui est discuté dans le document de recherche cela explique la technique utilisée.

En suivant le lien, vous accéderez à un carnet Google Colab, mais ce dernier est en lecture seule. Vous devez sélectionner Fichier> Faire une copie dans Drive.

Maintenant, les prochaines étapes sont la partie la plus difficile.

Comment générer du texte à partir d'images avec Python

Sous Runtime, sélectionnez Run all.

Faites défiler jusqu'à la dernière cellule du cahier et attendez la fin de l'exécution.

Copiez et collez l’exemple d’image dans une cellule distincte et exécutez-le avec Maj + Entrée.

image_text = init_widgets (

    "http://images.cocodataset.org/train2017/000000505539.jpg"

)

Comment générer du texte à partir d'images avec Python

Vous devriez voir un widget avec une invite à sous-titrer une image à l'aide de son URL. Appuyez sur le bouton qui dit Légende cette image! et vous obtiendrez ceci.

Comment générer du texte à partir d'images avec Python

La légende indique clairement « une girafe et deux zèbres marchant sur une route ».

Voyons quelques images de produits manquants dans notre site Web Alpaca Clothing.

Comment générer du texte à partir d'images avec Python

Nous passons en revue cette page Plus précisément.

Comment générer du texte à partir d'images avec Python

La légende générée se lit comme suit: « une femme debout devant un fond blanc ».

Comment générer du texte à partir d'images avec Python

La légende générée indique « un vase blanc assis sur une table », ce qui est faux, mais pas complètement fou!

Des résultats très impressionnants sans écrire une ligne de code! Je plaisantais évidemment sur le fait que ce soit difficile du tout.

Itérer sur toutes les images Manquer les légendes avec Python

Nous devons ajouter le code suivant à la fin du cahier de démonstration Pythia que nous avons cloné à partir de leur site.

Commençons par télécharger le fichier que nous avons exporté de DeepCrawl.

depuis les fichiers d'importation google.colab

uploadé = fichiers.upload ()

Nous allons charger le fichier sur des pandas pour savoir comment extraire des URL d'image à l'aide d'un exemple d'URL.

Nous pouvons apporter de petites modifications à la fonction on_button_click pour créer notre fonction generate_captions. Cette fonction prendra l’URL d’une image en entrée et en émettra une légende.

Comment générer du texte à partir d'images avec Python

Voici un exemple. La légende se lit comme suit: « une femme en robe rouge tenant un ours en peluche ». Ce n'est pas précis à 100%, mais pas terrible non plus.

Ce code nous aidera à capturer toutes les images pour cet exemple d'URL.

Comment générer du texte à partir d'images avec Python

Voici ce que disent les nouvelles légendes:

  • « Une femme souriante avec un sourire sur son visage »
  • “Un tas de vases assis à côté d'un tas de rochers”
  • “Une femme souriante tenant une cigarette à la main”

Les exemples sont proches mais décevants. Mais la suivante était absolument juste!

Comment générer du texte à partir d'images avec Python
La légende se lit comme suit: «Deux moutons se tiennent côte à côte», ce dont personne ne peut se disputer, mais il s’agit en réalité d’alpaca et non de mouton.

Enfin, apportons quelques modifications pour pouvoir générer des légendes pour toutes les URL d’image que nous avons exportées à partir de DeepCrawl.

Vous pouvez voir dans la sortie des URL avec des attributs supplémentaires comme celui-ci.

https://alpacas.com/pub/media/wysiwyg/panel/shippingusa.jpg"alt =" http://www.searchenginejournal.com/ "/>

L'extrait de code suivant nous aidera à supprimer ces attributs supplémentaires et à obtenir les URL de l'image.

image_urls =[resub('[resub('[resub('[resub('http://www.searchenginejournal.com/', "http://www.searchenginejournal.com/", url) .strip () pour url dans image_urls si url]

Cela nous donne une liste propre avec 144 URL d'image.

unique_images = set (image_urls)

Ensuite, nous transformons la liste en un ensemble de 44 URL uniques.

Enfin, nous parcourons chaque image et générons une légende, comme nous l’avions fait lors des tests sur une URL.

Certaines images n'ont pas été capturées en raison de la taille de l'image et des attentes du réseau de neurones. J'ai capturé, ignoré et signalé ces exceptions.

Voici à quoi ressemble la sortie partielle.

Comment générer du texte à partir d'images avec Python La légende se lit comme suit: « une femme debout à côté d'un groupe de moutons ».Comment générer du texte à partir d'images avec Python

La légende se lit comme suit: «une étagère est remplie d’objets colorés»

Les légendes générées ne sont pas particulièrement précises car nous avons formé Pythia sur un jeu de données de sous-titrage générique. Plus précisément, le Jeu de données COCO, qui signifie Objets communs dans le contexte.

Afin de produire de meilleures légendes, vous devez générer votre propre jeu de données personnalisé. Je partagerai quelques idées et quelques-uns de mes premiers résultats dans la section suivante.

Le pouvoir de la formation sur un jeu de données personnalisé

Pour obtenir de meilleures légendes, vous devez créer un jeu de données d'images et de légendes à l'aide de vos propres images. Le processus pour faire cela hors du champ de cet article, mais voici une Didacticiel vous pouvez suivre pour commencer.

L'idée principale est que vous devez gratter les images et idéalement cinq légendes par image, les redimensionner pour utiliser une taille normalisée et formater les fichiers comme prévu par le format COCO.

{
    "Info": {...},
    "licences": [...],
    "images": [...],
    "annotations": [...],
    "catégories": [...], <- Pas dans les légendes annotations
    "segment_info": [...] <- Uniquement dans les annotations panoptiques
}

L’une des idées que j’ai utilisées avec succès pour les clients de commerce électronique est de générer un jeu de données personnalisé utilisant des images de produit et les résumés de révision cinq étoiles correspondants en tant que légendes.

L’objectif n’est pas simplement de générer du texte alternatif, mais également des titres potentiellement axés sur les avantages.

Permettez-moi de partager quelques exemples lorsque j'ai commencé à jouer avec cela l'année dernière. J'ai utilisé des critiques 3 à 5 étoiles pour obtenir suffisamment de données.

Comment générer du texte à partir d'images avec Python Comment générer du texte à partir d'images avec Python

Voici quelques exemples amusants pour vous montrer que ce type de travail peut être très amusant. Je pense que j'ai réveillé ma femme quand j'ai éclaté de rire à ceux-ci.

Comment générer du texte à partir d'images avec Python Comment générer du texte à partir d'images avec Python

Comprendre le fonctionnement de Pythia

Comment générer du texte à partir d'images avec Python

Il est très intéressant de voir comment un réseau de neurones produit des légendes à partir d’images.

Dans mon précédent articles d'apprentissage en profondeur, J’ai mentionné l’approche générale codeur-décodeur utilisée dans la plupart des tâches d’approfondissement. C'est la même chose avec la légende de l'image, sauf que nous avons deux types de réseaux de neurones connectés ici.

UNE réseau de neurones convolutifs prend une image et est capable d'extraire les caractéristiques saillantes de l'image qui sont ensuite transformées en vecteurs / imbrications.

UNE réseau de neurones récurrent prend les images intégrées et essaie de prédire les mots correspondants qui peuvent décrire l’image.

Pythia utilise une approche plus avancée décrite dans le document “Attention ascendante et descendante pour le sous-titrage des images et les questions visuelles et réponses”.

Au lieu d'utiliser un CNN traditionnel utilisé dans les tâches de classification des images pour alimenter le codeur, il utilise un réseau de neurones de détection d'objets (Faster R-CNN) capable de classer les objets dans les images.

Je pense que c’est la principale raison qui permet de produire des sous-titres d’image de haute qualité.

Comprendre l'attention neuronale

Comment générer du texte à partir d'images avec Python

Attention neurale a été l’un des progrès les plus importants des réseaux de neurones.

En termes simples, le mécanisme d’attention permet au réseau de se concentrer sur les bonnes parties de l’intrant permettant d’achever la tâche de transformation.

Dans l'exemple ci-dessus, vous pouvez voir, par exemple, que le réseau associe le fait de «jouer» avec l'image visuelle du disque volant et le fond sombre avec le fait qu'ils jouent dans le noir.

L’attention neuronale est un élément clé de la Transformers architecture BERT et d’autres codeurs à la pointe de la technologie.

Ressources et projets communautaires

J'ai couvert ce sujet de la génération de texte à partir d'images et de texte en détail lors d'un récent webinaire pour DeepCrawl. Vous pouvez trouver le récapitulez ici et aussi mes réponses à questions des participants.

J’ai d’abord appris à construire un système de sous-titrage à partir de rien car c’était le projet final du premier module de la Spécialisation avancée en apprentissage automatique de Coursera.

Les cours sont incroyablement stimulants, encore plus lorsque vous n'êtes pas un ingénieur en apprentissage automatique à temps plein. Mais, l'expérience m'a beaucoup appris sur ce qui est possible et sur l'orientation prise par les chercheurs.

L’enthousiasme suscité par Python continue de croître dans notre communauté. Je vois de plus en plus de gens se demander comment démarrer et partager leurs projets.

D'abord un grand bravo à Parker qui a pris la peine de demander à son équipe juridique d’approuver la publication du code qu’il avait développé en interne.

C'est un scénario qui lit les données de l'API Stats et les stocke dans une base de données pour l'aider à les visualiser dans Tableau.

Voici quelques exemples supplémentaires et la liste ne cesse de s'allonger:

Plus de ressources:


Crédits d'image

Toutes les captures d'écran réalisées par l'auteur, septembre 2019





Source link