Choix du Hardware de Miroir Connecté

Hello,
J’avance depuis quelques mois sur plusieurs protos de miroirs connectés qui s’appellent Reflets.

Je me suis amusé à intégrer plus d’une 15aines de technos afin de pouvoir rapidement maqueter des cas d’usage sympa. Voici une petite vidéo.

Plus récemment (et pour énerver Cafféine) je me suis télécharger dans le Metaverse ! En réalité j’ai testé la numérisation de ma voix que j’ai associé à un avatar.

Maintenant que je commence à regarder du côté de MediaPipe, une librairie de Google qui permet de faire plein de choses « on Edge ».

Mon soucis c’est que tous ces petits jouets (ThreeJS, Canvas, TensorflowJS) consomment énormément de ressources. Sur mon laptop (Razer + eGPU) c’est la fête mais sur les miroirs je ne peux pas mettre des bêtes de course :frowning:

  • Sur la v1 j’ai un ChromeBit Asus (une clef HDMI) vraiment hyper bien pour le Digital Signage mais que Google à abandonné …
  • Sur la v2 j’ai mis un NUC Core i5 vieille gen 5 de mémoire. Bien plus performant mais un vrai toaster avec le bruit d’un drone pour le refroidir …

Du coup je me tourne vers mes collague Geek qui évoquent souvent le sujet dans Torréfaction. A votre avis quel type de processeur je devrais viser pour ce genre de trucs ?

  • Quand je regarde les Intel Core … le prix semble linéaire, les dernière version hyper cher, 600€ un Core i5 ça pique !
  • Côté Raspberry Pi ce n’est clairement pas assez puissant ni robuste :frowning: Les Intel Up même combat et prends beaucoup de place.
  • On parle beaucoup de Ryzen sur MiniMachines mais j’ai l’impression que c’est dans la lignée d’Intel niveau prix/puissance.
  • J’ai pré-commandé Rock5 Model B qui semble le plus proche d’un Chromebit avec des perf orienté GPU …

Côté OS, je pense partir sur ChromeOS pour la stabilité et l’intégration Chrome qui semble vraiment bien.

Je serais super preneur de vos conseils !
Merci !

3 « J'aime »

Sans détailler tes applications, difficile de te répondre.

Perso j’ai un miroir de salle de bain de 22’’ qui donne la météo du jour, l’heure, la pluie a une heure et quelques conneries et ça tourne très (très, très) large sur un rpi3. Contrôler par un kinect, une webapp ou des boutons physiques.

:man_shrugging:

Et bien comme je l’expliquais, dans cette vidéo tu as des exemples :

  • Synthèse vocale et reconnaissance vocale avec le keyword spotting qui prends pas mal de ressources
  • La reco faciale et de produit est fait dans le cloud mais il y la prise de photos, et animations ,etc …
  • Dans le second lien, l’animation d’un Avatar 3D avec Lipsync implique d’utiliser du ThreeJS ou BabylonJS donc un Canvas donc un rafraichissement de la page qui consomme drolement

Et sinon j’intègre MediaPipe qui permet:

  • de faire de la reconnaissance faciale on Edge pour savoir si la personne est présente, si c’est la même etc … (j’ai aussi un capteur PIR mais ça prends pas de ressources)
  • avec les points du visage faire de la réalité augmenté, maquillage, coiffure, etc … (ce que fait l’Oreal avec Perfect Corp)
  • avec le placement du visage tu peux jouer avec un effet holographique (je l’ai fait avec une montre qui s’oriente en fonction de la position de la personne) j’ai vu au CES 2 startups qui fausait ça
  • MediaPipe propose du Pose Estimation, ce qui permet de faire des swipe de la main et ainsi éviter le tactile et les traces de doit
  • mais plus intéressant compter les squat et pompes pour de l’activité physique

Bref ce que j’expliquait, fondamentatlement c’est faire tourner un moteur 3D type BabylonJS ou ThreeJS et un moteur d’IA type TensorFlowJS. Un vieux NUC Corei5 pleure sa maman :slight_smile:

Sachant que je suis en, pure Web…

  • J’ai des Kinect 1, 2 mais ça ne se fait plus donc … pas réplicable
  • J’ai un Kinect 3 mais ça coute une fortune et faut une machine de dingue … j’ai testé sur un projet en usine

La solution dépend du volume et du niveau d’encombrement. Si tu veux du très faible encombrement mais que tu peux monter jusqu’à 1000€, je dirais un mac mini d’entrée de gamme. Si tu a un peu plus de place, une mini tour avec une alim surdimensionnée qui peut rester passive et un core i5 avec un gros radiateur et un ventilo réglé pour tourner à basse vitesse. Si aucune des deux solutions convient, faudra passer aux solutions bas niveau et prendre un gros SoC ARM et bricoler toi même le reste, mais c’est même pas sûr que ce soit moins cher qu’un mac mini ARM, au final et côté perfs ça sera pas gagné.
Une autre idée, plus complexe, c’est qu’au lieu de faire ça avec un unique Rasperry Pi, tu répartis la charge et les softs sur 2, 3, 4 ou 5 Raspberry Pi.

Sinon, vu les solutions techniques choisies, la problème est pas forcément le hardware mais le soft. Du Javascript n’est vraiment pas ce qui te permettra de mieux utiliser le hardware en consommant le moins possible. En passant tout dans des langages plus bas niveau et avec des moteurs graphiques plus performants, tu pourrais peut-être réduire la puissance de calcul requise.

1 « J'aime »

Merci pour ta réponse,

Effectivement, mon proto v2 à 2 tailles possible.

  • soit simple écran (le tout fait 2.5cm) d’épaisseur et dans ce cas une clef HDMI fera le job pour des cas d’usage simple
  • soit avec le double écran / tablette et là j’ai beaucoup de place mais ça chauffe d’ou une solution plutot à refroidissement passif.

J’avais contacté BOE et Samsung pour avoir des écrans super fin … mais (en France) il ne savent pas faire autre chose que lire le catalogue et fournir des solutions hard+soft :-/

Niveau budget, je vise idéalement autour des 300€ la partie machine ce qui fait monter un miroir v2 autour des 2000€. Personne n’a testé les IntelUpSquare et autres machines assez orienté IA/GPU ? Chainer des RPi me semble bien trop complexe autant prendre une machine « intermédiaire »

Sur le choix des technos, effectivement en Web c’est « moins performant » mais pas tant que ça car les librairies utilisent maintenant le GPU, du pseudo natif… et l’énorme avantage c’es la souplesse de tourner sur un navigateur.

Franchement le ChromeBit était une tuuue-rie, simple, puissante, administrable à distance, etc … Google à décidé de l’arrêter pour ne garder que les Chromebox :frowning:

J’ai peut-être raté un truc mais dans tes applications, tu ne fais pas de ML, tu utilises des modèles déjà entrainés. Du coup, leurs utilisations ne doit presque rien consommer. Un matos IA/ML est (surtout) optimisé pour la phase d’apprentissage… donc pas vraiment de plus-value ici.

Peut-être qu’en calculant les ressources pour chaque application, tu trouvera celui qui est trop gourmand.

1 « J'aime »

Sur ThreeJS (et les autres moteurs 3D) font des calculs 3D et du repaint de l’UI ce qui sollicite le CPU/GPU ils sont ultra optimisé mais sur les petites machines ça se sent même pour animer un Avatar. Bon après ça passe.

Sur les vidéos j’ai fais du WebM (format normalement ultra simple avec des frames alignées) mais ça ramouille par moment. Je pense que je devrais tester d’autres formats (même si cela implique de télécharger toute la ressource

Sur MediaPipe/TensorFlow JS même si les modèle sont entrainés cela necessite de faire beaucoup de calculs juste pour traiter les résultats. Par exemple sur le visage il y a 250 points retournés si je plaque un objet 3D pour faire de l’AR (façon Snap) ça consomme pas mal

Donc oui il y a plusieurs optimisations:

  1. faire moins de choses :slight_smile:
  2. avoir une UX qui dessine peu de choses (par exemple la reco de geste n’a pas besoin de feedback temps réel)
  3. avoir une machine performante avec un bon traitement du GPU/Multithread

C’est pour ça que

  • j’aime bien AndroidOS qui est vraiment focus sur le navigateur
  • je creuse le RK3588 qui semble avoir un rapport qualit prix intéressant + du multithread.