Sketchar
Retour au blog

La méthode des « marqueurs progressifs » en vision par ordinateur et réalité augmentée.

Écrit par Sketchar6 min de lecture

Enfin, il est temps de parler de ce que nous avons développé et des problèmes que nous avons surmontés au cours de la dernière année, une nouvelle étape importante vers la liberté de création des utilisateurs de SketchAR, sans les limites des conventions.

Il existe une vraie demande pour des applications mobiles proposant du contenu virtuel, indépendamment des limites de la technologie actuelle. Comme la vision par ordinateur est un domaine où le logiciel est étroitement lié au matériel, malheureusement, la plupart des concepts de produits AR seront toujours limités par les délais du côté technique.

Les petites équipes résolvent rarement des problèmes fondamentaux, mais nous pouvons trouver une méthode qui simplifie la tâche.

Pourquoi réinventer la roue, et pourquoi personne n’a essayé de le faire avant nous ?

La plupart des bibliothèques et plateformes tierces reposent sur des marqueurs préinstallés pour fixer un objet virtuel à sa position dans le monde réel. Dans notre cas, la main qui dessine l’image bloquait ces marqueurs, nous avons donc dû développer notre propre méthode.

ARKit ne peut pas faire la même chose sans marqueurs.

De plus, ARKit et ARCore ne reposent pas sur des marqueurs (sauf dans l’environnement), mais la précision de fixation des objets virtuels serait meilleure si des marqueurs préinstallés maintenaient l’objet virtuel en place. La méthode actuelle inclut la détection et le suivi de points clés pour guider l’utilisateur, mais il n’est pas encore possible pour l’utilisateur de définir ses propres marqueurs de référence. Le deuxième problème avec ARKit et ARCore est l’impossibilité de déplacer un objet virtuel en accord avec le monde réel. Par exemple, après avoir placé un objet virtuel sur une surface physique, on ne peut pas déplacer l’ensemble virtuel et physique comme un seul bloc – comme s’ils étaient collés – car l’image virtuelle reste au même endroit et ne suit pas la surface.

Comme nous l’avons dit, SketchAR fonctionne avec du papier blanc, qui est un « tueur » pour la plupart des algorithmes de vision par ordinateur. Cependant, nos algorithmes sont spécialement optimisés pour de telles conditions. Ils sont suffisamment stables et précis pour lier le contenu AR au papier. Ils continuent de fonctionner même après l’échec du suivi d’ARKit. La vitesse est également importante. Nous avons transféré la plupart des calculs vers le GPU, ce qui permet à SketchAR de fonctionner en temps réel sur les iPhone, à partir du modèle 5SE.

La méthode des « marqueurs progressifs ».

Cela signifie qu’une ligne dessinée par l’artiste se transforme en ancre et ajoute de la stabilité au maintien de l’objet virtuel.

Par ailleurs, les données collectées nous aident à continuer de développer un assistant personnalisé à part entière pour chaque utilisateur. D’ailleurs, nous utilisons le machine learning et les réseaux de neurones pour analyser et entraîner les données à partir du dessin de chaque utilisateur. Nous vous en dirons plus à ce sujet dans les prochains articles.

Houston, nous avons un problème — ou le principe de fonctionnement : « n’ayez crainte ».

Pour comprendre comment le problème a été résolu, il faut revenir au début :

Environnement. Chaque surface a une texture, une couleur et une structure différentes. De plus, les algorithmes peuvent être distraits par des « bruits » extérieurs de l’environnement. Des filtres résolvent ce problème (des « canaux », comme on en trouve dans Photoshop).

L’unification des surfaces est difficile si, bien sûr, l’entraînement d’un réseau de neurones ne repose pas sur des données réelles issues des utilisateurs. L’entraînement d’un réseau de neurones est un processus continu et ne doit donc jamais être considéré comme une partie achevée du produit.

Le « support ». Un support est une feuille de papier, un mur, ou toute autre surface que vous pourriez choisir pour dessiner. La variété des « supports » n’est déterminée que par les dimensions. En même temps, le blanc est « l’ennemi » de la vision par ordinateur. Lisez notre article « Le problème du papier blanc » pour comprendre pourquoi.

Le dessin. Évidemment, nous connaissons le niveau de compétence de nos utilisateurs et ne nous attendons pas à ce qu’une esquisse corresponde parfaitement à l’image d’origine. Notre algorithme prend donc en compte les incohérences de l’utilisateur.

Les mains. Un autre « ennemi » du bon fonctionnement de l’application, c’est quand la main à l’écran croise une surface, des marqueurs ou le dessin lui-même. La taille et la forme, la couleur de peau et même la façon de tenir un crayon détournent une partie de l’attention de l’algorithme.

L’appareil. La position non fixe de l’appareil. Les utilisateurs tiennent le téléphone d’une main, en s’approchant et en s’éloignant de la surface sous des angles différents.

La résolution du problème.
Après une analyse détaillée de ces problèmes, nous avons compris comment « apprendre » à l’application à ne voir que ce que l’utilisateur dessine, en filtrant l’environnement sans pour autant l’ignorer.

Ci-dessous, vous pouvez voir comment le monde environnant est transformé en une image plate et divisé en couches pour analyser chacune d’elles à travers des canaux.

Comment ça marche ?

Convertir le contenu rendu, le mapper à l’original, puis placer un objet virtuel sur la surface, exige une approche à multiples facettes. En réalité, certaines de ces couches sont bien plus importantes que d’autres. On le voit clairement lorsqu’on observe une infime partie du processus et le nombre d’actions qui se produisent chaque seconde.

Voici un schéma simple de la façon dont l’environnement devient une image plate. Elle est ensuite séparée en plusieurs couches (canaux) à analyser.

Comme décrit plus haut, les couches sont séparées, et un algorithme apprend à la caméra à distinguer tout ce qu’elle voit. Par exemple, l’arrière-plan est séparé de la main, la main de son ombre, etc.

Les écrans sont dans l’ordre, de gauche à droite :

  1. L’image virtuelle placée sur la surface, visible par l’utilisateur sur l’écran du smartphone.
  1. Reconnaissance de la feuille sur la surface.
  1. Le papier est grossièrement séparé de l’arrière-plan. Le bruit sur la surface de la table est visible, et l’ombre de la main est reconnue comme un seul objet.
  1. Une séparation nette de la main et de la surface.
  1. Détection du seul contenu dessiné.
  1. Reconnaissance du contenu dessiné par rapport à l’environnement.

Lorsque l’application sait reconnaître clairement chacun des objets, elle les fait correspondre aux images d’origine. Rappelez-vous, chaque action de l’algorithme se produit alors que la caméra et les mains bougent continuellement dans le cadre.

Un exemple du grand nombre de fausses correspondances survenues dans la première version de l’algorithme.

Cet exemple montre de bonnes correspondances dans d’autres versions de l’algorithme.

Sans entrer dans les détails, cette approche résout de nombreux problèmes et défis du produit afin d’améliorer l’expérience utilisateur. Elle élargit le champ d’application des données obtenues, ce qui nous permet de faire passer le produit à un niveau supérieur. C’est un assistant à part entière, appuyé par des données issues du machine learning et des réseaux de neurones.

SketchAR est disponible sur l’AppStore depuis près d’un an, sur Play Market depuis six mois, et même sur MS Hololens. Malgré les avis enthousiastes des utilisateurs et de la presse, il n’existe toujours aucune application concurrente offrant des fonctionnalités similaires. Cela souligne la complexité du problème et l’originalité de nos algorithmes.

Suivez les mises à jour, dessinez davantage et aimez la technologie, car elle nous aide à grandir… et bientôt elle asservira l’humanité ! ;)

L’art pour tous !

Partager cet article

Articles similaires

Abonnez-vous aux actualités de l'entreprise

Nouveaux articles, mises à jour produit et histoires de la communauté – directement dans votre boîte mail. Sans spam.