CVB Polimago vs deep learning

Les systèmes de machine learning aident à résoudre les problèmes de façon autonome en utilisant l'intelligence analytique et la résolution de problèmes pour prédire les résultats. Mais de quoi ont-ils besoin pour pouvoir fonctionner et quelle solution serait la mieux adaptée à votre application ? Avant d'entrer dans le vif du sujet, voyons tout d’abord ce que signifie le deep learning, quels sont ses atouts et les conditions préalables à son utilisation.

Le deep learning, ou l’apprentissage profond, est un sous-ensemble de l'intelligence artifielle et du machine learning.


L’intelligence artificielle est la reproduction par les machines de l’intelligence analytique de l’homme, orientée vers la résolution de problèmes. La capacité d’un système à apprendre à partir d’un ensemble de données, afin de prévoir des résultats (sans programmation explicite), s’appelle le machine learning, ou apprentissage automatique. Le deep learning, ou apprentissage profond, va plus loin ; il est capable d’interpréter des groupes de données et leur corrélation en utilisant des réseaux de neurones artificiels.

« L’apprentissage profond désigne un ensemble de méthodes de machine learning qui utilisent des réseaux artificiels de neurones. L’apprentissage peut être supervisé, semi-supervisé ou non supervisé. »

Comment fonctionne le deep learning avec la vision industrielle ?

Pour y répondre, il est important de connaître la façon dont les décisions sont prises dans un système de vision et de voir comment améliorer cette étape avec l’apprentissage automatique.
Si vous souhaitez apprendre à un système de vision classique à reconnaître un type de voiture, vous commencerez certainement par programmer le système avec les paramètres suivants.
Ces réglages fonctionnent bien avec des voitures de type berline. Mais pour d'autres types de voitures, il faudra adapter les paramètres.



Puis, une fois passé en revue les différents types de voitures, vous devrez inclure de nouveaux paramètres adaptés aux autres types de véhicules.


Les ajustages ne concernent jusqu’à présent que la vue de profil. Il faudra y ajouter d’autres angles de vue et dimensions.

Et comment être sûr que votre ensemble de données couvre toutes les variations existantes ? Votre système pourra-t-il par exemple reconnaître le véhicule ci-contre ?

Apprendre à l’aide d’exemples

Comment un enfant apprend-il à reconnaître une voiture ? Quel est le rapport avec l’apprentissage automatique ?
A chaque fois qu’un enfant est confronté à un nouvel exemple de ce qui pourrait être une voiture, il compare ce qu’il voit à tous les types de voitures qu’il a déjà vus.
Un enfant ne va pas penser qu’une voiture doit avoir un certain nombre de roues et de vitres. Une silhouette sans roue peut suffire à être reconnue comme étant une voiture.
500 millions d’années d’évolution ont créé cette incroyable harmonie entre nos yeux et le cortex visuel primaire de notre cerveau. Nous ne remarquons ni les connexions complexes qui existent entre nos neurones ni la façon dont elles nous aident à nous souvenir et à reconnaître les choses que nous voyons.
L’apprentissage automatique cherche à reproduire ce processus : la machine apprend à l’aide d’exemples au lieu de s’appuyer sur les instructions explicites de l’utilisateur. Ces exemples proviennent du monde réel et forment des ensembles qui servent de base à l’apprentissage du système.
En vision industrielle, ces ensembles comprennent de bons et de mauvais exemples. Ces données permettent de créer des modèles (des scénarios) qui vont aider à la classification.


Comment ces modèles sont-ils créés ? Grâce aux réseaux de neurones...

Réseaux de neurones


Comme la relation entre les données entrantes et sortantes n’est en géneral pas linéaire dans les applications de vision, les processus de prises de décision entre elles sont complexes.
Cette prise de décision s'effectue dans un réseau neuronal, une sorte de logiciel/matériel du cerveau. De simples unités décisionnelles ou logiques s’y combinent avec les données d’entrée, de sortie et les prises de décision simples pour former un système capable de prendre des décisions complexes.


Ces unités logiques sont composées de neurones (ou perceptrons). L'ensemble du système forme le réseau neuronal (cerveau).
Les perceptrons (ou neurones formels) ont été développés à la fin des années 1950 par Frank Rosenblatt, un psychologue américain reconnu pour son travail dans le domaine de l'intelligence artificielle.

Frank Rosenblatt, an American psychologist

Les neurones (ou perceptrons) n’ont qu’une seule sortie à partir de différentes entrées. Chaque entrée a un poids qui lui est associé (en fonction de son importance). A partir de leur somme et d’une valeur seuil (de la somme totale), le résultat est calculé.
L'interconnectivité des neurones est ce qui constitue un réseau neuronal artificiel. Les neurones s’organisent sous forme de couches reliées entre elles. Ces connexions deviennent de plus en plus complexes à mesure qu'elles progressent dans la structure (en profondeur), à travers des couches intermédiaires (ou cachées), pour produire un résultat. Les réseaux de neurones se composent généralement de trois sortes de couches :
Sans les couches cachées intermédiaires, le système ne peut gérer que des problèmes relativement simples. Plus l’interconnectivité sera forte et le nombre de couches cachées élevé, plus les données pourront se combiner entre elles et aboutir à des prises de décision complexes. La topologie du réseau est donc essentielle à la complexité des décisions.
Même s’il a la capacité de prendre des décisions complexes, un réseau de neurones ne sait pas ce dont il a besoin pour aller dans la bonne direction. Un réseau non formé ne « sait » rien et donne des résultats aléatoires ou chaotiques jusqu'à ce que les neurones et le réseau aient été « formés » pour donner le résultat souhaité.
C’est là que le neurone entre en jeu avec sa capacité à apprendre, et change le poids (ou l’importance) des données d’entrée ainsi que la valeur seuil des données de sortie. Il est capable d’« ajuster » le système pour qu‘il trouve le résultat désiré.
Pour effectuer ces ajustements, il faut cependant que le résultat puisse envoyer une sorte de feedback, ce qui demande une très grande quantité de données.

Réseaux de neurones convolutifs


Un réseau de neurones convolutif, ou CNN, est une forme de réseau de neurones artificiels. Il comporte au moins une couche, constituée d’unités convolutives pour l’extraction des données de l’image.
L'architecture restreinte réduit la complexité des connexions des couches suivantes, car les informations les plus utiles sont acquises localement, à partir de la couche précédente. Le poids des différentes données d’une couche est partagé avec la couche suivante, ce qui crée le processus de convolution.
Les CNN fonctionnent bien pour la reconnaissance d'images. Les informations importantes doivent en effet être reconnues à un endroit quelconque de l'image. Le motif est donc transmis et interprété par le réseau, quel que soit son emplacement dans l'image.
En revenant à l’idée d’apprentissage par les exemples, pour que le réseau puisse apprendre et fournir le résultat souhaité, il doit donc être alimenté par des données. Celles-ci peuvent être à la fois de bons et de mauvais exemples, ou des données utiles pour la classification.

Apprentissage supervisé ?


Les réseaux de neurones ne sont pas les seuls algorithmes d'apprentissage, mais ils sont les plus répandus parmi les multiples approches d'apprentissage automatique. L'apprentissage supervisé utilise des images étiquetées, ou marquées, à partir desquelles l'algorithme génère une fonction qui permet de classifier correctement ces images. Cependant, cette méthode ne permet pas de dire quelles variables d'entrée doivent être utilisées pour programmer l'algorithme. Ainsi, avant l'apprentissage proprement dit, une approche itérative de l'apprentissage est nécessaire afin de se faire une idée de la « pertinence » des résultats.

« Une des caractéristiques importantes d'une machine qui apprend est que son professeur est souvent très largement ignorant de ce qui se passe à l'intérieur, bien qu'il soit encore capable, dans une certaine mesure, de prédire le comportement de son élève. » (Alan Turing, 1950, dans « Computing Machinery and Intelligence ». Mind, 59, 433-460)

Des données, des données et encore des données... En a-t-on vraiment besoin ?


Pour qu'un outil de machine learning fonctionne, il a besoin d'un retour d'information concernant les bonnes et les mauvaises décisions. L’outil d’apprentissage ne connaît que les données d’images marquées. Ainsi, les différences repérées sur ces images permettent à l’outil de savoir à quoi ressemble une catégorie donnée et quelles en sont ses limites. La recherche de cas limites est une partie importante du processus.
Le processus de classification généré entretient une relation complexe avec les données entrantes (dans le cas contraire, un outil classique serait suffisant). Cette relation n’est pas seulement complexe, mais également difficile (voire impossible) à sonder, faisant du système une réelle « boîte noire ».
Pour cette raison, il est essentiel que les données qui servent à l’apprentissage soient réellement représentatives des différents types de variations que le système verra au moment de sa mise en service. Aussi, pour éviter que les résultats ne soient faussés par quelques « valeurs aberrantes », de grands ensembles de données sont nécessaires.

CNN & CVB Polimago : pour ou contre


Les applications utilisant les CNN et CVB Polimago sont très souvent les mêmes, même si certaines ne s’effectuent actuellement qu’avec des CNN, comme l'apprentissage non supervisé (formation à partir de données non étiquetées) ou la segmentation d'image (à partir de caractéristiques relatives à la texture) par exemple. CVB Polimago, quant à lui, a besoin de beaucoup moins de données de formation : 50 images par catégorie suffisent en général, au lieu de 500 à 1000 pour les CNN. La faible quantité de données d’apprentissage permet ainsi d’utiliser CVB Polimago dans de nombreuses applications industrielles, la détection de défauts par exemple, où la quantité d’images de défauts est relativement faible.
Les grands ensembles de données dont les CNN ont besoin pour se former sont une charge pour les unités de traitement. Le parallélisme des GPU permet d'accélérer la formation des CNN (de x10 à x100). CVB Polimago ne tire aucun avantage du traitement GPU, mais avec des ensembles de formations plus petits, il va plus vite pour former les systèmes.
Avec un ensemble de données plus restreint, CVB Polimago a un autre avantage : les paramètres de formation du système sont moins nombreux qu’avec un CNN, ce qui peut rendre CVB Polimago plus accessible à un nouvel utilisateur.

Rendez-vous sur notre site Common Vision Blox pour en savoir plus sur CVB Polimago

Exemples d'applications de CVB Polimago

Identifier des morceaux de poulet

OCR difficile

Récolte sélective

Classifier les véhicules

Identifier des sandwiches

Identifier des poissons