Makina Blog

Le blog Makina-corpus

Détecter des formes dans des photos de paysage


Et parce que c'est la St-Valentin, on détecte des cœurs !

Nous vous avons déjà parlé de réseaux de neurones, en particulier des réseaux de neurones convolutifs dans un précédent article où l'on vous expliquait comment détecter des émotions à partir de photographies. Ici nous allons utiliser le même principe.

Récupérer les images d'entraînement

À partir de cet article, on a identifié quelques sites remarquables quant à leur forme. Ces images vont nous servir de base pour l'entraînement du modèle.

Nous avons construit un jeu de données avec une centaine d'images similaires à celles-ci, et 400 images de paysages divers mêlant vues au sol et vues satellitaires. Nous séparons ce jeu de données en deux groupes de façon à former un jeu d'apprentissage et un jeu de validation utilisés lors de la spécialisation de notre réseau de neurones.

Spécialiser un modèle existant

Pour essayer d'obtenir un résultat rapidement, on utilise le modèle Resnet50,  Resnet pour "Residual Network", basé sur le papier de recherche "Deep Residual Learning For Image Recognition". Il a été pré-entraîné sur la base de données Imagenet, une base contenant plus de 14 millions d'images classées en plus de 20 000 groupes et mise à disposition de la communauté de l'analyse d'images par le laboratoire Stanford Vision Lab.

Ce modèle est composé de 50 couches, et a la particularité d'introduire des connexions résiduelles. Contrairement aux réseaux de neurones convolutifs qui ont une architecture linéaire (un empilement de couches dont chaque sortie est uniquement connectée à la couche suivante [voir l'architecture A de la figure suivante]), dans un réseau résiduel, la sortie des couches précédentes est reliée à la sortie de nouvelles couches pour les transmettre toutes les deux à la couche suivante. Un schéma s'impose [voir l'architecture B de la figure suivante]:

Extrait de l'architecture d'un réseau de neurones convolutif sans (A) et avec (B) connexion résiduelle. Source

Avant la mise au point de ce type de réseau, il était impossible d'entraîner un réseau comportant plus de 25 couches. Les couches devenant plus profondes, les gradients devenant plus petits, les performances en étaient inévitablement dégradées : l'erreur ne se propageait plus correctement et la mise à jour des pondérations en était directement impactée. Les réseaux de neurones résiduels ont permis d'aller au-delà de cette limitation. Leur architecture permet la création de réseaux de neurones très profonds, à la précision meilleure que ceux ayant des architectures linéaires car ils ont la capacité d'extraire davantage d'informations et d'avoir ainsi une analyse plus avancée des images.

Le modèle Resnet50 offre aussi l'avantage d'être directement disponible dans Keras (un de nos frameworks de prédilection avec scikit-learn), et de fonctionner plutôt bien pour la tâche que nous essayons de faire aujourd'hui.

Valider le modèle

Nous gardons 10% de notre jeu de données initial pour valider le modèle, il s'agit du jeu de validation. Avec ce jeu de données, le modèle teste ses prédictions à chaque étape de son apprentissage. A la fin de l'apprentissage, notre modèle identifie correctement 156 des 164 images contenant une forme de cœur que nous lui avons fourni, soit 95% de nos images !

(a) (b)

Evaluation des prédictions réalisées par notre modèle entraîné (a) en nombre d'images, (b) en pourcentages.

Nous considérons arbitrairement qu'une prédiction est correcte lorsque le score de confiance fournit par notre modèle est supérieur à 80 %.

Tester le modèle

Dernière étape : tester le modèle avec des images n'ayant pas servi à l'entraînement de celui-ci !

Voici les scores de confiance que nous prédits notre modèle pour de nouvelles images que nous lui avons proposées :

99.78 % 99.95 % 26.79 %
99.99 % 99.63 % 100 %
88.08 % 0.02 % 37.08 %

Notre modèle retourne un score de confiance élevé lorsque la forme recherchée n'est pas trop déformée, en particulier par la perspective. Avec un jeu d'apprentissage plus important (contenant davantage de photographies), ces formes pourraient facilement être reconnues par le réseau de neurones entraîné.

Conclusion

C'est un modèle facile à mettre en œuvre et particulièrement bien adapté pour ce type de détection. Notre nombre d'images était un peu faible pour un projet de deep-learning, avouons-le, mais l'utilisation d'un réseau pré-entraîné nous a permis d'obtenir de très bons résultats. Inutile donc de mettre tant de cœur à l'ouvrage, cet article est bien la preuve qu'une IA bien entraînée a du cœur !

Comme toujours, si ce travail vous a plu, venez apprendre à le faire vous-même en suivant notre formation deep learning!

Formations associées

Formations IA / Data Science

Formation Mise en place de projets Deep Learning avec Keras

Toulouse Du 20 au 22 mars 2024

Voir la formation

Formations SIG / Cartographie

Formation Leaflet

À distance (FOAD) Du 1er au 2 juillet 2024

Voir la formation

Actualités en lien

Image
Deep clustering d'images aériennes
09/02/2021

Deep clustering d'images aériennes

Cet article présente Deep Cluster, une méthode reposant sur l'utilisation conjointe d'un algorithme de clustering et d'un réseau de neurones (deep learning). Nous montrons que Deep Cluster réussit à grouper en ensembles cohérents des photographies aériennes récupérées via l'API Mapbox. Grâce à l'outil MLflow nous avons tracé et analysé les résultats obtenus par la méthode Deep Cluster. Dans cette publication nous donnerons quelques précisions sur l'utilisation de cet outil.

Voir l'article
Image
geolabel-maker
18/05/2020

Extraction d'objets pour la cartographie par deep-learning : création d'une vérité terrain

Cette série d'articles parle de cartographie par deep-learning à partir d'images aériennes ou satellitaires. Dans ce 1er article, l'étape préliminaire à toute utilisation d'un modèle d'apprentissage supervisé est abordée: la création du jeu de données d'apprentissage. Notre outil geolabel-maker est mis à votre disposition pour vous aider.

Voir l'article
Image
deep-learning-détection-d'émotions
12/04/2018

Deep Learning et détection d'émotions

Un premier pas dans le Deep Learning pour la détection d'émotions à partir de photographies.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus