ABA


"ראייה ממוחשבת - Computer Vision CV מאמר שני."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10052 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10052
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   18:11   02.09.10   
אל הפורום  
  ראייה ממוחשבת - Computer Vision CV מאמר שני.  
 
לי זה נראה כאילו לפני מספר שבועות פירסמתי מאמר ראשון בנושא, כנראה אני קצת סנילי ומדובר במספר חודשים תיאלצו לסלוח, הייתי מעט עסוק .

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

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

זיהוי פנים, איך ניגשים לבעייה וצעדים ראשונים בפתרונה:
ראשית כמו שכבר ציינתי יש מספר וריאציות לבעיית זיהוי פנים. אנחנו נדון בבעייה מסויימת תחת הנחות מסויימות.
הבעייה:
נתון לנו אוסף של תמונות פנים, להלן DB, מאגר. ה-DB יהיה סטטי, נאמן אותו מראש עם מספר מסויים של אנשים וברגע שנסיים את האימון, לא נחזור ונאמן אותו שוב.
נרצה שבהנתן תמונת פנים חדשה, להגיד האם היא קיימת במאגר, אם כן - מיהי? אחרת נאמר שאינה קיימת במאגר.
הנחות:
כל תמונות הפנים יהיו Frontal (או מאותה זוית), תנאי התאורה של כל התמונות יהיו זהים (וטובים), הפוזיציה, גודל התמונה והמקום שבו נלקחה יהיה זהה.
בדימוי למציאות:
נניח אני בעל חברה שרוצה ליצור מערכת כניסה לפי פנים. אני ראשית אאמן מודל עם כל תמונות הפנים אותם ארצה להכניס למאגר, אעשה את זה בתנאי תאורה טובים כרצוני (הרי אני מצלם אותם ואומר להם איך בדיוק לקחת את התמונה). אח"כ בלייב, כשהם ירצו להכנס לדלת מסויימת, הם יעמדו בזוית מול מצלמה שתיקח תמונת פנים (שוב לפי פוזיציה שאני אבחר) אותה אשווה מול מודל האימון שלי; במקרה של תשובה חיובית אאשר את כניסת האדם לסביבת האבטחה.

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

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

נמשיך בפעם הבאה ;)






                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תודה רבה אייל =].. אני אחכה תשובה ronen333  03.09.10 12:49 1
     ככה אני הבנתי שOPENCV עובד: ronen333  03.09.10 14:27 2
         זה אלגוריתם טוב, אבל הוא ל-Detection ולא ל-Recognition. Deuce  03.09.10 17:21 3
  תודה על המאמר, נהנתי מאד לקרוא :) ג'וני הקטן 03.09.10 21:28 4
     ככה אתה לוקח את השיטות שלו לקבר? :( ronen333  03.09.10 21:41 5
         צריך לכבד סודות מקצועיים גם כאלה :| אנלא יודע מי עוד חת ג'וני הקטן 03.09.10 21:51 6
     יש המון שיטות אגב, רובן ככולן מבוססות על רעיון מתמטי. Deuce  04.09.10 18:10 7
         על אלגוריתם אפשר... אני חושב שגם על רעיונות אפשר ג'וני הקטן 04.09.10 21:49 8
  יפה מאוד. תודה ldan192  08.09.10 18:23 9

       
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:49   03.09.10   
אל הפורום  
  1. תודה רבה אייל =].. אני אחכה תשובה  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 03.09.10 בשעה 12:55 בברכה, ronen333
 
התעסקתי קצת עם OPENCV וקראתי איך זה פחות או יותר עובד אבל תמיד אני אוהב לראות את התשובות שלך...

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



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   14:27   03.09.10   
אל הפורום  
  2. ככה אני הבנתי שOPENCV עובד:  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 03.09.10 בשעה 14:35 בברכה, ronen333
 
קודם כל סוג הזיהוי לפנים נקרא Harr cascade (שזה מעין מלבנים עם אינטרול גבוה ונמוך ) והם בעצם מקטלגים אם יש חלקים בתמונה שהם פנים או לא.
כאשר סורקים את התמונה מספר פעמים על גודל תמונה קטן יחסית (נניח 50X50).


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

כדי לבדוק את הנוכחות/חוסר נוכחות הזאת בפוסציות שונות, ובגדלים שונים בין מאות Haar features משתמשים בטכניקה (של Viola & Jones) שנקראת
"Integral image".
באופן כללי ההכללה הזאת היא לסכם את הפיקסלים ששמאל למעלה עד ימין למטה של אותו מלבן.
http://www.cognotics.com/opencv/servo_2007_series/part_2/fig_s2.png

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

אם נגיד אנחנו צריכים לבדוק נוכחות במלבן D, שהוא לא משמאל למעלה.. פשוט
נעשה חיבור וחיסור ^^ ( D=A+B+C-(A+B)-(A+C) +A ).
שבאופן נוח מאוד, A+B זה המיקום 2, A+C זה המיקום 3, וA זה המיקום 1.

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

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

http://www.cognotics.com/opencv/servo_2007_series/part_2/fig_s3.png


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

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

לסיכום, מזהים חלקים בפרצוף בהסתמכות על בהירות מחלק אחד לאחר..

זה לפחות מה שאני הבנתי ממאמר אחד שקראתי באתר SERVO...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   17:21   03.09.10   
אל הפורום  
  3. זה אלגוריתם טוב, אבל הוא ל-Detection ולא ל-Recognition.  
בתגובה להודעה מספר 2
 
הוא יכול לאתר פנים, אבל לא לזהות למי הם שייכים. אולי עדיף להדגיש שהמאמר שלי מדבר על זיהוי פנים (Recognition) ולא על איתור (Detection).

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






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות, דרג אמינות חבר זה
   21:28   03.09.10   
אל הפורום  
  4. תודה על המאמר, נהנתי מאד לקרוא :)  
בתגובה להודעה מספר 0
 
   בעיקרון לפרופ' שלי ז"ל יש פטנט בנושא והוא אמר לי איך הוא פתר את זה :P
אבל הוא ביקש לא לספר
זה נושא מאד מעניין בעיקרון... שעכשיו תופס מאד חזק בעולם של עיבוד וידאו/תמונה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות, דרג אמינות חבר זה
   21:41   03.09.10   
אל הפורום  
  5. ככה אתה לוקח את השיטות שלו לקבר? :(  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות, דרג אמינות חבר זה
   21:51   03.09.10   
אל הפורום  
  6. צריך לכבד סודות מקצועיים גם כאלה :| אנלא יודע מי עוד חת  
בתגובה להודעה מספר 5
 
   חתום על הפטנט ואיזה חברות עושות בו שימוש באישורו או משהו... זה בכל אופן שייך בטח למשפחה שלו עכשיו..
וזה גם לא שידעתי לפרטי פרטים... ידעתי בגדול ת'רעיון הכללי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות, דרג אמינות חבר זה
   18:10   04.09.10   
אל הפורום  
  7. יש המון שיטות אגב, רובן ככולן מבוססות על רעיון מתמטי.  
בתגובה להודעה מספר 4
 
בכל מקרה, אני מגיב פה בנוגע לפטנטים.
אני לא חושב שאפשר לרשום פטנט על רעיון מדעי, על המכשיר עצמו (אם הוא פיתח מכשיר אופטי למשל) הוא יכול.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ג'וני הקטן
חבר מתאריך 24.6.10
1166 הודעות, דרג אמינות חבר זה
   21:49   04.09.10   
אל הפורום  
  8. על אלגוריתם אפשר... אני חושב שגם על רעיונות אפשר  
בתגובה להודעה מספר 7
 
   כמו לדוגמא שהיה את הסיפור של ההוא שחשב ראשון על הMULTI TOUCH... וכאלה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   18:23   08.09.10   
אל הפורום  
  9. יפה מאוד. תודה  
בתגובה להודעה מספר 0
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net