Accueil / Blog / Métier / 2019 / Détecter des formes dans des photos de paysage

Détecter des formes dans des photos de paysage

Par Daphné Lercier — publié 14/02/2019, édité le 15/02/2019
Contributeurs : Bérengère Mathieu
Et parce que c'est la St-Valentin, on détecte des cœurs !
Détecter des formes dans des photos de paysage

Shimshal, Pakistan

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.

Heart Reef Heart Shaped Lake Guandu Nature Park
Heart Shaped Lake Heart in Voh Trnovačko Lake
Tavarua Island Tupai Atoll Galešnjak Island

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]:

ResNet architecture

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 !

Prédictions en nombre d'images  Prédictions en pourcentages
(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 :

Heart test 1 Heart test 2 Heart test 3
99.78 % 99.95 % 26.79 %
Heart test 4 Heart test 5 Heart test 6
99.99 % 99.63 % 100 %
Heart test 7 Heart test 8 Heart test 9
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 !

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Créer une carte avec Umap Créer une carte avec Umap 03/07/2019

[ Tuto ] créer une carte utilisant OpenStreetMap et y ajouter ou importer des données, puis ...

Use PostGIS topologies to clean-up road networks 03/07/2013

This article gives a few basics to get started with using the PostGIS topology extension

Utilisation de la vision par ordinateur pour redresser des images Utilisation de la vision par ordinateur pour redresser des images 14/05/2019

Dans un module de comparaison d'images, lorsque deux photographies ne sont pas cadrées de la même ...

Représentation des modèles numériques de terrain sur le web : ombrage et 3D Représentation des modèles numériques de terrain sur le web : ombrage et 3D 11/02/2019

Les Modèles Numériques de Terrain sont des données représentant la forme du terrain. Sur une ...

Machine learning : détection d'anomalies Machine learning : détection d'anomalies 28/01/2019

Comment détecter des anomalies dans vos datasets en utilisant des algorithmes de machine learning.