تقسیم بندی با کیفیت بالا در Google Meet

در سال‌های اخیر ویدئو کنفرانس نقش مهمی را در ارتباطات کاری و شخصی برای بسیاری از کاربران ایفا کرده است. طی دو سال گذشته، ما این تجربه را در Google Meet با معرفی ویژگی‌های پس‌زمینه مبتنی بر یادگیری ماشینی حفظ حریم خصوصی (ML) که به عنوان «صفحه سبز مجازی» نیز شناخته می‌شود، افزایش داده‌ایم که به کاربران اجازه می‌دهد پس‌زمینه‌های خود را محو کنند یا آن‌ها را با تصاویر دیگر جایگزین کنند. . چیزی که در مورد این راه حل منحصر به فرد است این است که مستقیماً در مرورگر بدون نیاز به نصب نرم افزار اضافی اجرا می شود.

تاکنون، این ویژگی‌های مبتنی بر ML بر استنباط CPU تکیه کرده‌اند که با استفاده از پراکندگی شبکه‌های عصبی، یک راه‌حل رایج که در همه دستگاه‌ها، از رایانه‌های سطح ابتدایی تا ایستگاه‌های کاری پیشرفته، کار می‌کند، ممکن شده‌اند. این ویژگی های ما را قادر می سازد تا به گسترده ترین مخاطبان دسترسی پیدا کنند. با این حال، دستگاه‌های سطح متوسط ​​و سطح بالا اغلب دارای پردازنده‌های گرافیکی قدرتمندی هستند که برای استنباط ML استفاده نشده باقی می‌مانند، و عملکرد موجود به مرورگرهای وب اجازه می‌دهد تا از طریق سایه‌زن‌ها (WebGL) به GPU‌ها دسترسی داشته باشند.

با جدیدترین به‌روزرسانی Google Meet، اکنون از قدرت پردازنده‌های گرافیکی استفاده می‌کنیم تا وفاداری و عملکرد این جلوه‌های پس‌زمینه را به میزان قابل توجهی بهبود بخشیم. همانطور که در بخش «تقسیم بندی ناهمگن ویدیوی کارآمد در لبه» توضیح می دهیم، این پیشرفت ها توسط دو مؤلفه اصلی تقویت می شوند: 1) یک مدل جدید تقسیم بندی ویدیوی بلادرنگ و 2) یک رویکرد جدید و بسیار کارآمد برای شتاب ML درون مرورگر با استفاده از WebGL. . ما از این قابلیت برای توسعه استنتاج سریع ML از طریق سایه زن های قطعه استفاده می کنیم. این ترکیب منجر به افزایش قابل توجهی در دقت و تأخیر می شود که منجر به ایجاد مرزهای پیش زمینه واضح تر می شود.

تقسیم‌بندی CPU در مقابل تقسیم‌بندی HD در Meet.

حرکت به سمت مدل‌های تقسیم‌بندی ویدیویی با کیفیت بالاتر
برای پیش‌بینی جزئیات دقیق‌تر، مدل تقسیم‌بندی جدید ما اکنون بر روی تصاویر ورودی با وضوح بالا (HD) به جای تصاویر با وضوح پایین‌تر عمل می‌کند و در واقع وضوح را نسبت به مدل قبلی دو برابر می‌کند. برای تطبیق با این، مدل باید ظرفیت بالاتری برای استخراج ویژگی ها با جزئیات کافی داشته باشد. به طور کلی، دو برابر کردن وضوح ورودی، هزینه محاسبات را در طول استنتاج چهار برابر می کند.

استنباط مدل های با وضوح بالا با استفاده از CPU برای بسیاری از دستگاه ها امکان پذیر نیست. CPU ممکن است دارای چند هسته با کارایی بالا باشد که آن را قادر می سازد کدهای پیچیده دلخواه را به طور موثر اجرا کند، اما توانایی آن برای محاسبات موازی مورد نیاز برای تقسیم بندی HD محدود است. در مقابل، پردازنده‌های گرافیکی دارای هسته‌های بسیار با عملکرد نسبتاً پایین همراه با رابط حافظه گسترده هستند که آنها را برای مدل‌های کانولوشنال با وضوح بالا مناسب می‌سازد. بنابراین، برای دستگاه‌های سطح متوسط ​​و سطح بالا، ما یک خط لوله GPU خالص بسیار سریع‌تر را اتخاذ می‌کنیم که با استفاده از WebGL یکپارچه شده است.

این تغییر ما را برانگیخت تا برخی از تصمیمات طراحی قبلی برای معماری مدل را بازبینی کنیم.

  • ستون فقرات: ما چندین ستون اصلی پرکاربرد را برای شبکه‌های روی دستگاه مقایسه کردیم و دریافتیم که EfficientNet-Lite برای GPU مناسب‌تر است، زیرا بلوک فشار و تحریک را حذف می‌کند، مؤلفه‌ای که در WebGL ناکارآمد است (بیشتر در زیر).
  • رمزگشا: ما به جای استفاده از نمونه‌برداری دوخطی ساده یا بلوک‌های فشار و تحریک گران‌تر، به رمزگشای پرسپترون چند لایه (MLP) متشکل از کانولوشن‌های 1×1 تغییر دادیم. MLP با موفقیت در معماری های تقسیم بندی دیگر مانند DeepLab و PointRend مورد استفاده قرار گرفته است و برای محاسبه بر روی CPU و GPU کارآمد است.
  • اندازه مدل: با استنباط جدید WebGL و معماری مدل سازگار با GPU، ما توانستیم مدلی بزرگتر را بدون به خطر انداختن نرخ فریم بلادرنگ لازم برای تقسیم بندی یکنواخت ویدیو بخریم. ما پارامترهای عرض و عمق را با استفاده از جستجوی معماری عصبی بررسی کردیم.
معماری مدل تقسیم بندی HD

در مجموع، این تغییرات به طور قابل‌توجهی متریک میانگین تقاطع بیش از اتحادیه (IoU) را تا 3 درصد بهبود می‌بخشد که منجر به عدم اطمینان کمتر و مرزهای واضح‌تر در اطراف مو و انگشتان می‌شود.

ما همچنین کارت مدل همراه را برای این مدل تقسیم‌بندی منتشر کرده‌ایم که ارزیابی‌های عادلانه ما را شرح می‌دهد. تجزیه و تحلیل ما نشان می دهد که این مدل در عملکرد خود در مناطق مختلف، رنگ پوست، و جنسیت سازگار است، تنها با انحرافات کوچک در معیارهای IoU.

مدل وضوح استنتاج IoU تأخیر (ms)
بخش های CPU 256×144 Wasm SIMD 94.0٪ 8.7
قطعه ساز GPU 512×288 WebGL 96.9٪ 4.3
مقایسه مدل تقسیم بندی قبلی در مقابل مدل جدید تقسیم بندی HD در مک بوک پرو (2018).

تسریع Web ML با WebGL
یکی از چالش‌های رایج برای استنباط مبتنی بر وب این است که فناوری‌های وب در مقایسه با برنامه‌هایی که به صورت بومی روی دستگاه اجرا می‌شوند، می‌توانند جریمه عملکردی را متحمل شوند. برای پردازنده‌های گرافیکی، این جریمه قابل‌توجه است و تنها به حدود 25 درصد از عملکرد OpenGL بومی دست می‌یابد. این به این دلیل است که WebGL، استاندارد GPU فعلی برای استنتاج مبتنی بر وب، در اصل برای ارائه تصویر طراحی شده است، نه بارهای کاری دلخواه ML. به طور خاص، WebGL شامل سایه‌زن‌های محاسباتی نمی‌شود، که امکان محاسبات عمومی را فراهم می‌کند و بارهای کاری ML را در برنامه‌های تلفن همراه و بومی فعال می‌کند.

برای غلبه بر این چالش، هسته‌های شبکه‌های عصبی سطح پایین را با سایه‌زن‌های قطعه که معمولاً ویژگی‌های خروجی یک پیکسل مانند رنگ و عمق را محاسبه می‌کنند، تسریع کردیم و سپس بهینه‌سازی‌های جدیدی را با الهام از جامعه گرافیکی اعمال کردیم. از آنجایی که بارهای کاری ML در GPU ها اغلب به جای محاسبه به پهنای باند حافظه محدود می شود، ما بر روی تکنیک های رندر که دسترسی به حافظه را بهبود می بخشد، مانند اهداف رندر چندگانه (MRT) تمرکز کردیم.

MRT یک ویژگی در پردازنده‌های گرافیکی مدرن است که امکان رندر کردن تصاویر را به چندین بافت خروجی (اشیاء OpenGL که تصاویر را نشان می‌دهند) به طور همزمان می‌دهد. در حالی که MRT در ابتدا برای پشتیبانی از رندرهای گرافیکی پیشرفته مانند سایه‌زنی معوق طراحی شده بود، متوجه شدیم که می‌توانیم از این ویژگی برای کاهش شدید استفاده از پهنای باند حافظه در پیاده‌سازی‌های سایه‌زن فرگمنت برای عملیات‌های حیاتی، مانند کانولوشن‌ها و لایه‌های کاملاً متصل، استفاده کنیم. ما این کار را با در نظر گرفتن تانسورهای میانی به عنوان چندین بافت OpenGL انجام می دهیم.

در شکل زیر، نمونه ای از تانسورهای میانی را نشان می دهیم که هر کدام چهار بافت زیرین GL دارند. با MRT، تعداد رشته‌های GPU، و در نتیجه تعداد درخواست‌های حافظه برای وزن‌ها، چهار برابر کاهش می‌یابد و باعث صرفه‌جویی در مصرف پهنای باند حافظه می‌شود. اگرچه این پیچیدگی‌های قابل‌توجهی را در کد ایجاد می‌کند، اما به ما کمک می‌کند تا به بیش از ۹۰ درصد عملکرد OpenGL بومی دست پیدا کنیم. بستن شکاف با برنامه های بومی.

سمت چپ: اجرای کلاسیک Conv2D با متناظر 1 به 1 تانسور و بافت OpenGL. جعبه‌های قرمز، زرد، سبز و آبی مکان‌های مختلفی را در یک بافت واحد برای تانسور میانی A و B نشان می‌دهند. درست: اجرای Conv2D ما با MRT که در آن تانسورهای میانی A و B با مجموعه‌ای از 4 بافت GL به تصویر کشیده می‌شوند. مانند جعبه های قرمز، زرد، سبز و آبی. توجه داشته باشید که با این کار تعداد درخواست ها برای وزن ها 4 برابر کاهش می یابد.

نتیجه
ما با استفاده از GPU در دستگاه‌های سطح متوسط ​​و سطح بالا برای استفاده در Google Meet، گام‌های سریعی در بهبود کیفیت مدل‌های بخش‌بندی هم‌زمان برداشته‌ایم. ما مشتاقانه منتظر امکاناتی هستیم که توسط فناوری‌های آتی مانند WebGPU فعال می‌شوند که سایه‌زن‌های محاسباتی را به وب می‌آورند. فراتر از استنباط GPU، ما همچنین در حال کار بر روی بهبود کیفیت بخش‌بندی برای دستگاه‌های کم مصرف با استنتاج کوانتیزه از طریق XNNPACK WebAssembly هستیم.

سپاسگزاریها
تشکر ویژه از کسانی که در تیم Meet و سایر افرادی که روی این پروژه کار کردند، به ویژه سباستین جانسون، سامی کالیوماکی، ریکارد لوندمارک، استفان رایتر، فابیان برگمارک، بن واگنر، استفان هولمر، دن گونارسون، استفان هولاود، و از همه تیم ما تشکر می‌کنیم. اعضایی که این امکان را فراهم کردند: Siargey Pisarchyk، Raman Sarokin، Artsiom Ablavatski، Jamie Lin، Tyler Mullen، Gregory Karpiak، Andrei Kulik، Karthik Raveendran، Trent Tolley، و Matthias Grundmann.