פיתוח זיהוי אובייקטים בזמן אמת: עד 280 FPS על TensorRT

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

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

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

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

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

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

מה מניבה התאמה מחדש של צינור הזיהוי

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

חלוקת העומס בין הצמתים

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

השהיה יציבה תחת עומס

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

מרווח במספר הזרמים

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

סוג התקלות שהוסר

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

מצבי עיבוד הזרם: אצווה, זרימה, היברידי

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

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

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

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

מעבר בין מצבים

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

כיצד מתבצעת ההטמעה: מביקורת הזרם ועד למסירה

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

  1. ביקורת זרם הווידאו והתרחיש. בוחנים קודקים, רזולוציה, צילום לילי, חסימות ואזורים מתים, התנהגות האובייקט בגבול הפריים. כאן גם מתעדים את רשימת המחלקות ואת שיעור ההחמצות המותר — אלה הם גבולות הקבלה העתידיים.
  2. תכנית פריסת העיבוד. מחליטים מה מחשבים במצלמה, מה בצומת מקומי ומה במרכז: היכן ההשהיה קריטית יותר, היכן הערוץ זול יותר, והיכן המערכת צריכה לשרוד ניתוק תקשורת.
  3. הגדרת הצינור. מרכיבים את שרשרת הפענוח, הזיהוי והמעקב, קובעים את ספי הרגישות בנפרד לכל תרחיש, ומעבירים זרמים כבדים לעדיפות.
  4. כיול על הקלטות ארכיון. מריצים קטעי ייחוס, מחשבים דיוק ושלמות לפי מחלקות ומתקנים את הספים עד לערכים המוסכמים.
  5. קבלה על זרם אמיתי. הרצה על מצלמות מבצעיות בשעות העבודה, כולל סצנות שיא ולילה.
  6. מסירת המערכת והדרכה. מוסרים קונפיגורציות, תכנית פריסה ונוהל תחזוקה, מדריכים את המפעילים ומלווים את שבועות ההפעלה הראשונים.

מה נחשב לקבלה

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

מלאי מצלמות מעורב

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

מה מוסרים לידיים: קונפיגורציות, תכניות, נהלים

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

  • קונפיגורציות הצינור: פענוח, גודל האצווה, ספי הביטחון והמעקב — בקובץ אחד עם בקרת גרסאות, והשינויים מיושמים בהפעלה מחדש ללא בנייה מחדש של האימג'.
  • תכנית הזרמים והצמתים: מהיכן מגיע הווידאו, היכן ההסקה, היכן אחסון האירועים והמטא-נתונים, ודרך מה עוברות ההתראות למערכות משיקות.
  • מטריצת ההרשאות והתפקידים: מי משנה את הספים, מי מפעיל מחדש את השירות, מי רק קורא את הארכיון; בנפרד — חשבונות שירות למצלמות ולתורים.
  • נוהל ההפעלה: סדר ההפעלה והעצירה, בדיקת חיות הזרמים, ההתנהגות בעת ניתוק תקשורת עם המצלמה — חיבור מחדש עם השהיה גדלה במקום סערת בקשות.
  • הנחיות לתורנות ולניתוח תקלות: תקלות אופייניות, במה לבחון ראשון, מה להסלים ובאיזה מועד.
  • סקריפטים לפריסה והרצת בדיקה על הקלטת ייחוס — הקבלה ניתנת לשחזור, ולא מבוססת על "מילה".

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

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

מקרה בוחן: אובדן פריימים בשעות שיא — מה השתנה

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

התמונה ההתחלתית: היכן אבדו פריימים

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

מדידות לאחר ההטמעה

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

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

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

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

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

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

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

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

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

דיוק, התראות שווא ותמיכה: ספקות נפוצים

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

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

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

את סף הביטחון קובעים לפי המשימה שלכם: במקום מסוים חשוב יותר לא להחמיץ, ובמקום אחר — לא להעיר את המפעיל על שטויות.

האם המצלמות שכבר מותקנות יתאימו?

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

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

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

האם ניתן לאמן את המודל מחדש על הנתונים שלנו?

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

כיצד נבדקת האיכות לאחר המסירה?

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

נדון במשימה: נשלח הערכה ותכנית עבודה

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

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

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