FR3105860A1 - System and method for designing a neural network - Google Patents

System and method for designing a neural network Download PDF

Info

Publication number
FR3105860A1
FR3105860A1 FR1915775A FR1915775A FR3105860A1 FR 3105860 A1 FR3105860 A1 FR 3105860A1 FR 1915775 A FR1915775 A FR 1915775A FR 1915775 A FR1915775 A FR 1915775A FR 3105860 A1 FR3105860 A1 FR 3105860A1
Authority
FR
France
Prior art keywords
sample
neural network
samples
clean
sensors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1915775A
Other languages
French (fr)
Other versions
FR3105860B1 (en
Inventor
Romain Roux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VIT SAS
Original Assignee
VIT SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VIT SAS filed Critical VIT SAS
Priority to FR1915775A priority Critical patent/FR3105860B1/en
Priority to PCT/EP2020/088004 priority patent/WO2021136791A1/en
Publication of FR3105860A1 publication Critical patent/FR3105860A1/en
Application granted granted Critical
Publication of FR3105860B1 publication Critical patent/FR3105860B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Abstract

Système et procédé pour la conception d’un réseau neuronal La présente description concerne un procédé de conception d’un premier réseau neuronal (302) pour filtrer des échantillons altérés, le procédé comprenant : prévoir un deuxième réseau neuronal (702) ; fournir un premier échantillon altéré et un premier échantillon propre au premier réseau neuronal (302), et réaliser un apprentissage du premier réseau neuronal pour filtrer le premier échantillon altéré, et pour générer un deuxième échantillon propre, sur la base d’une vérité de terrain fournie par le premier échantillon propre ; et fournir le premier échantillon propre et le premier échantillon altéré au deuxième réseau neuronal (702), et réaliser un apprentissage du deuxième réseau neuronal pour altérer le premier échantillon propre, et générer un deuxième échantillon altéré, sur la base d’une vérité de terrain fournie par le premier échantillon altéré. Figure pour l'abrégé : Fig. 7 System and method for designing a neural network The present disclosure relates to a method of designing a first neural network (302) for filtering out corrupted samples, the method comprising: providing a second neural network (702); providing a first corrupted sample and a first clean sample to the first neural network (302), and training the first neural network to filter the first corrupted sample, and to generate a second clean sample, based on ground truth provided by the first clean sample; and providing the first clean sample and the first corrupted sample to the second neural network (702), and training the second neural network to corrupt the first clean sample, and generating a second corrupted sample, based on ground truth provided by the first altered sample. Figure for the abstract: Fig. 7

Description

Système et procédé pour la conception d’un réseau neuronalSystem and method for designing a neural network

La présente description concerne de façon générale le domaine des systèmes de traitement, et en particulier un système et un procédé pour la conception d’un réseau neuronal.This disclosure relates generally to the field of processing systems, and in particular to a system and method for designing a neural network.

Des capteurs peuvent être utilisés pour capturer des échantillons de données pour une grande plage d’applications. Des exemples de capteurs comprennent des caméras bidimensionnelles (2D) et tridimensionnelles (3D) qui produisent des échantillons de données sous la forme d’images 2D ou 3D ou de séquences vidéo, des capteurs de pression qui produisent des échantillons de données sous la forme de lectures de pression, des capteurs de profondeur qui produisent des échantillons de données sous la forme de mesures de distance ou de cartes de profondeur, et des microphones qui produisent des échantillons de son.Sensors can be used to capture sample data for a wide range of applications. Examples of sensors include two-dimensional (2D) and three-dimensional (3D) cameras that produce data samples in the form of 2D or 3D images or video footage, pressure sensors that produce data samples in the form of pressure readings, depth sensors that produce data samples in the form of distance measurements or depth maps, and microphones that produce sound samples.

Les acquisitions provenant de tels capteurs sont presque toujours altérées dans une plus ou moins grande mesure par du bruit stochastique, des artefacts et/ou des données manquantes. L’utilisation des données de capteurs par des algorithmes automatiques ou par des utilisateurs humains peut être notablement compromise par de telles altérations. Par exemple, lorsque les données de capteurs sont utilisées par des algorithmes de prise de décision automatique, comme des algorithmes pour décider si une pièce fabriquée est conforme ou non à des spécifications requises, l’altération des données de capteurs peut augmenter le taux de décisions faussement positives et/ou faussement négatives.Acquisitions from such sensors are almost always affected to a greater or lesser extent by stochastic noise, artifacts and/or missing data. The use of sensor data by automatic algorithms or by human users can be significantly compromised by such alterations. For example, when sensor data is used by automatic decision-making algorithms, such as algorithms to decide whether or not a manufactured part meets required specifications, tampering with sensor data can increase the decision rate. false positives and/or false negatives.

Il serait par conséquent souhaitable de prévoir un système et un procédé pouvant réduire, au moins dans une certaine mesure, la présence d’altérations de données dans des données de capteurs capturées par un ou plusieurs capteurs.It would therefore be desirable to provide a system and method that can reduce, at least to some extent, the presence of data corruptions in sensor data captured by one or more sensors.

Selon un aspect, on prévoit un procédé d’inspection d’objets comprenant : capturer un ou plusieurs échantillons d’un objet en utilisant un ou plusieurs capteurs ; filtrer lesdits un ou plusieurs échantillons en utilisant un réseau neuronal pour retirer au moins partiellement des altérations dans les échantillons ; et appliquer un algorithme d’inspection d’objet auxdits un ou plusieurs échantillons filtrés.In one aspect, there is provided a method of inspecting objects comprising: capturing one or more samples of an object using one or more sensors; filtering said one or more samples using a neural network to at least partially remove alterations in the samples; and applying an object inspection algorithm to said one or more filtered samples.

Selon un mode de réalisation, lesdits un ou plusieurs capteurs comprennent au moins une caméra, lesdits un ou plusieurs échantillons comprenant au moins une image capturée par ladite au moins une caméra.According to one embodiment, said one or more sensors comprise at least one camera, said one or more samples comprising at least one image captured by said at least one camera.

Selon un mode de réalisation, l’objet est un objet fabriqué, et l’algorithme d’inspection d’objet est agencé pour détecter une ou plusieurs anomalies dans l’objet fabriqué, et pour classer l’objet comme passant avec succès ou échouant à l’inspection d’objet en fonction de la détection d’anomalies.According to one embodiment, the object is an artifact, and the object inspection algorithm is arranged to detect one or more anomalies in the artifact, and to classify the object as passing or failing object inspection based on anomaly detection.

Selon un mode de réalisation, le procédé comprend en outre, avant de capturer lesdits un ou plusieurs échantillons, un apprentissage du réseau neuronal sur la base d’un ou plusieurs échantillons d’apprentissage et d’une vérité de terrain correspondante.According to one embodiment, the method further comprises, before capturing said one or more samples, training the neural network based on one or more training samples and a corresponding ground truth.

Selon un mode de réalisation, l’apprentissage du réseau neuronal comprend la génération de la vérité de terrain : en capturant une pluralité d’échantillons d’un même objet en utilisant lesdits un ou plusieurs capteurs et/ou en utilisant un ou plusieurs autres capteurs, tout en faisant varier un ou plusieurs paramètres des capteurs ou d’autres capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons du même objet ; et en déterminant, par un dispositif de traitement, une vérité de terrain associée aux échantillons sur la base de la pluralité d’échantillons du même objet.According to one embodiment, the training of the neural network comprises the generation of ground truth: by capturing a plurality of samples of the same object using said one or more sensors and/or by using one or more other sensors , while varying one or more parameters of the sensors or other sensors and/or one or more environmental conditions between samples of the same object; and determining, by a processing device, a ground truth associated with the samples based on the plurality of samples of the same object.

Selon un mode de réalisation, le procédé comprend en outre : capturer une pluralité d’autres échantillons d’un autre même objet en utilisant lesdits un ou plusieurs capteurs et/ou en utilisant un ou plusieurs autres capteurs, tout en faisant varier un ou plusieurs paramètres de capture des capteurs ou d’autres capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons de l’autre même objet ; et la vérité de terrain étant déterminée sur la base de la pluralité d’échantillons du même objet et de la pluralité d’échantillons de l’autre même objet.According to one embodiment, the method further comprises: capturing a plurality of other samples of another same object using said one or more sensors and/or using one or more other sensors, while varying one or more capture parameters of sensors or other sensors and/or one or more environmental conditions between samples of the other same object; and the ground truth being determined based on the plurality of samples of the same object and the plurality of samples of the other same object.

Selon un mode de réalisation, l’objet est une carte de circuit électronique.According to one embodiment, the object is an electronic circuit board.

Selon un autre aspect, on prévoit un système d’inspection d’objets comprenant : un ou plusieurs capteurs agencés pour capturer un ou plusieurs échantillons d’un objet ; un réseau neuronal agencé pour filtrer lesdits un ou plusieurs échantillons pour retirer au moins partiellement les altérations ; et un dispositif de traitement agencé pour appliquer un algorithme d’inspection d’objet auxdits un ou plusieurs échantillons filtrés.According to another aspect, an object inspection system is provided comprising: one or more sensors arranged to capture one or more samples of an object; a neural network arranged to filter said one or more samples to at least partially remove alterations; and a processing device arranged to apply an object inspection algorithm to said one or more filtered samples.

Selon un mode de réalisation, lesdits un ou plusieurs capteurs comprennent au moins une caméra, lesdits un ou plusieurs échantillons comprenant au moins une image capturée par ladite au moins une caméra.According to one embodiment, said one or more sensors comprise at least one camera, said one or more samples comprising at least one image captured by said at least one camera.

Selon un mode de réalisation, l’objet est un objet fabriqué, et l’algorithme d’inspection d’objets est agencé pour détecter une ou plusieurs anomalies dans l’objet fabriqué, et pour classer l’objet comme passant avec succès ou échouant à l’inspection d’objet en fonction de la détection d’anomalies.According to one embodiment, the object is an artifact, and the object inspection algorithm is arranged to detect one or more anomalies in the artifact, and to classify the object as passing or failing object inspection based on anomaly detection.

Selon un mode de réalisation, l’objet est une carte de circuit électronique.According to one embodiment, the object is an electronic circuit board.

Selon un mode de réalisation, le réseau neuronal est un réseau neuronal à convolution, comme un réseau neuronal ayant une structure UNet.According to one embodiment, the neural network is a convolutional neural network, such as a neural network having a UNet structure.

Selon un autre aspect, on prévoit un système d’apprentissage pour le réseau neuronal susmentionné, comprenant un dispositif de traitement agencé pour réaliser un apprentissage du réseau neuronal sur la base d’un ou plusieurs échantillons d’apprentissage et d’une vérité de terrain correspondante.According to another aspect, a training system is provided for the aforementioned neural network, comprising a processing device arranged to carry out training of the neural network on the basis of one or more training samples and of a ground truth corresponding.

Selon un mode de réalisation, le système d’apprentissage comprend en outre : lesdits un ou plusieurs capteurs et/ou un ou plusieurs autres capteurs agencés pour capturer une pluralité d’échantillons d’un même objet, tout en faisant varier un ou plusieurs paramètres des capteurs ou d’autres capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons du même objet, le dispositif de traitement étant en outre agencé pour déterminer une vérité de terrain associée aux échantillons sur la base de la pluralité d’échantillons du même objet.According to one embodiment, the learning system further comprises: said one or more sensors and/or one or more other sensors arranged to capture a plurality of samples of the same object, while varying one or more parameters sensors or other sensors and/or one or more environmental conditions between the samples of the same object, the processing device being further arranged to determine a ground truth associated with the samples based on the plurality of samples of the same object.

Selon un mode de réalisation, lesdits un ou plusieurs capteurs et/ou un ou plusieurs autres capteurs sont en outre agencés pour capturer une pluralité d’autres échantillons d’un autre même objet, tout en faisant varier un ou plusieurs paramètres des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons de l’autre objet échantillon ; et le dispositif de traitement étant agencé pour déterminer la vérité de terrain sur la base de la pluralité d’échantillons du même objet et de la pluralité d’échantillons de l’autre même objet.According to one embodiment, said one or more sensors and/or one or more other sensors are also arranged to capture a plurality of other samples of another same object, while varying one or more parameters of the sensors and/or or one or more environmental conditions between the samples of the other sample object; and the processing device being arranged to determine the ground truth based on the plurality of samples of the same object and the plurality of samples of the other same object.

Selon un autre aspect, on prévoit un procédé de conception d’un premier réseau neuronal pour filtrer des échantillons altérés, le procédé comprenant : prévoir un deuxième réseau neuronal ; fournir un premier échantillon altéré et un premier échantillon propre au premier réseau neuronal, et réaliser un apprentissage du premier réseau neuronal pour filtrer le premier échantillon altéré, et pour générer un deuxième échantillon propre, sur la base d’une vérité de terrain fournie par le premier échantillon propre ; et fournir le premier échantillon propre et le premier échantillon altéré au deuxième réseau neuronal, et réaliser un apprentissage du deuxième réseau neuronal pour altérer le premier échantillon propre, et générer un deuxième échantillon altéré, sur la base d’une vérité de terrain fournie par le premier échantillon altéré.In another aspect, there is provided a method of designing a first neural network to filter out corrupted samples, the method comprising: providing a second neural network; providing a first corrupted sample and a first clean sample to the first neural network, and training the first neural network to filter the first corrupted sample, and to generate a second clean sample, based on a ground truth provided by the first clean sample; and supplying the first clean sample and the first corrupted sample to the second neural network, and training the second neural network to corrupt the first clean sample, and generating a second corrupted sample, based on a ground truth provided by the first altered sample.

Selon un mode de réalisation, le procédé comprend en outre : fournir le deuxième échantillon altéré et le deuxième échantillon propre au premier réseau neuronal, et réaliser un apprentissage du premier réseau neuronal pour filtrer le deuxième échantillon altéré, et pour générer un troisième échantillon propre, sur la base d’une vérité de terrain fournie par le deuxième échantillon propre.According to one embodiment, the method further comprises: supplying the second altered sample and the second clean sample to the first neural network, and training the first neural network to filter the second altered sample, and to generate a third clean sample, based on a ground truth provided by the second clean sample.

Selon un mode de réalisation, le procédé comprend en outre : fournir le deuxième échantillon propre et le deuxième échantillon altéré au deuxième réseau neuronal, et réaliser un apprentissage du deuxième réseau neuronal pour altérer le deuxième échantillon propre, et pour générer un troisième échantillon altéré, sur la base d’une vérité de terrain fournie par le deuxième échantillon altéré.According to one embodiment, the method further comprises: providing the second clean sample and the second altered sample to the second neural network, and training the second neural network to alter the second clean sample, and to generate a third altered sample, based on a ground truth provided by the second altered sample.

Selon un mode de réalisation, le procédé comprend en outre : générer le premier échantillon propre : en capturant une pluralité d’échantillons d’un même objet en utilisant un ou plusieurs capteurs, tout en faisant varier un ou plusieurs paramètres des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons du même objet ; et en déterminant, par un dispositif de traitement, une vérité de terrain correspondant au premier échantillon propre sur la base de la pluralité d’échantillons du même objet.According to one embodiment, the method further comprises: generating the first clean sample: by capturing a plurality of samples of the same object using one or more sensors, while varying one or more parameters of the sensors and/or one or more environmental conditions between samples of the same object; and determining, by a processing device, a ground truth corresponding to the first eigensample based on the plurality of samples of the same object.

Selon un mode de réalisation, le procédé comprend en outre : capturer une pluralité d’autres échantillons d’un autre même objet en utilisant lesdits un ou plusieurs capteurs, tout en faisant varier un ou plusieurs paramètres des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons de l’autre même objet ; et la vérité de terrain est déterminée sur la base de la pluralité d’échantillons du même objet et de la pluralité d’échantillons de l’autre même objet.According to one embodiment, the method further comprises: capturing a plurality of other samples of another same object using said one or more sensors, while varying one or more parameters of the sensors and/or one or more conditions environmental between samples of the other same object; and the ground truth is determined based on the plurality of samples of the same object and the plurality of samples of the other same object.

Selon un autre aspect, on prévoit un procédé d’inspection d’objets comprenant : la conception d’un premier réseau neuronal selon le procédé susmentionné ; la capture d’un ou plusieurs échantillons d’un objet en utilisant lesdits un ou plusieurs capteurs ou un ou plusieurs autres capteurs ; le filtrage desdits un ou plusieurs échantillons en utilisant le premier réseau neuronal pour retirer au moins partiellement des altérations dans les échantillons ; et l’application d’un algorithme d’inspection d’objet auxdits un ou plusieurs échantillons filtrés.In another aspect, there is provided a method of inspecting objects comprising: designing a first neural network according to the aforementioned method; capturing one or more samples of an object using said one or more sensors or one or more other sensors; filtering said one or more samples using the first neural network to at least partially remove alterations in the samples; and applying an object inspection algorithm to said one or more filtered samples.

Selon un mode de réalisation, lesdits un ou plusieurs capteurs et lesdits un ou plusieurs autres capteurs comprennent au moins une caméra, lesdits un ou plusieurs échantillons comprenant au moins une image capturée par ladite au moins une caméra.According to one embodiment, said one or more sensors and said one or more other sensors comprise at least one camera, said one or more samples comprising at least one image captured by said at least one camera.

Selon un mode de réalisation, l’objet est un objet fabriqué, et l’algorithme d’inspection d’objets est agencé pour détecter une ou plusieurs anomalies dans l’objet fabriqué, et pour classer l’objet comme passant avec succès ou échouant à l’inspection d’objet en fonction de la détection d’anomalies.According to one embodiment, the object is an artifact, and the object inspection algorithm is arranged to detect one or more anomalies in the artifact, and to classify the object as passing or failing object inspection based on anomaly detection.

Selon un mode de réalisation, l’objet est une carte de circuit électronique.According to one embodiment, the object is an electronic circuit board.

Selon un autre aspect, on prévoit un système pour la conception d’un premier réseau neuronal pour filtrer des échantillons altérés, le système comprenant : le premier réseau neuronal et un deuxième réseau neuronal ; et un dispositif de traitement agencé pour : fournir un premier échantillon altéré et un premier échantillon propre au premier réseau neuronal, le premier réseau neuronal ayant reçu un apprentissage pour filtrer le premier échantillon altéré, et pour générer un deuxième échantillon propre, sur la base d’une vérité de terrain fournie par le premier échantillon propre ; et fournir le premier échantillon propre et le premier échantillon altéré au deuxième réseau neuronal, le deuxième réseau neuronal ayant reçu un apprentissage pour altérer le premier échantillon propre, et pour générer un deuxième échantillon altéré, sur la base d’une vérité de terrain fournie par le premier échantillon altéré.In another aspect, a system is provided for designing a first neural network for filtering out corrupted samples, the system comprising: the first neural network and a second neural network; and a processing device arranged to: supply a first corrupted sample and a first clean sample to the first neural network, the first neural network having been trained to filter the first corrupted sample, and to generate a second clean sample, on the basis of a ground truth provided by the first clean sample; and providing the first clean sample and the first tampered sample to the second neural network, the second neural network being trained to tamper with the first clean sample, and to generate a second tampered sample, based on a ground truth provided by the first altered sample.

Selon un mode de réalisation, le dispositif de traitement est en outre agencé pour : fournir le deuxième échantillon altéré et le deuxième échantillon propre au premier réseau neuronal, le premier réseau neuronal ayant reçu un apprentissage pour filtrer le deuxième échantillon altéré, et générer un troisième échantillon propre, sur la base d’une vérité de terrain fournie par le deuxième échantillon propre.According to one embodiment, the processing device is further arranged to: provide the second altered sample and the second clean sample to the first neural network, the first neural network having received training to filter the second altered sample, and generate a third clean sample, based on a ground truth provided by the second clean sample.

Selon un mode de réalisation, le dispositif de traitement est en outre agencé pour : fournir le deuxième échantillon propre et le deuxième échantillon altéré au deuxième réseau neuronal, le deuxième réseau neuronal ayant reçu un apprentissage pour altérer le deuxième échantillon propre, et générer un troisième échantillon altéré, sur la base d’une vérité de terrain fournie par le deuxième échantillon altéré.According to one embodiment, the processing device is also arranged to: supply the second clean sample and the second altered sample to the second neural network, the second neural network having received training to alter the second clean sample, and generate a third weathered sample, based on a ground truth provided by the second weathered sample.

Selon un mode de réalisation, le système comprend en outre : lesdits un ou plusieurs capteurs agencés pour capturer une pluralité d’échantillons d’un même objet, tout en faisant varier un ou plusieurs paramètres de capture des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons du même objet, le dispositif de traitement étant en outre agencé pour déterminer une vérité de terrain correspondant au premier échantillon propre sur la base de la pluralité d’échantillons du même objet.According to one embodiment, the system further comprises: said one or more sensors arranged to capture a plurality of samples of the same object, while varying one or more sensor capture parameters and/or one or more conditions environmental differences between the samples of the same object, the processing device being further arranged to determine a ground truth corresponding to the first proper sample on the basis of the plurality of samples of the same object.

Selon un mode de réalisation, lesdits un ou plusieurs capteurs sont en outre agencés pour capturer une pluralité d’autres échantillons d’un autre même objet, tout en faisant varier un ou plusieurs paramètres de capture des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons de l’autre objet échantillon ; et le dispositif de traitement étant agencé pour déterminer la vérité de terrain sur la base de la pluralité d’échantillons du même objet et de la pluralité d’échantillons de l’autre même objet.According to one embodiment, said one or more sensors are further arranged to capture a plurality of other samples of another same object, while varying one or more sensor capture parameters and/or one or more environmental conditions between the samples of the other sample object; and the processing device being arranged to determine the ground truth based on the plurality of samples of the same object and the plurality of samples of the other same object.

Selon un mode de réalisation, le premier réseau neuronal est un réseau neuronal à convolution, comme un réseau neuronal ayant une structure UNet.According to one embodiment, the first neural network is a convolutional neural network, such as a neural network having a UNet structure.

Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles:These characteristics and advantages, as well as others, will be set out in detail in the following description of particular embodiments made on a non-limiting basis in relation to the attached figures, among which:

la figure 1 représente partiellement et schématiquement un mode de réalisation d’un système d’inspection optique destiné à inspecter des circuits électroniques; FIG. 1 partially and schematically represents an embodiment of an optical inspection system intended to inspect electronic circuits;

la figure 2 est un graphique représentant un exemple de rendement de premier passage dans un système comme celui de la figure 1 ; Figure 2 is a graph showing an example of first pass efficiency in a system like that of Figure 1;

la figure 3 représente schématiquement un dispositif de filtre d’altérations et de calcul du système d’inspection optique de la figure 1 plus en détail selon un exemple de réalisation de la présente description ; FIG. 3 schematically represents an alteration filter and calculation device of the optical inspection system of FIG. 1 in more detail according to an example embodiment of the present description;

la figure 4 est un organigramme représentant des étapes dans un procédé de classification automatique de dispositifs électroniques selon un exemple de réalisation de la présente description ; FIG. 4 is a flowchart representing steps in a method for the automatic classification of electronic devices according to an example embodiment of the present description;

la figure 5 représente schématiquement un système de traitement pour l’apprentissage d’un réseau neuronal selon un exemple de réalisation de la présente description; FIG. 5 schematically represents a processing system for training a neural network according to an exemplary embodiment of the present description;

la figure 6 est un organigramme représentant des étapes dans un procédé d’apprentissage d’un réseau neuronal selon un exemple de réalisation de la présente description ; FIG. 6 is a flowchart representing steps in a method for training a neural network according to an example embodiment of the present description;

la figure 7 représente schématiquement un système pour l’apprentissage d’une paire de réseau neuronaux selon un exemple de réalisation de la présente description ; FIG. 7 schematically represents a system for training a pair of neural networks according to an embodiment of the present description;

la figure 8 est un organigramme représentant des étapes dans un procédé d’apprentissage d’une paire de réseaux neuronaux selon un exemple de réalisation de la présente description ; FIG. 8 is a flowchart representing steps in a method for training a pair of neural networks according to an exemplary embodiment of the present description;

la figure 9 représente schématiquement un réseau neuronal selon un exemple de réalisation de la présente description ; et FIG. 9 schematically represents a neural network according to an example embodiment of the present description; And

la figure 10 représente schématiquement un réseau neuronal selon un autre exemple de réalisation de la présente description. FIG. 10 schematically represents a neural network according to another exemplary embodiment of the present description.

De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques.The same elements have been designated by the same references in the various figures. In particular, the structural and/or functional elements common to the various embodiments may have the same references and may have identical structural, dimensional and material properties.

Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments.Unless otherwise specified, when reference is made to two elements connected together, it means directly connected without intermediate elements other than conductors, and when reference is made to two elements coupled together, it means that these two elements can be connected or be linked through one or more other elements.

Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures.In the following description, when referring to absolute position qualifiers, such as "front", "rear", "up", "down", "left", "right", etc., or relative, such as the terms "above", "below", "upper", "lower", etc., or to qualifiers of orientation, such as the terms "horizontal", "vertical", etc., it reference is made unless otherwise specified to the orientation of the figures.

Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10% près, de préférence à 5% près.Unless specified otherwise, the expressions “about”, “approximately”, “substantially”, and “of the order of” mean to within 10%, preferably within 5%.

La figure 1 présente partiellement et schématiquement un mode de réalisation d’un système d’inspection optique 100, qui est par exemple utilisé pour l’inspection optique de cartes de circuits électroniques. Toutefois, il apparaîtra clairement à la personne du métier que le système 100 pourrait être utilisé pour l’inspection optique d’une grande diversité de types d’objets fabriqués.FIG. 1 partially and schematically presents an embodiment of an optical inspection system 100, which is for example used for the optical inspection of electronic circuit boards. However, it will be apparent to those skilled in the art that System 100 could be used for optical inspection of a wide variety of types of manufactured objects.

Chaque carte de circuit électronique (BOARD) est par exemple placée sur un convoyeur 102, qui est par exemple un convoyeur plan. Le convoyeur 102 peut déplacer des cartes de circuits dans une direction X, par exemple une direction horizontale, pour les amener jusqu’à une région d’inspection optique, qui sera appelé scène S, où des images de cartes de circuits peuvent être acquises.Each electronic circuit board (BOARD) is for example placed on a conveyor 102, which is for example a flat conveyor. The conveyor 102 can move circuit boards in an X direction, for example a horizontal direction, to bring them to an optical inspection region, which will be called scene S, where images of circuit boards can be acquired.

Dans un exemple, le convoyeur 102 comprend un assemblage d’un ou plusieurs tapis roulants et d’un ou plusieurs rouleaux, entraînés par un moteur électrique rotatif 104. En variante, le convoyeur 102 pourrait à la place comprendre un moteur linéaire agencé pour déplacer un chariot supportant la carte de circuit électronique. La carte de circuit électronique correspond par exemple à une carte rectangulaire ayant une longueur et une largeur variant de 50mm à 550 mm.In one example, conveyor 102 comprises an assembly of one or more conveyor belts and one or more rollers, driven by a rotary electric motor 104. Alternatively, conveyor 102 could instead comprise a linear motor arranged to move a carriage supporting the electronic circuit board. The electronic circuit board corresponds for example to a rectangular board having a length and a width varying from 50 mm to 550 mm.

Le système 100 comprend par exemple un système 106 agencé pour acquérir des images de la carte de circuit. Dans un exemple, le système d’acquisition d’images 106 comprend un dispositif de projection d’images P comprenant au moins un projecteur, un seul projecteur P étant représenté en figure 1. Lorsque plusieurs projecteurs P sont présents, des projecteurs P peuvent être sensiblement alignés dans une direction perpendiculaire à la direction X.The system 100 comprises for example a system 106 arranged to acquire images of the circuit board. In one example, the image acquisition system 106 comprises an image projection device P comprising at least one projector, a single projector P being represented in FIG. 1. When several projectors P are present, projectors P can be substantially aligned in a direction perpendicular to the X direction.

Le système d’acquisition 106 comprend en outre par exemple un dispositif d’acquisition d’images C comprenant au moins une caméra numérique, une seule caméra C étant représentée en figure 1. Lorsque plusieurs caméras C sont présentes, des caméras C peuvent être sensiblement alignées, par exemple, en groupes de caméras, de préférence suivant une direction perpendiculaire à la direction X et/ou peuvent être agencées d’un côté ou de l’autre du ou des projecteurs P.The acquisition system 106 further comprises, for example, an image acquisition device C comprising at least one digital camera, a single camera C being represented in FIG. 1. When several cameras C are present, cameras C can be substantially aligned, for example, in groups of cameras, preferably in a direction perpendicular to the direction X and/or can be arranged on one side or the other of the projector(s) P.

Dans un exemple, le projecteur P et la caméra C sont couplés à un dispositif de commande 108. Le dispositif de commande 108 est par exemple agencé pour contrôler le système d’acquisition d’images 106, et aussi le convoyeur 102, par l’intermédiaire du moteur 104. En outre, le dispositif de commande 108 est par exemple agencé pour produire des images 2D et/ou 3D sur la base de données d’images provenant de la caméra C, et pour fournir ces images à un filtre d’altérations (CF) 110.In one example, the projector P and the camera C are coupled to a control device 108. The control device 108 is for example arranged to control the image acquisition system 106, and also the conveyor 102, by the intermediary of the motor 104. In addition, the control device 108 is for example arranged to produce 2D and/or 3D images on the basis of image data coming from the camera C, and to supply these images to a filter of alterations (CF) 110.

Le filtre d’altérations 110 filtre par exemple les altérations des données de capteurs capturées par le système d’acquisition d’image 106. Selon les modes de réalisation décrits plus en détail ci-après, le filtre d’altérations 110 comprend un ou plusieurs réseaux neuronaux artificiels. Le filtre d’altérations 110 fournit des données de capteurs filtrées à un dispositif de calcul 112.The alterations filter 110 filters, for example, the alterations of the sensor data captured by the image acquisition system 106. According to the embodiments described in more detail below, the alterations filter 110 comprises one or more artificial neural networks. The alterations filter 110 provides filtered sensor data to a computing device 112.

Le dispositif de calcul 112 est par exemple agencé pour appliquer un algorithme d’inspection automatique aux images, et pour produire un signal de sortie (P/F) indiquant si la carte de circuit a passé l’inspection avec succès (P) ou a échoué (F). En particulier, l’algorithme d’inspection décide par exemple si une pièce fabriquée est conforme ou non à des spécifications requises.The calculation device 112 is for example arranged to apply an automatic inspection algorithm to the images, and to produce an output signal (P/F) indicating whether the circuit board has passed the inspection successfully (P) or has failed (F). In particular, the inspection algorithm decides, for example, whether a manufactured part complies or not with the required specifications.

Selon une variante de réalisation, plutôt que de comprendre le projecteur P, le système d’acquisition 106 comprend une caméra, comme une caméra télécentrique, agencée verticalement alignée sur la scène S, par exemple, à l’emplacement du projecteur P en figure 1, et couplée au dispositif de commande 108.According to a variant embodiment, rather than including the projector P, the acquisition system 106 comprises a camera, such as a telecentric camera, arranged vertically aligned on the scene S, for example, at the location of the projector P in FIG. , and coupled to the controller 108.

Le système d’inspection optique 100 peut aussi comprendre un autre système d’acquisition 114, qui par exemple correspond à un scanner à laser, un détecteur d’altitude ou un capteur de carte de profondeur. Le dispositif de commande 108 est par exemple en outre agencé pour contrôler le système d’acquisition 114, pour recevoir des données d’images et/ou de profondeur capturées par le système d’acquisition 114, et pour fournir l’image ou la carte de profondeur correspondante au dispositif de calcul 112 par l’intermédiaire du filtre d’altérations 110, de sorte que l’inspection peut aussi être basée sur cette image ou cette carte de profondeur.The optical inspection system 100 can also comprise another acquisition system 114, which for example corresponds to a laser scanner, an altitude detector or a depth map sensor. The control device 108 is for example also arranged to control the acquisition system 114, to receive image and/or depth data captured by the acquisition system 114, and to supply the image or the map corresponding depth to the computing device 112 via the alterations filter 110, so that the inspection can also be based on this image or this depth map.

Le but du système d’inspection optique 100 est de détecter automatiquement si un objet fabriqué ne respecte pas une qualité de production souhaitée. Par exemple, dans le cas d’une carte de circuit électronique, cela peut impliquer la détection de la présence et/ou de la forme d’un ou plusieurs joints de soudure, la vérification de l’étendue d’un gauchissement, ou la vérification d’autres éléments visibles qui peuvent indiquer un objet non conforme. Toutefois, de manière plus générale, l’inspection optique peut être utilisée pour détecter toute défectuosité visible dans un objet fabriqué.The purpose of the optical inspection system 100 is to automatically detect if a manufactured object does not meet a desired production quality. For example, in the case of an electronic circuit board, this may involve detecting the presence and/or shape of one or more solder joints, checking the extent of warpage, or checking for other visible items that may indicate a non-compliant object. However, more generally, optical inspection can be used to detect any visible defects in a manufactured object.

La figure 2 est un graphique représentant, en fonction du nombre de cartes (#boards) examinées, un exemple de rendement de premier passage (FPY) d’un système d’inspection tel que celui de la figure 1. En particulier, le graphique de la figure 2 représente le pourcentage de cartes de circuit pour lesquelles l’algorithme d’inspection ne génère pas un faux diagnostic positif. Il faut toutefois noter que le graphique ne sépare pas les diagnostiques faussement négatifs, qui sont plus difficiles à identifier.Figure 2 is a graph representing, as a function of the number of boards (#boards) examined, an example of the first pass yield (FPY) of an inspection system such as that of Figure 1. In particular, the graph of Figure 2 represents the percentage of circuit boards for which the inspection algorithm does not generate a false positive diagnosis. Note, however, that the graph does not separate false negative diagnoses, which are more difficult to identify.

On a supposé que le système 100 a été mis en place pour une nouvelle série de cartes de circuit, en commençant par une carte 0 (Board 0). Le rendement de premier passage (FPY) est initialement à S%, et pendant une période de réglage fin FT, des paramètres de l’algorithme d’inspection et de l’équipement associé sont ajustés, amenant le rendement de premier passage à augmenter et converger, de façon exponentielle, vers un rendement de premier passage E% une fois qu’une K-ième carte (Board K) a été inspectée. Après ce point, une période d’inspection stable commence pendant laquelle les paramètres de l’algorithme d’inspection restent fixes, et le rendement de premier passage reste stable et sensiblement à E%.It was assumed that system 100 was set up for a new series of circuit boards, starting with board 0 (Board 0). The first-pass yield (FPY) is initially at S%, and during a period of fine-tuning FT, parameters of the inspection algorithm and associated equipment are adjusted, causing the first-pass yield to increase and converge, exponentially, to an E% first-pass yield once a K-th board (Board K) has been inspected. After this point, a stable inspection period begins during which the parameters of the inspection algorithm remain fixed, and the first-pass efficiency remains stable and substantially at E%.

Il est souhaitable que la valeur de E soit aussi proche que possible de 100 %, puisque cela implique moins de résultats faussement négatifs et ainsi une plus grande stabilité. En outre, il est aussi souhaitable que K soit relativement bas, autrement dit qu’il y ait un nombre relativement faible de cartes entre Board 0 et Board K, puisque cela implique que le réglage fin permet au rendement de premier passage de converger rapidement de S% à E%, et évite une période trop longue pendant laquelle l’algorithme est en dessous de l’optimal. De façon similaire, il est aussi souhaitable que la différence entre E et S soit aussi faible que possible, de sorte que la production commence dans des conditions relativement stables, même pendant la convergence vers le niveau E%, et de sorte que la convergence de S vers E puisse survenir dans une trame temporelle relativement courte.It is desirable that the value of E be as close to 100% as possible, since this implies fewer false negative results and thus greater stability. Furthermore, it is also desirable that K be relatively low, i.e. that there be a relatively small number of boards between Board 0 and Board K, since this implies that the fine tuning allows the first pass efficiency to converge quickly from S% to E%, and avoids a too long period during which the algorithm is below the optimal. Similarly, it is also desirable that the difference between E and S be as small as possible, so that production starts under relatively stable conditions, even during convergence to the E% level, and so that the convergence of S to E can occur in a relatively short time frame.

En faisant de nouveau référence à la figure 1, un avantage de la mise en œuvre d’un filtre d’altérations 110 utilisant un réseau neuronal est que l’apprentissage du réseau neuronal peut être réalisé avant le démarrage de l’inspection, autrement dit avant la phase de réglage fin, ce qui permet au pourcentage S initial de rendement de premier passage d’être relativement élevé, et permet aussi d’améliorer le pourcentage de performance E stable à long terme qu’on peut obtenir.Referring again to Figure 1, an advantage of implementing an taint filter 110 using a neural network is that training of the neural network can be performed before the inspection starts, i.e. before the fine-tuning phase, which allows the initial percentage S of first pass efficiency to be relatively high, and also makes it possible to improve the percentage of long-term stable performance E that can be obtained.

La figure 3 représente schématiquement le filtre d’altérations 110 et le dispositif de calcul 112 du système d’inspection optique 100 de la figure 1 plus en détail selon un exemple de réalisation de la présente description.FIG. 3 schematically represents the alterations filter 110 and the calculation device 112 of the optical inspection system 100 of FIG. 1 in more detail according to an example embodiment of the present description.

Le filtre d’altérations 110 comprend par exemple un réseau neuronal artificiel (NEURAL NETWORK (CF)) 302, et une mémoire (MEMORY) 304. Un ou plusieurs échantillons altérés (CORRUPTED SAMPLE(S)) 306 capturés par un ou plusieurs capteurs sont par exemple stockés dans la mémoire 304, puis sont traités par le réseau neuronal 302. Le réseau neuronal 302 par exemple revient écrire dans la mémoire 304 un ou plusieurs échantillons filtrés (CLEAN SAMPLE(S)) 308.The alterations filter 110 comprises for example an artificial neural network (NEURAL NETWORK (CF)) 302, and a memory (MEMORY) 304. One or more corrupted samples (CORRUPTED SAMPLE(S)) 306 captured by one or more sensors are for example stored in the memory 304, then are processed by the neural network 302. The neural network 302 for example returns to write in the memory 304 one or more filtered samples (CLEAN SAMPLE(S)) 308.

Comme cela est connu de l’homme de l’art, un réseau neuronal artificiel (appelé dans la suite simplement "réseau neuronal") est un système ou une architecture informatique qui a pour but d’imiter dans une certaine mesure le réseau de neurones biologiques se trouvant dans un cerveau humain. De tels réseaux neuronaux comprennent en général un réseau de neurones artificiels, qui sont des circuits électriques qui reçoivent des entrées, combinent ces entrées avec leur état interne et souvent avec un seuil, et produisent un signal de sortie. Les sorties de neurones sont couplées aux entrées d’autres neurones par des connexions, qui sont souvent appelées synapses (leur équivalent dans le cerveau biologique). Ces connexions sont aussi mises en œuvre par des circuits électroniques, et appliquent des poids aux signaux propagés entre la sortie d’un ou plusieurs neurones et l’entrée d’un autre neurone. La fonction utilisée pour générer l’entrée dans un neurone, sur la base des sorties de ses neurones prédécesseurs et des connexions sous forme d’une somme pondérée, est connue sous le nom de fonction de propagation.As known to those skilled in the art, an artificial neural network (hereinafter referred to simply as a "neural network") is a computer system or architecture that is intended to mimic to some extent the neural network organisms found in a human brain. Such neural networks generally include a network of artificial neurons, which are electrical circuits that receive inputs, combine these inputs with their internal state and often with a threshold, and produce an output signal. The outputs of neurons are coupled to the inputs of other neurons by connections, which are often called synapses (their equivalent in the biological brain). These connections are also implemented by electronic circuits, and apply weights to the signals propagated between the output of one or more neurons and the input of another neuron. The function used to generate the input to a neuron, based on the outputs of its predecessor neurons and the connections as a weighted sum, is known as the propagation function.

Dans certains modes de réalisation, le réseau neuronal 302 est mis en œuvre par du matériel dédié, comme par exemple par un module de traitement graphique (GPU) ou une autre forme d’ASIC (circuit intégré spécifique d’application) qui met en œuvre l’architecture de réseau neuronal. Un avantage d’une telle mise en œuvre matérielle est qu’elle peut être relativement rapide pendant l’apprentissage et l’utilisation ultérieure.In some embodiments, neural network 302 is implemented by dedicated hardware, such as by a graphics processing unit (GPU) or other form of ASIC (application specific integrated circuit) that implements neural network architecture. An advantage of such a hardware implementation is that it can be relatively fast during learning and later use.

Dans des variantes de réalisation, le réseau neuronal 302 est mis en œuvre par une émulation sur ordinateur d’un réseau neuronal. Par exemple, le réseau neuronal est mis en œuvre par des instructions logicielles exécutées par un dispositif de traitement comme un CPU (unité de traitement centrale). Dans certains modes de réalisation, une mise en œuvre hybride peut impliquer des parties du réseau neuronal qui sont mises en œuvre par du matériel, et d’autres parties du réseau neuronal qui sont mises en œuvre par du logiciel.In alternate embodiments, neural network 302 is implemented by a computer emulation of a neural network. For example, the neural network is implemented by software instructions executed by a processing device like a CPU (central processing unit). In some embodiments, a hybrid implementation may involve portions of the neural network that are implemented in hardware, and other portions of the neural network that are implemented in software.

Quelle que soit la mise en œuvre (matérielle et/ou logicielle), dans certains modes de réalisation, le réseau neuronal 302 de la figure 3 a une architecture basée sur une approche UNet, comme cela est décrit plus en détail dans la publication intitulée “U-Net: Convolution Networks for Biomedical Image Segmentation”, O.Ronneberger, P.Fischer and T.Brox, 18 May 2015, Lecture Notes in Computer Science book series, LNCS, volume 9351, dont le contenu est incorporé ici comme référence dans les limites autorisées par la loi.Regardless of the implementation (hardware and/or software), in some embodiments, the neural network 302 of Figure 3 has an architecture based on a UNet approach, as further described in the publication titled “ U-Net: Convolution Networks for Biomedical Image Segmentation”, O.Ronneberger, P.Fischer and T.Brox, 18 May 2015, Lecture Notes in Computer Science book series, LNCS, volume 9351, the contents of which are incorporated herein by reference in limits permitted by law.

En plus ou à la place, le réseau neuronal 302 comprend une ou plusieurs couches d’attention, comme cela est décrit dans la publication intitulée “Self-Attention Generative Adversarial Networks”, H.Zhang, I.Goodfellow, D.Metaxas and A.Odena, 14 June 2019, PMLR 2019, dont le contenu est aussi incorporé ici comme référence dans les limites autorisées par la loi.Additionally or instead, neural network 302 includes one or more layers of attention, as described in the publication titled "Self-Attention Generative Adversarial Networks", H.Zhang, I.Goodfellow, D.Metaxas and A .Odena, 14 June 2019, PMLR 2019, the contents of which are also incorporated herein by reference to the extent permitted by law.

En outre, le réseau neuronal 302 peut en plus ou à la place être basé sur une fonction de perte connue sous le nom de "perte perceptuelle" comme cela est décrit plus en détail dans la publication intitulée “Perceptual Losses for Real-time Style Transfer and Super-Resolution”, J.Johnson, A.Alahi, L.Fei-Fei, 26 March 2016, dont le contenu est aussi incorporé ici comme référence dans les limites autorisées par la loi.Further, neural network 302 may additionally or instead be based on a loss function known as "perceptual loss" as described in more detail in the publication entitled "Perceptual Losses for Real-time Style Transfer". and Super-Resolution”, J.Johnson, A.Alahi, L.Fei-Fei, 26 March 2016, the contents of which are also incorporated herein by reference to the extent permitted by law.

Un exemple de réseau neuronal 900 est représenté en figure 9, et fournit un exemple de mise en œuvre du réseau neuronal 302.An example neural network 900 is shown in Figure 9, and provides an example implementation of neural network 302.

Le réseau neuronal 900 comprend par exemple des neurones 901 formés dans plusieurs couches.The neural network 900 includes, for example, neurons 901 formed in several layers.

Une couche d’entrée 902 correspond à une première couche de neurones à laquelle sont appliquées des données d’entrée d’un échantillon d’entrée. L’exemple de la figure 9 représente deux neurones 901 dans la couche d’entrée, mais en pratique il y a par exemple des centaines ou des milliers de neurones formant la couche d’entrée 902. Par exemple, dans le cas où le réseau neuronal 302 est basé sur des échantillons sous forme d’images, il comprend par exemple un nombre de neurones dans la couche d’entrée 902 égal au nombre de pixels de l’image d’entrée.An input layer 902 corresponds to a first layer of neurons to which input data of an input sample is applied. The example of FIG. 9 represents two neurons 901 in the input layer, but in practice there are for example hundreds or thousands of neurons forming the input layer 902. For example, in the case where the network neuronal 302 is based on samples in the form of images, it comprises for example a number of neurons in the input layer 902 equal to the number of pixels of the input image.

Une couche de sortie 904 correspond à une couche finale de neurones à partir de laquelle sont fournies des données de sortie. Dans le cas où le réseau de neurones 900 génère des échantillons de sortie du même format que les échantillons d’entrée, par exemple des images de même dimensions, le nombre de neurones 901 formant la couche de sortie 904 est par exemple égal au nombre de neurones formant la couche d’entrée 902.An output layer 904 corresponds to a final layer of neurons from which output data is provided. In the case where the neural network 900 generates output samples of the same format as the input samples, for example images of the same dimensions, the number of neurons 901 forming the output layer 904 is for example equal to the number of neurons forming the input layer 902.

Entre la couche d’entrée 902 et la couche de sortie 904, il y a un certain nombre de couches intermédiaires 906 appelées généralement couches cachées. Dans l’exemple de la figure 9, il y a une seule couche cachée 906, bien que dans des variantes de réalisation il puisse y avoir plusieurs couches cachées. Le nombre de neurones 901 dans chaque couche cachée 906 est par exemple supérieur au nombre de neurones dans la couche d’entrée ou de sortie 902, 904.Between the input layer 902 and the output layer 904, there are a number of intermediate layers 906 generally called hidden layers. In the example of Figure 9, there is a single hidden layer 906, although in alternative embodiments there may be several hidden layers. The number of neurons 901 in each hidden layer 906 is for example greater than the number of neurons in the input or output layer 902, 904.

Dans le cas d’une seule couche cachée 906 comme dans l’exemple de la figure 9, chaque neurone 901 de la couche cachée 906 reçoit par exemple une entrée provenant de chaque neurone 901 de la couche d’entrée 902, et chacune de ces connexions est une synapse 908, à laquelle un paramètre de pondération de synapse individuel φ est appliqué. Ces paramètres de pondération sont référencés φij, i étant l’indice de neurone d’entrée allant de 1 à M, et j étant l’indice de neurone dans la couche cachée allant de 1 à N. En outre, chaque neurone 901 de la couche cachée 906 fournit par exemple un signal de sortie à chacun des neurones de sortie 901, et chacune de ces connexions est une synapse 910, à laquelle un paramètre de pondération de synapse individuel θijen figure 9 est appliqué de manière similaire aux paramètres de pondération φij. Toutefois, pour les paramètres θij, i est l’indice de neurone dans la couche cachée allant de 1 à N, et j est l’indice de neurone dans la couche de sortie allant de 1 à K.In the case of a single hidden layer 906 as in the example of FIG. 9, each neuron 901 of the hidden layer 906 receives for example an input coming from each neuron 901 of the input layer 902, and each of these connections is a synapse 908, to which an individual synapse weighting parameter φ is applied. These weighting parameters are referenced φ ij , i being the input neuron index ranging from 1 to M, and j being the neuron index in the hidden layer ranging from 1 to N. In addition, each neuron 901 of the hidden layer 906 for example provides an output signal to each of the output neurons 901, and each of these connections is a synapse 910, to which an individual synapse weighting parameter θ ij in Figure 9 is applied similarly to the parameters weighting φ ij . However, for the parameters θ ij , i is the neuron index in the hidden layer ranging from 1 to N, and j is the neuron index in the output layer ranging from 1 to K.

Dans le cas où il y a plus qu’une seule couche cachée 906, les neurones d’une première couche cachée ont par exemple les mêmes entrées que celles représentées pour la couche cachée 906 de la figure 9, les neurones d’une couche cachée finale ayant par exemple les mêmes sorties que celles représentées pour la couche cachée 906, et chacune des autres couches cachées reçoit les sorties provenant de chacun des neurones de la couche cachée précédente parmi les couches cachées, et chacune fournit une sortie à chacun des neurones de la couche cachée suivante parmi les couches cachées.In the case where there is more than one hidden layer 906, the neurons of a first hidden layer have for example the same inputs as those represented for the hidden layer 906 of FIG. 9, the neurons of a hidden layer final having for example the same outputs as those represented for the hidden layer 906, and each of the other hidden layers receives the outputs coming from each of the neurons of the preceding hidden layer among the hidden layers, and each provides an output to each of the neurons of the next hidden layer among the hidden layers.

L’exemple de la figure 9 correspond à un "réseau entièrement connecté", dans lequel tous les neurones d’une couche donnée sont connectés à tous les neurones des couches précédente et suivante. Toutefois, pour traiter des images d’entrée relativement grandes, par exemple de 10000 pixels ou plus, le nombre de poids à optimiser va devenir très élevé. Un réseau neuronal à convolution (CNN) fournit une alternative d’architecture au "réseau complètement connecté" et est d’un point de vue calculs nettement plus léger lors du traitement d’images d’entrée relativement grandes. On va maintenant décrire un exemple de CNN plus en détail en faisant référence à la figure 10.The example in Figure 9 corresponds to a "fully connected network", in which all neurons of a given layer are connected to all neurons of the previous and following layers. However, to process relatively large input images, for example 10000 pixels or more, the number of weights to be optimized will become very large. A convolutional neural network (CNN) provides an architectural alternative to the "fully connected network" and is computationally significantly lighter when processing relatively large input images. We will now describe an example of CNN in more detail with reference to Figure 10.

La figure 10 illustre schématiquement un réseau neuronal à convolution additionnel 1000 selon un exemple de réalisation de la présente description. L’exemple de la figure 10 est basé sur l’approche UNet impliquant plusieurs couches de convolution séparées par sous-échantillonnage puis plusieurs autres couches de convolution séparées par des opérations de sur-échantillonnage, correspondant à la forme en "U".FIG. 10 schematically illustrates an additional convolutional neural network 1000 according to an example embodiment of the present description. The example in Figure 10 is based on the UNet approach involving several convolution layers separated by undersampling and then several other convolution layers separated by oversampling operations, corresponding to the "U" shape.

Le réseau neuronal 1000 reçoit par exemple, sur la gauche de la figure, un pavé d’image d’entrée 1002, et génère, sur la droite de la figure, une image de sortie 1004. Dans l’exemple de la figure 10, l’image d’entrée 1002 comporte 512 par 512 pixels, et l’image de sortie 1004 a la même taille que l’image d’entrée. Toutefois, cela n’est qu’un exemple et n’importe quelle taille d’image d’entrée et de sortie serait possible. Les images d’entrée et de sortie 1002, 1004 ont chacune par exemple trois canaux correspondant à des canaux de couleur. Toutefois, dans des variantes de réalisation le réseau neuronal 1000 pourrait recevoir en entrée et produire en sortie des images en niveaux de gris, ou des cartes de profondeur, n’ayant qu’un seul canal.The neural network 1000 receives for example, on the left of the figure, an input image tile 1002, and generates, on the right of the figure, an output image 1004. In the example of Figure 10, input image 1002 is 512 by 512 pixels, and output image 1004 is the same size as the input image. However, this is only an example and any input and output image size would be possible. The input and output images 1002, 1004 each have, for example, three channels corresponding to color channels. However, in variant embodiments, the neural network 1000 could receive as input and produce as output grayscale images, or depth maps, having only one channel.

Des flèches 1006 en figure 10 représentent des couches de convolution. Chaque couche de convolution 1006 correspond par exemple à un certain nombre de filtres. Dans l’exemple de la figure 10, l’image d’entrée 1002 est initialement filtrée par deux couches de convolution comprenant chacune 16 filtres de convolution, ce qui donne des images ayant 16 canaux. Chacun des filtres de convolution a un nombre limité de paramètres, comme par exemple un filtre 3 par 3 ayant 9 paramètres. Dans un exemple, un filtre basé sur le noyau de filtre de Sobel pourrait être utilisé, même si les paramètres du filtre vont être modifiés pendant l’apprentissage, et sont susceptibles de converger vers des filtres similaires au filtre de Sobel, mais ne correspondant pas exactement à celui-ci. La convolution entre l’image d’entrée et le filtre est appliquée à chaque pixel de l’image de la même façon, et ainsi, avec relativement peu de paramètres, l’image peut être complètement transformée. En effet, en fonction des paramètres de chaque filtre, l’image de sortie filtrée va être complètement différente.Arrows 1006 in Figure 10 represent convolution layers. Each convolution layer 1006 corresponds for example to a certain number of filters. In the example of Figure 10, the input image 1002 is initially filtered by two convolution layers each comprising 16 convolution filters, resulting in images having 16 channels. Each of the convolution filters has a limited number of parameters, such as a 3 by 3 filter having 9 parameters. In one example, a filter based on the Sobel filter kernel could be used, even though the filter parameters are going to be changed during training, and are likely to converge to filters similar to the Sobel filter, but not matching. exactly to this one. The convolution between the input image and the filter is applied to each pixel of the image in the same way, and thus, with relatively few parameters, the image can be completely transformed. Indeed, depending on the parameters of each filter, the filtered output image will be completely different.

Dans le cas de filtres de convolution ayant une pluralité de paramètres, le filtre est par exemple appliqué à un bloc de pixels afin de générer chaque pixel de l’image résultante. En dépit de cela, dans l’exemple de la figure 10, les couches de convolution ne provoquent pas par exemple une réduction de la taille de l’image, puisqu’une ou plusieurs rangées ou colonnes de pixels, bourrées avec des zéros, sont par exemple ajoutées sur chaque bord de l’image avant le filtrage à convolution afin qu’une valeur de sortie puisse être générée pour chaque pixel de l’image d’entrée.In the case of convolution filters having a plurality of parameters, the filter is for example applied to a block of pixels in order to generate each pixel of the resulting image. Despite this, in the example of figure 10, the convolution layers do not cause for example a reduction in the size of the image, since one or more rows or columns of pixels, padded with zeros, are for example added on each edge of the image before the convolution filtering so that an output value can be generated for each pixel of the input image.

Des flèches 1008 en figure 10 représentent les opérations de sous-échantillonnage dans lesquelles des blocs de pixels sont par exemple combinés en générant une valeur de pixel moyenne des pixels du bloc ou en prenant la valeur du pixel de crête parmi les pixels du bloc. Dans l’exemple de la figure 10, le sous-échantillonnage implique une combinaison de blocs deux par deux de pixels amenant une réduction d’un facteur 4 dans la taille de l’image. En outre, le nombre de filtres de convolution appliqués à chaque image sous-échantillonnée est par exemple le double du nombre appliqué à l’image précédente avant le sous-échantillonnage. Dans l’exemple de la figure 10, il y a quatre opérations de sous-échantillonnage amenant la taille d’image de 512 par 512 à 256 par 256, à 128 par 128, à 64 par 64, et finalement à 32 par 32, le nombre de filtres appliqués à ces images augmentant à partir de 16 dans le cas de l’image 512 par 512, jusqu’à 256 dans le cas de l’image 32 par 32. La plus petite taille d’image correspond à la partie inférieure du "U", et est connue sous le nom de goulot.Arrows 1008 in FIG. 10 represent the subsampling operations in which blocks of pixels are for example combined by generating an average pixel value of the pixels in the block or by taking the value of the peak pixel among the pixels in the block. In the example in Figure 10, downsampling involves combining two-by-two blocks of pixels resulting in a four-fold reduction in image size. Also, the number of convolution filters applied to each downsampled image is, for example, twice the number applied to the previous image before downsampling. In the example of figure 10, there are four downsampling operations bringing the image size from 512 by 512 to 256 by 256, to 128 by 128, to 64 by 64, and finally to 32 by 32, the number of filters applied to these images increasing from 16 in the case of the 512 by 512 image, up to 256 in the case of the 32 by 32 image. bottom of the "U", and is known as the neck.

Des flèches 1010 en figure 10 représentent les opérations de sur-échantillonnage dans lesquelles des blocs de pixels sont par exemple dupliqués un certain nombre de fois pour augmenter la taille de l’image. Par exemple, la duplication d’un pixel une fois dans chaque direction provoque une augmentation de la taille d’image d’un facteur 4, puisque chaque pixel devient quatre pixels. En outre, le nombre de filtres de convolution appliqués à chaque image sur-échantillonnée est par exemple égal à la moitié du nombre de ceux appliqués à l’image précédente avant le sur-échantillonnage. Dans l’exemple de la figure 10, il y a quatre opérations de sur-échantillonnage amenant la taille de l’image à partir de 32 par 32, à 64 par 64, à 128 par 128, à 256 par 256, et finalement à 512 par 512. En outre, le nombre de filtres appliqués à ces images diminue à partir de 256 dans le cas de l’image 32 par 32, pour descendre à 16 dans le cas de l’image 512 par 512.Arrows 1010 in FIG. 10 represent oversampling operations in which blocks of pixels are for example duplicated a certain number of times to increase the size of the image. For example, duplicating a pixel once in each direction causes the image size to increase by a factor of 4, since each pixel becomes four pixels. Furthermore, the number of convolution filters applied to each oversampled image is for example equal to half the number of those applied to the previous image before the oversampling. In the example of Figure 10, there are four oversampling operations taking the image size from 32 by 32, to 64 by 64, to 128 by 128, to 256 by 256, and finally to 512 by 512. In addition, the number of filters applied to these images decreases from 256 in the case of the 32 by 32 image, to go down to 16 in the case of the 512 by 512 image.

Comme cela est représenté par des flèches 1012 en figure 10, dans certains modes de réalisation, une première opération de convolution à la suite de chaque opération de sur-échantillonnage implique aussi une concaténation du résultat d’une opération de sous-échantillonnage correspondante. Cela aide par exemple le réseau neuronal à conserver des bords/contours de l’image reconstruite aussi nets que dans l’image d’entrée 1002.As shown by arrows 1012 in Fig. 10, in some embodiments, a first convolution operation following each upsampling operation also involves a concatenation of the result of a corresponding downsampling operation. This helps the neural network, for example, to keep edges/contours of the reconstructed image as sharp as in the input image 1002.

Comme cela est représenté par une flèche 1014 en figure 10, une couche de convolution finale implique par exemple l’application de trois filtres de convolution à chaque pixel afin de réduire et ramener le nombre de canaux à 3.As represented by an arrow 1014 in Figure 10, a final convolution layer involves, for example, applying three convolution filters to each pixel in order to reduce and reduce the number of channels to 3.

Bien sûr, la figure 10 n’est simplement qu’un exemple, et il y a de nombreuses variantes qui pourraient être appliquées, comme l’utilisation d’un nombre différent de couches de convolution entre chaque opération de sous-échantillonnage ou de sur-échantillonnage, en utilisant un nombre différent d’opérations de sous-échantillonnage et de sur-échantillonnage, et/ou en utilisant un nombre différent de filtres de convolution dans chaque couche de convolution. En outre, bien qu’on ait décrit un exemple dans lequel une ou plusieurs rangées et colonnes bourrées avec des zéros sont ajoutées aux images pour éviter une réduction de taille d’image pendant le filtrage à convolution, dans des variantes de réalisation ces rangées et colonnes additionnelles pourraient être remplies d’une manière différente, comme par exemple avec une duplication de leurs rangées/colonnes voisines, ou aucune de telles rangées/colonnes additionnelles ne pourraient être fournies.Of course, Figure 10 is just an example, and there are many variations that could be applied, such as using a different number of convolution layers between each downsampling or oversampling operation. -sampling, using a different number of downsampling and upsampling operations, and/or using a different number of convolution filters in each convolution layer. Further, although an example has been described in which one or more rows and columns padded with zeros are added to the images to avoid image size reduction during convolution filtering, in alternative embodiments these rows and columns additional columns could be populated in a different way, such as with a duplication of their neighboring rows/columns, or no such additional rows/columns could be provided.

Comme cela a été mentionné précédemment, la mise en œuvre du réseau neuronal 900 de la figure 9 ou 1000 de la figure 10 pourrait se faire par du matériel dédié, ou par du logiciel, ou par une solution hybride impliquant des parties mises en œuvre sous forme matérielle et sous forme de logicielle.As mentioned previously, the implementation of the neural network 900 of Fig. 9 or 1000 of Fig. 10 could be done by dedicated hardware, or by software, or by a hybrid solution involving parts implemented under hardware and software form.

Pendant une phase d’apprentissage, dont un exemple est décrit plus en détail ci-après, le réseau neuronal 302 apprend automatiquement comment filtrer des échantillons altérés afin de retirer du bruit non souhaitable et d’autres artefacts. En particulier, cela implique par exemple l’affinage graduel des divers paramètres des divers neurones et diverses connexions, comme les états mémorisés des neurones, les connexions entre neurones et les fonctions de propagation, résultant des paramètres de pondération φij,θijdans l’exemple de la figure 9, ou résultant des paramètres des fonctions de convolution dans l’exemple de la figure 10, pour générer les entrées de neurones sur la base de la sortie d’un ou plusieurs neurones prédécesseurs. Ainsi, le réseau neuronal ayant reçu un apprentissage 302, une fois l’apprentissage effectué, est capable de retirer une altération d’échantillons non souhaitable de manière efficace.During a training phase, an example of which is described in more detail below, the neural network 302 automatically learns how to filter out corrupted samples in order to remove unwanted noise and other artifacts. In particular, this implies for example the gradual refinement of the various parameters of the various neurons and various connections, such as the memorized states of the neurons, the connections between neurons and the propagation functions, resulting from the weighting parameters φ ij, θ ij in the example of Figure 9, or resulting from the parameters of the convolution functions in the example of Figure 10, to generate the neuron inputs based on the output of one or more predecessor neurons. Thus, the trained neural network 302, once trained, is able to remove undesirable sample corruption efficiently.

Le dispositif de calcul 112 comprend par exemple un dispositif de traitement (P) 310, qui comprend un ou plusieurs processeurs agencés pour mémoriser des instructions dans une mémoire d’instructions (INSTR MEM) 312. Le dispositif de traitement 310 est par exemple agencé, sous le contrôle des instructions, pour extraire des échantillons filtrés 308 de la mémoire 304, et traiter ces échantillons sur la base d’un ou plusieurs paramètres d’inspection afin de déterminer si un ou plusieurs critères de test sont satisfaits. Le dispositif de traitement 310 génère par exemple un résultat de sortie sous la forme d’un message de succès ou d’échec, qui est par exemple fourni en sortie (P/F) par l’intermédiaire d’une interface de sortie (O/P INTERFACE) 312, qui peut comprendre un écran d’opérateur, ou une interface de communication pour fournir le résultat à un ou plusieurs systèmes distants. En plus ou à la place, le résultat de chaque inspection pourrait être mémorisé dans la mémoire 304.The calculation device 112 comprises for example a processing device (P) 310, which comprises one or more processors arranged to store instructions in an instruction memory (INSTR MEM) 312. The processing device 310 is for example arranged, under instruction control, to retrieve filtered samples 308 from memory 304, and process those samples based on one or more inspection parameters to determine if one or more test criteria are met. The processing device 310 generates for example an output result in the form of a success or failure message, which is for example outputted (P/F) via an output interface (O /P INTERFACE) 312, which may comprise an operator screen, or a communication interface for providing the result to one or more remote systems. Additionally or instead, the result of each inspection could be stored in memory 304.

Dans certains modes de réalisation, à la place de la mise en œuvre logicielle représentée en figure 3, le dispositif de calcul 112 pourrait être mis en œuvre au moins partiellement sous forme de matériel, par exemple par un ou plusieurs ASIC (circuits intégrés spécifiques d’application) et/ou par un ou plusieurs autres réseaux neuronaux artificiels.In some embodiments, instead of the software implementation shown in Figure 3, the computing device 112 could be implemented at least partially in hardware, for example by one or more ASICs. application) and/or by one or more other artificial neural networks.

La figure 4 est un organigramme représentant des étapes dans un procédé de classification automatique d’objets fabriqués selon un exemple de réalisation de la présente description. Ce procédé est par exemple mis en œuvre par le filtre d’altérations 110 et le dispositif de calcul 112 de la figure 3.FIG. 4 is a flowchart representing steps in a method for the automatic classification of objects manufactured according to an exemplary embodiment of the present description. This method is for example implemented by the alterations filter 110 and the calculation device 112 of FIG. 3.

Dans une étape 402, un ou plusieurs échantillons concernant un objet à inspecter sont capturés par un ou plusieurs capteurs. Par exemple, dans le cas du système d’inspection optique 100 de la figure 1, chaque échantillon correspond à une image ou une carte de profondeur d’une partie d’une carte de circuit, chaque image ou carte de profondeur comprenant une matrice de valeurs de pixels, chaque valeur de pixel fournissant une information d’intensité lumineuse, de couleur et/ou de profondeur. Toutefois, plus généralement, lesdits un ou plusieurs échantillons pourraient correspondre à des échantillons de données ayant la forme de lectures de pression, d’échantillons de sons ou de vibrations, d’échantillons de position, de vitesse ou d’accélération linéaire ou angulaire, etc. Comme avec pratiquement tous les échantillons de données capturés par un capteur, les échantillons sont altérés par du bruit et d’autres artefacts ayant pour origine l’environnement du capteur, le capteur lui-même et/ou d’autres sources. Lesdits un ou plusieurs échantillons sont par exemple stockés dans la mémoire 304 de la figure 3 sous la forme du ou des échantillons altérés 306.In a step 402, one or more samples relating to an object to be inspected are captured by one or more sensors. For example, in the case of the optical inspection system 100 of FIG. 1, each sample corresponds to an image or a depth map of a part of a circuit board, each image or depth map comprising a matrix of pixel values, each pixel value providing light intensity, color and/or depth information. However, more generally, said one or more samples could correspond to data samples in the form of pressure readings, samples of sound or vibrations, samples of position, velocity or linear or angular acceleration, etc As with virtually all data samples captured by a sensor, samples are affected by noise and other artifacts originating from the sensor environment, the sensor itself, and/or other sources. Said one or more samples are for example stored in the memory 304 of FIG. 3 in the form of the altered sample(s) 306.

Dans une étape 404, lesdits un ou plusieurs échantillons capturés sont filtrés par le filtre d’altérations, et en particulier par le réseau neuronal 302 ayant reçu un apprentissage. Cela implique par exemple la modification d’une ou plusieurs valeurs de chaque échantillon pour retirer au moins partiellement une composante de bruit.In a step 404, said one or more captured samples are filtered by the alterations filter, and in particular by the neural network 302 having received training. This implies, for example, the modification of one or more values of each sample to at least partially remove a noise component.

Dans une étape 406, un ou plusieurs algorithmes d’inspection sont appliqués auxdits un ou plusieurs échantillons filtrés afin de décider un résultat de succès ou d’échec de l’inspection. Par exemple, lesdits un ou plusieurs algorithmes d’inspection sont appliqués par le dispositif de calcul 112 de la figure 3. Dans le cas du système d’inspection optique 100 de la figure 1, lesdits un ou plusieurs algorithmes d’inspection décident d’un succès ou d’un échec pour chaque carte de circuit passant à travers le système. Toutefois, les mêmes principes pourraient être appliqués à tout objet fabriqué.In a step 406, one or more inspection algorithms are applied to said one or more filtered samples in order to decide a pass or fail result of the inspection. For example, said one or more inspection algorithms are applied by the computing device 112 of Figure 3. In the case of the optical inspection system 100 of Figure 1, said one or more inspection algorithms decide to a pass or fail for each circuit board passing through the system. However, the same principles could be applied to any manufactured object.

On va maintenant décrire un système et un procédé pour réaliser l’apprentissage du réseau neuronal 302 de la figure 3, en faisant référence aux figures 5 à 8.We will now describe a system and a method for carrying out the training of the neural network 302 of FIG. 3, with reference to FIGS. 5 to 8.

La figure 5 représente schématiquement un système de traitement 500 pour l’apprentissage d’un réseau neuronal, comme le réseau neuronal 302 de la figure 3, selon un exemple de réalisation de la présente description.FIG. 5 schematically represents a processing system 500 for training a neural network, such as the neural network 302 of FIG. 3, according to an example embodiment of the present description.

Le système 500 comprend par exemple le réseau neuronal n’ayant pas reçu d’apprentissage 302’ (NEURAL NETWORK (CF)), couplé par exemple par l’intermédiaire d’un bus 502 à une mémoire 504. La mémoire 504 mémorise par exemple une pluralité d’échantillons (SAMPLES) 506 capturés par un ou plusieurs capteurs (SENSORS) 508, qui sont aussi par exemple couplés au bus 502. Par exemple, ces capteurs 508 sont des capteurs identiques ou similaires à ceux utilisés pour capturer des échantillons pendant un processus d’inspection. En outre, la mémoire 504 mémorise par exemple une ou plusieurs vérités de terrain (GROUND TRUTH(S)) 510. Un dispositif de traitement (P) 512, qui comprend par exemple un ou plusieurs processeurs, est aussi par exemple couplé au bus 502. Par exemple, le dispositif de traitement 512 est sous le contrôle d’instructions stockées dans une mémoire d’instructions 514, qui est par exemple une mémoire à accès aléatoire (RAM).The system 500 comprises for example the neural network which has not received training 302' (NEURAL NETWORK (CF)), coupled for example via a bus 502 to a memory 504. The memory 504 stores for example a plurality of samples (SAMPLES) 506 captured by one or more sensors (SENSORS) 508, which are also for example coupled to the bus 502. For example, these sensors 508 are identical or similar sensors to those used to capture samples during an inspection process. In addition, the memory 504 stores for example one or more ground truths (GROUND TRUTH(S)) 510. A processing device (P) 512, which for example comprises one or more processors, is also for example coupled to the bus 502 For example, the processing device 512 is under the control of instructions stored in an instruction memory 514, which is for example a random access memory (RAM).

En fonctionnement, dans le cas où le réseau neuronal 302’ est mis en œuvre par un GPU ou une autre forme d’ASIC, la partie du bus 502 pour communiquer avec le réseau neuronal est par exemple un bus PCI Express (de l’anglais Peripheral Component Interconnect Express). Par exemple, lorsqu’une inférence doit être réalisée, des données d’entrée allant vers le réseau neuronal 302’ sont transférées, à partir de la RAM dédiée au dispositif de traitement 512, par exemple une RAM CPU, vers une RAM dédiée au réseau neuronal 302’, par exemple une RAM GPU, par l’intermédiaire du bus PCI Express ou similaire. Les unités de calcul du réseau neuronal 302’ sont ensuite par exemple configurées pour récupérer les données d’entrée dans la RAM du réseau neuronal et pour traiter ces données d’entrée. Les données de sortie générées par le réseau neuronal 302’ sont ensuite par exemple mémorisées dans la RAM dédiée au réseau neuronal, par exemple dans la RAM GPU, puis transférées vers la RAM dédiée au dispositif de traitement 512, par exemple vers la RAM CPU par l’intermédiaire du bus PCI Express ou similaire.In operation, in the case where the neural network 302' is implemented by a GPU or other form of ASIC, the part of the bus 502 for communicating with the neural network is for example a PCI Express bus (from the English Peripheral Component Interconnect Express). For example, when an inference is to be made, input data going to the neural network 302' is transferred from the RAM dedicated to the processing device 512, for example a CPU RAM, to a RAM dedicated to the network. neuronal 302', for example a GPU RAM, via the PCI Express bus or the like. The neural network computing units 302' are then, for example, configured to retrieve the input data from the neural network's RAM and to process that input data. The output data generated by the neural network 302′ are then, for example, stored in the RAM dedicated to the neural network, for example in the GPU RAM, then transferred to the RAM dedicated to the processing device 512, for example to the CPU RAM by via the PCI Express or similar bus.

Une difficulté dans l’apprentissage d’un réseau neuronal pour éliminer par filtrage du bruit de sortie à partir d’échantillons altérés est qu’une vérité de terrain, correspondant à un résultat souhaité du filtrage, est en général nécessaire. Toutefois, les procédés connus de génération d’une vérité de terrain impliquent en général l’utilisation d’un ou plusieurs capteurs capables de donner une précision nettement plus grande que les capteurs du système. Par exemple, une précision supérieure d’au moins dix fois est souvent utilisée pour générer une vérité de terrain. Une difficulté est que de tels capteurs à haute précision sont coûteux et peuvent ne pas toujours être disponibles.A difficulty in training a neural network to filter out output noise from corrupted samples is that a ground truth, corresponding to a desired result of the filtering, is usually required. However, the known methods for generating a ground truth generally involve the use of one or more sensors capable of giving a significantly greater precision than the sensors of the system. For example, at least ten times greater precision is often used to generate ground truth. A difficulty is that such high precision sensors are expensive and may not always be available.

Le présent inventeur propose une solution alternative pour générer la vérité de terrain sur la base d’échantillons capturés dans diverses conditions, comme on va le décrire plus en détail maintenant en faisant référence à la figure 6.The present inventor provides an alternative solution for generating ground truth based on samples captured under various conditions, as will be described in more detail now with reference to Figure 6.

La figure 6 est un organigramme représentant des étapes dans un procédé d’apprentissage d’un réseau neuronal selon un exemple de réalisation de la présente description. Ce procédé est par exemple mis en œuvre par le système de traitement 500 de la figure 5 afin de réaliser l’apprentissage du réseau neuronal 302’. En particulier, le procédé est par exemple mis en œuvre par du logiciel exécuté par le dispositif de traitement 512.FIG. 6 is a flowchart representing steps in a method for training a neural network according to an example embodiment of the present description. This method is for example implemented by the processing system 500 of FIG. 5 in order to carry out the learning of the neural network 302′. In particular, the method is for example implemented by software executed by the processing device 512.

Dans une étape 602, des échantillons d’un même objet sont par exemple capturés de multiples fois en utilisant les capteurs 508, tout en appliquant M ensembles de paramètres différents aux capteurs. Ces échantillons capturés sont par exemple stockés dans la mémoire 504 de la figure 5 sous la forme des échantillons 506.In a step 602, samples of the same object are for example captured multiple times using the sensors 508, while applying M sets of different parameters to the sensors. These captured samples are for example stored in the memory 504 of FIG. 5 in the form of samples 506.

Par exemple, chaque ensemble de paramètres définit un ou plusieurs paramètres des capteurs 508, et/ou de l’environnement des capteurs et de l’objet fabriqué qui est capturé, paramètres qui sont appliqués pendant l’acquisition des échantillons. Par exemple, chaque paramètre définit une combinaison d’un, de certains ou de la totalité des paramètres suivants:
- temps d’exposition/durée d’échantillonnage ;
- niveau d’éclairage ambiant, par exemple impliquant l’utilisation d’une ou plusieurs sources de lumière parasites additionnelles pour éclairer sélectivement l’objet ;
- un niveau de rétroéclairage de l’objet ;
- la position de l’objet par rapport aux capteurs, y compris l’altitude de l’objet fabriqué ;
- l’orientation de l’objet qui est échantillonné, de cartes de circuit électronique ou d’autres objets qui sont par exemple capturés à 0° ou 90°, ou à tout angle intermédiaire, par rapport à la surface du convoyeur 102 de la figure 1 ; et
- dans le cas où le capteur est une caméra ayant une distance focale variable, la distance focale sélectionnée de la caméra.
For example, each parameter set defines one or more parameters of the sensors 508, and/or the environment of the sensors and the artifact being captured, parameters that are applied during sample acquisition. For example, each parameter defines a combination of one, some, or all of the following parameters:
- exposure time/sampling time;
- ambient lighting level, for example involving the use of one or more additional parasitic light sources to selectively illuminate the object;
- a level of backlighting of the object;
- the position of the object relative to the sensors, including the altitude of the manufactured object;
- the orientation of the object being sampled, electronic circuit boards or other objects being captured, for example, at 0° or 90°, or any angle in between, relative to the surface of the conveyor 102 of the figure 1 ; And
- in the case where the sensor is a camera having a variable focal length, the selected focal length of the camera.

Par exemple, le nombre M d’ensembles de paramètres différents qui sont appliqués pendant l’acquisition d’échantillons est d’au moins 2, et peut être nettement supérieur, par exemple d’au moins un millier dans certains cas. Par exemple, pour certaines applications, le nombre d’acquisitions pourrait être supérieur à un million. En effet, on peut faire varier certains des paramètres susmentionnés par exemple avec de relativement petits incréments sur une relativement grande plage de paramètres, et en capturant des échantillons avec chaque combinaison de ces paramètres, un nombre relativement grand d’ensembles de paramètres différents peut être appliqué pour produire des échantillons correspondants.For example, the number M of sets of different parameters which are applied during the acquisition of samples is at least 2, and can be much higher, for example at least a thousand in certain cases. For example, for some applications, the number of acquisitions could be more than one million. Indeed, one can vary some of the aforementioned parameters for example with relatively small increments over a relatively large range of parameters, and by capturing samples with each combination of these parameters, a relatively large number of different parameter sets can be applied to produce matching samples.

En outre, dans certains modes de réalisation, l’acquisition d’échantillons est basée sur un paramétrage à haute fidélité du système d’acquisition, qui est acceptable pour générer des données d’apprentissage, mais qui serait inacceptable dans une ligne de production puisqu’il serait trop lent. Le paramétrage à haute fidélité implique par exemple une capture d’images avec un bruit relativement faible, avec des conditions d’éclairage bien agencées, comprenant par exemple certaines étapes pour ajuster automatiquement le temps d’exposition et/ou l’intensité projetée, avec une focalisation bien ajustée, comprenant par exemple certaines étapes pour ajuster automatiquement la focalisation afin d’obtenir des images à haute fidélité et à grande netteté, et avec une résolution spatiale relativement élevée.Further, in some embodiments, the sample acquisition is based on a high-fidelity setup of the acquisition system, which is acceptable for generating training data, but which would be unacceptable in a production line since would be too slow. High-fidelity setting involves for example capturing images with relatively low noise, with well-arranged lighting conditions, including for example some steps to automatically adjust exposure time and/or projected intensity, with a well-adjusted focus, comprising for example certain steps for automatically adjusting the focus in order to obtain images with high fidelity and high sharpness, and with a relatively high spatial resolution.

Dans une étape 604, une pseudo-vérité de terrain est par exemple générée sur la base des échantillons capturés dans l’étape 602.In a step 604, a pseudo-ground truth is for example generated on the basis of the samples captured in step 602.

Par exemple, dans certains modes de réalisation, et pour certains aspects, la pseudo-vérité de terrain est générée en tant que moyenne de certains ou de tous les échantillons capturés. En fonction du type de bruit, cette moyenne pourrait correspondre à une moyenne usuelle, une médiane ou une valeur de mode, ou à d’autres algorithmes plus dédiés basés sur une connaissance du domaine de l’application finale. En effet, il serait possible d’utiliser des algorithmes plus avancés qui sont coûteux en calculs pour nettoyer les échantillons bruités afin qu’un réseau neuronal relativement rapide reçoive un apprentissage pour imiter ce traitement à haute performance. Une opération manuelle pour améliorer la qualité de la vérité de terrain pourrait aussi être appliquée, par exemple pour retirer des artefacts d’une reconstruction 3D.For example, in some embodiments, and for some aspects, the pseudo ground truth is generated as an average of some or all of the captured samples. Depending on the type of noise, this average could correspond to a usual average, a median or a mode value, or to other more dedicated algorithms based on knowledge of the domain of the final application. Indeed, it would be possible to use more advanced algorithms that are computationally expensive to clean up noisy samples so that a relatively fast neural network is trained to mimic this high-performance processing. A manual operation to improve the quality of the ground truth could also be applied, for example to remove artefacts from a 3D reconstruction.

Par exemple, la position d’un ou plusieurs bords de l’objet capturé peut être réglée dans la vérité de terrain à une position de médiane, réduisant ainsi l’impact des valeurs aberrantes. Dans un autre exemple, en supposant qu’une grande plage d’éclairages a été appliquée pendant l’étape 602, le niveau d’éclairage peut être réglé dans la vérité de terrain à un niveau d’éclairage moyen.For example, the position of one or more edges of the captured object can be set in ground truth to a median position, thereby reducing the impact of outliers. In another example, assuming a wide range of illuminations was applied during step 602, the illumination level may be set in ground truth to a medium illumination level.

D’autres aspects de la vérité de terrain peuvent être déterminés sur la base d’une distribution estimée du bruit résultant des variations de paramètres dans les divers échantillons.Other aspects of ground truth can be determined based on an estimated noise distribution resulting from parameter variations in the various samples.

Encore d’autres aspects de la vérité de terrain peuvent être déterminés sur la base d’un ou plusieurs algorithmes de détection. Par exemple, dans le cas de variations dans la distance focale entre des échantillons, un ou plusieurs échantillons ayant la focalisation la plus nette peuvent être détectés en utilisant des algorithmes connus, et peuvent être sélectionnés comme représentant la vérité de terrain en ce qui concerne la netteté d’image.Still other aspects of ground truth can be determined based on one or more detection algorithms. For example, in the case of variations in the focal length between samples, one or more samples having the sharpest focus can be detected using known algorithms, and can be selected as representing the ground truth with respect to the image sharpness.

La pseudo-vérité de terrain correspond par exemple à un pseudo-échantillon généré sur la base de certaines ou de la totalité des approches susmentionnées afin de générer le résultat souhaité de l’opération de filtrage d’altérations.Pseudo-ground truth, for example, is a pseudo-sample generated based on some or all of the aforementioned approaches to generate the desired result of the accidental filtering operation.

Après l’étape 604, dans certains modes de réalisation les étapes 602 et 604 sont répétées pour un nouvel objet, pour générer une autre vérité de terrain unique pour le nouvel objet. Par exemple, le nouvel objet est un objet fabriqué en utilisant le même procédé que l’objet précédemment capturé. Toutefois, en raison de tolérances du procédé, il y aura de légères variations. Par conséquent, les échantillons capturés en utilisant les M ensembles de paramètres différents auront certaines variations par rapport aux échantillons capturés pendant la première itération. En outre, les étapes 602 et 604 sont par exemple répétées sur de nombreuses itérations pour de nombreux nouveaux objets, par exemple pour des centaines, des milliers ou même des millions d’objets, afin de générer de nombreux échantillons et des pseudo-vérités de terrain correspondantes.After step 604, in some embodiments steps 602 and 604 are repeated for a new object, to generate another unique ground truth for the new object. For example, the new object is an object made using the same process as the previously captured object. However, due to process tolerances, there will be slight variations. Therefore, the samples captured using the M different sets of parameters will have some variation from the samples captured during the first iteration. Furthermore, the steps 602 and 604 are for example repeated over numerous iterations for numerous new objects, for example for hundreds, thousands or even millions of objects, in order to generate numerous samples and pseudo-truths of corresponding land.

Dans certains modes de réalisation, au moins certains des objets sur la base desquels des pseudo-vérités de terrain sont générées comprennent des exemples à la fois i) de pièces bonnes qui doivent être classées comme passant avec succès le procédé d’inspection d’objets ; et ii) de pièces défectueuses qui doivent être classées comme échouant dans le procédé d’inspection d’objets. Il est aussi préférable que les échantillons utilisés pendant l’apprentissage, et les vérités de terrain correspondantes, comprennent des exemples d’objets passant avec succès et échouant à l’inspection de l’objet. De cette manière, les objets, et les échantillons et les vérités de terrain correspondants, vont refléter ce qui sera effectivement présenté au système d’inspection d’objets pendant l’utilisation.In some embodiments, at least some of the objects based on which pseudo ground truths are generated include examples of both i) good parts that are to be classified as passing the object inspection process ; and ii) defective parts that must be classified as failing in the object inspection process. It is also preferable that the samples used during training, and the corresponding ground truths, include examples of objects passing and failing object inspection. In this way, the objects, and the corresponding samples and ground truths, will reflect what will actually be presented to the object inspection system during use.

Dans une étape 606, le réseau neuronal 302 reçoit par exemple un apprentissage sur la base de la pseudo-vérité de terrain générée dans l’étape 604 pendant l’itération finale. Comme cela est connu de l’homme de l’art, l’apprentissage d’un réseau neuronal implique par exemple la fourniture au réseau neuronal de nombreux exemples d’échantillons et de la vérité de terrain correspondante, de sorte que le réseau neuronal apprend de manière itérative comment obtenir la vérité de terrain à partir de n’importe quel échantillon. Dans le cas du filtre d’altérations 302, on apprend au réseau à corriger les échantillons altérés et à générer un échantillon filtré approchant la vérité de terrain. Dans le cas présent, la vérité de terrain correspond à la pseudo-vérité de terrain, et les échantillons altérés correspondent par exemple à un ou plusieurs des échantillons capturés pendant chaque itération de l’étape 602. En plus ou à la place, au moins certains des échantillons altérés utilisés pendant l’apprentissage peuvent être générés par un autre réseau neuronal, comme on va le décrire maintenant plus en détail en faisant référence aux figures 7 et 8.In a step 606, the neural network 302 receives, for example, training based on the pseudo-ground truth generated in step 604 during the final iteration. As known to those skilled in the art, training a neural network involves, for example, providing the neural network with many example samples and the corresponding ground truth, so that the neural network learns iteratively how to get ground truth from any sample. In the case of the alterations filter 302, the network is taught to correct the altered samples and to generate a filtered sample approaching the ground truth. In the present case, the ground truth corresponds to the pseudo-ground truth, and the altered samples correspond, for example, to one or more of the samples captured during each iteration of step 602. In addition or instead, at least some of the altered samples used during training may be generated by another neural network, as will now be described in more detail with reference to Figures 7 and 8.

La figure 7 représente schématiquement un système 700 pour réaliser l’apprentissage d’une paire de réseaux neuronaux selon un exemple de réalisation de la présente description. L’un des réseaux neuronaux doit subir un apprentissage pour se comporter comme le filtre d’altérations, et par exemple correspond au réseau neuronal 302’ de la figure 5. L’autre réseau neuronal (NEURAL NETWORK (CS)) 702 correspond par exemple à un simulateur d’altérations, qui simule l’altération dans un échantillon. Dans certains modes de réalisation, le simulateur d’altérations 702 a la même architecture que celle du filtre d’altérations 302’, comme cela a été décrit précédemment. En variante, les réseaux 302’ et 702 pourraient avoir des architectures différentes.FIG. 7 schematically represents a system 700 for training a pair of neural networks according to an example embodiment of the present description. One of the neural networks must be trained to behave like the alterations filter, and for example corresponds to the neural network 302' of FIG. 5. The other neural network (NEURAL NETWORK (CS)) 702 corresponds for example to an accidental simulator, which simulates the accidental in a sample. In some embodiments, the accidental simulator 702 has the same architecture as that of the accidental filter 302', as previously described. Alternatively, networks 302' and 702 could have different architectures.

Le réseau neuronal 302’ reçoit par exemple un échantillon altéré (CORRUPTED SAMPLE) 704, et est soumis à un apprentissage pour filtrer cet échantillon pour générer un échantillon filtré (CLEAN SAMPLE) 706. Par exemple, l’apprentissage du réseau neuronal 302’ est basé sur une vérité de terrain correspondant à un échantillon propre 706 généré dans le cycle d’apprentissage précédent. En outre, l’échantillon propre 706 est aussi par exemple fourni en entrée au réseau neuronal 302’ pour servir de vérité de terrain pour un cycle d’apprentissage suivant du filtre d’altérations 302’. Comme cela est connu de la personne du métier, l’apprentissage d’un réseau neuronal sur la base d’échantillons d’entrée et de vérités de terrain est un processus itératif pendant lequel la fonction de transfert du réseau neuronal, et en particulier les poids synaptiques, sont ajustés de telle sorte que le résultat généré converge vers la vérité de terrain sur la base de la minimisation d’une fonction de coût donnée. Dans le présent système, la fonction de coût est par exemple la distance entre l’échantillon filtré généré par le réseau neuronal 302’ et l’échantillon propre 706 fournissant la vérité de terrain.The neural network 302' receives, for example, a corrupted sample (CORRUPTED SAMPLE) 704, and is trained to filter this sample to generate a filtered sample (CLEAN SAMPLE) 706. For example, the training of the neural network 302' is based on a ground truth corresponding to a clean sample 706 generated in the previous learning cycle. In addition, the clean sample 706 is also for example provided as input to the neural network 302' to serve as ground truth for a following training cycle of the alterations filter 302'. As known to those skilled in the art, training a neural network based on input samples and ground truths is an iterative process during which the transfer function of the neural network, and in particular the synaptic weights, are adjusted such that the generated result converges to the ground truth based on the minimization of a given cost function. In the present system, the cost function is for example the distance between the filtered sample generated by the neural network 302' and the proper sample 706 providing the ground truth.

Le réseau neuronal 702 reçoit par exemple l’échantillon propre 706, et une variable ou un vecteur aléatoire (RANDOM), et reçoit un apprentissage pour générer un échantillon altéré 704 sur la base d’une vérité de terrain correspondant à un échantillon altéré 704 généré dans le cycle d’apprentissage précédent. Le réseau neuronal 702 génère par exemple des échantillons altérés 704 sur la base de l’échantillon propre et de la variable ou du vecteur aléatoire, ce qui rend la génération non déterministe. L’échantillon altéré 704 est aussi par exemple fourni au réseau neuronal 702 pour servir de vérité de terrain pour un cycle d’apprentissage suivant du simulateur d’altérations 702.The neural network 702 receives for example the own sample 706, and a variable or a random vector (RANDOM), and is trained to generate an altered sample 704 on the basis of a ground truth corresponding to an altered sample 704 generated in the previous learning cycle. The neural network 702 generates, for example, corrupted samples 704 based on the clean sample and the random variable or vector, which makes the generation non-deterministic. The altered sample 704 is also, for example, provided to the neural network 702 to serve as ground truth for a following training cycle of the alterations simulator 702.

On va maintenant décrire le fonctionnement du système 700 en faisant référence à la figure 8.We will now describe the operation of the system 700 with reference to Figure 8.

La figure 8 est un organigramme représentant des étapes dans un procédé d’apprentissage d’une paire de réseaux neuronaux selon un exemple de réalisation de la présente description. Ce procédé est par exemple mis en œuvre par une paire de réseaux neuronaux comme cela est représenté dans le système 700 de la figure 7. Par exemple, on utilise une architecture similaire à celle de la figure 5, dans laquelle l’autre réseau neuronal 702 est aussi accessible par l’intermédiaire du bus 502.FIG. 8 is a flowchart representing steps in a method of training a pair of neural networks according to an example embodiment of the present description. This method is for example implemented by a pair of neural networks as shown in the system 700 of Figure 7. For example, an architecture similar to that of Figure 5 is used, in which the other neural network 702 is also accessible via bus 502.

Dans une étape 801, deux nouveaux d’échantillons, un échantillon altéré et un propre, sont chargés dans les réseaux neuronaux. Par exemple, l’échantillon altéré correspond à un ou plusieurs des échantillons capturés pendant une itération de l’étape 602 de la figure 6, et l’échantillon propre correspond à la pseudo-vérité de terrain correspondante. Aussi, dans l’étape 801, un indexe n est par exemple mis à un.In a step 801, two new samples, an altered sample and a clean one, are loaded into the neural networks. For example, the weathered sample corresponds to one or more of the samples captured during an iteration of step 602 of Figure 6, and the clean sample corresponds to the corresponding pseudo-ground truth. Also, in step 801, an index n is for example set to one.

L’apprentissage des réseaux neuronaux est par exemple réalisé dans des étapes parallèles 802 et 803. En variante, ces étapes pourraient aussi être réalisées séquentiellement.The training of the neural networks is for example carried out in parallel steps 802 and 803. As a variant, these steps could also be carried out sequentially.

L’étape 802 implique par exemple l’apprentissage du filtre d’altérations 302’ pour retirer l’altération de l’échantillon altéré sur la base de l’échantillon propre, en d’autres termes en utilisant l’échantillon propre comme vérité de terrain. Par exemple, cet apprentissage est basé sur la fonction de perte suivante : où LFest la perte associée au filtre d’altérations, F est le réseau de filtrage d’altérations, S est le réseau de simulation d’altérations, R est le vecteur ou la matrice aléatoire, qui par exemple a une distribution uniforme ou gaussienne, X sont des échantillons altérés provenant de l’ensemble de données d’apprentissage, Y est la vérité de terrain associée aux échantillons altérés X, d est la distance entre les échantillons, et α, β et γ sont des poids, qui peuvent être réglés par tâtonnement. Dans certains modes de réalisation, chacun de ces poids peut être mis à 1. La distance d représente la différence entre les échantillons. Par exemple, dans le cas d’images, la distance pourrait être la distance absolue L1, connue aussi sous le nom de distance de Manhattan, ou la distance moyenne quadratique L2, connue aussi sous le nom de distance euclidienne, ou toute autre distance.Step 802 involves, for example, training the tampering filter 302' to remove the tampering from the tampered sample based on the clean sample, in other words using the clean sample as the truth of ground. For example, this learning is based on the following loss function: where L F is the loss associated with the impairment filter, F is the impairment filter network, S is the impairment simulation network, R is the random vector or matrix, which for example has a uniform distribution or Gaussian, X are weathered samples from the training dataset, Y is the ground truth associated with the weathered samples X, d is the distance between the samples, and α, β and γ are weights, which can be settled by trial and error. In some embodiments, each of these weights can be set to 1. The distance d represents the difference between the samples. For example, in the case of images, the distance could be the absolute distance L1, also known as the Manhattan distance, or the root mean square distance L2, also known as the Euclidean distance, or any other distance.

L’étape 803 implique par exemple l’apprentissage du simulateur d’altérations 702 pour introduire une altération dans l’échantillon propre sur la base de l’échantillon altéré, en d’autres termes en utilisant l’échantillon altéré comme vérité de terrain. Par exemple, cet apprentissage est basé sur la fonction de perte suivante : où LSest la perte associée à la simulation d’altérations, δ est un poids, qui, comme les autres poids α, β et γ, peut être réglé par tâtonnement, et pourrait être égal à zéro dans certains cas, et les autres paramètres sont les mêmes que précédemment.Step 803 involves, for example, training the tamper simulator 702 to introduce an tamper to the clean sample based on the tampered sample, in other words using the tampered sample as ground truth. For example, this learning is based on the following loss function: where L S is the loss associated with the simulation of alterations, δ is a weight, which, like the other weights α, β and γ, can be tuned by trial and error, and could be zero in some cases, and the others parameters are the same as before.

Dans des variantes de réalisation, on pourrait utiliser des fonctions de perte identiques pendant les étapes d’apprentissage 802 et 803. Par exemple, on pourrait utiliser la fonction de perte commune suivante : où L est la perte, et les autres paramètres sont les mêmes que précédemment.In variant embodiments, identical loss functions could be used during the learning steps 802 and 803. For example, the following common loss function could be used: where L is the loss, and the other parameters are the same as before.

Les étapes 802 et 803 sont respectivement suivies par des étapes 804 et 805.Steps 802 and 803 are followed by steps 804 and 805, respectively.

Dans l’étape 804, l’échantillon filtré résultant du filtrage appliqué par le réseau de filtrage dans l’étape 802 est stocké en mémoire en tant que nouvel échantillon propre, remplaçant par exemple l’échantillon propre chargé initialement dans l’étape 801.In step 804, the filtered sample resulting from the filtering applied by the filtering network in step 802 is stored in memory as a new clean sample, replacing for example the clean sample initially loaded in step 801.

Dans l’étape 805, l’échantillon altéré résultant de la simulation d’altérations appliquée par le réseau de simulation d’altérations dans l’étape 803 est stocké en mémoire en tant que nouvel échantillon altéré, remplaçant par exemple l’échantillon altéré initialement chargé dans l’étape 801.In step 805, the tampered sample resulting from the tampering simulation applied by the tamper simulation network in step 803 is stored in memory as a new tampered sample, for example replacing the initially tampered sample. loaded in step 801.

Dans une étape 806 suivant les étapes 804 et 805, on détermine par exemple si l’index n est égal à N, où N est un nombre souhaité d’itérations de la séquence d’apprentissage sur la base d’une même paire d’échantillons, propre et altéré, initialement chargée. Par exemple, N est égal à au moins 2, et dans certains modes de réalisation, N est égal à au moins 10, et pourrait typiquement être égal à plus de 1000.In a step 806 following steps 804 and 805, it is determined for example whether the index n is equal to N, where N is a desired number of iterations of the learning sequence on the basis of the same pair of samples, clean and weathered, originally loaded. For example, N is at least 2, and in some embodiments, N is at least 10, and typically could be greater than 1000.

Si l’index n n’est pas encore égal à N, alors dans une étape 807, l’index n est incrémenté, et les étapes 802 à 805 sont répétées, sur la base des nouveaux échantillons, propre et altéré, mémorisés dans les étapes 804 et 805 précédentes.If the index n is not yet equal to N, then in a step 807, the index n is incremented, and the steps 802 to 805 are repeated, on the basis of the new samples, clean and altered, stored in the previous steps 804 and 805.

Une fois que l’index n est égal à N, l’étape suivante est l’étape 808, dans laquelle on détermine si d’autres paires d’échantillons, altérés et propres, sont disponibles pour un apprentissage. Si oui, le procédé revient par exemple à l’étape 801, dans laquelle la paire suivante est chargée, et l’index n est réinitialisé à 1, avant de répéter N itérations des opérations d’apprentissage 802 à 805.Once the index n is equal to N, the next step is step 808, in which it is determined whether other pairs of samples, altered and clean, are available for training. If yes, the method returns for example to step 801, in which the following pair is loaded, and the index n is reset to 1, before repeating N iterations of the learning operations 802 to 805.

Lorsque, dans l’étape 808, il n’y a plus d’autres paires à utiliser pour l’apprentissage, le procédé par exemple se termine dans une étape 809 dans laquelle l’apprentissage est considéré comme terminé.When, in step 808, there are no more other pairs to be used for learning, the method for example ends in a step 809 in which learning is considered to be finished.

Un avantage du système et du procédé décrits en relation avec les figures 7 et 8 est qu’un apprentissage peut être réalisé sur la base d’un nombre d’échantillons altérés notablement plus élevé que le nombre qui est capturé. En effet, l’apprentissage du simulateur d’altérations pour imiter les altérations introduites par le capteur sur la base d’une entrée aléatoire permet potentiellement de générer un nombre illimité d’échantillons altérés pour l’apprentissage.An advantage of the system and method described in relation to Figures 7 and 8 is that learning can be performed based on a significantly higher number of altered samples than the number that is captured. Indeed, training the alteration simulator to mimic the alterations introduced by the sensor based on random input potentially allows an unlimited number of altered samples to be generated for training.

Un avantage du système et du procédé décrits en relation avec les figures 3 et 4 est que, en utilisant un réseau neuronal ayant reçu un apprentissage pour filtrer des échantillons provenant de capteurs, les performances d’un algorithme d’inspection de qualité appliqué aux échantillons peuvent être notablement améliorées, permettant d’obtenir des niveaux élevés du pourcentage initial de rendement de premier passage S, et des performances à long terme représentées par le pourcentage E.An advantage of the system and the method described in relation to FIGS. 3 and 4 is that, by using a trained neural network to filter samples coming from sensors, the performance of a quality inspection algorithm applied to the samples can be significantly improved, making it possible to obtain high levels of the initial percentage of first pass efficiency S, and long-term performance represented by the percentage E.

L’avantage du système et du procédé décrits en relation avec les figures 5 et 6 est que, en déterminant une vérité de terrain sur la base de multiples échantillons d’un même objet capturés dans des conditions variables de capteurs et d’environnement, on peut éviter le coût et/ou la difficulté de prévoir un capteur très précis pour générer la vérité de terrain.The advantage of the system and of the method described in relation to FIGS. 5 and 6 is that, by determining a ground truth on the basis of multiple samples of the same object captured under variable sensor and environmental conditions, can avoid the cost and/or difficulty of providing a very accurate sensor to generate ground truth.

Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaitront à la personne du métier. Par exemple, il apparaîtra clairement à la personne du métier que les techniques décrites en relation avec les figures 3 à 8 pourraient toutes être combinées dans un seul mode de réalisation, ou être utilisées individuellement conjointement avec d’autres systèmes et procédés.Various embodiments and variants have been described. The person skilled in the art will understand that certain features of these various embodiments and variations could be combined, and other variations will occur to the person skilled in the art. For example, it will be apparent to those skilled in the art that the techniques described in connection with Figures 3-8 could all be combined in a single embodiment, or be used individually in conjunction with other systems and methods.

Enfin, la mise en œuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. En particulier, l’apprentissage d’un réseau neuronal sur la base d’une fonction de perte, comme par exemple sur la base des fonctions de perte décrites en relation avec la figure 8, est dans les capacités de la personne du métier.Finally, the practical implementation of the embodiments and variants described is within the abilities of those skilled in the art based on the functional indications given above. In particular, the learning of a neural network on the basis of a loss function, such as for example on the basis of the loss functions described in relation to FIG. 8, is within the capabilities of a person skilled in the art.

Claims (15)

Procédé de conception d’un premier réseau neuronal (302) pour filtrer des échantillons altérés, le procédé comprenant :
- prévoir un deuxième réseau neuronal (702) ;
- fournir un premier échantillon altéré et un premier échantillon propre au premier réseau neuronal (302), et réaliser un apprentissage du premier réseau neuronal pour filtrer le premier échantillon altéré, et pour générer un deuxième échantillon propre, sur la base d’une vérité de terrain fournie par le premier échantillon propre ; et
- fournir le premier échantillon propre et le premier échantillon altéré au deuxième réseau neuronal (702), et réaliser un apprentissage du deuxième réseau neuronal pour altérer le premier échantillon propre, et générer un deuxième échantillon altéré, sur la base d’une vérité de terrain fournie par le premier échantillon altéré.
A method of designing a first neural network (302) for filtering out corrupted samples, the method comprising:
- providing a second neural network (702);
- providing a first corrupted sample and a first clean sample to the first neural network (302), and training the first neural network to filter the first corrupted sample, and to generate a second clean sample, based on a truth of ground provided by the first clean sample; And
- providing the first clean sample and the first altered sample to the second neural network (702), and training the second neural network to alter the first clean sample, and generating a second altered sample, based on ground truth provided by the first altered sample.
Procédé selon la revendication 1, comprenant en outre :
- fournir le deuxième échantillon altéré et le deuxième échantillon propre au premier réseau neuronal (302), et réaliser un apprentissage du premier réseau neuronal pour filtrer le deuxième échantillon altéré, et pour générer un troisième échantillon propre, sur la base d’une vérité de terrain fournie par le deuxième échantillon propre.
A method according to claim 1, further comprising:
- providing the second corrupted sample and the second clean sample to the first neural network (302), and training the first neural network to filter the second corrupted sample, and to generate a third clean sample, based on a truth of ground provided by the second clean sample.
Procédé selon la revendication 1 ou 2, comprenant en outre :
- fournir le deuxième échantillon propre et le deuxième échantillon altéré au deuxième réseau neuronal (702), et réaliser un apprentissage du deuxième réseau neuronal pour altérer le deuxième échantillon propre, et pour générer un troisième échantillon altéré, sur la base d’une vérité de terrain fournie par le deuxième échantillon altéré.
A method according to claim 1 or 2, further comprising:
- supplying the second clean sample and the second altered sample to the second neural network (702), and training the second neural network to alter the second clean sample, and to generate a third altered sample, based on a truth of terrain provided by the second weathered sample.
Procédé selon l’une quelconque des revendications 1 à 3, comprenant en outre :
- générer le premier échantillon propre :
en capturant une pluralité d’échantillons d’un même objet en utilisant un ou plusieurs capteurs (106, 114, C), tout en faisant varier un ou plusieurs paramètres des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons du même objet ; et
en déterminant, par un dispositif de traitement (512), une vérité de terrain correspondant au premier échantillon propre sur la base de la pluralité d’échantillons du même objet.
A method according to any of claims 1 to 3, further comprising:
- generate the first clean sample:
capturing a plurality of samples of the same object using one or more sensors (106, 114, C), while varying one or more sensor parameters and/or one or more environmental conditions between samples of the same object ; And
determining, by a processing device (512), a ground truth corresponding to the first eigensample based on the plurality of samples of the same object.
Procédé selon la revendication 4, comprenant en outre :
- capturer une pluralité d’autres échantillons d’un autre même objet en utilisant lesdits un ou plusieurs capteurs (106, 114, C), tout en faisant varier un ou plusieurs paramètres des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons de l’autre même objet ; et
- dans lequel la vérité de terrain est déterminée sur la base de la pluralité d’échantillons du même objet (BOARD) et de la pluralité d’échantillons de l’autre même objet.
A method according to claim 4, further comprising:
- capturing a plurality of other samples of another same object using said one or more sensors (106, 114, C), while varying one or more sensor parameters and/or one or more environmental conditions between the samples of the other same object; And
- wherein the ground truth is determined based on the plurality of samples of the same object (BOARD) and the plurality of samples of the other same object.
Procédé d’inspection d’objets comprenant :
- la conception d’un premier réseau neuronal (302) selon le procédé de l’une quelconque des revendications 1 à 5 ;
- la capture d’un ou plusieurs échantillons d’un objet (BOARD) en utilisant lesdits un ou plusieurs capteurs ou un ou plusieurs autres capteurs (106, 114, C) ;
- le filtrage desdits un ou plusieurs échantillons en utilisant le premier réseau neuronal (302) pour retirer au moins partiellement des altérations dans les échantillons ; et
- l’application d’un algorithme d’inspection d’objet auxdits un ou plusieurs échantillons filtrés.
A method of inspecting objects comprising:
- the design of a first neural network (302) according to the method of any one of claims 1 to 5;
- capturing one or more samples of an object (BOARD) using said one or more sensors or one or more other sensors (106, 114, C);
- filtering said one or more samples using the first neural network (302) to at least partially remove alterations in the samples; And
- applying an object inspection algorithm to said one or more filtered samples.
Procédé selon la revendication 6, dans lequel lesdits un ou plusieurs capteurs et lesdits un ou plusieurs autres capteurs (106, 114, C) comprennent au moins une caméra, lesdits un ou plusieurs échantillons comprenant au moins une image capturée par ladite au moins une caméra.A method according to claim 6, wherein said one or more sensors and said one or more other sensors (106, 114, C) comprise at least one camera, said one or more samples comprising at least one image captured by said at least one camera . Procédé selon la revendication 6 ou 7, dans lequel l’objet (BOARD) est un objet fabriqué, et l’algorithme d’inspection d’objet est agencé pour détecter une ou plusieurs anomalies dans l’objet fabriqué, et pour classer l’objet comme passant avec succès ou échouant à l’inspection d’objet en fonction de la détection d’anomalies.Method according to claim 6 or 7, in which the object (BOARD) is a manufactured object, and the object inspection algorithm is arranged to detect one or more anomalies in the manufactured object, and to classify the object as passing or failing object inspection based on anomaly detection. Procédé selon l’une quelconque des revendications 1 à 8, dans lequel l’objet est une carte de circuit électronique.A method according to any of claims 1 to 8, wherein the object is an electronic circuit board. Système pour la conception d’un premier réseau neuronal (302) pour filtrer des échantillons altérés, le système comprenant :
le premier réseau neuronal (302) et un deuxième réseau neuronal (702) ; et
un dispositif de traitement (512) agencé pour :
- fournir un premier échantillon altéré et un premier échantillon propre au premier réseau neuronal, le premier réseau neuronal ayant reçu un apprentissage pour filtrer le premier échantillon altéré, et pour générer un deuxième échantillon propre, sur la base d’une vérité de terrain fournie par le premier échantillon propre ; et
- fournir le premier échantillon propre et le premier échantillon altéré au deuxième réseau neuronal, le deuxième réseau neuronal ayant reçu un apprentissage pour altérer le premier échantillon propre, et pour générer un deuxième échantillon altéré, sur la base d’une vérité de terrain fournie par le premier échantillon altéré.
A system for designing a first neural network (302) for filtering out corrupted samples, the system comprising:
the first neural network (302) and a second neural network (702); And
a processing device (512) arranged to:
- supplying a first altered sample and a first clean sample to the first neural network, the first neural network being trained to filter the first altered sample, and to generate a second clean sample, based on a ground truth provided by the first clean sample; And
- supplying the first clean sample and the first altered sample to the second neural network, the second neural network being trained to alter the first clean sample, and to generate a second altered sample, based on a ground truth provided by the first altered sample.
Système selon la revendication 10, dans lequel le dispositif de traitement (512) est en outre agencé pour :
- fournir le deuxième échantillon altéré et le deuxième échantillon propre au premier réseau neuronal (302), le premier réseau neuronal ayant reçu un apprentissage pour filtrer le deuxième échantillon altéré, et générer un troisième échantillon propre, sur la base d’une vérité de terrain fournie par le deuxième échantillon propre.
System according to claim 10, in which the processing device (512) is further arranged to:
- supplying the second corrupted sample and the second clean sample to the first neural network (302), the first neural network having been trained to filter the second corrupted sample, and generating a third clean sample, based on a ground truth provided by the second clean sample.
Système selon la revendication 10 ou 11, dans lequel le dispositif de traitement (512) est en outre agencé pour :
- fournir le deuxième échantillon propre et le deuxième échantillon altéré au deuxième réseau neuronal (702), le deuxième réseau neuronal ayant reçu un apprentissage pour altérer le deuxième échantillon propre, et générer un troisième échantillon altéré, sur la base d’une vérité de terrain fournie par le deuxième échantillon altéré.
System according to claim 10 or 11, in which the processing device (512) is further arranged to:
- providing the second clean sample and the second tampered sample to the second neural network (702), the second neural network being trained to tamper with the second clean sample, and generating a third tampered sample, based on ground truth provided by the second altered sample.
Système selon l’une quelconque des revendications 10 à 12, comprenant en outre :
- lesdits un ou plusieurs capteurs (106, 114, C) agencés pour capturer une pluralité d’échantillons d’un même objet, tout en faisant varier un ou plusieurs paramètres de capture des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons du même objet, dans lequel le dispositif de traitement (512) est en outre agencé pour déterminer une vérité de terrain correspondant au premier échantillon propre sur la base de la pluralité d’échantillons du même objet.
A system according to any of claims 10 to 12, further comprising:
- said one or more sensors (106, 114, C) arranged to capture a plurality of samples of the same object, while varying one or more sensor capture parameters and/or one or more environmental conditions between the samples of the same object, wherein the processing device (512) is further arranged to determine a ground truth corresponding to the first eigensample based on the plurality of samples of the same object.
Système selon la revendication 13, dans lequel :
- lesdits un ou plusieurs capteurs (106, 114, C) sont en outre agencés pour capturer une pluralité d’autres échantillons d’un autre même objet, tout en faisant varier un ou plusieurs paramètres de capture des capteurs et/ou une ou plusieurs conditions environnementales entre les échantillons de l’autre objet échantillon ; et
- le dispositif de traitement (512) est agencé pour déterminer la vérité de terrain sur la base de la pluralité d’échantillons du même objet et de la pluralité d’échantillons de l’autre même objet.
A system according to claim 13, wherein:
- said one or more sensors (106, 114, C) are also arranged to capture a plurality of other samples of another same object, while varying one or more sensor capture parameters and/or one or more environmental conditions between samples of the other sample object; And
- the processing device (512) is arranged to determine the ground truth based on the plurality of samples of the same object and the plurality of samples of the other same object.
Procédé selon l’une quelconque des revendications 1 à 9 ou système selon l’une quelconque des revendications 10 à 14, dans lequel le premier réseau neuronal (302) est un réseau neuronal à convolution (1000), comme un réseau neuronal ayant une structure UNet.A method according to any of claims 1 to 9 or a system according to any of claims 10 to 14, wherein the first neural network (302) is a convolutional neural network (1000), such as a neural network having a structure A T.
FR1915775A 2019-12-31 2019-12-31 System and method for designing a neural network Active FR3105860B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1915775A FR3105860B1 (en) 2019-12-31 2019-12-31 System and method for designing a neural network
PCT/EP2020/088004 WO2021136791A1 (en) 2019-12-31 2020-12-29 System and method for designing a neural network

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1915775 2019-12-31
FR1915775A FR3105860B1 (en) 2019-12-31 2019-12-31 System and method for designing a neural network

Publications (2)

Publication Number Publication Date
FR3105860A1 true FR3105860A1 (en) 2021-07-02
FR3105860B1 FR3105860B1 (en) 2022-06-17

Family

ID=70295309

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1915775A Active FR3105860B1 (en) 2019-12-31 2019-12-31 System and method for designing a neural network

Country Status (2)

Country Link
FR (1) FR3105860B1 (en)
WO (1) WO2021136791A1 (en)

Non-Patent Citations (10)

* Cited by examiner, † Cited by third party
Title
CHEN JINGWEN ET AL: "Image Blind Denoising with Generative Adversarial Network Based Noise Modeling", 2018 IEEE/CVF CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION, IEEE, 18 June 2018 (2018-06-18), pages 3155 - 3164, XP033476284, DOI: 10.1109/CVPR.2018.00333 *
DONG-WOOK KIM ET AL: "GRDN:Grouped Residual Dense Network for Real Image Denoising and GAN-based Real-world Noise Modeling", 27 May 2019 (2019-05-27), XP055731294, Retrieved from the Internet <URL:https://arxiv.org/pdf/1905.11172.pdf> [retrieved on 20200916] *
H.ZHANGI.GOODFELLOWD.METAXASA.ODENA: "Self-Attention Ge-nerative Adversarial Networks", PMLR, 14 June 2019 (2019-06-14)
J.JOHNSONA.ALAHIL.FEI-FEI, PERCEPTUAL LOSSES FOR REAL-TIME STYLE TRANSFER AND SUPER-RESOLUTION, 26 March 2016 (2016-03-26)
JAAKKO LEHTINEN ET AL: "Noise2Noise: Learning Image Restoration without Clean Data", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 12 March 2018 (2018-03-12), XP081420766 *
JUN XU ET AL: "Noisy-As-Clean: Learning Unsupervised Denoising from the Corrupted Image", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 17 June 2019 (2019-06-17), XP081437521 *
JUNYUAN XIE ET AL: "Image Denoising and Inpainting with Deep Neural Networks", NIPS'12 PROCEEDINGS OF THE 25TH INTERNATIONAL CONFERENCE ON NEURAL INFORMATION PROCESSING SYSTEMS, LAKE TAHOE, NEVADA, 3 December 2012 (2012-12-03), https://papers.nips.cc/paper/4686-image-denoising-and-inpainting-with-deep-neural-networks.pdf, XP055380144 *
KRULL ALEXANDER ET AL: "Noise2Void - Learning Denoising From Single Noisy Images", 2019 IEEE/CVF CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION (CVPR), IEEE, 15 June 2019 (2019-06-15), pages 2124 - 2132, XP033687157, DOI: 10.1109/CVPR.2019.00223 *
O.RONNEBERGERP.FISCHERT.BROX: "U-Net: Convolution Networks for Biomédical Image Segmentation", vol. 9351, 18 May 2015, LECTURE NOTES IN COMPUTER SCIENCE
SUDIPTA SINGHA ET AL: "A Robust System for Noisy Image Classification Combining Denoising Autoencoder and Convolutional Neural Network", INTERNATIONAL JOURNAL OF ADVANCED COMPUTER SCIENCE AND APPLICATIONS, vol. 9, no. 1, 1 January 2018 (2018-01-01), XP055731192, ISSN: 2158-107X, DOI: 10.14569/IJACSA.2018.090131 *

Also Published As

Publication number Publication date
WO2021136791A1 (en) 2021-07-08
FR3105860B1 (en) 2022-06-17

Similar Documents

Publication Publication Date Title
FR2882160A1 (en) Video image capturing method for e.g. portable telephone, involves measuring local movements on edges of images and estimating parameters of global movement model in utilizing result of measurement of local movements
JP2022509034A (en) Bright spot removal using a neural network
CN114041161A (en) Method and device for training neural network model for enhancing image details
FR3073312A1 (en) METHOD FOR ESTIMATING THE INSTALLATION OF A CAMERA IN THE REFERENTIAL OF A THREE-DIMENSIONAL SCENE, DEVICE, INCREASED REALITY SYSTEM, AND COMPUTER PROGRAM
CN111612717A (en) Water surface image reflection removing and repairing method and device based on countermeasure network
FR3047103A1 (en) METHOD FOR DETECTING TARGETS ON THE GROUND AND MOVING IN A VIDEO STREAM ACQUIRED BY AN AIRBORNE CAMERA
EP3888048B1 (en) Super-resolution device and method
CN115880177A (en) Full-resolution low-illumination image enhancement method for aggregating context and enhancing details
EP2909671B1 (en) Method for designing a single-path imager able to estimate the depth of field
Rego et al. Deep camera obscura: an image restoration pipeline for pinhole photography
EP3754431B1 (en) Method for holographic reconstruction
FR3105860A1 (en) System and method for designing a neural network
FR3105861A1 (en) System and method for reducing alterations in sensor data
CN116579959A (en) Fusion imaging method and device for hyperspectral image
CN114758030A (en) Underwater polarization imaging method integrating physical model and deep learning
FR3114718A1 (en) Device for compensating the movement of an event sensor and associated observation system and method
Hog Light field editing and rendering
EP1095358B1 (en) Method for modelling three-dimensional objects or scenes
EP2409276B1 (en) Image processing method for the analysis of integrated circuits, and system for implementing said method
Monakhova Physics-Informed Machine Learning for Computational Imaging
Le Bon Deep learning for light field acquisition and restoration
FR3095064A1 (en) BIOMETRIC DOUBT-RELATED PROCESSES AND DEVICES
EP4002264A1 (en) Display assistance solution for simulating an auto-exposure process
EP4244806A1 (en) Method for digital image processing
FR3118489A1 (en) Non-destructive testing method for an aeronautical part

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20210702

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5