יש שאלה? התחבר לקהילה בפורום הביקור של TensorFlow

איתור אובייקטים

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

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

תמונת מסך של דוגמא לאנדרואיד

להתחיל

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

אם אתה משתמש בפלטפורמה שאינה אנדרואיד או iOS, או אם אתה כבר מכיר את ממשקי ה- API של TensorFlow Lite , אתה יכול להוריד את דגם איתור האובייקטים המתנע שלנו ואת התוויות הנלוות.

הורד דגם סטרטר עם מטא-נתונים

לקבלת מידע נוסף אודות מטא נתונים ושדות משויכים (למשל: labels.txt ) ראה קרא את המטא נתונים ממודלים

אם ברצונך להכשיר מודל זיהוי מותאם אישית למשימה שלך, ראה התאמה אישית של מודל .

למקרי השימוש הבאים, עליך להשתמש בסוג אחר של דגם:

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

יישומים ומדריכים לדוגמא

אם אתה חדש ב- TensorFlow Lite ועובד עם Android או iOS, אנו ממליצים לבחון את יישומי הדוגמה הבאים שיכולים לעזור לך להתחיל.

דְמוּי אָדָם

באפשרותך למנף את ה- API מחוץ לקופסה מספריית המשימות של TensorFlow Lite לשילוב מודלים של זיהוי אובייקטים בכמה שורות קוד בלבד. אתה יכול גם לבנות צינור מסקנות מותאם אישית משלך באמצעות ממשק ה- API של Java של TensorFlow Lite מתורגמן .

דוגמת Android למטה מדגימה את היישום לשתי השיטות כמו lib_task_api ו- lib_interpreter בהתאמה.

צפו בדוגמה של Android

iOS

באפשרותך לשלב את המודל באמצעות ממשק ה- API של TensorFlow Lite מתורגמן . ראה את הדוגמה של iOS למטה.

צפה בדוגמה של iOS

תיאור המודל

סעיף זה מתאר את החתימה עבור דגמי גלאי חד-יריות שהומרו ל- TensorFlow Lite מממשק ה- API לזיהוי אובייקטים של TensorFlow .

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

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

חתימת קלט

המודל לוקח תמונה כקלט.

נניח שהתמונה הצפויה היא 300x300 פיקסלים, עם שלושה ערוצים (אדום, כחול וירוק) לפיקסל. זה צריך להיות מוזן למודל כחוצץ שטוח של 270,000 ערכי בתים (300x300x3). אם המודל מכמת , כל ערך צריך להיות בת אחד המייצג ערך בין 0 ל -255.

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

חתימת תפוקה

המודל מוציא ארבעה מערכים, הממופים למדדים 0-4. מערכים 0, 1 ו- 2 מתארים אובייקטים שזוהו N , כאשר אלמנט אחד בכל מערך מתאים לכל אובייקט.

אינדקס שֵׁם תיאור
0 מיקומים מערך רב מימדי של ערכי נקודה צפה של [N] [4] בין 0 ל -1, המערכים הפנימיים מייצגים תיבות תוחמות בצורה [למעלה, שמאל, תחתון, ימין]
1 שיעורים מערך מספרים שלמים N (פלט כערכי נקודה צפה) שכל אחד מהם מציין את האינדקס של תווית מחלקה מקובץ התוויות
2 ציונים מערך של ערכי נקודה צפה N בין 0 ל -1 המייצגים את ההסתברות שזוהה מחלקה
3 מספר הגילויים ערך שלם של N

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

מעמד ציון מקום
תפוח עץ 0.92 [18, 21, 57, 63]
בננה 0.88 [100, 30, 180, 150]
תּוּת 0.87 [7, 82, 89, 163]
בננה 0.23 [42, 66, 57, 83]
תפוח עץ 0.11 [6, 42, 31, 58]

ציון אמון

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

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

מעמד ציון מקום
תפוח עץ 0.92 [18, 21, 57, 63]
בננה 0.88 [100, 30, 180, 150]
תּוּת 0.87 [7, 82, 89, 163]
בננה 0.23 [42, 66, 57, 83]
תפוח עץ 0.11 [6, 42, 31, 58]

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

לדוגמא, בתמונה הבאה, אגס (שאינו אובייקט שהמודל הוכשר לזהות) זוהה שגויה כ"אדם ". זוהי דוגמה לחיוב כוזב שניתן להתעלם ממנו על ידי בחירת ניתוק מתאים. במקרה זה, קיצוץ של 0.6 (או 60%) לא יכלול את חיובי השווא בנוחות.

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

מקום

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

[ חלק עליון, שמאלה, תַחתִית, ימין ]

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

אמות מידה לביצועים

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

שם המודל גודל הדגם התקן GPU מעבד
COCO SSD MobileNet v1 27 Mb פיקסל 3 (אנדרואיד 10) 22ms 46ms *
פיקסל 4 (אנדרואיד 10) 20ms 29ms *
iPhone XS (iOS 12.4.1) 7.6ms 11ms **

* 4 חוטים בשימוש.

** 2 אשכולות המשמשים ב- iPhone לקבלת תוצאת הביצועים הטובה ביותר.

התאמה אישית של מודל

מודלים שהוכשרו מראש

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

רוב model.tflite ההורדה מכילים קובץ model.tflite . אם אין כזה, ניתן ליצור שטוח באגר של TensorFlow Lite באמצעות הוראות אלה . ניתן להמיר דגמי SSD מגן החיות TF2 לזיהוי אובייקטים גם ל- TensorFlow Lite באמצעות ההוראות כאן . חשוב לציין כי לא ניתן להמיר מודלים לזיהוי ישירות באמצעות ממיר TensorFlow Lite , מכיוון שהם דורשים שלב ביניים של יצירת מודל מקור ידידותי לנייד. התסריטים המקושרים לעיל מבצעים שלב זה.

לשני סקריפטים המייצאים TF1 ו- TF2 יש פרמטרים שיכולים לאפשר מספר גדול יותר של אובייקטים של פלט או עיבוד פוסט איטי ומדויק יותר. אנא השתמש ב - --help עם התסריטים כדי לראות רשימה ממצה של ארגומנטים נתמכים.

נכון לעכשיו, ההיסק על המכשיר מותאם רק בדגמי SSD. נחקרת תמיכה טובה יותר בארכיטקטורות אחרות כמו CenterNet ו- EfficientDet.

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

כל דגם מגיע עם דיוק משלו (לכמת לפי ערך MAP) ומאפייני חביון. עליך לבחור דגם המתאים ביותר למקרה השימוש שלך ולחומרה המיועדת שלך. לדוגמא, דגמי ה- Edge TPU הם אידיאליים להסקה ב- Edge TPU של גוגל בפיקסל 4.

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

כיוונון דגמים על נתונים מותאמים אישית

המודלים המאומנים מראש שאנו מספקים מאומנים לאיתור 90 סוגים של אובייקטים. לקבלת רשימה מלאה של שיעורים, עיין בקובץ התוויות במטא נתונים המודל .

אתה יכול להשתמש בטכניקה המכונה למידת העברה כדי להכשיר מחדש מודל בכדי לזהות שיעורים שלא בסט המקורי. לדוגמא, תוכל להכשיר מחדש את המודל לאיתור סוגים שונים של ירקות, למרות שיש רק ירק אחד בנתוני האימון המקוריים. לשם כך תצטרך סט תמונות אימונים עבור כל אחת מהתוויות החדשות שתרצה להכשיר. הדרך המומלצת היא להשתמש בספריית TensorFlow Lite Model Maker שמפשטת את תהליך הכשרת מודל TensorFlow Lite באמצעות מערך נתונים מותאם אישית, עם מספר שורות קודים. הוא משתמש בלמידת העברה כדי להפחית את כמות נתוני האימון והזמן הנדרשים. ניתן גם ללמוד מ- Colab-shot-colection לזיהוי דוגמה לכוונון עדין של מודל שהוכשר מראש עם מעט דוגמאות.

לצורך כוונון עדין עם מערכי נתונים גדולים יותר, עיין במדריכים הבאים לאימון הדגמים שלך באמצעות ממשק ה- API לזיהוי אובייקטים TensorFlow: TF1 , TF2 . לאחר הכשרה, ניתן להמיר אותם לפורמט ידידותי ל- TFLite עם ההוראות כאן: TF1 , TF2