✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מה רואים בתמונה? למידה עמוקה וזיהוי אובייקטים

תמיר נווה
|
קלה
|
Sep 3, 2018
alt="facebook"alt="linkedin"
להרשמה לניוזלטר

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

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

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

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

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

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

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

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

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

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

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

הסרטון הבא סוקר כלי ויזואליזציה נוסף כללי:

 

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

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

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

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

מאת: תמיר נווה, פרילנסר- מומחה פיתוח אלגוריתמים

ai-blog.co.il

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

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

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

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

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

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

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

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

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

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

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

הסרטון הבא סוקר כלי ויזואליזציה נוסף כללי:

 

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

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

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

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

מאת: תמיר נווה, פרילנסר- מומחה פיתוח אלגוריתמים

ai-blog.co.il

תמיר נווה
בואו נעבוד ביחד
צרו קשר