מטרת העבודה המוצגת במאמר זה היא לפתח טכנולוגיה לזיהוי אוטומטי של פריטי מזון ומשקאות מתמונות שצולמו על ידי מכשירים ניידים. הטכנולוגיה מורכבת משתי גישות שונות – הראשונה מבצעת זיהוי תמונת מזון ואילו השנייה מבצעת פילוח תמונת מזון.
בשל הבעיות והעלויות הכרוכות בגישות ידניות להערכת תזונה, נדרשים פתרונות אוטומטיים כדי להקל ולהאיץ את העבודה ולהגביר את איכותה. כיום, פתרונות אוטומטיים מסוגלים לתעד את צריכת התזונה של אדם בצורה הרבה יותר פשוטה, למשל על ידי צילום תמונה עם מצלמת סמארטפון. במאמר זה נתמקד בגישות מבוססות תמונה כאלה להערכת תזונה. עבור בעיית זיהוי תמונת המזון, רשתות עצביות עמוקות השיגו את מצב האמנות בשנים האחרונות, ואנו מציגים את עבודתנו בתחום זה. בפרט, אנו מתארים תחילה את השיטה לזיהוי תמונות מזון ומשקאות באמצעות ארכיטקטורת רשת עצבית עמוקה, הנקראת NutriNet. שיטה זו, כמו רוב המחקרים שנעשו בימים הראשונים של זיהוי תמונת מזון מבוססת למידה עמוקה, מוגבלת לתפוקה אחת לתמונה, ולכן אינה מתאימה לתמונות עם פריטי מזון או משקאות מרובים. לכן גישות המבצעות פילוח תמונת מזון הן הרבה יותר חזקות, שכן הן מסוגלות לזהות כל מספר של פריטי מזון או משקאות בתמונה. לכן אנו מציגים גם שתי שיטות לפילוח תמונות מזון – האחת מבוססת על רשתות קונבולוציונליות לחלוטין (FCNs), והשנייה על שאריות עמוקות (ResNet).
הערכה תזונתית היא צעד מכריע בקביעת אזורים מעשיים בתזונת הפרט. עם זאת, ביצוע הערכה תזונתית באמצעות גישות ידניות מסורתיות קשור לעלויות ניכרות. גישות אלה נוטות גם לשגיאות מכיוון שהן מסתמכות לעתים קרובות על דיווח עצמי על ידי הפרט. הערכה תזונתית אוטומטית מטפלת בבעיות אלה על ידי מתן דרך פשוטה יותר לכמת ולהעפיל צריכת מזון. גישה כזו יכולה גם להקל על חלק מהטעויות הקיימות בגישות ידניות, כגון ארוחות שלא נענו, חוסר יכולת להעריך במדויק את נפח המזון וכו ‘. לכן, ישנם יתרונות ברורים לאוטומציה של הערכה תזונתית על ידי פיתוח פתרונות המזהים מזונות ומשקאות שונים לכמת את צריכת המזון1. פתרונות אלה יכולים לשמש גם כדי לאפשר הערכה של ערכים תזונתיים של פריטי מזון ומשקאות (מעתה ואילך “פריטי מזון”). כתוצאה מכך, הערכה תזונתית אוטומטית שימושית עבור יישומים מרובים – משימושים רפואיים בלבד, כגון מתן אפשרות לדיאטנים לעקוב ולנתח בקלות ובדייקנות רבה יותר את התזונה של המטופלים שלהם, ועד לשימוש בתוך אפליקציות רווחה המיועדות לאוכלוסייה הכללית.
זיהוי אוטומטי של פריטי מזון מתמונות הוא בעיה מאתגרת בראייה ממוחשבת. זאת בשל מזונות להיות חפצים מעוותים בדרך כלל, ובשל העובדה כי כמות גדולה של המידע החזותי של פריט המזון יכול ללכת לאיבוד במהלך ההכנה שלה. בנוסף, מזונות שונים יכולים להיראות דומים מאוד זה לזה, ואותו מזון יכול להיראות שונה באופן משמעותי על תמונות מרובות2. יתר על כן, דיוק הזיהוי תלוי בגורמים רבים נוספים, כגון איכות התמונה, האם פריט המזון חסום על ידי פריט אחר, מרחק שממנו צולמה התמונה וכו ‘. זיהוי פריטי משקה מציג סט אתגרים משלו, העיקרי שבהם הוא הכמות המוגבלת של מידע חזותי הזמין בתמונה. מידע זה יכול להיות צבע המשקה, צבע מיכל משקה ומבנה, ובתנאי תמונה אופטימליים, צפיפות המשקה2.
כדי לזהות בהצלחה פריטי מזון מתמונות, יש צורך ללמוד תכונות של כל כיתת מזון ומשקאות. פעולה זו נעשתה באופן מסורתי באמצעות מחלצי תכונות המוגדרים באופן ידני3,4,5,6 המבצעים זיהוי בהתבסס על תכונות פריט ספציפיות כגון צבע, מרקם, גודל וכו ‘, או שילוב של תכונות אלה. דוגמאות של מחלצי תכונות אלה כוללות למידה מרובה ליבה4, תכונות מקומיות pairwise5 ואת שקית של תכונות מודל6. בשל המורכבות של תמונות מזון, גישות אלה השיגו בעיקר דיוק סיווג נמוך – בין 10% ל 40%3,4,5. הסיבה לכך היא כי הגישה הידנית אינה חזקה מספיק כדי להיות מדויק מספיק. מכיוון שפריט מזון יכול להשתנות באופן משמעותי במראהו, אין זה ריאלי להקיף את כל השונות באופן ידני. דיוק סיווג גבוה יותר ניתן להשיג עם מחלצי תכונות המוגדרים באופן ידני כאשר מספר מחלקות המזון מצטמצם5, או תכונות תמונה שונות משולבות 6 , ובכך מציין כי ישצורךבפתרונות מורכבים יותר לבעיה זו.
זו הסיבה מדוע למידה עמוקה הוכיחה להיות כל כך יעיל עבור הבעיה זיהוי תמונת מזון. למידה עמוקה, או רשתות עצביות עמוקות, נוצרה בהשראת מוחות ביולוגיים, ומאפשרת למודלים חישוביים המורכבים משכבות עיבוד מרובות ללמוד תכונות באופן אוטומטי באמצעות אימון על קבוצה של תמונות קלט7,8. בגלל זה, למידה עמוקה שיפרה באופן משמעותי את מצב האמנות במגוון תחומי מחקר7, עם ראייה ממוחשבת, ולאחר מכן זיהוי תמונת מזון, להיות אחד מהם2.
בפרט, רשתות עצביות קונבולוציוניות עמוקות (DCNNs) הן הפופולריות ביותר עבור זיהוי תמונת מזון – רשתות אלה בהשראת מערכת הראייה של בעלי חיים, שבו נוירונים בודדים מנסים להשיג הבנה של הקלט החזותי על ידי תגובה לאזורים חופפים בשדה הראייה9. רשת עצבית קונבולוציונית לוקחת את תמונת הקלט ומבצעת סדרה של פעולות בכל אחת משכבות הרשת, שהנפוצות שבהן הן שכבות קונבולוציה, מחוברות במלואן ואיגום. שכבות קונבולוציונאליות מכילות מסננים ניתנים למידה המגיבים לתכונות מסוימות בנתוני הקלט, בעוד ששכבות המחוברות במלואן מחברות נתוני פלט משכבות אחרות כדי לקבל ממנו ידע ברמה גבוהה יותר. מטרת איגום השכבות היא לדגום כלפי מטה את נתוני הקלט2. ישנן שתי גישות לשימוש במודלים של למידה עמוקה שהוכיחו את עצמן כפופולריות: לקיחת הגדרת רשת עצבית עמוקה קיימת10,11, המכונה ארכיטקטורת למידה עמוקה במאמר זה, או הגדרת ארכיטקטורת למידה עמוקה חדשה12,13, והכשרת כל אחד מאלה על ערכת נתונים של תמונת מזון. יש חוזקות וחולשות לשתי הגישות – בעת שימוש בארכיטקטורת למידה עמוקה קיימת, ניתן לבחור ארכיטקטורה שביצעה ביצועים טובים לבעיות אחרות ולכוונן אותה לבעיה הרצויה, ובכך לחסוך זמן ולהבטיח שנבחרה ארכיטקטורה מאומתת. הגדרת ארכיטקטורת למידה עמוקה חדשה, לעומת זאת, היא עתירת זמן יותר, אך מאפשרת פיתוח של ארכיטקטורות שנעשו במיוחד כדי לקחת בחשבון את הפרטים של בעיה ובכך תיאורטית לבצע טוב יותר עבור בעיה זו.
במאמר זה, אנו מציגים את שתי הגישות. לבעיית זיהוי תמונת המזון, פיתחנו ארכיטקטורת DCNN חדשנית בשם NutriNet2, שהיא שינוי של ארכיטקטורת AlexNet הידועה14. ישנם שני הבדלים עיקריים בהשוואה ל- AlexNet: NutriNet מקבל תמונות של 512×512 פיקסלים כקלט (בניגוד לתמונות של 256×256 פיקסלים עבור AlexNet), ול- NutriNet יש שכבה קונבולוציונלית נוספת בתחילת הרשת העצבית. שני שינויים אלה הוכנסו על מנת לחלץ מידע רב ככל האפשר מתמונות ערכת הנתונים של הזיהוי. לאחר תמונות ברזולוציה גבוהה יותר פירושו שיש מידע נוסף על תמונות בעל שכבות קונבולוציוני יותר פירושו כי ידע נוסף ניתן לחלץ מן התמונות. בהשוואה לכ-60 מיליון הפרמטרים של AlexNet, NutriNet מכילה פחות פרמטרים: כ-33 מיליון. הסיבה לכך היא ההבדל בממדים בשכבה הראשונה המחוברת במלואה הנגרמת על ידי שכבה קונבולוציה נוספת2. איור 1 מכיל דיאגרמה של ארכיטקטורת NutriNet. תמונות המזון ששימשו לאימון מודל NutriNet נאספו מהאינטרנט – ההליך מתואר בטקסט הפרוטוקול.
לבעיית פילוח תמונת המזון, השתמשנו בשתי ארכיטקטורות קיימות שונות: רשתות קונבולוציונליות לחלוטין (FCNs)15 ורשתות שיורית עמוקות (ResNet)16, שתיהן ייצגו את מצב האמנות עבור פילוח תמונה כאשר השתמשנו בהן כדי לפתח את פתרונות פילוח תמונת המזון שלהם. ישנן גרסאות FCN מרובות שהוצגו על ידי לונג ואח ‘: FCN-32s, FCN-16s ו FCN-8s15. FCN-32s מפיק מפת פיקסלים המבוססת על התחזיות לפי השכבה הסופית של FCN, בעוד שהוריאנט FCN-16 משלב תחזיות אלה עם תחזיות אלה בשכבה קודמת. FCN-8s שוקל עוד תחזיות של שכבה ולכן הוא מסוגל לבצע תחזיות בתבואה הטובה ביותר, ולכן הוא מתאים לזיהוי תמונת מזון. FCN-8s שהשתמשנו היה מאומן מראש על PASCAL ויזואלית אובייקט Classs (PASCAL VOC) ערכת נתונים17 והוכשר ונבדק על תמונות של עותקים משוכפלים מזון (מעתה ואילך “מזון מזויף”)18 בשל הדמיון החזותי שלהם למזון אמיתי בשל חוסר תמונות מבוארות של מזון אמיתי ברמה פיקסל. מזון מזויף משמש במחקרים התנהגותיים שונים ותמונות נלקחות עבור כל המנות מכל המשתתפים במחקר. מכיוון שתוכן המזון של תמונות אלה ידוע, הוא הופך את ערכת הנתונים של התמונה לשימושית עבור אימון מודל למידה עמוקה. שלבי עיבוד ערכת נתונים מתוארים בטקסט הפרוטוקול.
הפתרון מבוסס ResNet פותח בהיקף של אתגר זיהוי מזון (FRC)19. היא משתמשת בשיטת מדורג משימה היברידית (HTC)20 עם עמוד שדרה ResNet-10116. זוהי גישה עדכנית לבעיית פילוח התמונה שיכולה להשתמש בחילוץ תכונות או עמוד שדרה שונים. שקלנו רשתות עמוד שדרה אחרות, במיוחד גרסאות ResNet אחרות כגון ResNet-5016, אבל ResNet-101 היה המתאים ביותר בשל עומקו ויכולתו לייצג תמונות קלט בצורה מורכבת מספיק. ערכת הנתונים המשמשת להכשרת מודל HTC ResNet-101 הייתה ערכת הנתונים FRC עם תמונות מוגברות נוספות. הגדלות אלה מוצגות בטקסט הפרוטוקול.
מאמר זה מיועד כמשאב למומחי למידת מכונה המחפשים מידע שעליו ארכיטקטורות למידה עמוקה ושלבי הגדלת נתונים מתפקדים היטב לבעיות של זיהוי וסגמנטציה של תמונות מזון, כמו גם עבור חוקרי תזונה המעוניינים להשתמש בגישה שלנו כדי להפוך זיהוי תמונת מזון לאוטומטי לשימוש בהערכה תזונתית. בפסקאות שלהלן מוצגים פתרונות למידה עמוקה וערכות נתונים מתחום זיהוי תמונות המזון. בטקסט הפרוטוקול, אנו מפרטים כיצד כל אחת משלוש הגישות שימשה לאימון מודלים עמוקים של רשת עצבית שניתן להשתמש בהם להערכה תזונתית אוטומטית. בנוסף, כל מקטע פרוטוקול מכיל תיאור של האופן שבו ערכות הנתונים של תמונת המזון המשמשות להכשרה ולבדיקות נרכשו וטופלו.
DCNNs השיגו בדרך כלל תוצאות טובות יותר באופן משמעותי מאשר שיטות אחרות לזיהוי תמונת מזון ופילוח, ולכן הרוב המכריע של המחקרים האחרונים בתחום מבוססים על רשתות אלה. Kawano et al. השתמשו ב- DCNNs כדי להשלים גישות ידניות21 והשיגו דיוק סיווג של 72.26% על ערכת הנתונים UEC-FOOD10022. Christodoulidis ואח ‘השתמשו בהם אך ורק כדי להשיג דיוק גבוה יותר של 84.90% על ערכת נתונים שנרכשה עצמית23. Tanno et al. פיתחה DeepFoodCam – אפליקציית סמארטפון לזיהוי תמונות מזון המשתמשת ב- DCNNs24. ליו ואח ‘הציג מערכת המבצעת הערכה תזונתית מבוססת אינטרנט של דברים באמצעות DCNNs25. Martinel et al. הציגה גישה מבוססת DCNN המנצלת את הפרטים של תמונות מזון26 ודיווחה על דיוק של 90.27% על ערכת הנתונים Food-10127. Zhou et al. חיבר סקירה של פתרונות למידה עמוקה בתחום המזון28.
לאחרונה, Zhao et al. הציע רשת במיוחד עבור זיהוי תמונת מזון ביישומים ניידים29. גישה זו משתמשת ברשת ‘תלמידים’ קטנה יותר הלומדת מרשת ‘מורה’ גדולה יותר. עם זאת, הם הצליחו להשיג דיוק של 84% על UEC-FOOD25630 ודיוק של 91.2% על Food-101 dataset27. Hafiz et al. השתמשו ב- DCNNs כדי לפתח פתרון זיהוי תמונה למשקה בלבד ודיווחו על דיוק גבוה מאוד של 98.51%31. Shimoda et al. תיאר שיטה חדשנית לגילוי אזורי צלחת בתמונות מזון ללא שימוש בביאור מבחינתפיקסלים 32. Ciocca et al. הציגה ערכת נתונים חדשה המכילה פריטי מזון מ -20 מחלקות מזון שונות ב -11 מדינות שונות (הדבק מוצק, פרוס, קרמי וכו ‘) והציגה את גישתם למודלים לזיהוי הכשרה המסוגלים לזהות את מצב המזון, בנוסף למחלקת המזון33. Knez et al. העריכו פתרונות לזיהוי תמונות מזון עבור מכשירים ניידים34. לבסוף, Furtado et al. ערך מחקר על איך מערכת הראייה האנושית משווה את הביצועים של DCNNs ומצא כי זיהוי אנושי עדיין עולה על DCNNs עם דיוק של 80% לעומת 74.5%35. המחברים ציינו כי עם מספר קטן של כיתות מזון, DCNNs לבצע היטב, אבל על ערכת נתונים עם מאות שיעורים, דיוק זיהוי אנושי גבוה יותר35, הדגשת המורכבות של הבעיה.
למרות התוצאות החדישות שלה, ללמידה עמוקה יש חיסרון גדול – היא דורשת ערכת נתוני קלט גדולה כדי לאמן את המודל. במקרה של זיהוי תמונת מזון, נדרשת ערכת נתונים גדולה של תמונת מזון, וערכות נתונים זו צריכה להקיף כמה שיותר תרחישים שונים בעולם האמיתי. בפועל משמעות הדבר היא כי עבור כל פריט מזון או משקה בודדים, אוסף גדול של תמונות נדרש, ופריטים שונים רבים ככל האפשר צריך להיות נוכח ערכת הנתונים. אם אין די תמונות עבור פריט מסוים בקבוצת הנתונים, לא סביר שפריט זה יזוהה בהצלחה. מצד שני, אם רק מספר קטן של פריטים מכוסה על ידי ערכת הנתונים, הפתרון יהיה מוגבל בהיקפו, ורק מסוגל לזהות קומץ של מזונות ומשקאות שונים.
ערכות נתונים מרובות הפכו לזמינות בעבר. ערכת הנתונים של תמונת המזון המהיר של פיטסבורג (PFID) 3 הוצגה כדילעודד מחקר נוסף בתחום זיהוי תמונות המזון. אוניברסיטת אלקטרו תקשורת מזון 100 (UEC-FOOD100)22 ואוניברסיטת אלקטרו תקשורת מזון 256 (UEC-FOOD256)30 datasets מכילים מנות יפניות, מורחב עם כמה מנות בינלאומיות במקרה של ערכת הנתונים UEC-FOOD256. ערכת הנתונים Food-101 מכילה מנות פופולריות שנרכשו מאתר אינטרנט27. מזון-5036 ו וידאו אחזור הקבוצה מזון 172 (VireoFood-172)37 datasets הם אוספים מבוססי סינית של תמונות מזון. אוניברסיטת מילאנו-Bicocca 2016 (UNIMIB2016) dataset מורכב תמונות של מגשי מזון של קנטינה איטלקית38. Recipe1M הוא מערך נתונים בקנה מידה גדול של מתכוני בישול ותמונות מזון39. ערכת הנתונים Food-47540 אוספת ארבע ערכות נתונים של תמונות מזון שפורסמו בעבר27,30,36,37 לאחד. בייג’ינג טכנולוגיה ועסקים האוניברסיטה מזון 60 (BTBUFood-60) היא ערכת נתונים של תמונות המיועדות לגילוי מזון41. לאחרונה, ISIA מזון-500 dataset42 של תמונות מזון שונות נעשה זמין. בהשוואה לערכות נתונים אחרות של תמונות מזון הזמינות לציבור, הוא מכיל מספר רב של תמונות, המחולקות ל -500 מחלקות מזון, ונועד לקדם את הפיתוח של פתרונות זיהוי מזון מולטימדיה42.
בשנים האחרונות, רשתות עצביות עמוקות אומתו מספר פעמים כפתרון מתאים לזיהוי תמונות מזון10,11,12,21,23,25,26,29,31,33. העבודה שלנו המוצגת במאמר זה משמשת כדי להוכיח עוד יותר את זה1,2. הגישה לזיהוי תמונת מזון חד-פלט היא פשוטה וניתן להשתמש בה עבור יישומים פשוטים שבהם תמונות עם פריט מזון או משקה אחד בלבד צפויות2.
גישת פילוח תמונת המזון נראית מתאימה במיוחד לזיהוי תמונות מזון באופן כללי, ללא כל הגבלה על מספר פריטי המזון1. מכיוון שהוא פועל על ידי סיווג כל פיקסל בודד של התמונה, הוא מסוגל לא רק לזהות כל מספר של פריטי מזון בתמונה, אלא גם לציין היכן ממוקם פריט מזון, כמו גם כמה גדול הוא. לאחר מכן ניתן להשתמש באפשרות זו כדי לבצע הערכת משקל מזון, במיוחד אם נעשה שימוש עם אובייקט ייחוס או מצלמה למרחקים קבועים.
נעשתה עבודה מסוימת לגבי הזמינות של datasets תמונת מזון3,22,27,30,36,37,38,39,40,41,42, ואנחנו מקווים יותר ייעשה בעתיד, במיוחד כשמדובר צבירת ערכות נתונים תמונת מזון מאזורים שונים ברחבי העולם, אשר יאפשר פתרונות חזקים יותר להתפתח. נכון לעכשיו, הדיוק של פתרונות זיהוי תמונה מזון אוטומטי עדיין לא הגיע דיוק ברמה האנושית35, וזה כנראה במידה רבה בשל השימוש datasets תמונת מזון של גודל ואיכות לא מספיק.
בעתיד, המטרה שלנו תהיה להעריך עוד יותר את ההליכים המפותחים על תמונות מהעולם האמיתי. באופן כללי, ערכות נתונים בשדה זה מכילות לעתים קרובות תמונות שצולמו בסביבות מבוקרות או בתמונות ממוטבות לזיהוי באופן ידני. לכן חשוב לאסוף ערכת נתונים גדולה ומגוונת של תמונות מזון בעולם האמיתי כדי להקיף את כל פריטי המזון והמשקאות השונים שאנשים עשויים לרצות לזהות. הצעד הראשון לקראת זה סופק על ידי אתגר זיהוי מזון, שכלל ערכת נתונים של תמונות מזון בעולם האמיתי19, אבל עבודה נוספת צריכה להיעשות כדי לאמת גישה זו על תמונות מזון מכל רחבי העולם בשיתוף עם דיאטנים.
The authors have nothing to disclose.
המחברים רוצים להודות לתמרה בוכר מאוניברסיטת ניוקאסל, אוסטרליה, על שסיפקה את ערכת הנתונים של תמונות המזון המזויפות. עבודה זו נתמכה על ידי תוכניות המחקר והחדשנות Horizon 2020 של האיחוד האירופי (מספרי מענק 863059 – FNS-Cloud, 769661 – SAAM); וסוכנות המחקר הסלובנית (מענק מספר P2-0098). לאיחוד האירופי ולסוכנות המחקר הסלובנית לא היה תפקיד בעיצוב, בניתוח או בכתיבה של מאמר זה.
HARDWARE | |||
NVIDIA GPU | NVIDIA | N/A | An NVIDIA GPU is needed as some of the software frameworks below will not work otherwise. https://www.nvidia.com |
SOFTWARE | |||
Caffe | Berkeley AI Research | N/A | Caffe is a deep learning framework. https://caffe.berkeleyvision.org |
CLoDSA | Jónathan Heras | N/A | CLoDSA is a Python image augmentation library. https://github.com/joheras/CLoDSA |
Google API Client | N/A | Google API Client is a Python client library for Google's discovery based APIs. https://github.com/googleapis/google-api-python-client | |
JavaScript Segment Annotator | Kota Yamaguchi | N/A | JavaScript Segment Annotator is a JavaScript image annotation tool. https://github.com/kyamagu/js-segment-annotator |
MMDetection | Multimedia Laboratory, CUHK | N/A | MMDetection is an object detection toolbox based on PyTorch. https://github.com/open-mmlab/mmdetection |
NVIDIA DIGITS | NVIDIA | N/A | NVIDIA DIGITS is a wrapper for Caffe that provides a graphical web interface. https://developer.nvidia.com/digits |
OpenCV | Intel | N/A | OpenCV is a library for computer vision. https://opencv.org |
Python | Python Software Foundation | N/A | Python is a programming language. https://www.python.org |
PyTorch | Facebook AI Research | N/A | PyTorch is a machine learning framework. https://pytorch.org |
Ubuntu OS | Canonical | N/A | Ubuntu 14.04 is the OS used by the authors and offers compatibility with all of the software frameworks and tools above. https://ubuntu.com |