Flouter l'arrière-plan dans Google Meet avec ML dans le navigateur

La visioconférence devient de plus en plus importante dans le travail et la vie personnelle des gens. Plus le processus est organisé en termes de traitement vidéo et de confidentialité, moins l'attention d'une personne est distraite de la conférence elle-même. Dans le cadre de ce défi, nous avons récemment développé des filtres de remplacement de flou et d' arrière - plan dans Google Meet.... Ils utilisent l'apprentissage automatique (ML) pour mieux distinguer les participants quel que soit leur environnement. Alors que d'autres solutions nécessitent l'installation de logiciels supplémentaires, les fonctionnalités de Meet sont basées sur des technologies Web ML avancées construites avec MediaPipe et s'exécutent directement dans votre navigateur - aucune étape supplémentaire n'est requise. L'un des principaux objectifs du développement de ces fonctionnalités était de fournir des performances de navigateur en temps réel sur presque tous les appareils modernes, ce que nous avons atteint en combinant des modèles ML efficaces sur l'appareil, un rendu basé sur WebGL et un rendu ML sur la pile Web à l'aide de XNNPACK et TFLite .





Flouter et remplacer l'arrière-plan basé sur MediaPipe



Un aperçu de notre solution Web ML



Les nouvelles fonctionnalités de Meet sont optimisées par MediaPipe , la plate-forme de streaming open source de Google. D'autres solutions ML reposent sur ce cadre, comme le suivi de la main , de l' iris et de la position du corps en temps réel.



La principale exigence de toute technologie mobile est d'atteindre des performances élevées. Pour ce faire, le pipeline Web MediaPipe utilise le format binaire de bas niveau WebAssembly.conçu spécifiquement pour les navigateurs Web pour accélérer les tâches informatiques complexes. Au moment de l'exécution, le navigateur traduit les instructions WebAssembly en code machine qui s'exécute beaucoup plus rapidement que le JavaScript traditionnel. De plus, Chrome 84 a récemment introduit la prise en charge de WebAssembly SIMD , où chaque instruction traite plusieurs points de données, ce qui fait plus que doubler les performances.



Notre solution traite d'abord chaque image vidéo, séparant l'utilisateur de l'arrière-plan (voir ci-dessous pour en savoir plus sur le modèle de segmentation), en utilisant la sortie ML pour calculer le masque basse résolution. Si nécessaire, nous affinons davantage le masque pour l'aligner avec les bordures de l'image. Le masque est ensuite utilisé pour rendre la sortie vidéo à traversWebGL2 et l'arrière-plan sont flous ou remplacés.





Pipeline WebML: toutes les opérations de calcul sont implémentées en C ++ / OpenGL et effectuées dans le navigateur via WebAssembly



Dans la version actuelle, le calcul est effectué sur le CPU du client avec la plus faible consommation d'énergie et la plus large couverture de périphériques. Pour atteindre des performances élevées en temps réel, nous avons développé des modèles ML efficaces en utilisant la bibliothèque XNNPACK pour accélérer le calcul. Il s'agit du premier moteur de sortie vidéo spécialement conçu pour la nouvelle spécification WebAssembly SIMD. En accélérant XNNPACK et SIMD, le modèle de segmentation fonctionne en temps réel sur Internet.



Avec la configuration flexible de MediaPipe, la solution de flou / remplacement d'arrière-plan adapte son traitement en fonction des capacités de l'appareil. Sur les appareils haut de gamme, il exécute un pipeline complet pour garantir la meilleure qualité visuelle, tandis que sur les appareils bas de gamme, il passe à des modèles de calcul ML légers sans spécifier le masque.



Modèle de segmentation



Les modèles ML sur l'appareil doivent être ultra-légers pour un calcul rapide, une faible consommation d'énergie et un faible encombrement. Pour les modèles dans le navigateur, la résolution d'entrée affecte considérablement le nombre d'opérations en virgule flottante (FLOPS) nécessaires pour traiter chaque image et doit donc également être petite. Avant d'alimenter l'image au modèle, nous la réduisons. La récupération du masque le plus précis à partir d'une image basse résolution complique la conception du modèle.



Le réseau de segmentation générale a une structure de codage / décodage symétrique. Les couches de décodeur (vert clair) sont symétriques aux couches de codeur (bleu clair). En particulier, canaliser l'attention(attention par canal) avec mise en commun moyenne globale est utilisé à la fois dans les blocs d'encodeur et de décodeur, ce qui réduit la charge sur le processeur.





L'architecture du modèle avec le codeur MobileNetV3 (bleu clair) et le décodeur symétrique (vert clair)



Pour le codeur, nous avons modifié le petit réseau de neurones MobileNetV3 , dont la conception a été automatiquement conçue en recherchant l'architecture du réseau pour obtenir les meilleures performances sur du matériel faible. Pour réduire de moitié la taille du modèle, nous l'avons exporté vers TFLite avec quantification float16, ce qui a entraîné une petite perte de précision, mais sans impact notable sur la qualité. Le modèle résultant a 193 000 paramètres et la taille n'est que de 400 Ko.



Effets de rendu



Après la segmentation, nous utilisons des shaders OpenGL pour le traitement vidéo et les effets de rendu. Le défi consiste à rendre efficacement sans artefacts. Dans l'étape de raffinement, le filtre de joint bilatéral adoucit le masque basse résolution.





Suppression des artefacts de rendu. Gauche: un filtre double face joint lisse le masque de segmentation. Milieu: des filtres séparés suppriment les artefacts fantômes. Droite: changer l'arrière-plan par un



flou shader light wrapper simule l'effet du bokeh , la puissance de réglage du flou dans chaque pixel est proportionnelle aux valeurs du masque de segmentation, comme la diffusion spoten optique. Les pixels sont pondérés par le rayon du spot afin que les pixels du premier plan ne se fondent pas dans l'arrière-plan. Nous avons mis en œuvre des filtres fractionnés de flou pondérés au lieu de la populaire pyramide gaussienne, car ils suppriment les artefacts de halo autour des humains. Pour les performances, le flou est effectué à basse résolution - et fusionné avec l'image d'entrée à sa résolution d'origine.





Exemples de flou d'arrière-plan



Lors du remplacement de l'arrière-plan, une technique connue sous le nom d'habillage léger est utilisée.(habillage léger) pour superposer des faces segmentées sur un arrière-plan personnalisé. L'enveloppement léger aide à adoucir les bords de la segmentation, permettant à la lumière d'arrière-plan de briller sur les éléments de premier plan, rendant la composition plus réaliste. Cela permet également de minimiser les artefacts de halo lorsqu'il y a beaucoup de contraste entre le premier plan et l'arrière-plan.





Exemples de remplacement d'arrière-plan



Performance



Pour optimiser les performances sur différents appareils, nous proposons des options de modèle avec plusieurs tailles d'image d'entrée (par exemple, 256x144 et 160x96 dans la version actuelle), en choisissant automatiquement la meilleure option en fonction des ressources matérielles disponibles.



Nous avons évalué la vitesse d'inférence des modèles et le pipeline de bout en bout sur deux appareils populaires: le MacBook Pro 2018 avec un processeur Intel Core i7 à 6 cœurs à 2,2 GHz et le Chromebook 11 d'Acer avec un processeur Intel Celeron N3060. Pour une entrée 720p, le MacBook Pro peut exécuter un modèle de qualité supérieure à 120 ips et un pipeline de passage à 70 ips, tandis que sur un Chromebook, le modèle fonctionne à 62 ips avec un modèle de qualité inférieure et un pipeline de passage produit 33 FPS.



 Modèle 

 FLOPS 

 Dispositif 

 Sortie du modèle 

 Convoyeur 

 256 x 144 

 64 millions 

 MacBook Pro 18 

 8,3 ms (120 images par seconde) 

 14,3 ms (70 images par seconde) 

 160 x 96 

 27 millions 

 Chromebook 11 d'Acer 

 16,1 ms (62 images par seconde) 

 30 ms (33 images par seconde) 

Modèle de débit de sortie et un convoyeur traversant sur les ordinateurs portables hauts (MacBook Pro) et bas niveau (Chromebook)



Pour quantifier la précision du modèle utilisé métrique populaire: coefficient Zhakar (intersection-sur-union, IOU ) et une limite F-mesure (borne F-score) ... Les deux modèles fonctionnent bien, en particulier sur un réseau aussi léger:



  Modèle  

  IOU  



  Mesure F     limite  


  256 x 144  

  93,58%  

  0,9024  

  160 x 96  

  90,79%  

  0,8542  



Nous avons également rendu public une carte de segmentation du modèle , détaillant les spécifications de l'évaluation. Les estimations comprennent des images de 17 sous-régions géographiques du monde, annotées pour le teint et le sexe. L'analyse a montré que le modèle démontre des résultats constamment élevés dans différentes régions, tons de peau et sexes, avec de légers écarts dans les valeurs de l'IOU.



Conclusion



Ainsi, nous avons introduit une nouvelle solution basée sur un navigateur ML pour brouiller et remplacer les arrière-plans dans Google Meet. Grâce à cette solution, les modèles ML et les shaders OpenGL affichent des performances efficaces sur Internet. Les fonctionnalités développées offrent des performances en temps réel avec une faible consommation d'énergie, même sur des appareils à faible consommation.



All Articles