Waiting
Login processing...

Trial ends in Request Full Access Tell Your Colleague About Jove
Click here for the English version

Engineering

רשתות עצביות עמוקות להערכת תזונה מבוססת תמונה

Published: March 13, 2021 doi: 10.3791/61906

Summary

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

Abstract

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

Introduction

הערכה תזונתית היא צעד מכריע בקביעת אזורים מעשיים בתזונת הפרט. עם זאת, ביצוע הערכה תזונתית באמצעות גישות ידניות מסורתיות קשור לעלויות ניכרות. גישות אלה נוטות גם לשגיאות מכיוון שהן מסתמכות לעתים קרובות על דיווח עצמי על ידי הפרט. הערכה תזונתית אוטומטית מטפלת בבעיות אלה על ידי מתן דרך פשוטה יותר לכמת ולהעפיל צריכת מזון. גישה כזו יכולה גם להקל על חלק מהטעויות הקיימות בגישות ידניות, כגון ארוחות שלא נענו, חוסר יכולת להעריך במדויק את נפח המזון וכו '. לכן, ישנם יתרונות ברורים לאוטומציה של הערכה תזונתית על ידי פיתוח פתרונות המזהים מזונות ומשקאות שונים לכמת את צריכת המזון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 מקבל תמונות של 512x512 פיקסלים כקלט (בניגוד לתמונות של 256x256 פיקסלים עבור 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.

Protocol

1. זיהוי תמונת מזון עם NutriNet

  1. השגת ערכת הנתונים של תמונת המזון
    1. אסוף רשימה של מזונות ומשקאות שונים שיהיו התפוקות של מודל זיהוי תמונת המזון. רשימה מגוונת של מזונות ומשקאות פופולריים עדיפה, שכן זה יאפשר הכשרה של מודל זיהוי תמונת מזון חזק.
    2. שמור את רשימת המזון והמשקאות בקובץ טקסט (למשל, 'txt' או 'csv').
      הערה: קובץ הטקסט המשמש את מחברי מאמר זה ניתן למצוא בקבצים המשלימים ('food_items.txt') וכולל רשימה של 520 פריטי מזון סלובניים.
    3. כתוב או הורד סקריפט פייתון43 המשתמש ב- API44 לחיפוש מותאם אישית של Google כדי להוריד תמונות של כל פריט מזון מהרשימה ושומר אותן בתיקיה נפרדת עבור כל פריט מזון.
      הערה: סקריפט פייתון בשימוש על ידי המחברים של מאמר זה ניתן למצוא את הקבצים משלימים ('download_images.py'). אם נעשה שימוש בקובץ Script זה, יש להחליף את מפתח המפתח (משתנה 'developerKey', שורה 8 בקוד הסקריפט של פייתון) ואת מזהה מנוע החיפוש המותאם אישית (משתנה 'cx', שורה 28 בקוד הסקריפט של פייתון) בערכים ספציפיים לחשבון Google הנמצא בשימוש.
    4. הפעל את סקריפט פייתון משלב 1.1.3 (למשל, עם הפקודה: 'פיתון download_images.py').
  2. (אופציונלי) לחצו על הלחצן 'קביעות' ניקוי ערכת הנתונים של תמונת המזון
    1. לאמן מודל זיהוי תמונת מזון באותו אופן כמו בסעיף 1.4, למעט להשתמש רק שתי יציאות (מזון, שאינם מזון) לעומת רשימת התפוקות משלב 1.1.1.
      הערה: המחברים של מאמר זה השתמשו בתמונות בשילוב מאתרי מתכונים ומערכות הנתונים ImageNet45 כדי לאמן את מודל זיהוי תמונות המזון. מכיוון שההתמקדות כאן היא בזיהוי תמונות מזון וזהו שלב אופציונלי לניקוי ערכת הנתונים של הזיהוי, פרטים נוספים מושמטים. במקום זאת, פרטים נוספים על גישה זו ניתן למצוא Mezgec ואח'2.
    2. הפעל את מודל הזיהוי משלב 1.2.1 בערכת הנתונים של תמונת המזון שהיא תוצאה של שלב 1.1.4.
    3. מחק כל תמונה שתויגה כלא מזון על-ידי מודל הזיהוי משלב 1.2.1.
    4. בדקו ידנית את ערכת הנתונים של תמונת המזון לקבלת תמונות שגויות או באיכות נמוכה אחרות, ולכפילויות תמונה.
    5. מחק תמונות שנמצאו בשלב 1.2.4.
  3. הגדלת ערכת הנתונים של תמונת המזון
    1. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי סיבובה ב- 90° באמצעות ספריית CLoDSA46 (שורות 19 עד 21 בסקריפט Python הכלול).
      הערה: ניתן למצוא את קובץ ה- Script של פייתון המכיל את כל פקודות CLoDSA המשמשות את מחברי מאמר זה בקובץ הכלול בקבצים המשלימים ('nutrinet_augmentation.py'). אם נעשה שימוש בקובץ Script זה, יש להחליף את נתיב הקלט (משתנה 'INPUT_PATH', שורה 8 בקוד ה- Script של פייתון) ואת נתיב הפלט (משתנה 'OUTPUT_PATH', שורה 11 בקוד ה- Script של פייתון) בנתיבים לתיקיות הרצויות.
    2. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי סיבובה ב- 180° באמצעות ספריית CLoDSA (שורות 19 עד 21 בסקריפט Python הכלול).
    3. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי סיבובה ב- 270° באמצעות ספריית CLoDSA (שורות 19 עד 21 בסקריפט Python הכלול).
    4. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי הפיכתה אופקית באמצעות ספריית CLoDSA (קווים 23 ו- 24 בסקריפט Python הכלול).
    5. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי הוספת רעש צבע אקראי אליה באמצעות ספריית CLoDSA (קווים 26 ו- 27 בסקריפט Python הכלול).
    6. צור גרסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי התקרבות אליה ב- 25% באמצעות ספריית CLoDSA (שורות 29 ו- 30 בתסריט Python הכלול).
    7. שמור תמונות משלבים 1.3.1-1.3.6, יחד עם התמונות המקוריות (קווים 16 ו-17 בתסריט Python הכלול), לתוך ערכת נתונים חדשה של תמונת מזון (בסך הכל, 7 גרסאות לתמונת מזון). פעולה זו מתבצעת על-ידי ביצוע הפקודה בשורה 32 של סקריפט פייתון הכלול.
  4. ביצוע זיהוי תמונת מזון
    1. יבא את ערכת הנתונים של תמונת המזון משלב 1.3.7 לסביבת NVIDIA DIGITS47, תוך חלוקת ערכת הנתונים לקבוצות משנה של הדרכה, אימות ובדיקה בממשק המשתמש NVIDIA DIGITS.
    2. העתק והדבק את טקסט ההגדרה של ארכיטקטורת NutriNet2 לתוך NVIDIA DIGITS כרשת מותאמת אישית.
      הערה: טקסט הגדרת הארכיטקטורה של NutriNet ניתן למצוא בקבצים המשלימים ('nutrinet.prototxt').
    3. (אופציונלי) לחצו על הלחצן 'קביעות' הגדר היפרפרמטרים של הדרכה בממשק המשתמש של NVIDIA DIGITS.
      הערה: Hyperparameters הם פרמטרים המשמשים להגדרת תהליך האימון לפני תחילתו. hyperparameters בשימוש על ידי המחברים של מאמר זה ניתן למצוא בקובץ הכלול בקבצים משלימים ('nutrinet_hyperparameters.prototxt'). בעוד שיש צורך בניסויים עבור כל ערכת נתונים כדי למצוא את ההיפר-פרמטרים האופטימליים, הקובץ מכיל תצורת היפרפרמטר שניתן להעתיק לממשק המשתמש NVIDIA DIGITS. יתר על כן, NVIDIA DIGITS מאכלס את hyperparameters עם ערכי ברירת מחדל אשר ניתן להשתמש בהם כבסיס. לפיכך, שלב זה הוא אופציונלי.
    4. הפעל את האימונים של מודל NutriNet.
    5. לאחר סיום האימון, קחו את איטרציה מודל NutriNet בעל הביצועים הטובים ביותר. מודל זה משמש לאחר מכן לבדיקת הביצועים של גישה זו.
      הערה: קיימות מספר דרכים לקביעת איטרציה של הדגם בעל הביצועים הטובים ביותר. דרך פשוטה לעשות זאת היא כדלקמן. NVIDIA DIGITS מפיק גרף של מידות דיוק עבור כל עידן אימונים. בדוק איזו תקופה השיגה את ערך ההפסד הנמוך ביותר עבור קבוצת המשנה של האימות של ערכת הנתונים של תמונת המזון - איטרציה של מודל זה יכולה להיחשב לביצועים הטובים ביותר. שלב אופציונלי בקביעת איטרציה המודל בעל הביצועים הטובים ביותר הוא לבחון כיצד ערך ההפסד עבור קבוצת המשנה של האימון משתנה מעידן לתקופה ואם הוא מתחיל לרדת ברציפות בעוד ערך ההפסד עבור קבוצת המשנה של האימות נשאר זהה או עולה ברציפות, לקחת את התקופה לפני ירידה זו בערך אובדן אימון, כמו זה יכול לאותת כאשר המודל התחיל להתאמן יתר על המידה על תמונות האימון.

2. פילוח תמונת מזון עם FCNs

  1. השגת ערכת הנתונים של תמונת המזון המזויף
    1. השג ערכת נתונים של תמונות מזויפות של מזון. תמונות מזון מזויף נאספות על ידי חוקרים שערכו מחקרים התנהגותיים באמצעות העתקי מזון.
      הערה: המחברים של מאמר זה קיבלו תמונות של מזון מזויף שנאספו בסביבת מעבדה18.
    2. באופן ידני להוסיף ביאורים לכל תמונת מזון ברמת פיקסל - כל פיקסל בתמונה חייב להכיל מידע על מחלקת המזון שאליה הוא שייך. התוצאה של שלב זה היא תמונת ביאור אחת לכל תמונה מערכת הנתונים של תמונת המזון, שבה כל פיקסל מייצג את אחת ממחלדות המזון.
      הערה: ישנם כלים רבים כדי להשיג זאת - המחברים של מאמר זה השתמשו JavaScript קטע ביאור48.
  2. הגדלת ערכת הנתונים של תמונת המזון המזויף
    1. בצע את אותם שלבים כמו בסעיף 1.3, אך רק בתמונות מתת-קבוצת האימון של ערכת הנתונים של תמונת המזון.
      הערה: למעט שלב 1.3.5, יש לבצע את כל שלבי הגדלת הנתונים גם בתמונות ביאור תואמות. אם נעשה שימוש בקובץ ה- Script ממקטע 1.3, יש להחליף את נתיב הקלט (משתנה 'INPUT_PATH', שורה 8 בקוד ה- Script של פייתון43) ואת נתיב הפלט (משתנה 'OUTPUT_PATH', שורה 11 בקוד ה- Script של פייתון) בנתיבים לתיקיות הרצויות. בנוסף, הגדר את הבעיה (משתנה 'בעיה', שורה 6 בקוד ה- Script של פייתון) כ' instance_segmentation' ואת מצב ביאור (משתנה 'ANNOTATION_MODE', שורה 7 בקוד ה- Script של פייתון) ואת מצב פלט (משתנה 'OUTPUT_MODE', שורה 10 בקוד הסקריפט של פייתון) ל' קוקו'.
  3. ביצוע פילוח תמונות של מזון מזויף
    1. בצע את אותם שלבים כמו בסעיף 1.4, למעט שלב 1.4.2. במקום שלב זה, בצע את שלבים 2.3.2 ו- 2.3.3.
      הערה: Hyperparameters הם פרמטרים המשמשים להגדרת תהליך האימון לפני תחילתו. hyperparameters אימון בשימוש על ידי המחברים של מאמר זה עבור השלב האופציונלי 1.4.3 ניתן למצוא בקובץ הכלול בקבצים משלימים ('fcn-8s_hyperparameters.prototxt'). בעוד שיש צורך בניסויים עבור כל ערכת נתונים כדי למצוא את הקבוצה האופטימלית של hyperparameters, הקובץ מכיל תצורת hyperparameter אשר ניתן להעתיק לתוך ממשק המשתמש NVIDIA DIGITS47. יתר על כן, NVIDIA DIGITS מאכלס את hyperparameters עם ערכי ברירת מחדל אשר ניתן להשתמש בהם כבסיס.
    2. העתק והדבק את טקסט ההגדרה של ארכיטקטורת FCN-8s15 לסביבת NVIDIA DIGITS כרשת מותאמת אישית.
      הערה: טקסט הגדרת הארכיטקטורה FCN-8s זמין לציבור ב- GitHub49.
    3. הזן את הנתיב למשקולות מודל FCN-8s שהוכשרו מראש לממשק המשתמש NVIDIA DIGITS.
      הערה: משקולות מודל אלה הוכשרו מראש על ערכת הנתונים PASCAL VOC17 וניתן למצוא באינטרנט49.

3. פילוח תמונת מזון עם HTC ResNet

  1. השגת ערכת הנתונים של תמונת המזון
    1. הורד את ערכת הנתונים של תמונת המזון מאתר האינטרנט של FRC19.
  2. הגדלת ערכת הנתונים של תמונת המזון
    1. בצע שלבים 1.3.1-1.3.4.
      הערה: ניתן למצוא את הסקריפט Python43 המכיל את כל פקודות CLoDSA46 המשמשות את מחברי מאמר זה בקובץ הכלול בקבצים המשלימים ('frc_augmentation.py'). אם נעשה שימוש בקובץ Script זה, יש להחליף את נתיב הקלט (משתנה 'INPUT_PATH', שורה 8 בקוד ה- Script של פייתון) ואת נתיב הפלט (משתנה 'OUTPUT_PATH', שורה 11 בקוד ה- Script של פייתון) בנתיבים לתיקיות הרצויות.
    2. צור גרסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי הוספת טשטוש גאוסיאני אליה באמצעות ספריית CLoDSA (שורות 26 ו- 27 בתסריט Python הכלול).
    3. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי חידודה באמצעות ספריית CLoDSA (שורות 29 ו- 30 בתסריט Python הכלול).
    4. צור גירסה חדשה של כל תמונה מתוך ערכת הנתונים של תמונת המזון על-ידי החלת תיקון גמא עליה באמצעות ספריית CLoDSA (שורות 32 ו- 33 בסקריפט Python הכלול).
    5. שמור תמונות משלבים 3.2.1-3.2.4, יחד עם התמונות המקוריות (קווים 16 ו -17 בתסריט פייתון הכלול), לתוך ערכת נתונים חדשה של תמונת מזון (בסך הכל, 8 גרסאות לכל תמונת מזון). פעולה זו מתבצעת על-ידי ביצוע הפקודה בשורה 35 של כתב פייתון הכלול.
    6. שמור תמונות משלבים 3.2.2-3.2.4, יחד עם התמונות המקוריות (קווים 16 ו-17 בתסריט Python הכלול), לתוך ערכת נתונים חדשה של תמונת מזון (בסך הכל, 4 גרסאות לתמונת מזון). הדבר נעשה על ידי מחיקת שורות 19 עד 24 של סקריפט פייתון הכלול וביצוע הפקודה בשורה 35.
  3. ביצוע פילוח תמונת מזון
    1. שנה את ההגדרה הקיימת של ארכיטקטורת HTC20 ResNet-10116 מספריית MMDetection50 במקטעים 'הגדרות מודל' ו'הגדרות ערכת נתונים' של קובץ הגדרת הארכיטקטורה כך שיקבל את ערכות הנתונים של תמונת המזון משלבים 3.1.1, 3.2.5 ו- 3.2.6.
    2. (אופציונלי) לחצו על הלחצן 'קביעות' שנה את הגדרת הארכיטקטורה HTC ResNet-101 משלב 3.3.1 כדי להגדיר hyperparameters אימון: גודל אצווה בסעיף 'הגדרות ערכת נתונים', סוג פותר ושיעור למידה בסעיף 'ממטב', מדיניות למידה בסעיף 'מדיניות למידה' ומספר עידני הדרכה בסעיף 'הגדרות זמן ריצה' של קובץ הגדרת הארכיטקטורה.
      הערה: קובץ הגדרת הארכיטקטורה HTC ResNet-101 שהשתנה נמצא בקבצים המשלימים ('htc_resnet-101.py'). Hyperparameters הם פרמטרים המשמשים להגדרת תהליך האימון לפני תחילתו. בעוד שיש צורך בניסויים עבור כל ערכת נתונים כדי למצוא את הקבוצה האופטימלית של hyperparameters, הקובץ כבר מכיל תצורת hyperparameter אשר ניתן להשתמש בהם ללא שינוי. לפיכך, שלב זה הוא אופציונלי.
    3. הפעל את האימון של דגם HTC ResNet-101 על ערכת הנתונים של תמונת המזון משלב 3.1.1 באמצעות ספריית MMDetection (למשל, עם הפקודה: 'פיתון mmdetection / כלים / רכבת.py htc_resnet-101.py").).
    4. לאחר השלמת האימון משלב 3.3.3, קח את איטרציה מודל HTC ResNet-101 בעל הביצועים הטובים ביותר וכוונן אותו על-ידי הפעלת השלב הבא של האימון על ערכת הנתונים של תמונת המזון משלב 3.2.5.
      הערה: קיימות מספר דרכים לקביעת איטרציה של הדגם בעל הביצועים הטובים ביותר. דרך פשוטה לעשות זאת היא כדלקמן. ספריית MMDetection מפיקה ערכים של מידות דיוק עבור כל עידן אימון בממשק שורת הפקודה. בדוק איזו תקופה השיגה את ערך ההפסד הנמוך ביותר עבור קבוצת המשנה של האימות של ערכת הנתונים של תמונת המזון - איטרציה של מודל זה יכולה להיחשב לביצועים הטובים ביותר. שלב אופציונלי בקביעת איטרציה המודל בעל הביצועים הטובים ביותר הוא לבחון כיצד ערך ההפסד עבור קבוצת המשנה של האימון משתנה מעידן לתקופה ואם הוא מתחיל לרדת ברציפות בעוד ערך ההפסד עבור קבוצת המשנה של האימות נשאר זהה או עולה ברציפות, לקחת את התקופה לפני ירידה זו בערך אובדן אימון, כמו זה יכול לאותת כאשר המודל התחיל להתאמן יתר על המידה על תמונות האימון.
    5. לאחר השלמת האימון משלב 3.3.4, בצע את איטראציה מודל HTC ResNet-101 בעל הביצועים הטובים ביותר וכוונן אותו על-ידי הפעלת השלב הבא של האימון על ערכת הנתונים של תמונת המזון משלב 3.2.6.
      הערה: ראה הערה לשלב 3.3.4.
    6. לאחר האימון משלב 3.3.5 הושלם, לקחת את איטרציה מודל HTC ResNet-101 ביצועים הטובים ביותר ולכוונן אותו על ידי הפעלת השלב הבא של אימון על ערכת הנתונים תמונת מזון משלב 3.2.5.
      הערה: ראה הערה לשלב 3.3.4.
    7. לאחר השלמת האימון משלב 3.3.6, בצע את איטראציה מודל HTC ResNet-101 בעל הביצועים הטובים ביותר. מודל זה משמש לאחר מכן לבדיקת הביצועים של גישה זו.
      הערה: ראה הערה לשלב 3.3.4. שלבים 3.3.3-3.3.7 הניבו את התוצאות הטובות ביותר למטרות שהוגדרו על-ידי מחברי מאמר זה. יש צורך בניסויים עבור כל ערכת נתונים כדי למצוא את הרצף האופטימלי של שלבי אימון והגדלת נתונים.

Representative Results

NutriNet נבדק מול שלוש ארכיטקטורות למידה עמוקה פופולריות של אותה תקופה: AlexNet14, GoogLeNet51 ו- ResNet16. כמו כן נבדקו פרמטרי אימון מרובים עבור כל הארכיטקטורות כדי להגדיר את הערכים האופטימליים2. בין אלה היא הבחירה של סוג פותר, אשר קובע כיצד פונקציית ההפסד ממוזער. פונקציה זו היא מדד האיכות העיקרי לאימון רשתות עצביות מכיוון שהיא מתאימה יותר לאופטימיזציה במהלך האימון מאשר לדיוק הסיווג. בדקנו שלושה פותרים: ירידה הדרגתית סטוכסית (SGD)52, שיפוע מואץ של נסטרוב (NAG)53 ואלגוריתם הדרגתי אדפטיבי (AdaGrad)54. הפרמטר השני הוא גודל אצווה, המגדיר את מספר התמונות המעובדות בו-זמנית. עומק ארכיטקטורת הלמידה העמוקה קבע את הערך של פרמטר זה, שכן ארכיטקטורות עמוקות יותר דורשות יותר מקום בזיכרון המעבד הגרפי - התוצאה של גישה זו הייתה שהזיכרון היה מלא לחלוטין בתמונות לכל הארכיטקטורות, ללא קשר לעומק. הפרמטר השלישי הוא קצב למידה, המגדיר את המהירות שבה הפרמטרים של הרשת העצבית משתנים במהלך האימון. פרמטר זה הוגדר יחד עם גודל האצווה, מכיוון שמספר התמונות המעובדות בו-זמנית מכתיב את קצב ההתכנסות. דגמי AlexNet הוכשרו באמצעות גודל אצווה של 256 תמונות וקצב למידה בסיסי של 0.02; NutriNet השתמש בגודל אצווה של 128 תמונות וקצב של 0.01; GoogLeNet 64 תמונות וקצב של 0.005; ותמונות ResNet 16 וקצב של 0.00125. שלושה פרמטרים נוספים תוקנו עבור כל הארכיטקטורות: מדיניות קצב למידה (צעד למטה), גודל צעד (30%) וגמא (0.1). פרמטרים אלה מתארים במשותף כיצד קצב הלמידה משתנה בכל תקופה. הרעיון מאחורי גישה זו הוא כי קצב הלמידה הוא להיות בהדרגה הוריד כדי לכוונן את המודל ככל שהוא מתקרב לערך ההפסד האופטימלי. לבסוף, מספר עידנים אימונים היה גם קבוע 150 עבור כל ארכיטקטורות למידה עמוקה2.

התוצאה הטובה ביותר מבין כל הפרמטרים שנבדקו על ידי NutriNet הייתה דיוק סיווג של 86.72% בערכת נתוני הזיהוי, שהייתה גבוהה בכ-2% מהתוצאה הטובה ביותר עבור AlexNet ומעט גבוהה יותר מהתוצאה הטובה ביותר של GoogLeNet. הארכיטקטורה בעלת הביצועים הטובים ביותר בסך הכל הייתה ResNet (בסביבות 1%), אולם זמן האימון עבור ResNet גבוה משמעותית בהשוואה ל- NutriNet (בפקטור של כחמישה), וזה חשוב אם הדגמים מאומנים מחדש ללא הרף כדי לשפר את הדיוק ואת מספר פריטי המזון המוכרים. NutriNet, AlexNet ו- GoogLeNet השיגו את התוצאות הטובות ביותר שלהם באמצעות פותר AdaGrad, ואילו הדגם הטוב ביותר של ResNet השתמש בפותר NAG. NutriNet נבדק גם על ערכת נתוני תמונת מזון UNIMIB2016 הזמינים לציבור38. ערכת נתונים זו מכילה 3,616 תמונות של 73 פריטי מזון שונים. NutriNet השיגה דיוק זיהוי של 86.39% בערכת נתונים זו, מעט יותר מתוצאת הזיהוי הבסיסי של מחברי ערכת הנתונים, שהייתה 85.80%. בנוסף, NutriNet נבדק על ערכת נתונים קטנה של 200 תמונות בעולם האמיתי של 115 פריטי מזון ומשקאות שונים, שם NutriNet השיג דיוק העליון 5 של 55%.

כדי לאמן את מודל פילוח תמונות המזון המזויף FCN-8s, השתמשנו באדם55 כסוג פותר, כפי שמצאנו כי הוא ביצע בצורה אופטימלית עבור משימה זו. קצב הלמידה הבסיסי נקבע נמוך מאוד - ל-0.0001. הסיבה למספר הנמוך היא העובדה שניתן לעבד רק תמונה אחת בכל פעם, שהיא תוצאה של תהליך הסיווג ברמת הפיקסל. דרישות הזיכרון של המעבד הגרפי עבור גישה זו גדולות משמעותית מסיווג ברמת התמונה. לפיכך היה קשה לקבוע את קצב הלמידה נמוך כך שהפרמטרים לא ישתנו מהר מדי ולהתכנס לערכים פחות אופטימליים. מספר עידני האימונים הוגדר ל-100, בעוד שמדיניות קצב הלמידה, גודל הצעדים וגמא הוגדרו כצעדים למטה, 34% ו-0.1, בהתאמה, שכן פרמטרים אלה יצרו את הדגמים המדויקים ביותר.

מדידות דיוק של מודל FCN-8s בוצעו באמצעות מדד דיוקהפיקסלים 15, אשר מקביל לדיוק הסיווג של רשתות למידה עמוקה מסורתיות, ההבדל העיקרי הוא שהדיוק מחושב ברמת הפיקסל במקום ברמת התמונה:

Equation 1

כאשר PA הוא מדד דיוק הפיקסלים, nij הוא מספר הפיקסלים ממחלקה שחזיתי להשתייך למחלקה j ו- t i = Σj nij הוא המספר הכולל של פיקסלים מהכיתה בתוויות האמתהקרקעית 1. במילים אחרות, מידת הדיוק של הפיקסלים מחושבת על-ידי חלוקת פיקסלים שחזו נכון במספר הפיקסלים הכולל. הדיוק הסופי של דגם FCN-8s המאומן היה 92.18%. איור 2 מציג שלוש תמונות לדוגמה מתוך ערכת הנתונים של תמונת המזון המזויף (אחת מכל אחת מערכות המשנה של הדרכה, אימות ובדיקה), יחד עם תוויות החיזוי המתאימות של האמת הקרקעית והמודל.

הפרמטרים לאמן את דגם HTC20 ResNet-101 עבור פילוח תמונת מזון הוגדרו כדלקמן: סוג פותר בשימוש היה SGD כי זה ביצועים טובים יותר סוגים אחרים של פותר. קצב הלמידה הבסיסי הוגדר כ- 0.00125 וגודל האצווה ל- 2 תמונות. מספר תקופות האימון נקבע על 40 לכל שלב אימון, ובוצעו שלבי אימון מרובים - תחילה בערכת הנתונים המקורית של FRC ללא תמונות מוגברות, ולאחר מכן בערכת הנתונים FRC בעלת 8x augmented ו- 4x augmented מספר פעמים באופן לסירוגין, בכל פעם לוקח את הדגם בעל הביצועים הטובים ביותר וכוונן אותו עדין בשלב האימון הבא. פרטים נוספים על שלבי האימון ניתן למצוא בסעיף 3.3 של טקסט הפרוטוקול. לבסוף, נעשה שימוש במדיניות הלמידה החורגת, עם עידנים קבועים שבהם שיעור הלמידה ירד (עידנים 28 ו -35 לשלב האימון הראשון). דבר חשוב לציין הוא כי בעוד רצף זה של שלבי אימון הפיק את התוצאות הטובות ביותר בבדיקות שלנו בהיקף של FRC, באמצעות ערכת נתונים אחרת עשוי לדרוש רצף שונה כדי לייצר תוצאות אופטימליות.

פתרון מבוסס ResNet זה עבור פילוח תמונת מזון הוערך באמצעות מדד הדיוק הבא19:

Equation 2

כאשר P הוא דיוק, TP הוא מספר התחזיות החיוביות האמיתיות על ידי מודל פילוח תמונת המזון, FP הוא מספר התחזיות החיוביות הכוזבות ו- IoU הוא Intersection over Union, המחושב עם משוואה זו:

Equation 3

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

Equation 4

כאשר R הוא אחזור ו- FN הוא מספר התחזיות השליליות הכוזבות על-ידי מודל פילוח תמונת המזון. מדדי הדיוק וההיזכרות הם ממוצעים בכל המעמדות באמת הקרקעית. באמצעות אמצעים אלה, המודל שלנו השיג דיוק ממוצע של 59.2% והחזרה ממוצעת של 82.1%, שדורגה במקום השני בסיבוב השני של אתגר זיהוי המזון19. תוצאה זו הייתה 4.2% מאחורי המקום הראשון ו-5.3% לפני המקום השלישי מבחינת מדד הדיוק הממוצע. טבלה 1 מכילה את התוצאות עבור 4 המשתתפים המובילים בתחרות.

Figure 1
איור 1: תרשים של ארכיטקטורת הרשת העצבית העמוקה של NutriNet. נתון זה פורסם ב-Mezgec ואח'2. לחץ כאן כדי להציג גירסה גדולה יותר של איור זה.

Figure 2
איור 2: תמונות מתוך ערכת הנתונים של תמונת המזון המזויף. תמונות מקוריות (משמאל), תוויות האמת הקרקעית (באמצע) עם תווית ידנית ותחזיות ממודל FCN-8s (מימין). נתון זה פורסם ב-Mezgec ואח'1. לחץ כאן כדי להציג גירסה גדולה יותר של איור זה.

שם צוות מיקום דיוק ממוצע אחזור ממוצע
rssfete 1 63.4% 88.6%
simon_mezgec 2 59.2% 82.1%
ארימבו 3 53.9% 73.5%
סמוי 4 48.7% 71.1%

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

קבצים משלימים. אנא לחץ כאן כדי להוריד קובץ זה.

Discussion

בשנים האחרונות, רשתות עצביות עמוקות אומתו מספר פעמים כפתרון מתאים לזיהוי תמונות מזון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, אבל עבודה נוספת צריכה להיעשות כדי לאמת גישה זו על תמונות מזון מכל רחבי העולם בשיתוף עם דיאטנים.

Disclosures

למחברים אין מה לחשוף.

Acknowledgments

המחברים רוצים להודות לתמרה בוכר מאוניברסיטת ניוקאסל, אוסטרליה, על שסיפקה את ערכת הנתונים של תמונות המזון המזויפות. עבודה זו נתמכה על ידי תוכניות המחקר והחדשנות Horizon 2020 של האיחוד האירופי (מספרי מענק 863059 - FNS-Cloud, 769661 - SAAM); וסוכנות המחקר הסלובנית (מענק מספר P2-0098). לאיחוד האירופי ולסוכנות המחקר הסלובנית לא היה תפקיד בעיצוב, בניתוח או בכתיבה של מאמר זה.

Materials

Name Company Catalog Number Comments
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 Google 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

DOWNLOAD MATERIALS LIST

References

  1. Mezgec, S., Eftimov, T., Bucher, T., Koroušić Seljak, B. Mixed Deep Learning and Natural Language Processing Method for Fake-Food Image Recognition and Standardization to Help Automated Dietary Assessment. Public Health Nutrition. 22 (7), 1193-1202 (2019).
  2. Mezgec, S., Koroušić Seljak, B. NutriNet: A Deep Learning Food and Drink Image Recognition System for Dietary Assessment. Nutrients. 9 (7), 657 (2017).
  3. Chen, M., et al. PFID: Pittsburgh Fast-Food Image Dataset. Proceedings of the ICIP 2009. , 289-292 (2009).
  4. Joutou, T., Yanai, K. A Food Image Recognition System with Multiple Kernel Learning. Proceedings of the ICIP 2009. , 285-288 (2009).
  5. Yang, S., Chen, M., Pomerlau, D., Sukthankar, R. Food Recognition using Statistics of Pairwise Local Features. Proceedings of the CVPR 2010. , 2249-2256 (2010).
  6. Anthimopoulos, M. M., Gianola, L., Scarnato, L., Diem, P., Mougiakakou, S. G. A Food Recognition System for Diabetic Patients Based on an Optimized Bag-of-Features Model. IEEE Journal of Biomedical and Health Informatics. 18 (4), 1261-1271 (2014).
  7. LeCun, Y., Bengio, Y., Hinton, G. Deep Learning. Nature. 521, 436-444 (2015).
  8. Deng, L., Yu, D. Deep Learning: Methods and Applications. Foundations and Trends in Signal Processing. 7 (3-4), 197 (2014).
  9. Hubel, D. H., Wiesel, T. N. Receptive Fields, Binocular Interaction and Functional Architecture in the Cat's Visual Cortex. The Journal of Physiology. 160 (1), 106-154 (1962).
  10. Singla, A., Yuan, L., Ebrahimi, T. Food/Non-Food Image Classification and Food Categorization using Pre-Trained GoogLeNet Model. Proceedings of the MADiMa'16. , 3-11 (2016).
  11. Yanai, K., Kawano, Y. Food Image Recognition using Deep Convolutional Network with Pre-Training and Fine-Tuning. Proceedings of the ICMEW 2015. , 1-6 (2015).
  12. Liu, C., et al. DeepFood: Deep Learning-Based Food Image Recognition for Computer-Aided Dietary Assessment. Proceedings of the ICOST 2016. , 37-48 (2016).
  13. De Sousa Ribeiro, F., et al. An End-to-End Deep Neural Architecture for Optical Character Verification and Recognition in Retail Food Packaging. Proceedings of the ICIP 2018. , 2376-2380 (2018).
  14. Krizhevsky, A., Sutskever, I., Hinton, G. ImageNet Classification with Deep Convolutional Neural Networks. Proceedings of the NIPS'12. , 1097-1105 (2012).
  15. Long, J., Shelhamer, E., Darrell, T. Fully Convolutional Networks for Semantic Segmentation. Proceedings of the CVPR 2015. , 3431-3440 (2015).
  16. He, K., Zhang, X., Ren, S., Sun, J. Deep Residual Learning for Image Recognition. Proceedings of the CVPR 2016. , 770-778 (2016).
  17. PASCAL VOC Project. PASCAL Visual Object Classes. , Available from: http://host.robots.ox.ac.uk/pascal/VOC (2020).
  18. Bucher, T., vander Horst, K., Siegrist, M. Fruit for Dessert. How People Compose Healthier Meals. Appetite. 60 (1), 74-80 (2013).
  19. Food Recognition Challenge. AICrowd. , Available from: https://www.aicrowd.com/challenges/food-recognition-challenge (2020).
  20. Chen, K., et al. Hybrid Task Cascade for Instance Segmentation. Proceedings of the CVPR 2019. , 4974-4983 (2019).
  21. Kawano, Y., Yanai, K. Food Image Recognition with Deep Convolutional Features. Proceedings of the UbiComp 2014. , 589-593 (2014).
  22. Matsuda, Y., Hoashi, H., Yanai, K. Recognition of Multiple-Food Images by Detecting Candidate Regions. Proceedings of the ICME 2012. , 25-30 (2012).
  23. Christodoulidis, S., Anthimopoulos, M. M., Mougiakakou, S. G. Food Recognition for Dietary Assessment using Deep Convolutional Neural Networks. Proceedings of the ICIAP 2015. , 458-465 (2015).
  24. Tanno, R., Okamoto, K., Yanai, K. DeepFoodCam: A DCNN-Based Real-Time Mobile Food Recognition System. Proceedings of the MADiMa'16. , 89-89 (2016).
  25. Liu, C., et al. A New Deep Learning-Based Food Recognition System for Dietary Assessment on An Edge Computing Service Infrastructure. IEEE Transactions on Services Computing. 11 (2), 249-261 (2017).
  26. Martinel, N., Foresti, G. L., Micheloni, C. Wide-Slice Residual Networks for Food Recognition. Proceedings of the IEEE WACV 2018. , 567-576 (2018).
  27. Bossard, L., Guillaumin, M., Van Gool, L. Food-101-Mining Discriminative Components with Random Forests. Proceedings of the ECCV'14. , 446-461 (2014).
  28. Zhou, L., Zhang, C., Liu, F., Qiu, Z., He, Y. Application of Deep Learning in Food: A Review. Comprehensive Reviews in Food Science and Food Safety. 18, 1793-1811 (2019).
  29. Zhao, H., Yap, K. -H., Kot, A. C., Duan, L. JDNet: A Joint-Learning Distilled Network for Mobile Visual Food Recognition. IEEE Journal of Selected Topics in Signal Processing. 14 (4), 665-675 (2020).
  30. Kawano, Y., Yanai, K. Automatic Expansion of a Food Image Dataset Leveraging Existing Categories with Domain Adaptation. Proceedings of the ECCV'14. , 3-17 (2014).
  31. Hafiz, R., Haque, M. R., Rakshit, A., Uddin, M. S. Image-Based Soft Drink Type Classification and Dietary Assessment System using Deep Convolutional Neural Network with Transfer Learning. Journal of King Saud University - Computer and Information Sciences. , (2020).
  32. Shimoda, W., Yanai, K. Weakly-Supervised Plate and Food Region Segmentation. Proceedings of the ICME 2020. , 1-6 (2020).
  33. Ciocca, G., Micali, G., Napoletano, P. State Recognition of Food Images using Deep Features. IEEE Access. 8, 32003-32017 (2020).
  34. Knez, S., Šajn, L. Food Object Recognition using a Mobile Device: Evaluation of Currently Implemented Systems. Trends in Food Science & Technology. 99, 460-471 (2020).
  35. Furtado, P., Caldeira, M., Martins, P. Human Visual System vs Convolution Neural Networks in Food Recognition Task: An Empirical Comparison. Computer Vision and Image Understanding. 191, 102878 (2020).
  36. Chen, M. -Y., et al. Automatic Chinese Food Identification and Quantity Estimation. SA'12 Technical Briefs. , 1-4 (2012).
  37. Chen, J., Ngo, C. -W. Deep-Based Ingredient Recognition for Cooking Recipe Retrieval. Proceedings of the MM'16. , 32-41 (2016).
  38. Ciocca, G., Napoletano, P., Schettini, R. Food Recognition: A New Dataset, Experiments, and Results. IEEE Journal of Biomedical and Health Informatics. 21 (3), 588-598 (2017).
  39. Salvador, A., et al. Learning Cross-Modal Embeddings for Cooking Recipes and Food Images. Proceedings of the IEEE CVPR 2017. , 3020-3028 (2017).
  40. Ciocca, G., Napoletano, P., Schettini, R. CNN-Based Features for Retrieval and Classification of Food Images. Computer Vision and Image Understanding. 176-177, 70-77 (2018).
  41. Cai, Q., Li, J., Li, H., Weng, Y. BTBUFood-60: Dataset for Object Detection in Food Field. Proceedings of the IEEE BigComp 2019. , 1-4 (2019).
  42. Min, W., et al. ISIA Food-500: A Dataset for Large-Scale Food Recognition via Stacked Global-Local Attention Network. Proceedings of the MM'20. , 393-401 (2020).
  43. Python Software Foundation. Python. , Available from: https://www.python.org (2020).
  44. Google Custom Search API. Google. , Available from: https://developers.google.com/resources/api-libraries/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html (2020).
  45. Stanford Vision Lab. ImageNet. , Available from: http://www.image-net.org (2020).
  46. Heras, J. CLoDSA. , Available from: https://github.com/joheras/CLoDSA (2020).
  47. NVIDIA DIGITS. NVIDIA. , Available from: https://developer.nvidia.com/digits (2020).
  48. Yamaguchi, K. JavaScript Segment Annotator. , Available from: https://github.com/kyamagu/js-segment-annotator (2020).
  49. Shelhamer, E. Fully Convolutional Networks for Semantic Segmentation. , Available from: https://github.com/shelhamer/fcn.berkeleyvision.org (2020).
  50. Multimedia Laboratory, CUHK. MMDetection. , Available from: https://github.com/open-mmlab/mmdetection (2020).
  51. Szegedy, C., et al. Going Deeper with Convolutions. Proceedings of the CVPR 2015. , 1-9 (2015).
  52. Bottou, L. Large-Scale Machine Learning with Stochastic Gradient Descent. Proceedings of the COMPSTAT'2010. , 177-186 (2010).
  53. Nesterov, Y. A Method of Solving a Convex Programming Problem with Convergence Rate O(1/k2). Doklady Akademii Nauk SSSR. 27, 372-376 (1983).
  54. Duchi, J., Hazan, E., Singer, Y. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine Learning Research. 12, 2121-2159 (2011).
  55. Kingma, D. P., Ba, J. Adam: A Method for Stochastic Optimization. arXiv Preprint. , (2017).

Tags

הנדסה גיליון 169 זיהוי תמונת מזון פילוח תמונת מזון רשתות עצביות עמוקות למידה עמוקה רשתות עצביות קונבולוציה הערכה תזונתית
רשתות עצביות עמוקות להערכת תזונה מבוססת תמונה
Play Video
PDF DOI DOWNLOAD MATERIALS LIST

Cite this Article

Mezgec, S., KoroušićMore

Mezgec, S., Koroušić Seljak, B. Deep Neural Networks for Image-Based Dietary Assessment. J. Vis. Exp. (169), e61906, doi:10.3791/61906 (2021).

Less
Copy Citation Download Citation Reprints and Permissions
View Video

Get cutting-edge science videos from JoVE sent straight to your inbox every month.

Waiting X
Simple Hit Counter