השב לאירוע TensorFlow Everywhere המקומי שלך היום!
דף זה תורגם על ידי Cloud Translation API.
Switch to English

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

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

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

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

להתחיל

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

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

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

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

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

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

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

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

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

דְמוּי אָדָם

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

הדוגמה של 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%) יכלול בנוחות את חיובי השווא.

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

מקום

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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