איך פועל צינור ה-AI לזיהוי מזון: מתמונה לנתוני תזונה
מדריך טכני מפורט על צינור ה-AI לזיהוי מזון: מהכנסת התמונה דרך הוצאת תכונות CNN, סיווג מזון, הערכת מנות, חיפוש במאגרי תזונה ועד חישוב הקלוריות הסופי.
כשאתם מצלמים תמונה של ארוחת הצהריים שלכם ורואים פיצול מלא של המקרו מופיע בפחות משתי שניות, קל לקחת את התוצאה כמובנת מאליה. מאחורי התצוגה המהירה הזו עומד צינור רב-שלבי שמעביר את התמונה שלכם דרך תהליך של תפיסת תמונה, עיבוד מקדים, אינפרנס של רשת עצבית, סיווג, הערכת מנות, חיפוש במאגרי נתונים וחישוב קלוריות סופי לפני שהכל מגיע למסך שלכם. כל שלב פותר בעיה ייחודית, מתבסס על אלגוריתמים שונים ומעביר פלט ספציפי לשלב הבא.
מאמר זה עוקב אחרי כל המסלול הזה מהקשה על התריס ועד לתווית התזונה. במהלך הדרך נציין את הארכיטקטורות, הטכניקות והפשרות ההנדסיות שמאפשרות לכל שלב לפעול, ונציג את החדשנויות שהכניסה Nutrola כדי לשפר את הדיוק והמהירות מעבר לסטנדרטים בתעשייה.
שלב 1: קלט מצלמה ורכישת תמונה
הכל מתחיל ברגע שמשתמש פותח את מחפש המצלמה ומסגר את צלחת המזון. סמארטפונים מודרניים מצלמים תמונות ברזולוציות של 12 עד 48 מגה פיקסל, ומייצרים נתוני חיישן גולמיים שמקודדים ערכי אינטנסיביות צבעונית דרך מפת פילטר Bayer. מעבד האותות של המכשיר (ISP) מפרק את הנתונים, מבצע איזון צבע, מפחית רעש ומוציא קובץ JPEG או HEIF סטנדרטי בתוך חלקיק שנייה.
שתי תכונות חומרה משפיעות יותר ויותר על שלב זה. ראשית, חיישני LiDAR בסמארטפונים החדישים של iPhone Pro ובחלק מהדגלים של Android יכולים לתפוס מפה של עומק יחד עם התמונה RGB. נתוני העומק הללו הופכים לערך מוסף בהמשך במהלך הערכת המנות. שנית, מכשירים עם חיישני זמן טיסה מספקים מידע על עומק דומה אך גס יותר, שהצינור יכול לנצל כאשר LiDAR אינו זמין.
הצינור מקבל את התמונה RGB וכאשר זמין, את מפה העומק כקלט משולב. אם המכשיר אינו מציע חיישן עומק, הצינור ממשיך עם RGB בלבד ומפצה מאוחר יותר באמצעות הערכת עומק מונוקולרית.
פלט מרכזי של שלב זה
תמונה RGB ברזולוציה גבוהה (ואופציונלית מפה של עומק) המייצגת את הסצנה מול המשתמש.
שלב 2: עיבוד מקדים של התמונה
פלט המצלמה הגולמית אינו מוכן לאינפרנס של רשת עצבית. העיבוד המוקדם משנה את התמונה לטנזור סטנדרטי שהמודל מצפה לו.
שינוי גודל וחיתוך
רוב המודלים לזיהוי מזון מקבלים קלט ברזולוציה קבועה, בדרך כלל 224x224, 384x384 או 512x512 פיקסלים בהתאם לארכיטקטורה. הצינור משנה את גודל התמונה לרזולוציה היעד תוך שמירה על יחס ההיבט, ומבצע חיתוך מרכזי או הוספת מסגרת לפי הצורך. אינטרפולציה ביקרובית היא שיטת הדגימה הסטנדרטית מכיוון שהיא שומרת על פרטי טקסטורה עדינים טוב יותר מאשר חלופות דו-ממדיות.
נורמליזציה
ערכי הפיקסלים מומרצים מטווח של 0-255 לטווח של מספרים ממשיים ולאחר מכן מנורמלים באמצעות ממוצע וסטיית תקן של ערוצי הנתונים של קבוצת האימון. עבור מודלים שהוכשרו מראש על ImageNet, מוחלים ערכי הנורמליזציה הקנוניים (ממוצע של [0.485, 0.456, 0.406] וסטיית תקן של [0.229, 0.224, 0.225] עבור ערוצי R, G ו-B בהתאמה). נורמליזציה זו מרכזת את התפלגות הקלט סביב אפס ומקנה לה שונות יחידה, דבר שמייצב את זרימת הגרדיאנט במהלך האימון ומבטיח התנהגות עקבית בזמן האינפרנס.
מרחב צבע ואוגמנטציות
במהלך האימון, הצינור מבצע אוגמנטציות נתונים נרחבות: סיבובים אקראיים, הפיכות אופקיות, שינויים צבעוניים, טשטוש גאוסי וחתיכות חיתוך. בזמן האינפרנס, האוגמנטציות הללו מושבתות, אך המודל למד להיות חסין לסוגי רעש חזותי שהם מדמים. זה אומר שתמונה שצולמה בתאורה חמה במסעדה ותמונה שצולמה בתאורה פלורסנטית קרה במשרד יפיקו שניהם ייצוגים אמינים של תכונות.
פלט מרכזי של שלב זה
טנזור נורמלי של מספרים ממשיים עם ממדי מרחב קבועים, מוכן ללב של הרשת העצבית.
שלב 3: הוצאת תכונות CNN
זהו הלב החישובי של הצינור. רשת עצבית קונבולוציונית עמוקה (או יותר ויותר טרנספורמר חזותי) מעבדת את הטנזור המעובד ומפיקה וקטור תכונה צפוף שמקודד את התוכן החזותי של התמונה בצורה שהראשי הסיווג והזיהוי יכולים לפרש.
ארכיטקטורות בסיס
מספר ארכיטקטורות בסיס הוכחו כיעילות לזיהוי מזון:
EfficientNet משתמש בהסקלה משולבת כדי לאזן בין עומק הרשת, רוחב ורזולוציית הקלט. EfficientNet-B4 ו-B5 הם בחירות פופולריות מכיוון שהם מספקים דיוק גבוה בעלות חישובית שניתן ליישם על חומרה ניידת בשילוב עם קוונטיזציה. Nutrola משתמשת בארכיטקטורת בסיס נגזרת מ-EfficientNet שהותאמה על קבוצת תמונות מזון פרטית, והשיגה פשרה נוחה בין השהיה לדיוק עליון.
Vision Transformers (ViT) מחלקים את התמונה לפאצ'ים בגודל קבוע (בדרך כלל 16x16 פיקסלים), ממקמים כל פאץ' בהטמעה ומעבדים את הרצף של ההטמעות דרך שכבות תשומת לב עצמית מרובות. ViTs מצטיינים בלכידת קשרים מרחביים ארוכי טווח, לדוגמה, הבנת שהדיסק החום ליד העלים הירוקים הוא פיסת המבורגר ולא עוגיית שוקולד, מכיוון שההקשר הסובב כולל לחמנייה וחסה. מודלים היברידיים כמו DeiT (Data-efficient Image Transformer) ו-Swin Transformer הפחיתו את דרישות הנתונים ואת העלות החישובית של ViTs טהורים, מה שהופך אותם ליישומיים במערכות זיהוי מזון.
MobileNetV3 מותאם לאינפרנס על המכשיר עם קונבולציות נפרדות לפי עומק וחיפוש ארכיטקטורה מודעת לחומרה. הוא משמש כבסיס בדרכים קריטיות של השהיה שבהן המודל חייב לפעול לחלוטין על המכשיר ללא צורך בנסיעת רשת.
רשתות פירמידת תכונות
מכיוון שמזון יכול להשתנות מאוד בגודלו המופיע בתמונה אחת (פיצה גדולה ליד כוס רוטב קטנה), הצינור משתמש ברשת פירמידת תכונות (FPN) כדי לחלץ תכונות במספר סקאלות מרחביות. ה-FPN בונה מסלול מלמעלה למטה עם חיבורים צדדיים ממפות התכונה הביניים של הבסיס, ומפיקה סט של מפות תכונה מרובות סקאלות שהן באותה מידה ביטוייות בזיהוי קישוטים קטנים ומנות גדולות.
פלט מרכזי של שלב זה
סט של מפות תכונה מרובות סקאלות (או וקטור תכונה אחד ממוזג למשימות סיווג בלבד) המקודד את הסמנטיקה החזותית של כל אזור בתמונה.
שלב 4: סיווג מזון מרובה תוויות וזיהוי
ארוחות אמיתיות נדירות מכילות פריט מזון אחד בלבד. צלחת ערב טיפוסית עשויה להכיל סלמון בגריל, ברוקולי מאודה, אורז חום ופרוסת לימון. הצינור חייב לזהות, למקם ולסווג כל פריט מזון נפרד במסגרת.
זיהוי אובייקטים עם YOLO ו-DETR
הצינור מפעיל ראש זיהוי אובייקטים על גבי מפות התכונה שהופקו. שתי משפחות של זיהוי שולטות בתחום זה:
YOLO (You Only Look Once) מבצע זיהוי בפס אחד על ידי חלוקת התמונה לרשת וחיזוי קופסאות גבול והסתברויות סיווג לכל תא ברשת בו זמנית. YOLOv8 והדורות הבאים שלו מתאימים במיוחד לפריסה ניידת מכיוון שהם מעבדים את התמונה המלאה בשוט אחד ולא מציעים אזורים ולאחר מכן משפרים אותם. Nutrola משתמשת בראש זיהוי נגזר מ-YOLO שהותאם על פני 15,000 סוגי מזון מכמה מטבחים עולמיים.
DETR (Detection Transformer) מתייחס לזיהוי אובייקטים כבעיה של חיזוי קבוצות, תוך שימוש בארכיטקטורת טרנספורמר מקודד-מפענח כדי להוציא ישירות סט של זיהויים ללא צורך בקופסאות עוגן או דיכוי מקסימלי לא-מקסימלי. DETR מתמודד עם מזון חופף בצורה טובה יותר מאשר שיטות מבוססות עוגן מכיוון שההפסד המבוסס על קבוצות שלו נמנע באופן טבעי מחיזויים כפולים.
סגמנטציה סמנטית עבור מנות מעורבות
למנות מורכבות כמו סלטים, מוקפצים וקערות דגנים שבהן מרכיבים נפרדים חופפים ומתרקבים, קופסאות גבול הן גסות מדי. הצינור עובר לענף סגמנטציה סמנטית, המבוסס לעיתים קרובות על ארכיטקטורת U-Net או DeepLabv3+, שמסווגת כל פיקסל בתמונה. סיווג ברמת הפיקסל הזה מאפשר למערכת להעריך את החלק של כל מרכיב במנה מעורבת גם כאשר אין גבולות ברורים שמפרידים ביניהם.
ניקוד ביטחון ודירוג מועמדים
כל זיהוי מגיע עם ניקוד ביטחון. הצינור מפעיל סף (בדרך כלל 0.5 עד 0.7 בהתאם ליישום) כדי לסנן חיזויים בעלי ביטחון נמוך. כאשר החיזוי העליון אינו בטוח, המערכת יכולה להציג את שלושת עד חמישה המועמדים העליונים למשתמש לאישור, ובכך להפחית את שיעורי השגיאות מבלי לדרוש הזנה ידנית.
מנוע הסיווג של Nutrola כולל מודול הקשר משתמש שמחשב את הארוחות הקודמות של המשתמש, העדפות המטבח, המיקום הגיאוגרפי ושעת היום. אם משתמש מתעד לעיתים קרובות מטבח מקסיקני והמודל אינו בטוח בין טורטיה מקמח לבין נאן, מודול ההקשר דוחף את ההסתברות לעבר הטורטיה. שכבת ההתאמה האישית הזו מפחיתה באופן מדוד את שיעורי השגיאות בסיווג לאורך זמן.
פלט מרכזי של שלב זה
רשימה של פריטי מזון מזוהים, כל אחד עם תווית סיווג, קופסה גבול או מסכת פיקסלים, וניקוד ביטחון.
שלב 5: הערכת גודל המנה
לדעת שצלחת מכילה עוף בגריל ואורז זה לא מספיק. הצינור חייב להעריך כמה מכל מזון נוכח, כי 100 גרם חזה עוף ו-300 גרם חזה עוף שונים ביותר מ-300 קלוריות.
הערכת עומק מונוקולרית
כאשר אין חיישן עומק חומרה זמין, הצינור משתמש במודל הערכת עומק מונוקולרית (המבוסס בדרך כלל על ארכיטקטורת MiDaS או DPT) כדי להסיק מפה של עומק מהתמונה RGB בלבד. מודלים אלה לומדים לחזות עומק מציוני הקשר כמו חפיפות אובייקטים, גודל יחסי, גרדיאנטים של טקסטורה ונקודות היעלמות. מפה העומק המוסקת, אם כי פחות מדויקת מנתוני LiDAR, מספיקה כדי להעריך את הצורה התלת-ממדית של המזון על הצלחת.
קנה מידה של אובייקט ייחוס
בתמונה אין קנה מידה פנימי. הצינור פותר זאת על ידי זיהוי אובייקטים ייחוס בעלי ממדים ידועים במסגרת. צלחות (בדרך כלל בקוטר של 25 עד 27 ס"מ), כלי אוכל סטנדרטיים, קערות ואפילו קצוות סמארטפון יכולים לשמש כנקודות קנה מידה. על ידי התאמת אליפסה לקצה הצלחת המוכרת והחלת גיאומטריה פרוגרסיבית כדי להסיק את זווית הצפייה, הצינור משחזר מרחקים מהעולם האמיתי ממדידות פיקסלים.
המרה מנפח למשקל
עם הצורה התלת-ממדית של המזון מוערכת, הצינור מחשב את הנפח על ידי אינטגרציה של פרופיל העומק על פני מסכת הפיקסלים של המזון. לאחר מכן הוא ממיר נפח למשקל באמצעות טבלאות צפיפות ספציפיות למזון. כוס של תרד עלים שוקלת הרבה פחות מכוס של חומוס, כך שחיפוש הצפיפות הוא חיוני לדיוק.
Nutrola שומרת על מאגר צפיפות פרטי המכסה אלפי מזונות במצבים שונים (גולמיים, מבושלים, מעורבים, קפואים) ומשתמשת בו כדי להמיר נפחים מוערכים למשקלים בגרמים עם דיוק גבוה יותר מאשר טבלאות צפיפות כלליות.
פלט מרכזי של שלב זה
משקל מוערך בגרמים עבור כל פריט מזון מזוהה.
שלב 6: חיפוש במאגרי תזונה
עם כל פריט מזון מסווג ומדוד, הצינור שואל מאגר נתוני תזונה כדי לקבל את פרופיל המקרו והמאקרו של כל 100 גרם של אותו מזון.
ארכיטקטורת המאגר
מאגרי תזונה באיכות גבוהה שואבים ממקורות ממשלתיים כמו USDA FoodData Central, מאגרי תזונה של בריטניה ומקבילים לאומיים מעשרות מדינות. מקורות אלה מספקים ערכי תזונה שנבדקו במעבדה עבור אלפי פריטי מזון בצורה סטנדרטית.
מאגר Nutrola חורג מעבר למקורות ממשלתיים אלה על ידי שילוב נתונים שסופקו על ידי יצרנים מיותר מ-1.2 מיליון מוצרים מותגיים, פריטי תפריט מסעדות עם מידע תזונתי מאומת דרך שותפויות, וכניסות שהוגשו על ידי הקהילה שעוברות צינור אימות רב-שכבתי כולל השוואת נתונים, זיהוי חריגים וביקורת תזונאית. התוצאה היא מאגר מאוחד של יותר מ-2 מיליון רשומות מזון עם נתוני תזונה מנורמלים לסכימה אחידה.
התאמת חיפוש ופתרון ישויות
מודל הסיווג מפיק תווית מזון כמו "חזה עוף בגריל עם עור" שצריך להתאים לרשומה הנכונה במאגר. זו בעיית פתרון ישויות לא פשוטה מכיוון שאותו מזון יכול להיות לו עשרות שמות באזורים ובשפות שונות. הצינור משתמש בחיפוש סמנטי מבוסס הטמעה כדי למצוא את הרשומה הקרובה ביותר במאגר. מקודד טקסט מותאם היטב ממפה הן את תווית המזון החזויה והן את כל שמות הרשומות במאגר לאותו מרחב וקטורי, והקרוב ביותר (נמדד על ידי דמיון קוסיני) נבחר.
כאשר קיימות מספר התאמות קרובות (למשל "חזה עוף, בגריל, עם עור" לעומת "חזה עוף, קלוי, עור נאכל"), המערכת בוחרת את הרשומה ששיטת ההכנה שלה מתאימה ביותר לרמזים החזותיים שזוהו בתמונה.
פלט מרכזי של שלב זה
פרופיל תזונה מלא (קלוריות, חלבון, פחמימות, שומן, סיבים ומיקרו-נוטריינטים) לכל 100 גרם עבור כל פריט מזון מזוהה.
שלב 7: חישוב מקרו וקלוריות
השלב החישובי הסופי הוא אריתמטיקה פשוטה, אך זהו המקום שבו שגיאות מכל שלב קודם מצטברות. הצינור מכפיל את ערכי התזונה לכל 100 גרם במשקל המוערך של כל פריט מזון, ולאחר מכן מסכם את התוצאות על פני כל הפריטים כדי להפיק פיצול כולל של הארוחה.
החישוב
עבור כל פריט מזון:
- קלוריות = (גרמים מוערכים / 100) x קלוריות לכל 100 גרם
- חלבון = (גרמים מוערכים / 100) x חלבון לכל 100 גרם
- פחמימות = (גרמים מוערכים / 100) x פחמימות לכל 100 גרם
- שומן = (גרמים מוערכים / 100) x שומן לכל 100 גרם
ערכים אלה מצטברים כדי להפיק את סך הארוחה.
הפצת שגיאות וטווחי ביטחון
מכיוון שכל שלב קודם מביא עמו חוסר ודאות, Nutrola אינה מציגה הערכה נקודתית אחת כגזירה מוחלטת. המערכת מחשבת טווחי ביטחון על ידי הפצת ניקוד הביטחון של הסיווג וחוסר הוודאות בהערכת המנות דרך החישוב. אם הביטחון בסיווג גבוה אך ההערכה של המנה אינה בטוחה (למשל, המזון נערם בקערה עמוקה שמסתירה את הנפח), המערכת משקפת זאת על ידי הרחבת טווח הביטחון ואולי תבקש מהמשתמש לאשר את המנה.
שקיפות זו היא בחירה עיצובית מכוונת. במקום להציג תחושת דיוק שקרית, Nutrola מציגה טווח (למשל, "420 עד 510 קק"ל") כאשר ההערכות הבסיסיות מצדיקות זאת, ועוזרת למשתמשים לפתח הבנה מציאותית של הצריכה שלהם.
פלט מרכזי של שלב זה
סך הקלוריות וחלוקת המקרו של הארוחה, עם טווחי ביטחון אופציונליים.
שלב 8: הצגת תוצאות ורישום
השלב הסופי מציג את התוצאות בממשק המשתמש. פריטי המזון המזוהים מופיעים עם ערכי הקלוריות והמקרו שלהם, וסך הארוחה מוצג בולט. המשתמש יכול ללחוץ על כל פריט כדי לתקן אותו או להתאים את המנה, ותיקונים אלה חוזרים למודלים האישיים כדי לשפר את התחזיות בעתיד.
ב-Nutrola, התצוגה כוללת שכבת חזותית על התמונה המקורית המראה קופסאות גבול או הדגשות סגמנטציה עבור כל מזון מזוהה, מה שהופך את זה ברור מיידית מה ה-AI זיהה ואיפה. משוב חזותי זה בונה אמון ומקל על זיהוי ותיקון שגיאות.
הארוחה שנרשמה נשמרת ביומן התזונה היומי של המשתמש ותורמת לסכומים מצטברים של קלוריות, חלבון, פחמימות, שומן ומיקרו-נוטריינטים שנעשים מעקב. הנתונים מת синכרנים ל-Apple Health, Google Fit ופלטפורמות מחוברות אחרות דרך APIs סטנדרטיים של נתוני בריאות.
פלט מרכזי של שלב זה
רישום מלא של הארוחה עם נתוני תזונה לכל פריט ולסך, שכבות חזותיות, וסנכרון לפלטפורמות בריאות.
טבלת סיכום הצינור
| שלב | טכנולוגיה מרכזית | קלט | פלט |
|---|---|---|---|
| 1. קלט מצלמה | ISP של המכשיר, חיישני LiDAR/ToF | אור מהסצנה | תמונת RGB + מפה עומק אופציונלית |
| 2. עיבוד מקדים של התמונה | שינוי גודל ביקרובית, נורמליזציה של ערוצים | תמונה גולמית | טנזור נורמלי (למשל, 384x384x3) |
| 3. הוצאת תכונות | EfficientNet, ViT, Swin Transformer, FPN | טנזור נורמלי | מפות תכונה מרובות סקאלות |
| 4. סיווג מזון | YOLOv8, DETR, DeepLabv3+, הקשר משתמש | מפות תכונה | פריטי מזון מסומנים עם קופסאות גבול/מסכות |
| 5. הערכת מנות | הערכת עומק MiDaS, קנה מידה ייחוס, טבלאות צפיפות | RGB + עומק + מסכות מזון | משקל בגרמים לכל פריט מזון |
| 6. חיפוש במאגרי תזונה | חיפוש סמנטי מבוסס הטמעה, מאגרי USDA/מותגים | תוויות מזון + רמזי הכנה | פרופילי תזונה לכל 100 גרם |
| 7. חישוב קלוריות | אריתמטיקה משוקללת, הפצת חוסר ודאות | הערכות גרמים + פרופילי תזונה | סך קלוריות ומקרו עם טווחי ביטחון |
| 8. הצגת תוצאות | רינדור UI, APIs לסנכרון נתוני בריאות | נתוני תזונה מחושבים | רישום הארוחה עם שכבת חזותית |
היכן מתאימות החדשנויות של Nutrola
מספר מהשלבים המתוארים לעיל כוללים חדשנויות ספציפיות ליישום של Nutrola:
הקשר סיווג מותאם אישית. מודול הקשר המשתמש בשלב 4 משתמש בנתוני הארוחות ההיסטוריות, העדפות המטבח, המיקום וזמן היום כדי להבדיל בין חיזויים לא ברורים. זה אינו סטנדרטי ברוב צינורות זיהוי המזון ומניב שיפורים מדודים בדיוק בעולם האמיתי בהשוואה למודלים ללא הקשר.
מאגר צפיפות פרטי. ההמרה מנפח למשקל בשלב 5 מתבססת על מאגר צפיפות המכסה מזונות במצבים שונים. מערכות כלליות לעיתים קרובות משתמשות בצפיפות ממוצעת אחת לכל מזון, דבר שמבצע שגיאה שיטתית עבור פריטים כמו ירקות מבושלים לעומת גולמיים או סחוטים לעומת לא סחוטים.
הצגה מודעת לביטחון. במקום להציג מספר קלוריות בודד, Nutrola מציגה חוסר ודאות כאשר הוא קיים. גישה כנה זו מפחיתה תסכול של המשתמש כאשר ההערכות נראות לא מדויקות, מכיוון שהטווח עצמו מתקשר לכך שהמערכת פחות בטוחה לגבי פריט מסוים.
מאגר תזונה מאוחד ממקורות מרובים. מאגר של 2 מיליון רשומות בשלב 6 ממזג נתוני מעבדה ממשלתיים, נתוני מוצרים מותגיים וכניסות מאומתות מהקהילה לתוך סכימה מנורמלת אחת, מה שנותן לצינור גישה להרבה יותר רשומות מזון מאשר כל מקור בודד מספק.
למידה מתמשכת מתיקונים. כל תיקון של משתמש בשלב 8 חוזר למודלים של סיווג ומנות במהלך מחזורי אימון תקופתיים, ויוצר מנגנון שבו הדיוק משתפר ככל שהבסיס משתמשים גדל.
עיכוב ושיקולים על המכשיר
עיכוב מקצה לקצה חשוב מאוד עבור חוויית המשתמש. אם הצינור לוקח יותר משתי עד שלוש שניות, המשתמשים תופסים אותו כאיטי ועשויים לחזור לרישום ידני. מספר אסטרטגיות הנדסיות שומרות על העיכוב נמוך:
קוונטיזציה של מודלים ממירה משקלים של 32 סיביות לנקודות צף ל-8 סיביות, ומפחיתה את גודל המודל בכש-4x ומאיצה אינפרנס על יחידות עיבוד נוירונליות ניידות (NPUs) עם אובדן דיוק מינימלי. Nutrola מפעילה קוונטיזציה לאחר האימון על הבסיס להוצאת תכונות ועל ראש הזיהוי.
אינפרנס על המכשיר מבטל את הצורך בנסיעת רשת לחלוטין עבור השלבים החישוביים הכבדים (הוצאת תכונות וזיהוי). Core ML של Apple ו-NNAPI של Android מספקים מסלולי אינפרנס מואצים בחומרה שהצינור מכוון אליהם. רק השלבים הקלים של חיפוש במאגר וחישוב קלוריות דורשים קריאה לשרת, ואפילו אלה יכולים ליפול חזרה למטמון מקומי לפעולה לא מקוונת.
ביצוע ספקולטיבי מתחיל עיבוד מקדים והוצאת תכונות בעוד שהצפייה במצלמה עדיין פעילה, כך שכאשר המשתמש לוחץ על כפתור התריס, הצינור כבר עיבד חלקית את המסגרת. טכניקה זו חוסכת כמה מאות מילישניות מעיכוב הנתפס.
מדדי דיוק וביצועים בעולם האמיתי
על מדדים אקדמיים סטנדרטיים כמו Food-101, ISIA Food-500 ו-Nutrition5k, צינורות מודרניים משיגים דיוק סיווג עליון בין 85 ל-92 אחוז ושגיאות בהערכת מנות בטווח של 15 עד 25 אחוזים מהמשקל האמיתי. הביצועים בעולם האמיתי משתנים מכיוון שתמונות שהוגשו על ידי משתמשים רועשות יותר מאשר מערכי נתונים שנבחרו: תאורה גרועה, חפיפות חלקיות, זוויות לא רגילות ומנות אזוריות לא שכיחות פוגעות בדיוק.
הבדיקות הפנימיות של Nutrola על סט של 50,000 תמונות משתמשים אמיתיות מראות דיוק סיווג עליון של 89 אחוז ושגיאת הערכת מנות חציונית של 18 אחוז. כאשר נחשבים שלושת המועמדים העליונים, דיוק הסיווג עולה ל-96 אחוז, ולכן ממשק התיקון מציג בולטות הצעות חלופיות.
מספרים אלה ממשיכים להשתפר עם כל מחזור אימון כאשר מעגל המשוב מהתיקונים מצטבר עם יותר נתונים מסומנים משימוש בעולם האמיתי.
שאלות נפוצות
כמה זמן לוקח הצינור כולו מתמונה לנתוני תזונה?
על סמארטפונים מודרניים עם חומרה ייעודית לעיבוד נוירונלי, הצינור מקצה לקצה בדרך כלל משלים את התהליך ב-1.0 עד 2.5 שניות. רוב הזמן הזה מתבזבז על הוצאת תכונות וזיהוי אובייקטים בשלבים 3 ו-4. עיבוד מקדים וחישוב קלוריות כמעט מיידיים, וחיפוש במאגר מוסיף רק 50 עד 150 מילישניות בהתאם לתנאי הרשת או אם נעשה שימוש במטמון מקומי. מערכת הביצוע הספקולטיבי של Nutrola, שמתחילה לעבד את הצפייה במצלמה לפני שהמשתמש לוחץ על התריס, יכולה להפחית את העיכוב הנתפס ליותר משנייה אחת במקרים רבים.
כמה מדויק סיווג המזון של AI בהשוואה לרישום ידני?
סיווג המזון של AI משיג דיוק עליון בין 85 ל-92 אחוז על מדדים סטנדרטיים, ודיוק של שלושה עליונים מעל 95 אחוז. רישום ידני, בעוד שהוא תיאורטית מדויק כאשר נעשה בזהירות, סובל מתת-דיווח שיטתי של 10 עד 45 אחוזים על פי מחקר תזונתי שפורסם. למעשה, סיווג AI בשילוב עם שלב אישור מהיר של המשתמש נוטה להניב תוצאות עקביות פחות מוטות מאשר הזנה ידנית טהורה, במיוחד עבור משתמשים שמתעדים מספר ארוחות ביום וחווים עייפות מהזנה.
מה קורה כאשר ה-AI אינו יכול לזהות פריט מזון?
כאשר החיזוי בעל הביטחון הגבוה ביותר נמוך מתחת לסף של המערכת, הצינור נוקט בגישה רכה. הוא מציג את שלושת עד חמישה המועמדים העליונים ומבקש מהמשתמש לבחור את הנכון, או להקליד שם ידני. תיקון זה נרשם ומוזן חזרה לצינור האימון במהלך מחזור האימון הבא, מה שאומר שכל כישלון הופך לאות אימון שמשפר את התחזיות בעתיד. עם הזמן, ככל שהתיקונים הללו מצטברים, כיסוי המערכת של מזונות לא שכיחים ואזוריים מתרחב בהתמדה.
האם הצינור פועל אחרת עבור מנות מעורבות כמו סלטים או קארי?
כן. עבור מנות מעורבות שבהן מרכיבים נפרדים אינם נפרדים מרחבית, הצינור עובר מזיהוי קופסאות גבול לסגמנטציה סמנטית באמצעות ארכיטקטורות כמו DeepLabv3+. סיווג ברמת הפיקסל הזה מעריך את החלק של כל מרכיב בתוך האזור המעורב. עבור מנות מעורבות מאוד כמו שייקים או מרקים מעוכים שבהם ההפרדה החזותית אינה אפשרית, הצינור מסתמך על פירוק מבוסס מתכונים: הוא מזהה את סוג המנה ולאחר מכן משתמש במודל מתכון כדי להעריך את החלקים הסבירים של המרכיבים ואת הפרופיל התזונתי המשולב שלהם.
איך מתבצעת הערכת המנות ללא חיישן עומק?
כאשר אין חיישן LiDAR או זמן טיסה זמין, הצינור משתמש במודל הערכת עומק מונוקולרית (כגון MiDaS או DPT) כדי להסיק עומק משוער מהתמונה RGB בלבד. מודלים אלה אומנו על פני מיליוני זוגות תמונה-עומק ויכולים להעריך את הצורה התלת-ממדית של המזון מציוני הקשר כמו גיאומטריית הצלחת, דפוסי צל וגרדיאנטים של טקסטורה. המערכת גם מזהה אובייקטים ייחוס בגודל ידוע, במיוחד צלחות וכלי אוכל, כדי לקבוע את הקנה מידה. בעוד שההערכה המונוקולרית פחות מדויקת מאשר חיישני עומק חומרה, השילוב של ציוני עומק נלמדים וקנה מידה ייחוס שומר על הערכות המנות בטווח דיוק מעשי למעקב תזונה.
האם הצינור יכול להתמודד עם מספר צלחות או ארוחות בתמונה אחת?
שלב זיהוי האובייקטים מיועד להתמודד עם מספר בלתי מוגבל של פריטי מזון, ללא קשר אם הם נמצאים על צלחת אחת או מספר צלחות. ראשי הזיהוי YOLO ו-DETR סורקים את התמונה כולה ומפיקים זיהויים עצמאיים עבור כל פריט מזון שנמצא, בין אם הם על צלחת ערב אחת, מפוזרים על שולחן עם מספר מנות, או מסודרים על מגש. כל פריט מזוהה מעובד באופן עצמאי דרך שלבי הערכת המנות וחישוב הקלוריות. עבור הדיוק הטוב ביותר, Nutrola ממליצה לצלם כל צלחת או קערה בנפרד כדי שהקנה מידה יוכל להיות מותאם לכל צלחת, אך המערכת מתמודדת עם סצנות מרובות צלחות בצורה טובה כאשר זה לא מעשי.
מוכנים לשנות את מעקב התזונה שלכם?
הצטרפו לאלפים ששינו את מסע הבריאות שלהם עם Nutrola!