- Le constat de l’isolement
Lorsque qu’une personne porte un casque de réalité virtuelle pour la première fois, un de ses premiers reflexes est généralement d’essayer de regarder ses mains et de malheureusement constater… qu’elle ne les voit pas ! Et il en est de même pour tout le reste du corps…
Or, dans de nombreuses circonstances, cette différence notable avec la « vraie vie » peut avoir un véritable effet néfaste sur la plausibilité de l’expérience vécue par l’utilisateur et de fait sur son sentiment de présence dans l’environnement virtuel.
S’il en va de l’invisibilité de son propre corps, il en est de même pour les personnes qui entourent l’utilisateur du casque de RV. Cela peut être préjudiciable dans des scénarios d’usage comme la formation où il peut être bénéfique à l’apprenant de visualiser la présence proche de son formateur, ou dans des situations de revue de maquettes numériques où l’utilisateur immergé est généralement « entouré » de collaborateurs (immergés eux aussi ou non) avec lesquels il va souhaiter collaborer, échanger, partager des idées. Dans ces situations nous observons, avec les systèmes actuels, que l’utilisateur équipé du casque est amené à l’enlever et le remettre fréquemment afin de pouvoir échanger avec ses collaborateurs.
Pour les plus anciens utilisateurs de systèmes de réalité virtuelle, ceci peut d’ailleurs être perçu comme une régression par rapport aux systèmes de type CAVE, qui permettent naturellement de « se voir », ainsi que ses collaborateurs.
- Les solutions actuelles
L’approche la plus fréquemment utilisée aujourd’hui pour pallier ces problèmes consiste à mettre en œuvre des systèmes de capture de mouvement permettant de piloter un avatar de l’utilisateur en images de synthèse.
© 2019 Codename Blueshark
Mais en plus de l’instrumentation de l’utilisateur nécessaire pour la capture de mouvement, cette approche ne permet pas (facilement) de refléter l’apparence réelle des utilisateurs (leur morphologie et leurs vêtements). Si cela peut être un avantage dans certaines applications, jeu vidéo en tête, elle peut également être préjudiciable dans de nombreuses autres applications professionnelles, en particulier collaboratives.
Dans ce contexte, d’autres approches basées sur une numérisation 3D en temps réel des utilisateurs d’une simulation ont été proposées. Elles permettent en effet de restituer l’aspect propre de chaque participant de la simulation, mais souffrent toujours néanmoins d’une instrumentation non négligeable de l’espace dans lequel évoluent les utilisateurs. Par ailleurs la qualité de capture géométrique du corps des utilisateurs est généralement assez faible en raison de la résolution réduite des systèmes d’acquisition. Ils souffrent également de nombreux problèmes liés aux occultations causées par certaines parties du corps sur d’autres parties lorsqu’un membre se situe entre le capteur et la zone à reconstruire.
© 2017 CLARTE : Immersive telepresence in a shared virtual 3D world
Une dernière piste consiste à utiliser des systèmes de réalité augmentée video-seethrough pour ainsi proposer des solutions de virtualité augmentée [1].
Cette approche, parfois appelée stereo-passthrough, consiste à monter 2 caméras sur un casque de réalité virtuelle au plus proche des yeux de l’utilisateur, et à afficher dans le casque un mix d’images de synthèse de l’environnement virtuel et de vidéo captées par ces caméras. Le corps de l’utilisateur et de ses collaborateurs, filmés par les caméras, apparait ainsi comme incrusté dans l’environnement virtuel.
Se pose alors le problème de la segmentation des flux vidéo. Par segmentation, on entend la capacité à identifier à la fois précisément et rapidement les humains dans ces flux afin de les isoler de l’arrière-plan et de pouvoir les incruster dans l’environnement virtuel. Une des solutions consiste à réaliser un chroma-keying (fond vert), mais elle possède les mêmes inconvénients que les solutions citées plus haut, à savoir le besoin d’instrumenter et contrôler l’environnement de l’utilisateur.
© SteamVR 2016 Vidéo
Enfin, une autre approche pour réaliser cette segmentation vidéo en temps réel consiste à réaliser des traitements d’images en temps réel pour identifier les pixels « contenant » des humains ou parties de corps. Les approches les plus efficaces aujourd’hui reposent sur des forêts aléatoires d’arbres décisionnels [2]. Cependant, malgré leur extrême rapidité de décision, elles sont souvent assez peu tolérantes au changement et doivent être exploitées dans des conditions proches des données d’apprentissage.
Une autre classe d’algorithmes consiste à exploiter des réseaux de neurones (plus précisément des réseaux convolutionnels profonds, Deep Convolutional Neural Networks) pour réaliser la segmentation. Ces approches reçoivent beaucoup d’attention en ce moment de la part de la communauté scientifique de l’apprentissage machine, mais dans un contexte généralement différent de la réalité virtuelle ; et donc avec des contraintes sensiblement différentes. Nous avons donc tenté de les utiliser dans le cadre de la segmentation d’humains décrit plus haut.
- Notre contribution ?
Pour réaliser un système de réalité virtuelle avec stereo-passthrough nous avons utilisé un casque de réalité virtuelle HTC VIVE ou Oculus RIFT sur lequel nous avons fixé un système d’acquisition stéréoscopique ZED Mini. Ce système présente l’avantage d’être : compact de sorte à positionner les caméras au plus près des yeux, léger afin de ne pas alourdir le casque porté sur la tête, et efficace car la latence de la transmission des images est inférieure aux caméras intégrées sur le VIVE PRO.
Ainsi, nous avons commencé par exploiter la technologie DeepLab V3 [3], intégrée par exemple dans les téléphones de Google pour simuler des effets de pseudo-profondeur de champ sur les photos. Nous avons spécialisé le modèle xception_65 [4] avec la base d’apprentissage PASCAL VOC 2012 [5]. Cette base comprend plusieurs milliers d’images pré-segmentées selon de nombreuses classes (cf. Figure 1). Pour notre application, et dans le but de maximiser les performances de segmentation, nous avons réduit l’ensemble de ces classes à la seule classe « humain ». Par ailleurs, nous avons complété cette base d’images avec notre propre ensemble d’images spécialisées, également segmentées, représentant des humains en vue à la 1ère personne (cf. Figure 2), point de vue complémentaire absent de PASCAL VOC.
Exemple d'image de la base PASCAL VOC 2012 associée à son masque de segmentation présentant 2 classes : humain et moto.
Exemple d'image spécialisée associée à son masque de segmentation présentant 1 classe : humain.
Ce premier test nous a permis de confirmer la validité et la pertinence de l’approche. La segmentation fonctionne et l’intégration des flux vidéo dans l’environnement virtuel parait cohérente et naturelle. Néanmoins, les temps de traitement conséquents ne permettent pas de proposer une expérience réellement confortable. En effet, le temps d’inférence du modèle seul sur une carte graphique haut de gamme [1] s’élève à 60ms dans le meilleur des cas, ce qui ne permet pas encore de proposer une expérience agréable et naturelle.
Nous avons donc poursuivi nos investigations en nous orientant vers une autre architecture de réseau de type UNet [6], réputée plus rapide. Ils sont en particulier employés sur les plateformes mobiles dans des applications permettant par exemple de prendre des selfies en remplaçant l’arrière-plan [7]. Cependant, les implémentations actuelles privilégient généralement les performances de temps d’exécution au détriment de la robustesse et de la qualité de la segmentation. Ainsi, un système entrainé pour extraire l’arrière-plan sur des selfies aura des difficultés à être spécialisé pour y ajouter la vue en pied – et encore plus pour la 1ère personne. Par conséquent, nous avons dû développer une variante de réseau en U permettant d’améliorer la robustesse de la segmentation tout en conservant des temps d’inférence suffisants pour une exploitation en temps réel. L’architecture que nous avons retenue est donc une variante de réseau Unet intégrant également la prise en compte du masque de segmentation calculé à l’image précédente [8]. L’apprentissage initial a été réalisé sur la base d’images COCO [9] que nous avons ensuite spécialisé avec les vues à la 1ère personne après avoir fixé les poids de l’encodeur.
Tout ceci nous a permis d’abaisser le temps d’exécution du modèle à approximativement 30ms tout en conservant une qualité de segmentation acceptable.
En conclusion, même si ces performances doivent encore progresser, ce système ouvre de nouvelles pistes extremement prometeuses pour traiter les problèmes d’embodiment dans les simulations de réalité virtuelle. Il a été confronté à de nombreux utilisateurs lors du récent salon Laval Virtual 2019, et les retours ont été très positifs. Non seulement le sentiment de présence dans la simulation était amélioré selon-eux, mais il était également facile de discuter avec les visiteurs sans qu’ils n’aient ressenti le besoin de retirer le casque de réalité virtuelle.
- Références
[1] P. Milgram, H. Takemura, A. Utsumi, et F. Kishino, « Augmented Reality: A Class of Displays on the Reality-Virtuality Continuum », 1994, p. 282–292.
[2] J. Shotton et al., « Real-time human pose recognition in parts from single depth images », in CVPR 2011, 2011, p. 1297‑1304.
[3] L.-C. Chen, Y. Zhu, G. Papandreou, F. Schroff, et H. Adam, « Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation », arXiv:1802.02611 [cs], févr. 2018.
[4] F. Chollet, « Xception: Deep Learning with Depthwise Separable Convolutions », arXiv:1610.02357 [cs], oct. 2016.
[5] M. Everingham, L. Van Gool, C. K. I. Williams, J. Winn, et A. Zisserman, « The Pascal Visual Object Classes (VOC) Challenge », Int J Comput Vis, vol. 88, no 2, p. 303‑338, juin 2010.
[6] O. Ronneberger, P. Fischer, et T. Brox, « U-Net: Convolutional Networks for Biomedical Image Segmentation », mai 2015.
[7] « AIMATTER - AI Powered Real Time Image Processing For Mobile Devices. », aimattercom. [En ligne]. Disponible sur: https://www.aimatter.com. [Consulté le: 18-avr-2019].
[8] A. Khoreva, F. Perazzi, R. Benenson, B. Schiele, et A. Sorkine-Hornung, « Learning Video Object Segmentation from Static Images », déc. 2016.
[9] T.-Y. Lin et al., « Microsoft COCO: Common Objects in Context », mai 2014.