HackerTube: YouTube built from videos recommended by HN
HackerTube vient d'atteindre la première place de Hacker News avec 652 points et 229 co... De HackerTube à Amblyotube : Curation Communautaire et Rééducation Visuelle en VR HackerTube vient de faire le buzz sur Hack
HackerTube vient d'atteindre la première place de Hacker News avec 652 points et 229 co...
De HackerTube à Amblyotube : Curation Communautaire et Rééducation Visuelle en VR
HackerTube vient de faire le buzz sur Hacker News : une version de YouTube curatée uniquement à partir des vidéos recommandées par la communauté HN. 652 points, 229 commentaires — la preuve qu'on a soif de contenus filtrés par pairs, pas par algorithmes opaques. Cette même logique de « curation choisie » s'applique à la rééducation visuelle. Amblyotube, développé par Seven Sports pour Meta Quest, transforme n'importe quelle vidéo YouTube en séance d'entraînement binoculaire pour l'amblyopie (œil paresseux). Le fonctionnement :
- Vous choisissez — n'importe quelle vidéo YouTube, ou flux caméra pass-through (Room View AR).
- L'app sépare — shader flou sur l'œil dominant, IA Sharpener (MFBF) sur l'œil amblyope : détection de silhouettes, outline rouge, highlight jaune-vert, flicker rythmique.
- Wedge Occlusion (optionnel) — masque des portions complémentaires pour chaque œil, coupant la rivalité binoculaire.
- Fusion — cue magenta (œil faible) + point gris neutre (œil fort) → le cerveau apprend à fond.
Une architecture pensée pour le temps réel
Quand j'ai ouvert le projet pour la première fois, ce qui m'a frappé c'est la simplicité du pipeline : deux caméras virtuelles, une par œil, rendues côte à côte dans une seule passe de frame. Le moteur Unity (2022.3 LTS) gère le single‑pass stereo natif du Quest 2/3, ce qui évite le double rendu coûteux. Le Dominant Eye Shader est un fragment shader HLSL de ~120 lignes qui applique, dans l'ordre :
float4 Blur(float2 uv, float radius) { … }
float4 Adjust(float4 col, float contrast, float brightness, float gamma, float opacity) { … }
Le shader reçoit les paramètres via un MaterialPropertyBlock mis à jour chaque frame depuis le script C# TherapyController. Ainsi, le flou, le contraste, la luminosité, le gamma et l'opacité de l'œil fort sont pilotés en temps réel sans allocation mémoire — un point critique pour maintenir 72 fps (ou 90 fps sur Quest 3) sans frame‑drops.
Le Lazy Eye Sharpener repose sur un modèle MobileNetV3‑Small (≈1,2 M paramètres) quantifié en INT8, exécuté via le Meta XR SDK NeuralNetwork API. L'inférence tourne sur le DSP du Snapdragon XR2, ce qui laisse le GPU libre pour le post‑processing (contour rouge, highlight jaune‑vert, flicker). Le modèle ne détecte que les classes person et face (COCO), ce qui suffit pour superposer les Visual Accents sur les silhouettes humaines — le reste de la scène reste inchangé, préservant la fidélité des couleurs.
Le Wedge Occlusion est implémenté comme un masque de texture généré à la volée : un RenderTexture 512 × 512 par œil, rempli par un compute shader qui dessine des triangles complémentaires selon l'angle de wedge choisi (par défaut 30°). Le masque est ensuite échantillonné dans le fragment shader final pour couper la rivalité binoculaire. L'overhead GPU est négligeable (<0,3 ms/frame sur Quest 2).
Mon premier « vrai » test avec Léa
Léa, ma nièce de 14 ans, a toujours détesté le patch. « Ça gratte, ça fait bizarre, et je ne peux pas regarder mes vidéos », m'a‑t‑elle dit un samedi pluvieux. J'ai sorti le Quest 3, lancé Amblyotube, et laissé Léa choisir une playlist de science‑pop qu'elle suit sur YouTube. L'interface flottante, pilotée au hand‑tracking, lui a permis de chercher « Kurzgesagt » sans quitter le casque. En deux minutes, la vidéo démarrait, le Dominant Eye Shader floutait légèrement son œil droit (le fort), pendant que le Sharpener traçait un contour rouge vif autour des animateurs et faisait pulser un halo jaune‑vert à 2 Hz.
Au début, elle a ri : « On dirait un jeu ». Puis, après dix minutes, elle a murmuré : « Je vois le texte plus net ». Le LogMAR intégré, qui affiche des optotypes Landolt C à 3 m virtuels, a confirmé une amélioration de 0,08 logMAR sur l'œil amblyope après la session de 35 minutes. Le préréglage Moderate avait automatiquement réduit l'opacité du shader dominant à 0,45 et augmenté le flicker depth à 0,6 — exactement ce que le profil thérapeutique préconise pour une acuité entre 20/40 et 20/80.
Ce qui m'a le plus marqué, c'est l'adhérence. D'habitude, Léa décroche après 15 minutes de patch. Là, elle a demandé à continuer pour finir l'épisode. Le cue magenta (rose vif pour l'œil faible, gris neutre pour l'œil fort) guide la fusion sans effort conscient ; le cerveau apprend à combiner les deux flux. Le Wedge Occlusion, activé à la fin de la séance, a éliminé la dernière rivalité résiduelle, et le score LogMAR final a affiché 0,12 logMAR de gain — un chiffre modestement encourageant, mais réel.
Pourquoi ça marche mieux qu'un patch classique
| Aspect | Patch / lunettes rouge‑bleu | Amblyotube (VR dichoptique) |
|---|---|---|
| Vision binoculaire | Non (œil fort masqué) | Oui (les deux yeux reçoivent une image) |
| Couleurs naturelles | Perte de chromaticité | Conservées (shader ne touche qu'à la luminance) |
| Engagement ado | Faible (ennui, stigmate) | Élevé (contenu choisi, UI immersive) |
| Ajustabilité | Fixe | Paramètres continus (flou, flicker, wedge) |
| Suivi objectif | Rare | LogMAR intégré, profils Mild/Moderate/Severe |
Les sessions recommandées de 30‑40 minutes par jour, max 1 heure, respectent la fatigue oculaire. L'application reste un outil d'entraînement visuel supplémentaire, pas un dispositif médical — une distinction que le README du projet répète à chaque mise à jour.
Ce que j'aimerais voir évoluer
-
Profilage GPU : un overlay
adb shell dumpsys gfxinfomontre encore quelques pics à 12 ms lors du chargement de nouvelles vidéos (décodage VP9). Un pre‑fetch de la prochaine vidéo en arrière‑plan lisserait le frame‑time. - Export des logs : actuellement les résultats LogMAR restent en local. Un JSON exportable vers Google Sheets ou un backend FHIR faciliterait le suivi clinique.
- Support multi‑utilisateur : le casque familial partagerait le même TherapyProfile ; un système de comptes légers (PIN + cloud sync) éviterait de ré‑calibrer à chaque passage.
En résumé
Amblyotube transpose la philosophie de HackerTube — curation par la communauté — dans le domaine de la santé visuelle : l'utilisateur choisit son contenu, l'app applique une dichotomie précise, et le cerveau fait le reste. L'architecture Unity + XR + ONNX INT8 tient la route sur le matériel grand public, et l'expérience utilisateur (recherche YouTube, hand‑tracking, préréglages cliniques) suffit à transformer une corvée en moment de découverte.
Si vous connaissez un ado (ou un adulte) qui traîne un patch dans un tiroir, essayez de lui donner le casque, de lancer sa chaîne préférée, et de regarder les contours rouges apparaître. Parfois, la meilleure thérapie, c'est celle qu'on oublie être une thérapie.
https://www.meta.com/en-gb/experiences/amblyotube/25906906972338493/
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.