I've just created a new model based on EfficientNetB1-Lite (the TensorFlow JS version) that now powers Nutrify and published it to the Nutrify homepage.
In short, Nutrify can now identify 100 total foods (previous was 78).
The performance for each class varies quite a bit. But this will be upgraded in future models.
Next
Now we're up to 100 foods, the next step will be making the current model better (better data) and adding metadata to the website rather than just identifying the class of a food.
In essence, the next few updates will focus on making the current system better rather than adding more foods.
So the current list of foods will likely remain fixed for the next month or so.
App updates (to come)
- Add metadata (such as calories, protein, fat etc) for the first 100 foods (see list below) and make it display when a particular food is identified.
- Add a model cascade for identifying food/not food (Nutrify should recognize a photo of food or not).
- Display the top X (maybe 3?) predictions that can be clicked on and used.
Modelling updates (to come)
- Make training reproducible.
- Make data traceable, e.g. what data is used where?
- Have training and evaluation take place with results (e.g. acc, precision, recall per class)
Updates
The previous Nutrify model could identify the following 78 foods.
Note: If there's more than one food in an image, Nutrify still only identifies one class, this will change with future models.
# Previous 78 Foods Nutrify could classify
['Apple',
'Artichoke',
'BBQ sauce',
'Bacon',
'Bagel',
'Banana',
'Beef',
'Beer',
'Blueberries',
'Bread',
'Broccoli',
'Butter',
'Cabbage',
'Candy',
'Cantaloupe',
'Carrot',
'Cheese',
'Chicken',
'Chicken wings',
'Cocktail',
'Coconut',
'Coffee',
'Cookie',
'Corn chips',
'Cream',
'Cucumber',
'Doughnut',
'Egg',
'Fish',
'Fries',
'Grape',
'Guacamole',
'Hamburger',
'Honey',
'Ice cream',
'Lemon',
'Lime',
'Lobster',
'Mango',
'Milk',
'Muffin',
'Mushroom',
'Olive oil',
'Olives',
'Onion',
'Orange',
'Orange juice',
'Pancake',
'Pasta',
'Pastry',
'Pear',
'Pepper',
'Pineapple',
'Pizza',
'Pomegranate',
'Popcorn',
'Potato',
'Prawns',
'Pretzel',
'Pumpkin',
'Radish',
'Rice',
'Salad',
'Salt',
'Sandwich',
'Sausages',
'Soft drink',
'Spinach',
'Squid',
'Strawberries',
'Sushi',
'Tea',
'Tomato',
'Tomato sauce',
'Waffle',
'Watermelon',
'Wine',
'Zucchini']
Note: Squid and Chicken classes were removed from the above list (the Squid data was poor and Chicken as a class images are of actual chickens rather than chicken as a food).
And now with the addition of 24 more foods:
# 24 added foods to Nutrify
['Avocado',
'Cherry',
'Dumpling',
'Egg tart',
'Eggplant',
'French fries',
'Garlic',
'Grapefruit',
'Green beans',
'Green onion',
'Hamimelon',
'Kiwi fruit',
'Lettuce',
'Meat ball',
'Noodles',
'Nuts',
'Okra',
'Papaya',
'Peach',
'Pie',
'Plum',
'Red cabbage',
'Spring rolls',
'Steak']
This brings the total to 100 identifiable foods (1000 is the goal for the end of the 2022).
# All current foods Nutrify can identify
{0: 'Apple',
1: 'Artichoke',
2: 'Avocado',
3: 'BBQ sauce',
4: 'Bacon',
5: 'Bagel',
6: 'Banana',
7: 'Beef',
8: 'Beer',
9: 'Blueberries',
10: 'Bread',
11: 'Broccoli',
12: 'Butter',
13: 'Cabbage',
14: 'Candy',
15: 'Cantaloupe',
16: 'Carrot',
17: 'Cheese',
18: 'Cherry',
19: 'Chicken wings',
20: 'Cocktail',
21: 'Coconut',
22: 'Coffee',
23: 'Cookie',
24: 'Corn chips',
25: 'Cream',
26: 'Cucumber',
27: 'Doughnut',
28: 'Dumpling',
29: 'Egg',
30: 'Egg tart',
31: 'Eggplant',
32: 'Fish',
33: 'French fries',
34: 'Fries',
35: 'Garlic',
36: 'Grape',
37: 'Grapefruit',
38: 'Green beans',
39: 'Green onion',
40: 'Guacamole',
41: 'Hamburger',
42: 'Hamimelon',
43: 'Honey',
44: 'Ice cream',
45: 'Kiwi fruit',
46: 'Lemon',
47: 'Lettuce',
48: 'Lime',
49: 'Lobster',
50: 'Mango',
51: 'Meat ball',
52: 'Milk',
53: 'Muffin',
54: 'Mushroom',
55: 'Noodles',
56: 'Nuts',
57: 'Okra',
58: 'Olive oil',
59: 'Olives',
60: 'Onion',
61: 'Orange',
62: 'Orange juice',
63: 'Pancake',
64: 'Papaya',
65: 'Pasta',
66: 'Pastry',
67: 'Peach',
68: 'Pear',
69: 'Pepper',
70: 'Pie',
71: 'Pineapple',
72: 'Pizza',
73: 'Plum',
74: 'Pomegranate',
75: 'Popcorn',
76: 'Potato',
77: 'Prawns',
78: 'Pretzel',
79: 'Pumpkin',
80: 'Radish',
81: 'Red cabbage',
82: 'Rice',
83: 'Salad',
84: 'Salt',
85: 'Sandwich',
86: 'Sausages',
87: 'Soft drink',
88: 'Spinach',
89: 'Spring rolls',
90: 'Steak',
91: 'Strawberries',
92: 'Sushi',
93: 'Tea',
94: 'Tomato',
95: 'Tomato sauce',
96: 'Waffle',
97: 'Watermelon',
98: 'Wine',
99: 'Zucchini'}
More class-based results to come soon.
Here's a visual update of the new classes (I've just noticed the duplicate of Fries and French Fries), this should be ironed out in the next update.
Source code(tar.gz)
Source code(zip)