Inside the Tech - פתרון להבעות פנים של אווטאר - בלוג רובלוקס

Inside the Tech – פתרון להבעות פנים של אווטאר – בלוג רובלוקס

צומת המקור: 3039939

Inside the Tech היא סדרת בלוגים שמלווה את שלנו פודקאסט Tech Talks. בפרק 20 של הפודקאסט, אווטארים וביטוי עצמי, מנכ"ל רובלוקס דיוויד באזוצקי שוחח עם המנהל הבכיר להנדסה קירן בהט, המנהל הבכיר של המוצר Mahesh Ramasubramanian, ומנהל המוצר הראשי אפי גונאוואן, על העתיד של תקשורת סוחפת באמצעות אווטארים אתגרים טכניים שאנו פותרים כדי לאפשר זאת. במהדורה זו של Inside the Tech, שוחחנו עם מנהל ההנדסה איאן זאקס כדי ללמוד עוד על אחד מאותם אתגרים טכניים - מתן אפשרות להבעות פנים לאוואטרים שלנו - וכיצד עבודת צוות יצירת אווטאר (תחת קבוצת Engine) עוזרת למשתמשים לבטא את עצמם על רובלוקס.

מהם האתגרים הטכניים הגדולים ביותר שהצוות שלך לוקח על עצמו?

כשאנחנו חושבים על איך אווטאר מייצג מישהו ב-Roblox, אנחנו בדרך כלל שוקלים שני דברים: איך הוא מתנהג ואיך הוא נראה. אז מוקד אחד מרכזי עבור הצוות שלי הוא לאפשר לאוואטרים לשקף את הבעותיו של אדם. לדוגמה, כאשר מישהו מחייך, הדמות שלו מחייכת בסנכרון איתו. 

אחד הדברים הקשים במעקב אחר הבעות פנים הוא כוונון היעילות של הדגם שלנו כך שנוכל ללכוד את ההבעות הללו ישירות במכשיר של האדם בזמן אמת. אנו מחויבים להפוך את התכונה הזו לנגישה לכמה שיותר אנשים ב-Roblox, ועלינו לתמוך במגוון עצום של מכשירים. כמות כוח המחשוב שהמכשיר של מישהו יכול להתמודד היא גורם חיוני בכך. אנחנו רוצים שכולם יוכלו להביע את עצמם, לא רק אנשים עם מכשירים חזקים. אז אנחנו פורסים את אחד מהמודלים הראשונים של למידה עמוקה שלנו כדי לאפשר זאת. 

האתגר הטכני המרכזי השני שאנו מתמודדים איתו הוא לפשט את התהליך שבו יוצרים משתמשים כדי לפתח אווטרים דינמיים שאנשים יכולים להתאים אישית. יצירת אווטארים כאלה היא די מסובכת כי אתה צריך לדגמן את הראש ואם אתה רוצה שהוא יהיה הנפשה, אתה צריך לעשות דברים מאוד ספציפיים כדי לתקן את המודל, כמו הצבת מפרקים ומשקולות לעור תערובת ליניארי. אנחנו רוצים להקל על התהליך הזה ליוצרים, אז אנחנו מפתחים טכנולוגיה כדי לפשט אותו. הם צריכים להתמקד רק בבניית המודל הסטטי. כשהם עושים זאת, נוכל לאסוף אותו באופן אוטומטי לכלוב. לאחר מכן, מעקב פנים ובגדים בשכבות אמורים לפעול מיד. 

מהן כמה מהגישות והפתרונות החדשניים שבהם אנו משתמשים כדי להתמודד עם אתגרים טכניים אלה?

עשינו כמה דברים חשובים כדי להבטיח שנקבל את המידע הנכון להבעות פנים. זה מתחיל בשימוש בתקן FACS (מערכת בקרת אנימציה פנים). אלה הם המפתח לכל דבר כי הם מה שאנחנו משתמשים בהם כדי להניע את הבעות הפנים של האווטאר - כמה רחב הפה, אילו עיניים פקוחות וכמה, וכן הלאה. אנו יכולים להשתמש בסביבות 50 פקדי FACS שונים כדי לתאר הבעת פנים רצויה. 

כאשר אתה בונה אלגוריתם למידת מכונה להערכת הבעות פנים מתמונות או וידאו, אתה מאמן מודל על ידי הצגתו תמונות לדוגמה עם הבעות אמת קרקע ידועות (מתוארות באמצעות FACS). על ידי הצגת הדגם תמונות רבות ושונות עם הבעות שונות, המודל לומד להעריך את הבעת הפנים של פנים שלא נראו בעבר.

בדרך כלל, כאשר אתה עובד על מעקב פנים, ההבעות הללו מסומנות על ידי בני אדם, והשיטה הקלה ביותר היא שימוש בנקודות ציון - למשל, הצבת נקודות על תמונה כדי לסמן את מיקומי הפיקסלים של תווי פנים כמו זוויות העיניים. 

אבל משקלי FACS שונים מכיוון שאי אפשר להסתכל על תמונה ולומר, "הפה פתוח 0.9 לעומת 0.5." כדי לפתור זאת, אנו משתמשים בנתונים סינתטיים ליצירת משקולות FACS ישירות המורכבות ממודלים תלת מימדיים המוצגים עם תנוחות FACS מזוויות ותנאי תאורה שונים.

למרבה הצער, בגלל שהמודל צריך להכליל לפרצופים אמיתיים, אנחנו לא יכולים להתאמן רק על נתונים סינתטיים. אז אנו מאמנים מראש את המודל על משימת חיזוי ציון דרך תוך שימוש בשילוב של נתונים אמיתיים וסינתטיים, מה שמאפשר למודל ללמוד את משימת החיזוי FACS תוך שימוש בנתונים סינתטיים בלבד.

אנחנו רוצים שמעקב פנים יעבוד עבור כולם, אבל חלק מהמכשירים חזקים יותר מאחרים. זה אומר שהיינו צריכים לבנות מערכת שמסוגלת להתאים את עצמה באופן דינמי לכוח העיבוד של כל מכשיר. השגנו זאת על ידי פיצול המודל שלנו לשלב חיזוי FACS משוער מהיר הנקרא BaseNet ושלב חידוד FACS מדויק יותר הנקרא HiFiNet. במהלך זמן הריצה, המערכת מודדת את הביצועים שלה, ובתנאים אופטימליים, אנו מפעילים את שני שלבי המודל. אבל אם מזוהה האטה (לדוגמה, בגלל מכשיר ברמה נמוכה יותר), המערכת מפעילה רק את השלב הראשון.

מהם כמה מהדברים המרכזיים שלמדת מביצוע העבודה הטכנית הזו?

האחת היא שהפעלת תכונה היא חלק כל כך קטן ממה שנדרש למעשה כדי לשחרר משהו בהצלחה. הרבה מהעבודה היא בתהליך ההנדסה ובדיקת יחידות. אנחנו צריכים לוודא שיש לנו דרכים טובות לקבוע אם יש לנו צינור טוב של נתונים. ואנחנו צריכים לשאול את עצמנו, "היי, האם הדגם החדש הזה באמת טוב יותר מהישן?"

עוד לפני שנתחיל בהנדסת הליבה, כל הצינורות שהצבנו למעקב אחר ניסויים, הבטחת מערך הנתונים שלנו מייצג את המגוון של המשתמשים שלנו, הערכת תוצאות, ופריסה וקבלת משוב על התוצאות החדשות הללו נועדו להפוך את המודל למספיק. אבל זה חלק מהתהליך שלא מדברים עליו כל כך, למרות שהוא כל כך קריטי. 

לאיזה ערך רובלוקס הצוות שלך הכי מיישר קו?

הבנת השלב של פרויקט היא המפתח, ולכן במהלך חדשנות, ההסתכלות הארוכה חשובה מאוד, במיוחד במחקר כאשר אתה מנסה לפתור בעיות חשובות. אבל לכבד את הקהילה יש חשיבות מכרעת גם כשאתה מזהה את הבעיות ששווה לחדש בהן כי אנחנו רוצים לעבוד על הבעיות עם הערך הרב ביותר לקהילה הרחבה שלנו. לדוגמה, בחרנו במיוחד לעבוד על "מעקב פנים לכולם" ולא רק על "מעקב פנים". כשמגיעים ל-90 אחוז של בניית משהו, המעבר של אב טיפוס לתכונה פונקציונלית תלוי בביצוע ובהתאמה לשלב הפרויקט.

מה הכי מרגש אותך לאן מועדות פניהם של רובלוקס והצוות שלך?

תמיד נמשכתי לעבודה על כלים שעוזרים לאנשים להיות יצירתיים. ליצור משהו הוא מיוחד כי אתה בסופו של דבר עם משהו שהוא ייחודי שלך. עבדתי באפקטים חזותיים ובכלים שונים לעריכת תמונות, תוך שימוש בתובנות מתמטיקה, מדע, מחקר והנדסה כדי להעצים אנשים לעשות דברים מעניינים באמת. עכשיו, ב-Roblox, אני יכול לקחת את זה לרמה חדשה לגמרי. רובלוקס היא פלטפורמת יצירתיות, לא רק כלי. והקנה מידה שבו אנחנו יכולים לבנות כלים שמאפשרים יצירתיות הוא הרבה יותר גדול מכל מה שעבדתי עליו בעבר, וזה מרגש להפליא.

בול זמן:

עוד מ רובלוקס