FR 3114898 A1 20220408 FR 2010080 A 20201002 Neurone d’un réseau de neurones, dispositif , système, plateforme et procédé d’analyse d’images associés L’invention concerne un circuit électronique (36) implémentant physiquement un neurone d’un réseau de neurones, le circuit électronique (36) comprenant : - un récepteur (38) propre à recevoir d’une pluralité d’entrées des nombres réels correspondant à des activations du neurone envoyées par des neurones de couche de neurones inférieure à la couche de neurones comportant le neurone du circuit électronique (36), - une unité de traitement (40) propre à appliquer une fonction de transfert sur les entrées pour obtenir une valeur binaire, et - un émetteur (42) propre à envoyer les valeurs binaires obtenues sous forme d’impulsions. Figure pour l'abrégé : Figure 2 Neurone d’un réseau de neurones, dispositif, système, plateforme et procédé d’analyse d’images associés La présente invention concerne un circuit électronique implémentant physiquement un neurone d’un réseau de neurones. La présente invention se rapporte également à un dispositif, un système embarqué et une plateforme comportant le circuit. La présente invention concerne également un procédé d’analyse d’image utilisant le dispositif. Dans le domaine de l’analyse d’images, une difficulté est d’analyser un grand volume d’images au sein duquel de nombreuses images ne sont pas pertinentes. Il convient donc d’être capable d’éliminer rapidement un ensemble d’images non pertinentes pour n’examiner que les images les plus pertinentes. Pour cela, il est connu d’utiliser la classification automatique d’images. Une telle classification est souvent effectuée par un réseau de neurones et plus particulièrement un réseau de neurones à convolution. Un réseau de neurones à convolution est aussi appelé réseau de neurones convolutif. Le réseau de neurones à convolution est parfois désigné sous le terme CNN, l’abréviation CNN renvoyant à la dénomination anglaise de « Convolutional Neural Network ». Cependant, les implémentations physiques des réseaux de neurones à convolution impliquent une utilisation importante de ressources matérielles et donc une grande consommation d’énergie. Il en résulte que de telles implémentations physiques sont incompatibles avec les systèmes embarqués qui requièrent un poids, un encombrement et une puissance énergétique limités. Il existe donc un besoin pour une implémentation physique d’un réseau de neurones ou d’une partie du réseau de neurones qui soit compatible avec les contraintes d’utilisation dans un système embarqué. La description porte sur un circuit électronique implémentant physiquement un neurone d’un réseau de neurones, le circuit électronique comprenant un récepteur propre à recevoir d’une pluralité d’entrées des nombres réels correspondant à des activations du neurone envoyées par des neurones de couche de neurones inférieure à la couche de neurones comportant le neurone du circuit électronique, une unité de traitement propre à appliquer une fonction de transfert sur les entrées pour obtenir une valeur binaire, et un émetteur propre à envoyer les valeurs binaires obtenues sous forme d’impulsions. Pour parvenir au développement d’un tel réseau de neurones, le demandeur a étudié les différentes implémentations physiques pour sélectionner le neurone impulsionnel comme indiqué. Le neurone impulsionnel est un modèle de neurone bio-inspiré codant l’information sous forme d’impulsions. Un tel modèle permet d’abaisser drastiquement l’intensivité en ressources matérielles et en énergie. L’emploi de neurones impulsionnels permet, en outre, d’obtenir un réseau de neurones impulsionnels compatible avec un traitement temps réel et l’apprentissage sur puce, notamment en ligne et non-supervisé. Le demandeur s’est alors heurté à la difficulté que les données fournies en entrée du réseau doivent être au format impulsionnel pour être exploitables par le réseau de neurones impulsionnels. Or, l’emploi de caméras événementielles (plus souvent désignées sous l’appellation DVS renvoyant à la dénomination anglaise de « Dynamic Vision Sensor ») n’est pas complètement satisfaisant. En particulier, l’utilisation de caméras événementielles fournissant un flot continu d’événements représentant le mouvement n’est pas compatible avec un traitement d’images fixes, de par leur nature événementielle. D’autre part, l’utilisation de capteurs visuels classiques implique l’emploi d’un module dédié au transcodage des images obtenues par les capteurs visuels. Un tel module consomme de l’énergie et des ressources matérielles, ce qui rend l’ensemble de l’implémentation physique du réseau de neurones incompatible avec une utilisation embarquée. Aussi, confronté à ce deuxième problème, le demandeur a développé un neurone servant d’interface entre un monde formel (variables continues) et un monde impulsionnel (variables binaires). Un tel neurone permet d’obtenir une architecture hybride de réseau de neurones impliquant une partie classique (formelle) en amont et une partie impulsionnelle en aval. Une telle architecture permet de bénéficier des avantages précités d’un réseau de neurones impulsionnels tout en utilisant un capteur visuel standard et en s’affranchissant du module spécifique de transcodage. En outre, l’architecture hybride est plus performante qu’une architecture impulsionnelle dans la mesure où l’étage de convolution formel est plus performant que l’étage de convolution impulsionnel. Suivant des modes de réalisation particuliers, le circuit électronique comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : - l’unité de traitement est propre à générer des valeurs binaires à intervalles réguliers. - la fonction de transfert comporte l’application d’une somme pondérée par des poids, les poids étant mémorisés dans l’unité de traitement. - la fonction de transfert comporte l’application d’une fonction de seuillage. - le circuit électronique est un circuit logique programmable. La présente description concerne aussi un dispositif implémentant physiquement un réseau de neurones comportant des neurones, au moins un neurone étant un circuit électronique. Suivant des modes de réalisation particuliers, le circuit électronique comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : - le réseau de neurones est un réseau de neurones à convolution. - le réseau de neurones comporte un étage de convolution formel, un étage de neurones implémentés physiquement chacun par un circuit électronique et un étage de classification impulsionnel. En outre, la description se rapporte aussi à un système embarqué comportant un dispositif tel que précédemment décrit. La présente description a également pour objet une plateforme comportant un système embarqué tel que précédemment décrit. En outre, la description se rapporte aussi à un procédé d’analyse d’images comprenant l’utilisation d’un dispositif tel que précédemment décrit. D’autres caractéristiques et avantages de l’invention apparaîtront à la lecture de la description qui suit de modes de réalisation de l’invention, donnée à titre d’exemple uniquement et en référence aux dessins qui sont : - , une représentation schématique d’une plate-forme comportant un circuit électronique, - , une représentation schématique d’un exemple de circuit électronique, et - , une représentation schématique du fonctionnement de l’exemple de circuit électronique de la . Une plateforme 10 est représentée sur la . La plateforme 10 est soit une plateforme mobile, en particulier un train, une plateforme aérienne (avion, hélicoptère ou satellite), soit une installation fixe (par exemple un système de surveillance d’un bâtiment). La plateforme 10 comporte un système embarqué 12 comprenant un dispositif 14 implémentant physiquement un réseau de neurones. Le dispositif 14 est un réseau de portes programmables in situ. Un tel dispositif 14 est souvent désigné sous l’appellation FPGA qui renvoie à la dénomination anglaise de « field-programmable gate array ». Le dispositif 14 est un ensemble de composants logiques configurables pour implémenter physiquement un ensemble de fonctions souhaitées. Dans l’exemple décrit, le FPGA est configuré d’après une description en langage VHDL. L’abréviation VHDL renvoie à la dénomination anglaise de « Very High Speed Integrated Circuits Hardware Description Language » qui signifie littéralement « langage de description de circuits matériel intégrés à très haute vitesse ». Le VHDL est un langage permettant de décrire l’architecture d’un système au niveau RTL. L’abréviation RTL renvoie à la dénomination anglaise de « Register Transfer Level » qui signifie littéralement « niveau de transfert de registre ». Via un outil de synthèse matériel, la description en VHDL est interprétée et synthétisée sur le FPGA. Le FPGA sera ainsi configuré pour mimer le comportement décrit dans le code VHDL. En outre, les langages Verilog et OpenCL auraient également pu être utilisés pour réaliser la description matérielle du système. En variante, le dispositif 14 est un dispositif logique programmable (PLD) ou des réseaux logiques programmables (PLA). Selon encore une autre variante, le dispositif 14 est un circuit intégré, notamment un circuit ASIC. L’abréviation ASIC renvoie à la dénomination anglaise de « Application Specific Integrated Circuit » qui signifie littéralement « circuit intégré propre à une application ». Dans l’exemple proposé, le réseau de neurones est un réseau de neurones à convolution. Le réseau de neurones est un ensemble de couches de neurones, chaque couche réalisant une fonction. Ainsi, selon l’exemple proposé, l’ensemble des neurones d’une même couche réalisent la même fonction (celle de la couche) sur des données incidentes qui sont généralement des données différentes. La fonction opérée par la couche dépend aussi de la politique d’interconnexion des neurones de la couche considérée avec les neurones de la couche précédente. Comme visible sur la , le dispositif 14 comporte un étage de convolution 16, un étage d’interfaçage 18 et un étage de classification 20. Dans l’exemple décrit, l’étage de convolution 16 fait partie du domaine formel alors que l’étage de classification 20 fait partie du domaine impulsionnel. Le dispositif 14 est hybride en ce sens que le dispositif 14 opère dans les deux domaines précédents puisque l’étage de convolution 16 est formel alors que l’étage de classification 20 est impulsionnel. Il est à noter que chaque étage 16, 18 ou 20 correspond, du point de vue de l’implémentation physique, à un circuit électronique qui fait partie du dispositif 14. C’est l’ensemble des circuits électroniques réalisant les fonctions de chaque étage 16, 18 ou 20 qui forme le dispositif 14. L’étage de convolution 16 est un étage implémentant des fonctions de convolution et de compression ou « pooling » selon la terminologie usuelle. Chaque fonction est implémentée par au moins une couche respective. Selon l’exemple proposé, l’étage de convolution 16 comporte successivement une première couche de convolution 22, une première couche de pooling 24, une deuxième couche de convolution 26, une deuxième couche de pooling 28 et une troisième couche de convolution 30. Comme indiqué précédemment, l’étage de convolution 16 est formel. Cela signifie que l’étage de convolution 16 fonctionne dans le domaine formel, c’est-à-dire que les neurones de l’étage de convolution 16 opèrent sur des entrées sous forme de nombres réels (variables continues) pour les transformer en d’autres nombres réels. Autrement formulé, les neurones de l’étage de convolution 16 opèrent sur des activations réelles. L’étage de convolution 16 est ainsi formé de neurones formels 32 organisés selon des couches 34. A titre d’illustration, deux neurones formels 32 sont représentés dans chaque couche 34 étant entendu que le nombre de neurones formels 32 est le plus généralement bien plus grand et pas nécessairement le même entre chaque couche 34. Un neurone formel 32 reçoit en entrée des activations venant de neurones d’une couche inférieure et des coefficients de pondération correspondant au poids synaptique entre le neurone formel 32 et les neurones ayant émis les activations reçues. Le neurone formel 32 applique une première fonction de transfert sur les activations reçues pour obtenir une activation de sortie. Selon l’exemple proposé, la première fonction de transfert est la composée d’une première fonction d’activation et d’une première fonction d’accumulation pondérée. Par exemple, la première fonction d’activation est une tangente hyperbolique ou une sigmoïde. Avec la première fonction d’accumulation pondérée, le neurone formel 32 met en œuvre une pondération des activations reçues et une intégration des activations ainsi pondérées. Selon l’exemple proposé, la première fonction d’intégration pondérée est une somme pondérée par les poids synaptiques entre le neurone formel 32 et les neurones ayant émis les activations reçues. Mathématiquement, un tel fonctionnement s’écrit : Où : y j l est l’activation en sortie du neurone formel j de la couche l, avec j et l deux nombres entiers, est la première fonction d’activation, et w ij le poids de la connexion synaptique entre les neurones i de la couche l-1 et les neurones formels j de la couche l, avec i un nombre entier. Il est à noter qu’un tel neurone formel 32 opère de manière synchrone. Cela implique que toutes les activations sont modifiées simultanément à intervalles réguliers. L’étage d’interfaçage 18 est un étage permettant de réaliser une interface entre l’étage de convolution 16 et l’étage de classification 20. Plus précisément, l’étage d’interfaçage 18 est un étage réalisant l’interface entre le domaine formel et le domaine impulsionnel. En ce sens, l’étage d’interfaçage 18 est un étage hybride. Comme visible sur la , l’étage d’interfaçage 18 comporte plusieurs neurones « hydrides » 36. L’étage d’interfaçage « hybride » 18 peut être implémenté physiquement par un ou plusieurs circuits électroniques 36 représentés sur la . Le cas d’une implémentation par un seul circuit électronique 36 correspond au cas d’une implémentation multiplexée, alors que le cas d’une implémentation par plusieurs circuits électroniques 36 correspond au cas d’une implémentation parallèle. Le cas où l’étage d’interfaçage « hybride » 18 est implémenté physiquement par autant de circuits électroniques 36 qu’il comporte de neurones correspond au cas d’une implémentation complètement parallèle. Le circuit électronique 36 est une partie du dispositif 14. Le circuit électronique 36 comprend un récepteur 38, une unité de traitement 40 et un émetteur 42. Le récepteur 38 est propre à recevoir des valeurs réelles en entrée. Les nombres réels correspondent à des activations envoyées par des neurones de couche de neurones inférieure à la couche de neurones comportant le neurone hybride émulé par le circuit électronique 36. En l’espèce, cela signifie que les nombres réels proviennent des sorties de l’étage de convolution 16. L’unité de traitement 40 comporte une mémoire 44 et un organe de calcul 46. La mémoire 44 est propre à mémoriser des valeurs qui sont les poids synaptiques relatifs aux synapses entrantes du neurone hybride 36. L’organe de calcul 46 est propre à appliquer une deuxième fonction de transfert sur les entrées reçues par le récepteur 38 pour obtenir une valeur binaire. Selon l’exemple proposé, la deuxième fonction de transfert est la composée d’une deuxième fonction d’activation et d’une deuxième fonction d’accumulation pondérée. Avec la deuxième fonction d’accumulation pondérée, l’unité de calcul 46 opère une pondération et accumulation des activations reçues par le récepteur 38, au moyen des poids synaptiques stockés dans la mémoire 44. Le résultat de l’opération de pondération-accumulation est appelé potentiel de membrane. L’unité de calcul 46 applique ensuite la deuxième fonction d’activation sur la valeur du potentiel de membrane. La deuxième fonction d’activation est une fonction de seuillage : lorsque le potentiel de membrane atteint un certain seuil θ, l’émetteur 42 émet une impulsion en sortie, et l’unité de calcul 46 décrémente le potentiel de membrane de la valeur θ. La sortie du neurone telle que générée par l’émetteur 42 est un signal binaire dont la valeur vaut 1 si une impulsion est émise, et zéro sinon. Mathématiquement, en reprenant les notations précédentes, le fonctionnement d’un tel neurone hybride 36 s’écrit : Dans l’équation précédente, correspond à la valeur initiale du potentiel de membrane avant l’accumulation pondérée des activations entrantes continues. Si l’accumulation pondérée des activations entrantes mène le potentiel de membrane à dépasser le seuil , la sortie binaire passe à 1, et à 0 sinon. Dans le même temps, si le potentiel de membrane dépasse le seuil , le potentiel de membrane est décrémenté de ; le potentiel de membrane est inchangé dans le cas inverse.En variante, d’autres fonctions sont utilisables pour l’étage d’interfaçage 18. Le neurone hybride 36 permet ainsi d’obtenir en sortie un ensemble de valeurs binaires en fonction des activations reçues en entrée. Comme expliqué précédemment, les sorties de l’étage d’interfaçage 18 sont connectées à au moins une entrée de l’étage de classification 20. L’étage de classification 20 est un étage servant à classifier les données extraites par l’étage de convolution 16. L’étage de classification 20 est un étage complètement connecté, c’est-à-dire que chaque neurone 48 de l’étage de classification 20 est relié aux autres neurones. Une telle propriété est souvent appelée « fully connected » en référence à la dénomination anglaise correspondante. Selon l’exemple proposé, l’étage de classification 20 opère dans le domaine impulsionnel, c’est-à-dire avec des variables binaires. L’étage de classification 20 comporte, selon l’exemple de la , des neurones impulsionnels 48 agencés sous forme de plusieurs couches successives 50. Un neurone impulsionnel 48 reçoit des impulsions d’amplitude et de longueur constante en entrée. De telles impulsions sont pondérées par les poids des connexions synaptiques, puis accumulées. Lorsque la valeur accumulée dépasse un seuil θ, une impulsion est émise en sortie, et l’accumulateur est décrémenté de θ. Mathématiquement, en reprenant les notations précédentes, le fonctionnement d’un tel neurone impulsionnel 48 s’écrit : Dans l’équation précédente, correspond à la valeur initiale du potentiel de membrane avant la pondération et l’intégration des activations entrantes binaires. Si la pondération et l’intégration des activations entrantes mène le potentiel de membrane à dépasser le seuil , la sortie binaire passe à 1, et à 0 sinon. Dans le même temps, si le potentiel de membrane dépasse le seuil , le potentiel de membrane est décrémenté de ; le potentiel de membrane est inchangé dans le cas inverse. Le fonctionnement du dispositif 14 implémentant physiquement le réseau de neurones est maintenant décrit en référence à un procédé d’analyse d’images. Le procédé d’analyse comporte la réception d’images classiques provenant d’un capteur d’images classique (au sens non événementiel). Le procédé d’analyse comprend ensuite une étape de traitement des images par utilisation du réseau de neurones. Cela permet d’obtenir en sortie une cartographie de caractéristiques aussi désignée sous le terme anglais de « feature maps », la cartographie associant les images à des caractéristiques. L’étage de convolution 16 implémente les fonctions de convolution et de pooling. Du fait que l’étage de convolution 16 opère de manière formelle, les fonctions de convolution et de pooling sont mises en œuvre de manière efficace. L’étage d’interfaçage 18 permet de convertir les sorties de l’étage de convolution 16 dans le domaine formel en sorties dans le domaine impulsionnel. Plus précisément, dans l’exemple décrit, le fonctionnement de l’étage d’interfaçage 18 peut être représenté sous forme fonctionnelle selon la représentation schématique de la . Dans cet exemple, le neurone hybride 36 comporte une première entrée 52, une mémoire interne 54, une interface mémoire 56, un compteur de neurones 58, un compteur d’entrées 59, un comparateur 60, un soustracteur 62, une unité de multiplication et d’accumulation 64 et deux sorties 66 et 68. Le neurone hybride 36 reçoit sur la première entrée 52 des activations continues en provenance d’un neurone de la dernière couche (couche L-1 dans la suite) de l’étage de convolution 16. Plus précisément, le neurone hybride 36 reçoit des entrées en provenance de plusieurs neurones de la couche L-1 de l’étage de convolution 16 successivement. Le compteur de neurones 58 permet de connaître l’adresse du neurone en cours de traitement (dans la couche L). Le compteur d’entrées 59 permet de connaître l’adresse de provenance de l’activation reçue sur la première entrée 52. L’adresse de provenance est l’adresse du neurone dont provient l’activation. Les deux adresses sont transmises à l’interface mémoire 56. Par ailleurs, l’interface mémoire 56 récupère dans la mémoire 44 le poids correspondant à la connexion synaptique associée aux adresses. L’interface mémoire 56 transmet ledit poids à l’unité de multiplication et d’accumulation 64. L’unité de multiplication et d’accumulation 64 multiplie alors le poids à l’activation (binaire) reçue en entrée. Le résultat de cette multiplication est ensuite accumulé dans un accumulateur de l’unité de multiplication et d’accumulation 64. La valeur de l’accumulateur correspond au potentiel de membrane. L’unité de multiplication et d’accumulation 64 transmet la valeur ainsi calculée au comparateur 60 qui compare sa valeur au seuil d’activation du neurone hybride 36. Lorsque le seuil d’activation est dépassé, le comparateur 60 émet une impulsion sur la première sortie 66. L’impulsion émise est représentée par un signal binaire. En outre, également lorsque le seuil d’activation est dépassé, le comparateur 60 émet sur la deuxième sortie 68 la valeur du compteur de neurones 58. Le signal émis sur la deuxième sortie 68 est l’adresse du neurone (de la couche L) en cours de traitement. D’autre part, également lorsque le seuil d’activation est dépassé, le comparateur 60 transmet le potentiel de membrane au soustracteur 62. Le soustracteur 62 décrémente le potentiel de membrane de la valeur du seuil. Il est ainsi obtenu une valeur résiduelle du potentiel de membrane. Le soustracteur 62 transmet ensuite la valeur résiduelle du potentiel de membrane à l’unité de multiplication et d’accumulation 64. L’accumulateur de l’unité de multiplication et d’accumulation 64 prend ainsi la valeur résiduelle du potentiel de membrane. Lorsqu’aucun signal n’est émis sur l’une des deux sorties 66 ou 68, le comparateur 60 transmet le potentiel de membrane inchangé à l’unité de multiplication et d’accumulation 64 sans passer par le soustracteur 62. L’accumulateur de l’unité de multiplication et d’accumulation 64 prend ainsi la valeur inchangée du potentiel de membrane. L’opération est répétée pour chaque entrée provenant d’un neurone de la dernière couche de l’étage de convolution L-1. Simultanément, le compteur d’entrées est incrémenté. Les signaux obtenus sur les sorties 66 et 68 sont ensuite envoyés en entrée de l’étage de classification 20. L’étage de classification 20 met alors en œuvre une classification. Ainsi, une couche de neurones réalisée avec le circuit électronique 36 est utilisée pour propager l’information dans le réseau tout en opérant le transcodage de l’information du domaine formel vers le domaine impulsionnel. En ce sens, le circuit électronique 36 est un neurone hybride puisque le neurone présente une entrée formelle et une sortie impulsionnelle. L’emploi d’un tel circuit électronique 36 permet donc d’intégrer le transcodage dans une couche du réseau de neurones et non dans un module distinct qui serait exclusivement dédié à l’opération de transcodage. Ainsi, dans l’exemple présenté, le circuit électronique 36 est économe en ressources matérielles et en calcul, ce qui permet l’emploi du circuit électronique 36 dans un système embarqué 12. En outre, l’implémentation de l’étage d’interfaçage 18 est multiplexée : un seul neurone physique prend en charge séquentiellement un ensemble de neurones logiques. Une telle implémentation permet d’économiser les ressources matérielles et énergétiques, et s’adapte à l’implémentation multiplexée habituellement choisie pour l’étage de convolution 16. Un tel neurone hybride 36 constitue ainsi une brique de base permettant d’obtenir une implémentation physique d’un réseau de neurones qui soit compatible avec les contraintes d’utilisation dans un système embarqué 12. Circuit électronique (36) implémentant physiquement un neurone d’un réseau de neurones, le circuit électronique (36) comprenant : un récepteur (38) propre à recevoir d’une pluralité d’entrées des nombres réels correspondant à des activations du neurone envoyées par des neurones de couche de neurones inférieure à la couche de neurones comportant le neurone du circuit électronique (36), une unité de traitement (40) propre à appliquer une fonction de transfert sur les entrées pour obtenir une valeur binaire, et un émetteur (42) propre à envoyer les valeurs binaires obtenues sous forme d’impulsions. Circuit électronique selon la revendication 1, dans lequel l’unité de traitement (40) est propre à générer des valeurs binaires à intervalles réguliers. Circuit électronique selon la revendication 1 ou 2, dans lequel la fonction de transfert comporte l’application d’une somme pondérée par des poids, les poids étant mémorisés dans l’unité de traitement (40). Circuit électronique selon l’une quelconque des revendications 1 à 3, dans lequel, la fonction de transfert comporte l’application d’une fonction de seuillage. Circuit électronique selon l’une quelconque des revendications 1 à 4, dans lequel le circuit électronique (36) est un circuit logique programmable. Dispositif (14) implémentant physiquement un réseau de neurones comportant des neurones, au moins un neurone étant un circuit électronique (36) selon l’une quelconque des revendications 1 à 5. Dispositif selon la revendication 6, dans lequel le réseau de neurones est un réseau de neurones à convolution. Dispositif selon la revendication 6 ou 7, dans lequel le réseau de neurones comporte un étage de convolution (16) formel, un étage de neurones implémentés physiquement chacun par un circuit électronique (36) selon l’une quelconque des revendications 1 à 5 et un étage de classification (20) impulsionnel. Système embarqué (12) comportant un dispositif (14) selon l’une quelconque des revendications 6 à 8. Plateforme (10) comportant un système embarqué (12) selon la revendication 9. Procédé d’analyse d’images comprenant l’utilisation d’un dispositif (14) selon l’une quelconque des revendications 6 à 8.