hack'1 cerveau 2017 au fablab 127°
(crédit : Lambert Rosique)

Du 8 au 10 Décembre 2017, le FabLab 127° de Cap Science à Bordeaux (33) a hébergé le tout premier hackaton dédié au Cerveau et à l’IA : le hack’1 cerveau 2017, organisé par Ascoergo et MindLabX.

Profitant du matériel disponible dans le FabLab, cette épreuve de trois jours promettait des réalisations particulièrement complexes, grâce aux imprimantes 3D, aux lasers perfectionnés de découpe, et au savoir-faire des organisateurs !

En savoir plus sur le Hack’1 Cerveau

Contrairement aux autres hackatons, celui-ci présentait deux particularités intéressantes : les sujets n’étaient pas tous « informatiques », et le hackaton était fermé la nuit (entre 21h30 et 8h30).

I. Les défis

Pas moins de sept défis étaient proposés aux 30 participants présents.

Comme d’habitude, je vous propose de découvrir les sujets, très variés : intelligence artificielle, sciences cognitives, expériences sociales et ateliers créatifs, tous les domaines du cerveau étaient couverts par l’événement.

Pour ma part, j’ai passé le week-end sur le projet 2, récompensé du premier prix de la catégorie IA.


1. IA Tetris/Snake pour Arbalet 127

Arbalet 127
(crédit : Lambert Rosique)

Qu’est-ce que l’Arbalet 127 me direz-vous pour commencer…

Il s’agit d’un grand mur composé de « pixels géants » qui peuvent s’illuminer. Entièrement programmable par ordinateur, on peut y afficher des messages de plusieurs mètres… ou jouer au Tetris et au Snake !

L’objectif de ce projet était de réaliser une IA qui pourrait jouer à ces deux jeux à l’infini (ou presque), sans perdre. Plusieurs pistes ont été évoquées lors du week-end pour le Tetris (le temps a manqué pour le Snake), et j’ai pris beaucoup de plaisir à discuter avec les développeurs (dont Arno).

Un algorithme orienté sur l’extraction de composantes (puits, hauteur, trous,…) et sur le choix du meilleur monde possible suite à l’ajout d’une pièce, a été présenté au Jury, mais il existait une seconde version utilisant un algorithme génétique pour améliorer les poids des composantes.


2. Vulgarisation du machine learning par réseaux de neuronnes avec des interfaces tangibles

Machine Papart de réalité augmentée
(crédit : Lambert Rosique)

On avait à notre disposition un appareil nommé PaPart, inventé, programmé, réalisé par Jérémy (voici son site) : un projecteur couplé à une caméra infrarouge de type Kinect permettait à la fois de projeter sur un plan des informations virtuelles (comme des liaisons entre des neurones) et de scanner ce plan pour détecter tous les objets présents (dont des petits pions rouges).

L’objectif était alors de :

  • Faire un plateau qui acceuillerait un réseau de neurones partiellement tangible (réel) et partiellement en réalité augmentée (les liaisons par exemple), faire des neurones, préparer des jeux de données (images que la caméra lirait)…
  • Réaliser toute la partie réalité augmentée (Java) pour traiter/afficher les informations, et fournir une véritable interface aux utilisateurs…
  • Réaliser un perceptron multicouches en partant de 0, sans la moindre librairie (à part numpy), pour renvoyer à chaque étape toutes les informations du réseau de neurones (poids, deltas, résultat des sommes pondérées, etc…)

Ce projet était hyper intéressant, et le rendu final vraiment incroyable. La réalité augmentée a vraiment apporté une plus-value.


3. Conquérir par le langage : biais cognitif, discours, et persuasion

Davantage une expérience sociale et une preuve de concept, ce projet avait pour objectif d’établir une relation entre les différents types de persuasion et les biais cognitifs.

L’équipe en charge a pu accomplir sa mission et proposer un tableau récapitulant les combinaisons « types ». Par exemple, un argument d’autorité est le fait d’invoquer une autorité dans son argumentation, et le biais du survivant nous conduit à surévaluer les chances de succès. Un argument d’autorité bien placé peut donc être facilement renforcé par ce biais et avoir un effet beaucoup plus important : « En cas de besoin, tu peux boire l’eau croupie, Bear Grills (célèbre aventurier de l’extrême) en a bu quand il n’avait plus d’eau et a très bien survécu » (en réalité c’est très dangereux et mieux vaut souvent ne pas boire du tout).


4. MoreWrong

Basé sur le célèbre jeu de l’Ultimatum, l’équipe devait développer une version multijoueurs en ligne, avec des outils d’analyse des résultats.

Dans ce jeu, un joueur J1 propose à un joueur J2 un partage d’une somme, 10€ par exemple. Si J2 accepte la répartition de la somme, chacun touche sa part. S’il la refuse, les deux sont perdants.

La stratégie la plus logique serait de proposer 1€ et d’en garder un systématiquement, car J2 a tout intérêt à accepter dès lors qu’on lui propose plus de 0€. Dans la pratique, dès qu’on s’éloigne de la répartition 50-50, J2 a tendance à refuser le partage qu’il juste « inéquitable ».


5. Induction de rêves Lucides par flash lumineux

Ce projet atypique a consisté à créer un casque avec des électrodes pour identifier les différentes phases de sommeil de l’utilisateur, et d’un masque de nuit émettant des flashs lumineux pendant les phases de rêves.

Ces flashs avaient pour but d’être repérés par la personne en train de dormir et de l’inciter à comprendre qu’il est dans un rêve pour en prendre le contrôle (rêve lucide).

Dans la pratique, une analyse a été menée pour placer correctement les électrodes et des tests ont été réalisés dans la nuit du samedi à dimanche/dimanche matin, sur un sujet. L’expérience s’est avérée être positive, les flashs étant reconnus par l’utilisateur dans son rêve (il n’en a pas pris le contrôle mais cela a changé considérablement le cours de ses songes).


6. Naming Game : créons un langage en commun

Trouver les mécanismes derrière la naissance d’un nouveau langage en laissant dialoguer des agents informatiques. Cette description fait rêver, tout comme le projet.

Les développeurs ont créé une version multijoueur d’un jeu où deux agents, issus de « mondes » différents, essaient de s’accorder sur un langage commun. Par exemple, une image est présenté au J1 qui lui attribue un mot (qui n’existe pas). Ensuite, J2 essaie de trouver quel mot correspond à l’image, et obtient la réponse de J1. Ainsi, un nouveau mot est né pour désigner un concept.

Dans la pratique, les « joueurs » acceptent bien moins facilement les mots des autres, ce qui génère des synonymes, etc…

Une IA a donc été créée pour simuler ces échanges et dérouler plusieurs phases de jeux, en échangeant des agents aléatoirement entre les joueurs.


7. Arts & Sciences 4 your Brain

A partir d’images IRM d’un cerveau, il fallait concevoir et réaliser une lampe en plexiglas.

Si le sujet paraissait simple, il s’est avéré au final semé d’embûches : combien de coupes mettre pour que la lisibilité reste bonne, comment programmer un éclairage disjoint des coupes en plexiglas (ils ont utilisé Arduino, sans connaissances en codage !), comment gamifier la lampe pour la rendre plus attractive, comment garder un coût de fabrication bas….


II. Mon expérience du Hack’1 Cerveau 2017

« Vulgarisation du machine learning par réseaux de neuronnes avec des interfaces tangibles » a commencé, pour ma part, une bonne semaine avant le début du hackaton, lorsque je me suis intéressé au perceptron multi-couche. En saisir les tenants et les aboutissants n’a pas été difficile du tout, mais je me suis rendu compte de quelque chose : les explications sur la backpropagation sont toutes complexes, et absolument pas claires. Pourtant, avec les mathématiques, on comprendrait très facilement…

équipes du hackaton fablab 127
(crédit : Lambert Rosique)

Vendredi soir avait lieue la cérémonie d’ouverture, occasion pour les participants de se rencontrer et pour les encadrants de présenter leurs sujets.

Ensuite, samedi, j’ai pu rencontrer mon équipe définitive et on a attaqué le sujet. On était 4, deux non-informaticiens qui se sont concentrés sur tout l’aspect « rendre tangible le projet », l’encadrant expert en Java et PaPart (la machine), et moi-même, chargé de l’IA.

découpeuse laser
(crédit : Lambert Rosique)

Grâce aux appareils à disposition, mes deux compagnons ont rapidement pu designer et réaliser l’intégralité du plateau de jeu. Des cartes avec QR-codes ont permis au programme gérant PaPart de définir des zones : input, réseau, output, feedback, modes de jeu…

La photo est celle de la découpeuse laser du FabLab, qui nous a servi à réaliser la plupart de nos composants.

réseau tangible en cours de création
(crédit : Lambert Rosique)

J’ai rencontré beaucoup de difficultés à faire marcher mon perceptron multicouches sur la partie backpropagation, la fatigue et l’urgence n’aidant pas, mais au terme de l’après-midi on avait une application fonctionnelle (non terminée) de notre travail.

On voit donc que sur le plateau on a positionné des petites boules de patafix, qui sont détectées par la caméra IR. Le cadre du réseau est également tracé, ce qui nous permet de positionner nos différentes couches de neurones. Une fois la détection terminée, ce frontend communique avec mon ordinateur backend sur lequel tourne l’IA via un serveur redis dans le cloud.

Après de nombreuses heures de travail, samedi s’est achevé et on est rentré chez nous (comme je l’ai expliqué, c’est mon premier hackaton qui ne continue pas la nuit).

ann tangible final
(crédit : Lambert Rosique)

Dimanche, on a corrigé les nombreux bugs, perfectionnés le système, jusqu’à arriver au résultat ci-après, montré également en vidéo.

On voit sur la gauche l’image en entrée. Les triangles à côté sont les input (pixels extraits de l’image, qui apparaissent sous les triangles). Dans l’exemple, on en a pris 5.

Ensuite on a mis une couche de 7 neurones cachés (on pouvait en avoir jusqu’à 5 de 10 neurones), puis une couche d’output de 2 neurones avec des curseurs physiques.

Le jeu comporte 3 modes :

  • Création, qui permet de placer les neurones sur le plateau et de les détecter pour instancier le réseau. Les poids entre les neurones sont générés aléatoirement puis sont tracés (leur luminosité dépend du poids associé)
  • Apprentissage, qui exige une image en entrée et les sliders correctement positionnés en face des sorties. Pour les sorties, ce sont les utilisateurs qui donnent du sens aux sliders au moment de l’apprentissage
  • Prédiction, qui, à partir d’une image en entrée, calcule une prédiction sur les neurones de sortie

Le système complet fonctionne bien, mais j’ai hâte de pouvoir tout reprendre en m’autorisant l’utilisation de librairies tierces ce coup-ci (Keras ou TensorFlow), le code étant compliqué et laborieux en l’état (mais on avait une exigence Open Source et cela représentait un bon défi pour le hackaton).

III. Conclusion du week-end

J’ai passé un excellent moment dans le FabLab 127°. Ces deux jours étaient très intenses, je ne pense pas avoir arrêté de programmer entre samedi 8h30 et 21h (sauf pour manger un peu, quand même !), mais c’était vraiment « worth it » à tous les niveaux.

L’organisation était plus qu’au TOP, j’ai rencontré beaucoup de personnes et eu des conversations variées et intéressantes. Les encadrants maîtrisaient leurs sujets, et le personnel du FabLab était très disponible pour toute la partie « réalisation physique » (découpe laser de plaques de bois, impression 3D, etc…)

Je conseille donc à toutes et à tous de s’inscrire l’année prochaine pour la seconde édition, qui méritera vraiment votre intérêt !

IV. Le Podium

Sans plus tarder voici le podium, récompensé par l’ensemble du Jury :

équipe gagnante hack'1 en IA
(crédit : Lambert Rosique)

1. Le prix IA a été décerné à l’équipe « Vulgarisation du machine learning par réseaux de neuronnes avec des interfaces tangibles » pour avoir réussi à vulgariser un concept si abstrait que les réseaux de neurones et pour l’IA qu’ils ont mis en place « from scratch ». De très nombreuses applications sont d’ailleurs à prévoir !

2. Le prix Cognitif est revenu à l’équipe « Induction de rêves Lucides par flash lumineux » pour sa réalisation et le succès de leur expérience. Une version plus industrielle est évidemment envisagée pour la suite.

V. Open Source ?

Oui ! Tout le code est disponible à cette adresse, n’hésitez pas à aller y faire un tour, à partager ou à nous donner votre avis ! Mais n’oubliez pas qu’on a fait ça dans l’urgence sur deux journées 🙂

 

Crédit de l’image de couverture : Lambert Rosique

2 Commentaires