הפוטושופ של המובייל

המרואיין: דרור יפה מייסד ומנהל פיתוח

רקע

התחלנו ב 2012 בתקופה בה המצלמה רק הצטרפה לטלפון, ומטרתו עד היום לייצר כלי נוח לעריכת תמונה במובייל. ההשראה מגיעה מפוטושופ והמצאנו מחדש כמה קונספטים למובייל (בין השאר Touch Screen במקום עכבר) ויצרנו חוויה יותר פשוטה ויותר עוצמתית. יש לנו מיליוני משתמשים בכל חודש שיוצרים מגוון יצירות ולכן יש לנו נגישות לדאטאסטים בתחום עיבוד התמונה, כמובן תחת מגבלות Privacy.

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

 

כמה אנשי פיתוח ? איך מחולקים ?

6 אנשי פיתוח. כולנו בוגרי מדמ”ח, 2 אנדרואיד , 4 אייפון (אותם אנשים עושים backend, UI)

מהם המוצרים בחברה ?

אפליקציית IOS  ולראשונה השנה נשיק ב Android.

 

אילו חלקים במוצר מצריכים אלגוריתמיקה ?

המון… למשל:

  • להיפטר מרקע מתמונה

אנו מאפשרים עבודה ב-עד מאה תמונות בו זמנית. ולכן חשוב להפטר מרקע של תמונות. יש מורכבות כי אנחנו בעצם רוצים יותר מזיהוי foreground\background אלא שיערוך alpha matting. (כדי שנוכל לשלב תמונות שונות ע”י שינוי העמימות של כל ערוץ באופן כזה שייראה טוב). בפרט מתמודדים עם instance segmentation.  

  • השלמה אוטומטית של תמונה (Healing)

משתמשים בפתרון CV  קלאסי שנקרא Patch Match. מחפשים לייעל אותו שיעבוד RT גם על תמונות גדולות 12MP ויותר.

  • יצירת תוכן\תבניות דינאמי

אנשים לא אוהבים להתחיל יצירה עם Canvas ריק. לרוב מעדיפים להתחיל מיצירה קיימת ולהמשיך אותה. למשל כרטיס ברכה. הבעיה היא שלייצר את התבניות האלו זה תהליך יקר וצריך מאגר מספיק עשיר שיתאים למגוון אנשים, וגם לעיתים רוצים את זה אקטואלי (למשל תקופת הקורונה). אנו עוסקים בלפתח  Generative Models למשל מבוססי Google Trends, להגדיר רשת אילוצים (מיקומים, צבעים,…)

  • כמובן הרבה פילטרים ובפרט Style Transfer. פיצ’רים כמו של אפליקציית פריזמה שלוקחת תמונות של אנשים והופכת אותם לסגונות אחרים זה כמובן הפך להיות must בעולמנו.
  • יישור תמונות במרחב הצבע,ז”א Histogram Equalization אבל מתוחכם יותר…

  ועוד מגוון דברים שאנו מתעסקים בהם ומתכוונים להתעסק בהם.

מה עובד לכם טוב ? (דוגמאות לאלגוריתמים)

משתמשים Grab Cut לסגמנטציה, משתמשים ב Deeplab אחרי שהתאמנו אותו למובייל. ועוד הרבה פרטים יחסית קטנים במוצר (שלאו דווקא מורגשים ע”י המשתמשים שלנו), למשל אם יש תמונה ורוצים שהחלק המרכזי שלה יהיה בתוך עיגול. איך יודעים מהו החלק המרכזי ? משתמשים ב Salient detection של COREML.

מה מאתגר אתכם ?

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

בעיות שפתרתם בדרך יצירתית ?

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

ספר על משימת איסוף ה DB אצלכם ? (מי עושה ? מי בודק ? מי מתייג ? מי מנהל ?)

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

מהם אתגרי העתיד ?

היום אנו משתמשים בשרותים ווביים לחלק מהשירותים אבל אנחנו רוצים לממש אותו אצלנו. יש לנו הרבה אלגוריתמי ראייה ממוחשבת קלאסיים שברצונינו להמירם ל  Deep Learning. אנחנו רוצים להכנס חזק לעולם ה – Generative Models שמאפשר לנו כר נרחב של פיצ’רים. בסופו של יום המוצר שלנו עוסק באסתטיקה ובאומנות וכידוע תחום זה עובר בהדרגה לבינה מלאכותית. בישביל לעשות דברים יפה לא המשתמש הוא זה שחייב להיות מוכשר, אלא התוכנה והאלגוריתמים!

הדרישות עברו להיות מהבן אדם לתוכנה.