Computer Vision

מה רואים בתמונה ? המסע שהחל ב-Alexnet והגיע עד רשתות הקפסולות

מיועד ל- כל אחד (כתבה לא טכנית)

נכתב על ידי תמיר נווה

סנונית מהפיכת הלמידה העמוקה הגיעה ב 2012 עם תוצאה טובה באופן משמעותי בתחרות זיהוי אוביקטים השנתית שנקראת ILSVRC. לראשונה אלגוריתם מבוסס רשת נוירונים עמוקה שנקרא Alexnet היצליח לזהות מה רואים במיליוני תמונות ברמת הצלחה של 85% בעוד המקום השני בתחרות דאז הגיע ל 74% הצלחה.

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

מאז 2012 התחום לא מפסיק להתפתח ולהפתיע, אם נישאר בעולם התמונה, ב 2013 זכתה רשת נוירונים עמוקה בשם ZF  Netעם 89% הצלחה, אחריה ב 2014 VGG עם 93% הצלחה,  אחריה ב 2015 GoogleNet של גוגל עם 94% הצלחה, אחריה ResNet של מיקרוסופט עם 97% הצלחה, ומשם הדברים עוד התפתחו והרעיונות השתלבו כמו Inception v4 או Inception-resnet.

אבל איך זה שאלגוריתם מקבל 3072 מספרים (למשל תמונה ממאגר התמונות CIFAR10  שהינה בגודל 32X32 פיקסלים וכל פיקסל צבעוני ולכן מתואר ע”י שלוש מספרים: 32323=3072) ומחזיר מספר בין 1 ל עשר שמציין מה רואים בתמונה (מטוס, רכב, ציפור, חתול, וכו…).

תודה ל CIFAR

הרי אותה רשת נוירונים עמוקה הינה אוסף (מיליונים) של פעולות אריתמטיות פשוטות ומוכרות לכולנו שמסודרות בסדר מסוים. משפט אחרון זה אולי נשמע הפשטה לא סבירה למי שלא מכיר, אבל זה באמת מה שיש ברשתות CNN= Convolutional Neural Network:

פעולות חיבור, פעולות כפל ופעולת תנאי (אם מספר גדול מסף מסויים אז תחזיר כך אחרת תחזיר כך)

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

אין פה שום מתמטיקה כבדה ומסובכת ?

התשובה המאכזבת היא שלא, אין כאן!

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

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

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

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

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

והנה עוד סרטון שסוקר כלי ויזואליזציה נוסף כללי יותר ועם הסברים:

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

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

https://hackernoon.com/capsule-networks-are-shaking-up-ai-heres-how-to-use-them-c233a0971952 מיקומים יחסיים של מאפיינים בתמונה

הדבר החם בעולם הזיהוי תמונות הגיע מג’פרי הינטון ונקרא Capsule Network (עוד לא ממש ברור איך לתרגם לעברית).

ג’פרי הינטון Geoffrey Hinton מאבות הלמידה העמוקה שהאמין ברשתות נוירונים עוד בשנות השמונים כשרב הקהילה ראתה בזה ענף חסר עתיד. (עיקר הביקורות היו: כשזה כבר כן עובד זה מקרי ואי אפשר להבין למה זה עובד כי זו קופסה שחורה).

דווקא הוא זה שלאחרונה יצא נגד CNN והביא לקהילה בשורה חדשה.

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

Posted by תמיר נווה in deep

הכוכב הבא – תכנית הריאליטי של האלגוריתם GAN

מיועד ל- כל אחד (כתבה לא טכנית)

נכתב על ידי תמיר נווה

נתחיל בשאלה:

מי מזהה את השחקן הזה ובאיזה סרט הוא שיחק ?

תודה לאנבידיה

לא משנה מה עניתם, פשוט טעיתם!

התמונה הזו הינה תוצאה של אלגוריתם של אנבידיה המבוסס על GAN=Generative Adversarial Network שאומן על Database של סלבריטאים ומייצר סלבריטאים בקצב יותר גבוה מכל תכנית ריאליטי שיש כיום.

ז”א אין באמת אדם כזה במציאות אלא זו תמונה שנוצרה ע”י אלגוריתם שלמד טוב מאוד איך נראים תמונות של סלבריטאים ויצר (ג’ינרט) יש מאין תמונה חדשה שכזו!

רוצים להכיר עוד סלבריטאים שכאלו ?

הטירוף שנקרא GAN החל ב 2014 במאמר של Ian Goodfellow שהראה דרך מקורית וייחודית למודלים גנרטיביים Generative Models. מודלים גנרטיביים הינם אלגוריתמים שיוצרים data יש מאין, בין אם תמונות, וידאו, צלילים, קטעי מוסיקה או דיבור, טקסט או כל סוג אחר של מידע.

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

תודה ל Gan Zoo

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

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

ז”א במקרה שלנו רשת ה Generator הבלתי מאומנת תוציא בהתחלה תמונות של רעש לבן (ז”א תוציא תמונות שבוודאי לא אמיתיות) והרשת Discriminator שניתן לה תמונות לבחינה תחזיר בהתחלה תשובה מקרית (תמונה אוטנטית\תמונה לא אוטנטית ללא קשר למהי באמת התמונה הנבחנת).

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

אותו משחק בין הרשתות הינו אימון הדדי, שכשמצליח מסתיים בנקודת איזון כמו בפתרון המינימקס Minimax של משחק סכום אפס Zero sum game מתורת המשחקים.

בתרשים זה ניתן לראות איך מאמנים את הרשתות:

תיאור של אלגוריתם האימון של אלגוריתם GAN

רשת ה Discriminator מקבלת הן תמונות אמיתיות והן תמונות שיצרה רשת ה Generator.

מה שיוצר את האימון של כל רשת הוא הפידבק מתוצאת הרשת השנייה. הרי הצלחה עבור רשת ה Generator תהיה אם רשת ה Discriminator תגיד על הפלט שלה שהוא נראה אוטנטי. והצלחה עבור רשת ה Discriminator תהיה אם מצד אחד תגיד אוטנטי על תמונות אמיתיות ממאגר תמונות ומצד שני תגיד לא אוטנטי על תמונות שיצאו מרשת ה Generator.

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

מתעניין בהדרכה יותר טכנית ומעמיקה על הנושא ובעברית ?

Posted by תמיר נווה in deep