EMI

Expérimentation, Méthodologie et Innovation

ChairML


 

> Projet sur Github

> Journal de bord

 


Références

Ici soient des projets qui utilisent l’AI pour générer des formes, compositions, etc.

Movie written by algorithm turns out to be hilarious and intense
So. Algorithms Are Designing Chairs Now
What Happens When Algorithms Design a Concert Hall? The Stunning Elbphilharmonie

Répertoires de chaises

We sit together : ENSBA, Papress

Site de vente : ALI EXPRESS

 

Avancée au 8 mars

  • Installation des programmes de machine learning sur le supercomputer de recherche
  • Collection de 20 modèles de chaises (collection)
  • Esquisse : chaise mixée : (code Processing)

Avancée au 15 mars

  • Maîtrise de la mise en forme de données en tableaux multidimensionels (avec Keras + TensorFlow + Numpy)
  • Premier résultat du programme de machine learning : je ne maitrise pas du tout cette technologie, je suis bloqué et ai commencé a faire appel à des experts
  • Premier contact avec une directrice de laboratoire à l’INRIA, livre blanc de l’INRIA sur l’IA

 

Avancé au 22 mars

– Changement de stratégie pour la représentation de chaise (Voxels vs random points on surface) (65k points par modèle)
– Changement de stratégie pour le type de NN : à tester : autoencoders et Variational AutoEncoder (VAE) (ça marche bof)
– Openscad à la rescousse pour la production de modèles STL imprimables à partir de voxels. (trois chaises imprimables/4 pour le 29) (28 minutes de rendu pour 15k points).

– Tentatives de reconstructions avec MeshLab

// code OpenScad pour générer un mesh a partir de voxels

echo(version=version());


module voxel(x, y, z){
 translate([x*10, y*10, z*10]) cube(12, center = true);
}

voxel(0, 0, 0);
voxel(0, 10, 12);
// ...

Avancée au 9 mai

La technologie des réseaux de neurone n’est pas facile à maîtriser. Je n’ai pas réussi a sortir un seul résultat viable. Avant même de buter sur le réseau de neurone ne lui-même, le problème se situe au niveau de la représentation des données volumétrique. Il n’existe pas à l’heure de solution fonctionnelle pour réprésenter des volumes de manière à ce qu’un réseau de neurone puisse efficacement utiliser ces données. De plus, les « fonctions » ou « layers » de réseau de neurone disponible publiquement ne supporte pas les données 3D ayant un grand « Z » : les images peuvent être considérées comme des données 3D, X et Y pour la position des pixels, Z pour RVB. Mais la grandeur de Z n’est jamais supérieure à 3. Dans le cas de données volumétriques, X, Y et Z sont de grandeur similaire. Il n’existe pas de « layer » pour ce cas de figure.

Il me semble donc plus intéressant de travailler sur la représentation des données volumétrique et les transition RÉEL > POLYGONAL > {format volumétrique} > POLYGONAL > RÉEL.

Un premier essai pour ce {format volumétrique} était de représenter sur une grille 3D la présence ou l’absence de matière (à la manière de Minecraft) : les voxels. Cette solution présente plusieurs inconvénients et pas énormément d’avantages.

  1. Bien qu’existant en version manuelle, je n’ai pas pu trouver d’outil permettant de traiter de grande quantité de données (l’idée étant d’avoir ~1000 modèles 3D pour entraîner un réseau de neurone).
  2. Plus on désire de resolution, plus on affine la grille. Hors comme on travaille en 3D, pour doubler la résolution, il faut multiplier par 8 (2^3) le nombre de donnée ( 32 x 32 x 32 = 8 x (16 x 16 x 16) ). Les calcul deviennent vite très longs.
  3. Ce qui rend difficile le travaille des courbes, les reconstruction VOXEL > POLY ne sont pas « smooth ». Le crénelage est inévitable. Ça peut être un style, mais je préfererais une technique me laissant le choix.
  4. Les voxels sont codés en 0 ou 1, alors que  les réseau de neurone travaillent de 0 à 1. Il y a une perte de performance, aussi bien à l’affichage qu’au traitement.

Je suis donc plutôt parti sur une solution qui conserve les courbes quelque soit la résolution et qui en plus ne nécessite pas de modèles rigoureusement  « water tight » pour tirer des donnés de bonne qualité : le POINT CLOUD.
Le point cloud s’apparente au voxel, mais il les pas aligné sur une grille. La méthode utilisée pour générer ce POINT CLOUD est de placer un point sur la surface polygonales puis d’en placer successivement à une certaine distance prédéterminée, à un angle au hasard. On obtient une liste de points répartis de manière homogène et organique sur la surface. On obtiens alors un tableau en deux dimensions (index, coordonnées) de forme (nb_points, 3 ou 6) ce qui est plus proche de ce que peut gérer un réseau de neurone.

On imagine ensuite que le réseau de neurone puisse ensuite travailler avec ce format de donner pour sortir des données du même format. Il se pose donc la question de la reconstruction d’un modèle polygonal pour un traitement ultérieur (impression, fraisage, …). Il est possible d’utiliser la technique « classique »

Je me suis orienté vers un reconstruction plus simple qui consiste à remplacer chaque point par une forme géométrique 3D unique. Selon les asymétrie de cet « atome », on obtiens plusieurs effets de matière dépendant de l’orientation des surfaces.

Next Post

Previous Post