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)
|
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.