@souscheflabs/ml-vision 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/LICENSE +15 -0
- package/README.md +50 -5
- package/dist/{components → cjs/components}/DetectionOverlay.js +1 -0
- package/dist/cjs/components/DetectionOverlay.js.map +1 -0
- package/dist/{components → cjs/components}/index.js +1 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/{core → cjs/core}/CacheManager.js +1 -0
- package/dist/cjs/core/CacheManager.js.map +1 -0
- package/dist/{core → cjs/core}/MLVisionProvider.js +4 -2
- package/dist/cjs/core/MLVisionProvider.js.map +1 -0
- package/dist/{core → cjs/core}/ServerClient.js +33 -13
- package/dist/cjs/core/ServerClient.js.map +1 -0
- package/dist/{core → cjs/core}/index.js +1 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/classLabels.js +1 -0
- package/dist/cjs/hooks/classLabels.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/classLabelsCoco.js +1 -0
- package/dist/cjs/hooks/classLabelsCoco.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/index.js +1 -0
- package/dist/cjs/hooks/index.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useMultiBarcodeScanner.js +6 -3
- package/dist/cjs/hooks/useMultiBarcodeScanner.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useProductDetector.js +161 -90
- package/dist/cjs/hooks/useProductDetector.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useReceiptScanner.js +60 -52
- package/dist/cjs/hooks/useReceiptScanner.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useVideoScanner.js +8 -5
- package/dist/cjs/hooks/useVideoScanner.js.map +1 -0
- package/dist/{index.js → cjs/index.js} +8 -4
- package/dist/cjs/index.js.map +1 -0
- package/dist/{processors → cjs/processors}/detectionProcessor.js +1 -0
- package/dist/cjs/processors/detectionProcessor.js.map +1 -0
- package/dist/{processors → cjs/processors}/index.js +1 -0
- package/dist/cjs/processors/index.js.map +1 -0
- package/dist/{processors → cjs/processors}/tfliteFrameProcessor.js +108 -25
- package/dist/cjs/processors/tfliteFrameProcessor.js.map +1 -0
- package/dist/{types → cjs/types}/barcode.js +1 -0
- package/dist/cjs/types/barcode.js.map +1 -0
- package/dist/{types → cjs/types}/detection.js +1 -0
- package/dist/cjs/types/detection.js.map +1 -0
- package/dist/{types → cjs/types}/index.js +1 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/{types → cjs/types}/ocr.js +1 -0
- package/dist/cjs/types/ocr.js.map +1 -0
- package/dist/{utils → cjs/utils}/imagePreprocessor.js +30 -25
- package/dist/cjs/utils/imagePreprocessor.js.map +1 -0
- package/dist/cjs/utils/logger.js +99 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/{utils → cjs/utils}/yoloProcessor.js +1 -0
- package/dist/cjs/utils/yoloProcessor.js.map +1 -0
- package/dist/esm/components/DetectionOverlay.js +130 -0
- package/dist/esm/components/DetectionOverlay.js.map +1 -0
- package/dist/esm/components/index.js +5 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/core/CacheManager.js +327 -0
- package/dist/esm/core/CacheManager.js.map +1 -0
- package/dist/esm/core/MLVisionProvider.js +185 -0
- package/dist/esm/core/MLVisionProvider.js.map +1 -0
- package/dist/esm/core/ServerClient.js +305 -0
- package/dist/esm/core/ServerClient.js.map +1 -0
- package/dist/esm/core/index.js +7 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/hooks/classLabels.js +436 -0
- package/dist/esm/hooks/classLabels.js.map +1 -0
- package/dist/esm/hooks/classLabelsCoco.js +98 -0
- package/dist/esm/hooks/classLabelsCoco.js.map +1 -0
- package/dist/esm/hooks/index.js +9 -0
- package/dist/esm/hooks/index.js.map +1 -0
- package/dist/esm/hooks/useMultiBarcodeScanner.js +290 -0
- package/dist/esm/hooks/useMultiBarcodeScanner.js.map +1 -0
- package/dist/esm/hooks/useProductDetector.js +714 -0
- package/dist/esm/hooks/useProductDetector.js.map +1 -0
- package/dist/esm/hooks/useReceiptScanner.js +407 -0
- package/dist/esm/hooks/useReceiptScanner.js.map +1 -0
- package/dist/esm/hooks/useVideoScanner.js +383 -0
- package/dist/esm/hooks/useVideoScanner.js.map +1 -0
- package/dist/esm/index.js +93 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/processors/detectionProcessor.js +121 -0
- package/dist/esm/processors/detectionProcessor.js.map +1 -0
- package/dist/esm/processors/index.js +7 -0
- package/dist/esm/processors/index.js.map +1 -0
- package/dist/esm/processors/tfliteFrameProcessor.js +292 -0
- package/dist/esm/processors/tfliteFrameProcessor.js.map +1 -0
- package/dist/esm/types/barcode.js +17 -0
- package/dist/esm/types/barcode.js.map +1 -0
- package/dist/esm/types/detection.js +8 -0
- package/dist/esm/types/detection.js.map +1 -0
- package/dist/esm/types/index.js +10 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/ocr.js +8 -0
- package/dist/esm/types/ocr.js.map +1 -0
- package/dist/esm/utils/imagePreprocessor.js +268 -0
- package/dist/esm/utils/imagePreprocessor.js.map +1 -0
- package/dist/esm/utils/logger.js +94 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/yoloProcessor.js +151 -0
- package/dist/esm/utils/yoloProcessor.js.map +1 -0
- package/dist/{components → types/components}/DetectionOverlay.d.ts +1 -0
- package/dist/types/components/DetectionOverlay.d.ts.map +1 -0
- package/dist/{components → types/components}/index.d.ts +1 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/{core → types/core}/CacheManager.d.ts +1 -0
- package/dist/types/core/CacheManager.d.ts.map +1 -0
- package/dist/{core → types/core}/MLVisionProvider.d.ts +1 -0
- package/dist/types/core/MLVisionProvider.d.ts.map +1 -0
- package/dist/{core → types/core}/ServerClient.d.ts +1 -0
- package/dist/types/core/ServerClient.d.ts.map +1 -0
- package/dist/{core → types/core}/index.d.ts +1 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/classLabels.d.ts +1 -0
- package/dist/types/hooks/classLabels.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/classLabelsCoco.d.ts +1 -0
- package/dist/types/hooks/classLabelsCoco.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useMultiBarcodeScanner.d.ts +1 -0
- package/dist/types/hooks/useMultiBarcodeScanner.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useProductDetector.d.ts +1 -0
- package/dist/types/hooks/useProductDetector.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useReceiptScanner.d.ts +2 -1
- package/dist/types/hooks/useReceiptScanner.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useVideoScanner.d.ts +1 -0
- package/dist/types/hooks/useVideoScanner.d.ts.map +1 -0
- package/dist/types/index.d.ts +58 -124
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{processors → types/processors}/detectionProcessor.d.ts +1 -0
- package/dist/types/processors/detectionProcessor.d.ts.map +1 -0
- package/dist/{processors → types/processors}/index.d.ts +1 -0
- package/dist/types/processors/index.d.ts.map +1 -0
- package/dist/{processors → types/processors}/tfliteFrameProcessor.d.ts +5 -4
- package/dist/types/processors/tfliteFrameProcessor.d.ts.map +1 -0
- package/dist/types/{barcode.d.ts → types/barcode.d.ts} +1 -0
- package/dist/types/types/barcode.d.ts.map +1 -0
- package/dist/types/{detection.d.ts → types/detection.d.ts} +1 -0
- package/dist/types/types/detection.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +127 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/{ocr.d.ts → types/ocr.d.ts} +1 -0
- package/dist/types/types/ocr.d.ts.map +1 -0
- package/dist/{utils → types/utils}/imagePreprocessor.d.ts +1 -0
- package/dist/types/utils/imagePreprocessor.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +52 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/{utils → types/utils}/yoloProcessor.d.ts +1 -0
- package/dist/types/utils/yoloProcessor.d.ts.map +1 -0
- package/package.json +62 -21
- package/dist/index.d.ts +0 -58
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class label mappings for the trained SousChef YOLOv8 model
|
|
3
|
+
*
|
|
4
|
+
* These labels correspond to the 233 classes in the souschef_coco_finetuned_v1 model.
|
|
5
|
+
* The model was fine-tuned on a dataset of food and kitchen items.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Categorize a food item label
|
|
9
|
+
*/
|
|
10
|
+
function categorizeLabel(label) {
|
|
11
|
+
// Produce
|
|
12
|
+
const produce = [
|
|
13
|
+
'acorn_squash', 'apple', 'asparagus', 'baby_carrots', 'baby_spinach',
|
|
14
|
+
'banana', 'basil', 'bell_pepper', 'blackberries', 'blueberries',
|
|
15
|
+
'broccoli', 'brussels_sprouts', 'butternut_squash', 'button_mushrooms',
|
|
16
|
+
'carrot', 'cauliflower', 'celery', 'cherries', 'cherry_tomatoes',
|
|
17
|
+
'chives', 'clementine', 'coconut', 'corn', 'cucumber', 'dill',
|
|
18
|
+
'eggplant', 'english_cucumber', 'fuji_apple', 'garlic', 'ginger',
|
|
19
|
+
'grapes', 'green_bell_pepper', 'green_onion', 'honeydew_melon',
|
|
20
|
+
'jalapeno', 'kiwi', 'lemon', 'lettuce', 'lime', 'mango', 'mixed_greens',
|
|
21
|
+
'mushrooms', 'napa_cabbage', 'onion', 'orange', 'pomegranate', 'potato',
|
|
22
|
+
'raspberries', 'red_cabbage', 'red_onion', 'roma_tomato', 'romaine_lettuce',
|
|
23
|
+
'rosemary', 'sage', 'shallot', 'spinach', 'spaghetti_squash',
|
|
24
|
+
'strawberries', 'sweet_potato', 'tomatillo', 'tomato', 'white_onion',
|
|
25
|
+
'yellow_onion', 'yellow_squash', 'yukon_gold_potato', 'zucchini',
|
|
26
|
+
'd_anjou_p_r', 'd_anjou_p_rs_2_pound', 'p_es', 'p_rs', 'pe_s', 'chillies'
|
|
27
|
+
];
|
|
28
|
+
// Meat & Seafood
|
|
29
|
+
const meat = [
|
|
30
|
+
'ahi_tuna', 'bacon', 'beef_brisket', 'beef_broth', 'beef_short_ribs',
|
|
31
|
+
'beef_tenderloin', 'catfish_fillets', 'catfish_fillets_fr_en_big_d_l',
|
|
32
|
+
'catfish_st_k_sustainably_sourced', 'chicken_drumsticks', 'chicken_legs',
|
|
33
|
+
'chicken_tenders', 'chicken_thighs', 'chicken_wings', 'chuck_roast',
|
|
34
|
+
'cod', 'cod_fillet', 'filet_mignon', 'flank_steak', 'ground_beef',
|
|
35
|
+
'ground_chicken', 'ground_lamb', 'ham', 'lobster', 'pork_belly',
|
|
36
|
+
'pork_chops', 'pork_loin', 'pork_shoulder', 'pork_tenderloin',
|
|
37
|
+
'rotisserie_chicken', 'ry_catfish_fillets', 'shrimp', 'sirloin_steak',
|
|
38
|
+
'smoked_salmon', 'tilapia', 'tilapia_fillet'
|
|
39
|
+
];
|
|
40
|
+
// Dairy
|
|
41
|
+
const dairy = [
|
|
42
|
+
'blue_cheese', 'butter', 'cacique_queso_fresco', 'cheddar_cheese',
|
|
43
|
+
'cr_m', 'egg_whites', 'eggs', 'goat_cheese', 'gouda_cheese',
|
|
44
|
+
'greek_yogurt', 'h_vy_cr_m', 'half_and_half', 'large_eggs', 'milk',
|
|
45
|
+
'mozzarella_cheese', 'parmesan_cheese', 'provolone_cheese',
|
|
46
|
+
'salted_butter', 'shredded_cheese', 'skim_milk', 'sliced_cheese',
|
|
47
|
+
'soy_milk', 'unsalted_butter', 'vegan_cr_m', 'whole_milk', 'yogurt'
|
|
48
|
+
];
|
|
49
|
+
// Bakery
|
|
50
|
+
const bakery = [
|
|
51
|
+
'baguette', 'br_d', 'br_dcrumbs', 'crusty_br_d', 'hot_dog_buns',
|
|
52
|
+
'ladyfingers_bought_or', 'panko_br_d_crumbs', 'shortcrust_pastry',
|
|
53
|
+
'white_bread'
|
|
54
|
+
];
|
|
55
|
+
// Packaged/Pantry
|
|
56
|
+
const packaged = [
|
|
57
|
+
'all_purpose_flour', 'balsamic_vinegar', 'bbq_sauce', 'blackberry_preserves_seedless',
|
|
58
|
+
'blackeye_p_s', 'bonne_maman_blackberry_preserves', 'brown_rice', 'brown_sugar',
|
|
59
|
+
'cardamom_pods', 'chickpeas', 'chilli_flakes', 'citric_acid', 'crushed_tomatoes',
|
|
60
|
+
'diced_tomatoes', 'double_strength_liquid_rennet', 'extra_virgin_olive_oil',
|
|
61
|
+
'flour', 'garam_masala', 'garbanzo_b_ns', 'herbs_de_province', 'honey',
|
|
62
|
+
'hot_sauce', 'jam', 'marinara_sauce', 'mayonnaise', 'mustard',
|
|
63
|
+
'non_dairy_nutritional_y_st', 'olive_oil', 'on_the_border_monterey_jack_queso',
|
|
64
|
+
'oregano', 'paprika', 'parchment_pa_to_line_the_baking_pan', 'pasta',
|
|
65
|
+
'pinto_beans', 'polaner_with_fiber_seedless_blackberry_preserves_g',
|
|
66
|
+
'powdered_sugar', 'pre_d_pepitas', 'pumpkin_pie_spice_shaker', 'quick_p_rled_barley',
|
|
67
|
+
'rice', 's_soning', 'salsa', 'shirataki', 'spaghetti', 'stock', 'sugar',
|
|
68
|
+
'tomato_paste', 'tomato_sauce', 'unsweetened_chocolate_baking_squares',
|
|
69
|
+
'unsweetened_coconut_flakes', 'vanilla', 'vegetable_oil', 'xanthan_gum',
|
|
70
|
+
'rosemary_l_ves', 'bay_l_f'
|
|
71
|
+
];
|
|
72
|
+
// Snacks
|
|
73
|
+
const snack = [
|
|
74
|
+
'cashews', 'chifles_plantain_strips', 'granola_bar', 'kind_pumpkin_seeds',
|
|
75
|
+
'mixed_nuts', 'peanuts', 'philadelphia_snack_de_s_chocolate', 'plantain_single',
|
|
76
|
+
'pretzels', 'protein_bar', 'tortilla_chips', 'trail_mix', 'walnuts',
|
|
77
|
+
'vegan_marshmallows'
|
|
78
|
+
];
|
|
79
|
+
// Beverages
|
|
80
|
+
const beverage = [
|
|
81
|
+
'bottled_water', 'cr_m_soda', 'cranberry_juice', 'orange_juice',
|
|
82
|
+
'sparkling_water', 'bigelow_benefits_cinnamon_blackberry_herbal_t_s',
|
|
83
|
+
'ly_pulled_espresso_to', 'mamma_chia_chia_squeeze_blackberry_bliss_vitality',
|
|
84
|
+
'twinings_londin_immue_support_blackberry_flavored'
|
|
85
|
+
];
|
|
86
|
+
// Frozen
|
|
87
|
+
const frozen = [
|
|
88
|
+
'bakery_pumpkin_pie', 'frozen_fruit', 'marie_callender_s_pumpkin_pie_fr_en_dessert',
|
|
89
|
+
'microwave_the_noodles'
|
|
90
|
+
];
|
|
91
|
+
// Supplements/Other
|
|
92
|
+
const other = [
|
|
93
|
+
'melatonin_gummies_blackberry_5mg', 'olly_men_s_multivitamin_blackberry_flavored_gummy',
|
|
94
|
+
'olly_sleep_blackberry_flavor_gummy_supplement_mela',
|
|
95
|
+
'olly_strength_sleep_blackberry_flavor_gummy_supple',
|
|
96
|
+
'purina_friskies_fish_a_licious_wet_cat_in_gravy_va',
|
|
97
|
+
'spice_islands_pumpkin_pie_spice_kosher', 'grown_fairytale_pumpkin',
|
|
98
|
+
'grown_pie_pumpkins', 'grown_pumpkins_up_to_13_s', 'grown_pumpkins_up_to_19_s',
|
|
99
|
+
'la_costena_tomatillos', 'portobello_mushrooms'
|
|
100
|
+
];
|
|
101
|
+
if (produce.includes(label))
|
|
102
|
+
return 'produce';
|
|
103
|
+
if (meat.includes(label))
|
|
104
|
+
return 'meat';
|
|
105
|
+
if (dairy.includes(label))
|
|
106
|
+
return 'dairy';
|
|
107
|
+
if (bakery.includes(label))
|
|
108
|
+
return 'bakery';
|
|
109
|
+
if (packaged.includes(label))
|
|
110
|
+
return 'packaged';
|
|
111
|
+
if (snack.includes(label))
|
|
112
|
+
return 'snack';
|
|
113
|
+
if (beverage.includes(label))
|
|
114
|
+
return 'beverage';
|
|
115
|
+
if (frozen.includes(label))
|
|
116
|
+
return 'frozen';
|
|
117
|
+
if (other.includes(label))
|
|
118
|
+
return 'unknown';
|
|
119
|
+
// Default categorization based on common patterns
|
|
120
|
+
if (label.includes('cheese'))
|
|
121
|
+
return 'dairy';
|
|
122
|
+
if (label.includes('milk') || label.includes('cream') || label.includes('butter'))
|
|
123
|
+
return 'dairy';
|
|
124
|
+
if (label.includes('beef') || label.includes('chicken') || label.includes('pork') ||
|
|
125
|
+
label.includes('fish') || label.includes('shrimp') || label.includes('salmon'))
|
|
126
|
+
return 'meat';
|
|
127
|
+
if (label.includes('bread') || label.includes('bun'))
|
|
128
|
+
return 'bakery';
|
|
129
|
+
if (label.includes('juice') || label.includes('water') || label.includes('soda'))
|
|
130
|
+
return 'beverage';
|
|
131
|
+
return 'unknown';
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Map class index to label and category (233 classes)
|
|
135
|
+
*/
|
|
136
|
+
export const CLASS_LABELS = {
|
|
137
|
+
0: { label: 'acorn_squash', category: 'produce' },
|
|
138
|
+
1: { label: 'ahi_tuna', category: 'meat' },
|
|
139
|
+
2: { label: 'all_purpose_flour', category: 'packaged' },
|
|
140
|
+
3: { label: 'apple', category: 'produce' },
|
|
141
|
+
4: { label: 'asparagus', category: 'produce' },
|
|
142
|
+
5: { label: 'baby_carrots', category: 'produce' },
|
|
143
|
+
6: { label: 'baby_spinach', category: 'produce' },
|
|
144
|
+
7: { label: 'bacon', category: 'meat' },
|
|
145
|
+
8: { label: 'baguette', category: 'bakery' },
|
|
146
|
+
9: { label: 'bakery_pumpkin_pie', category: 'frozen' },
|
|
147
|
+
10: { label: 'balsamic_vinegar', category: 'packaged' },
|
|
148
|
+
11: { label: 'banana', category: 'produce' },
|
|
149
|
+
12: { label: 'basil', category: 'produce' },
|
|
150
|
+
13: { label: 'bay_l_f', category: 'spice' },
|
|
151
|
+
14: { label: 'bbq_sauce', category: 'condiment' },
|
|
152
|
+
15: { label: 'beef_brisket', category: 'meat' },
|
|
153
|
+
16: { label: 'beef_broth', category: 'packaged' },
|
|
154
|
+
17: { label: 'beef_short_ribs', category: 'meat' },
|
|
155
|
+
18: { label: 'beef_tenderloin', category: 'meat' },
|
|
156
|
+
19: { label: 'bell_pepper', category: 'produce' },
|
|
157
|
+
20: { label: 'bigelow_benefits_cinnamon_blackberry_herbal_t_s', category: 'beverage' },
|
|
158
|
+
21: { label: 'blackberries', category: 'produce' },
|
|
159
|
+
22: { label: 'blackberry_preserves_seedless', category: 'packaged' },
|
|
160
|
+
23: { label: 'blackeye_p_s', category: 'packaged' },
|
|
161
|
+
24: { label: 'blue_cheese', category: 'dairy' },
|
|
162
|
+
25: { label: 'blueberries', category: 'produce' },
|
|
163
|
+
26: { label: 'bonne_maman_blackberry_preserves', category: 'packaged' },
|
|
164
|
+
27: { label: 'bottled_water', category: 'beverage' },
|
|
165
|
+
28: { label: 'br_d', category: 'bakery' },
|
|
166
|
+
29: { label: 'br_dcrumbs', category: 'packaged' },
|
|
167
|
+
30: { label: 'broccoli', category: 'produce' },
|
|
168
|
+
31: { label: 'brown_rice', category: 'packaged' },
|
|
169
|
+
32: { label: 'brown_sugar', category: 'packaged' },
|
|
170
|
+
33: { label: 'brussels_sprouts', category: 'produce' },
|
|
171
|
+
34: { label: 'butter', category: 'dairy' },
|
|
172
|
+
35: { label: 'butternut_squash', category: 'produce' },
|
|
173
|
+
36: { label: 'button_mushrooms', category: 'produce' },
|
|
174
|
+
37: { label: 'cacique_queso_fresco', category: 'dairy' },
|
|
175
|
+
38: { label: 'cardamom_pods', category: 'spice' },
|
|
176
|
+
39: { label: 'carrot', category: 'produce' },
|
|
177
|
+
40: { label: 'cashews', category: 'snack' },
|
|
178
|
+
41: { label: 'catfish_fillets', category: 'meat' },
|
|
179
|
+
42: { label: 'catfish_fillets_fr_en_big_d_l', category: 'meat' },
|
|
180
|
+
43: { label: 'catfish_st_k_sustainably_sourced', category: 'meat' },
|
|
181
|
+
44: { label: 'cauliflower', category: 'produce' },
|
|
182
|
+
45: { label: 'celery', category: 'produce' },
|
|
183
|
+
46: { label: 'cheddar_cheese', category: 'dairy' },
|
|
184
|
+
47: { label: 'cherries', category: 'produce' },
|
|
185
|
+
48: { label: 'cherry_tomatoes', category: 'produce' },
|
|
186
|
+
49: { label: 'chicken_drumsticks', category: 'meat' },
|
|
187
|
+
50: { label: 'chicken_legs', category: 'meat' },
|
|
188
|
+
51: { label: 'chicken_tenders', category: 'meat' },
|
|
189
|
+
52: { label: 'chicken_thighs', category: 'meat' },
|
|
190
|
+
53: { label: 'chicken_wings', category: 'meat' },
|
|
191
|
+
54: { label: 'chickpeas', category: 'packaged' },
|
|
192
|
+
55: { label: 'chifles_plantain_strips', category: 'snack' },
|
|
193
|
+
56: { label: 'chilli_flakes', category: 'spice' },
|
|
194
|
+
57: { label: 'chillies', category: 'produce' },
|
|
195
|
+
58: { label: 'chives', category: 'produce' },
|
|
196
|
+
59: { label: 'chuck_roast', category: 'meat' },
|
|
197
|
+
60: { label: 'citric_acid', category: 'packaged' },
|
|
198
|
+
61: { label: 'clementine', category: 'produce' },
|
|
199
|
+
62: { label: 'coconut', category: 'produce' },
|
|
200
|
+
63: { label: 'cod', category: 'meat' },
|
|
201
|
+
64: { label: 'cod_fillet', category: 'meat' },
|
|
202
|
+
65: { label: 'corn', category: 'produce' },
|
|
203
|
+
66: { label: 'cr_m', category: 'dairy' },
|
|
204
|
+
67: { label: 'cr_m_soda', category: 'beverage' },
|
|
205
|
+
68: { label: 'cranberry_juice', category: 'beverage' },
|
|
206
|
+
69: { label: 'crushed_tomatoes', category: 'packaged' },
|
|
207
|
+
70: { label: 'crusty_br_d', category: 'bakery' },
|
|
208
|
+
71: { label: 'cucumber', category: 'produce' },
|
|
209
|
+
72: { label: 'd_anjou_p_r', category: 'produce' },
|
|
210
|
+
73: { label: 'd_anjou_p_rs_2_pound', category: 'produce' },
|
|
211
|
+
74: { label: 'diced_tomatoes', category: 'packaged' },
|
|
212
|
+
75: { label: 'dill', category: 'produce' },
|
|
213
|
+
76: { label: 'double_strength_liquid_rennet', category: 'packaged' },
|
|
214
|
+
77: { label: 'egg_whites', category: 'dairy' },
|
|
215
|
+
78: { label: 'eggplant', category: 'produce' },
|
|
216
|
+
79: { label: 'eggs', category: 'dairy' },
|
|
217
|
+
80: { label: 'english_cucumber', category: 'produce' },
|
|
218
|
+
81: { label: 'extra_virgin_olive_oil', category: 'packaged' },
|
|
219
|
+
82: { label: 'filet_mignon', category: 'meat' },
|
|
220
|
+
83: { label: 'flank_steak', category: 'meat' },
|
|
221
|
+
84: { label: 'flour', category: 'packaged' },
|
|
222
|
+
85: { label: 'frozen_fruit', category: 'frozen' },
|
|
223
|
+
86: { label: 'fuji_apple', category: 'produce' },
|
|
224
|
+
87: { label: 'garam_masala', category: 'spice' },
|
|
225
|
+
88: { label: 'garbanzo_b_ns', category: 'packaged' },
|
|
226
|
+
89: { label: 'garlic', category: 'produce' },
|
|
227
|
+
90: { label: 'ginger', category: 'produce' },
|
|
228
|
+
91: { label: 'goat_cheese', category: 'dairy' },
|
|
229
|
+
92: { label: 'gouda_cheese', category: 'dairy' },
|
|
230
|
+
93: { label: 'granola_bar', category: 'snack' },
|
|
231
|
+
94: { label: 'grapes', category: 'produce' },
|
|
232
|
+
95: { label: 'greek_yogurt', category: 'dairy' },
|
|
233
|
+
96: { label: 'green_bell_pepper', category: 'produce' },
|
|
234
|
+
97: { label: 'green_onion', category: 'produce' },
|
|
235
|
+
98: { label: 'ground_beef', category: 'meat' },
|
|
236
|
+
99: { label: 'ground_chicken', category: 'meat' },
|
|
237
|
+
100: { label: 'ground_lamb', category: 'meat' },
|
|
238
|
+
101: { label: 'grown_fairytale_pumpkin', category: 'produce' },
|
|
239
|
+
102: { label: 'grown_pie_pumpkins', category: 'produce' },
|
|
240
|
+
103: { label: 'grown_pumpkins_up_to_13_s', category: 'produce' },
|
|
241
|
+
104: { label: 'grown_pumpkins_up_to_19_s', category: 'produce' },
|
|
242
|
+
105: { label: 'h_vy_cr_m', category: 'dairy' },
|
|
243
|
+
106: { label: 'half_and_half', category: 'dairy' },
|
|
244
|
+
107: { label: 'herbs_de_province', category: 'spice' },
|
|
245
|
+
108: { label: 'honey', category: 'packaged' },
|
|
246
|
+
109: { label: 'honeydew_melon', category: 'produce' },
|
|
247
|
+
110: { label: 'hot_dog_buns', category: 'bakery' },
|
|
248
|
+
111: { label: 'hot_sauce', category: 'condiment' },
|
|
249
|
+
112: { label: 'jalapeno', category: 'produce' },
|
|
250
|
+
113: { label: 'jam', category: 'packaged' },
|
|
251
|
+
114: { label: 'kind_pumpkin_seeds', category: 'snack' },
|
|
252
|
+
115: { label: 'kiwi', category: 'produce' },
|
|
253
|
+
116: { label: 'la_costena_tomatillos', category: 'packaged' },
|
|
254
|
+
117: { label: 'ladyfingers_bought_or', category: 'bakery' },
|
|
255
|
+
118: { label: 'large_eggs', category: 'dairy' },
|
|
256
|
+
119: { label: 'lemon', category: 'produce' },
|
|
257
|
+
120: { label: 'lettuce', category: 'produce' },
|
|
258
|
+
121: { label: 'lime', category: 'produce' },
|
|
259
|
+
122: { label: 'lobster', category: 'meat' },
|
|
260
|
+
123: { label: 'ly_pulled_espresso_to', category: 'beverage' },
|
|
261
|
+
124: { label: 'mamma_chia_chia_squeeze_blackberry_bliss_vitality', category: 'beverage' },
|
|
262
|
+
125: { label: 'mango', category: 'produce' },
|
|
263
|
+
126: { label: 'marie_callender_s_pumpkin_pie_fr_en_dessert', category: 'frozen' },
|
|
264
|
+
127: { label: 'marinara_sauce', category: 'packaged' },
|
|
265
|
+
128: { label: 'mayonnaise', category: 'condiment' },
|
|
266
|
+
129: { label: 'melatonin_gummies_blackberry_5mg', category: 'unknown' },
|
|
267
|
+
130: { label: 'microwave_the_noodles', category: 'frozen' },
|
|
268
|
+
131: { label: 'mixed_greens', category: 'produce' },
|
|
269
|
+
132: { label: 'mixed_nuts', category: 'snack' },
|
|
270
|
+
133: { label: 'mozzarella_cheese', category: 'dairy' },
|
|
271
|
+
134: { label: 'mushrooms', category: 'produce' },
|
|
272
|
+
135: { label: 'mustard', category: 'condiment' },
|
|
273
|
+
136: { label: 'napa_cabbage', category: 'produce' },
|
|
274
|
+
137: { label: 'non_dairy_nutritional_y_st', category: 'packaged' },
|
|
275
|
+
138: { label: 'olive_oil', category: 'packaged' },
|
|
276
|
+
139: { label: 'olly_men_s_multivitamin_blackberry_flavored_gummy', category: 'unknown' },
|
|
277
|
+
140: { label: 'olly_sleep_blackberry_flavor_gummy_supplement_mela', category: 'unknown' },
|
|
278
|
+
141: { label: 'olly_strength_sleep_blackberry_flavor_gummy_supple', category: 'unknown' },
|
|
279
|
+
142: { label: 'on_the_border_monterey_jack_queso', category: 'packaged' },
|
|
280
|
+
143: { label: 'onion', category: 'produce' },
|
|
281
|
+
144: { label: 'orange', category: 'produce' },
|
|
282
|
+
145: { label: 'orange_juice', category: 'beverage' },
|
|
283
|
+
146: { label: 'oregano', category: 'spice' },
|
|
284
|
+
147: { label: 'p_es', category: 'produce' },
|
|
285
|
+
148: { label: 'p_rs', category: 'produce' },
|
|
286
|
+
149: { label: 'panko_br_d_crumbs', category: 'packaged' },
|
|
287
|
+
150: { label: 'paprika', category: 'spice' },
|
|
288
|
+
151: { label: 'parchment_pa_to_line_the_baking_pan', category: 'packaged' },
|
|
289
|
+
152: { label: 'parmesan_cheese', category: 'dairy' },
|
|
290
|
+
153: { label: 'pasta', category: 'packaged' },
|
|
291
|
+
154: { label: 'pe_s', category: 'produce' },
|
|
292
|
+
155: { label: 'peanuts', category: 'snack' },
|
|
293
|
+
156: { label: 'philadelphia_snack_de_s_chocolate', category: 'snack' },
|
|
294
|
+
157: { label: 'pinto_beans', category: 'packaged' },
|
|
295
|
+
158: { label: 'plantain_single', category: 'produce' },
|
|
296
|
+
159: { label: 'polaner_with_fiber_seedless_blackberry_preserves_g', category: 'packaged' },
|
|
297
|
+
160: { label: 'pomegranate', category: 'produce' },
|
|
298
|
+
161: { label: 'pork_belly', category: 'meat' },
|
|
299
|
+
162: { label: 'pork_chops', category: 'meat' },
|
|
300
|
+
163: { label: 'pork_loin', category: 'meat' },
|
|
301
|
+
164: { label: 'pork_shoulder', category: 'meat' },
|
|
302
|
+
165: { label: 'pork_tenderloin', category: 'meat' },
|
|
303
|
+
166: { label: 'portobello_mushrooms', category: 'produce' },
|
|
304
|
+
167: { label: 'potato', category: 'produce' },
|
|
305
|
+
168: { label: 'powdered_sugar', category: 'packaged' },
|
|
306
|
+
169: { label: 'pre_d_pepitas', category: 'snack' },
|
|
307
|
+
170: { label: 'pretzels', category: 'snack' },
|
|
308
|
+
171: { label: 'protein_bar', category: 'snack' },
|
|
309
|
+
172: { label: 'provolone_cheese', category: 'dairy' },
|
|
310
|
+
173: { label: 'pumpkin_pie_spice_shaker', category: 'spice' },
|
|
311
|
+
174: { label: 'purina_friskies_fish_a_licious_wet_cat_in_gravy_va', category: 'unknown' },
|
|
312
|
+
175: { label: 'quick_p_rled_barley', category: 'packaged' },
|
|
313
|
+
176: { label: 'raspberries', category: 'produce' },
|
|
314
|
+
177: { label: 'red_cabbage', category: 'produce' },
|
|
315
|
+
178: { label: 'red_onion', category: 'produce' },
|
|
316
|
+
179: { label: 'rice', category: 'packaged' },
|
|
317
|
+
180: { label: 'roma_tomato', category: 'produce' },
|
|
318
|
+
181: { label: 'romaine_lettuce', category: 'produce' },
|
|
319
|
+
182: { label: 'rosemary', category: 'produce' },
|
|
320
|
+
183: { label: 'rosemary_l_ves', category: 'spice' },
|
|
321
|
+
184: { label: 'rotisserie_chicken', category: 'meat' },
|
|
322
|
+
185: { label: 'ry_catfish_fillets', category: 'meat' },
|
|
323
|
+
186: { label: 's_soning', category: 'spice' },
|
|
324
|
+
187: { label: 'sage', category: 'produce' },
|
|
325
|
+
188: { label: 'salsa', category: 'condiment' },
|
|
326
|
+
189: { label: 'salted_butter', category: 'dairy' },
|
|
327
|
+
190: { label: 'shallot', category: 'produce' },
|
|
328
|
+
191: { label: 'shirataki', category: 'packaged' },
|
|
329
|
+
192: { label: 'shortcrust_pastry', category: 'bakery' },
|
|
330
|
+
193: { label: 'shredded_cheese', category: 'dairy' },
|
|
331
|
+
194: { label: 'shrimp', category: 'meat' },
|
|
332
|
+
195: { label: 'sirloin_steak', category: 'meat' },
|
|
333
|
+
196: { label: 'skim_milk', category: 'dairy' },
|
|
334
|
+
197: { label: 'sliced_cheese', category: 'dairy' },
|
|
335
|
+
198: { label: 'smoked_salmon', category: 'meat' },
|
|
336
|
+
199: { label: 'soy_milk', category: 'dairy' },
|
|
337
|
+
200: { label: 'spaghetti', category: 'packaged' },
|
|
338
|
+
201: { label: 'spaghetti_squash', category: 'produce' },
|
|
339
|
+
202: { label: 'sparkling_water', category: 'beverage' },
|
|
340
|
+
203: { label: 'spice_islands_pumpkin_pie_spice_kosher', category: 'spice' },
|
|
341
|
+
204: { label: 'spinach', category: 'produce' },
|
|
342
|
+
205: { label: 'stock', category: 'packaged' },
|
|
343
|
+
206: { label: 'sugar', category: 'packaged' },
|
|
344
|
+
207: { label: 'tilapia', category: 'meat' },
|
|
345
|
+
208: { label: 'tilapia_fillet', category: 'meat' },
|
|
346
|
+
209: { label: 'tomatillo', category: 'produce' },
|
|
347
|
+
210: { label: 'tomato', category: 'produce' },
|
|
348
|
+
211: { label: 'tomato_paste', category: 'packaged' },
|
|
349
|
+
212: { label: 'tomato_sauce', category: 'packaged' },
|
|
350
|
+
213: { label: 'tortilla_chips', category: 'snack' },
|
|
351
|
+
214: { label: 'trail_mix', category: 'snack' },
|
|
352
|
+
215: { label: 'twinings_londin_immue_support_blackberry_flavored', category: 'beverage' },
|
|
353
|
+
216: { label: 'unsalted_butter', category: 'dairy' },
|
|
354
|
+
217: { label: 'unsweetened_chocolate_baking_squares', category: 'packaged' },
|
|
355
|
+
218: { label: 'unsweetened_coconut_flakes', category: 'packaged' },
|
|
356
|
+
219: { label: 'vanilla', category: 'packaged' },
|
|
357
|
+
220: { label: 'vegan_cr_m', category: 'dairy' },
|
|
358
|
+
221: { label: 'vegan_marshmallows', category: 'snack' },
|
|
359
|
+
222: { label: 'vegetable_oil', category: 'packaged' },
|
|
360
|
+
223: { label: 'walnuts', category: 'snack' },
|
|
361
|
+
224: { label: 'white_bread', category: 'bakery' },
|
|
362
|
+
225: { label: 'white_onion', category: 'produce' },
|
|
363
|
+
226: { label: 'whole_milk', category: 'dairy' },
|
|
364
|
+
227: { label: 'xanthan_gum', category: 'packaged' },
|
|
365
|
+
228: { label: 'yellow_onion', category: 'produce' },
|
|
366
|
+
229: { label: 'yellow_squash', category: 'produce' },
|
|
367
|
+
230: { label: 'yogurt', category: 'dairy' },
|
|
368
|
+
231: { label: 'yukon_gold_potato', category: 'produce' },
|
|
369
|
+
232: { label: 'zucchini', category: 'produce' },
|
|
370
|
+
};
|
|
371
|
+
/**
|
|
372
|
+
* Number of classes in the model
|
|
373
|
+
*/
|
|
374
|
+
export const NUM_CLASSES = 233;
|
|
375
|
+
/**
|
|
376
|
+
* Get label info for a class index
|
|
377
|
+
*/
|
|
378
|
+
export function getClassInfo(classIndex) {
|
|
379
|
+
const info = CLASS_LABELS[classIndex];
|
|
380
|
+
if (info) {
|
|
381
|
+
return info;
|
|
382
|
+
}
|
|
383
|
+
// Fallback for unknown indices
|
|
384
|
+
return { label: `class_${classIndex}`, category: 'unknown' };
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Get all labels as an array (ordered by class index)
|
|
388
|
+
*/
|
|
389
|
+
export function getLabelsArray() {
|
|
390
|
+
const labels = [];
|
|
391
|
+
for (let i = 0; i < NUM_CLASSES; i++) {
|
|
392
|
+
labels.push(CLASS_LABELS[i]?.label ?? `class_${i}`);
|
|
393
|
+
}
|
|
394
|
+
return labels;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Category to class indices mapping
|
|
398
|
+
*/
|
|
399
|
+
export const CATEGORY_CLASSES = {
|
|
400
|
+
produce: Object.entries(CLASS_LABELS)
|
|
401
|
+
.filter(([, v]) => v.category === 'produce')
|
|
402
|
+
.map(([k]) => parseInt(k, 10)),
|
|
403
|
+
meat: Object.entries(CLASS_LABELS)
|
|
404
|
+
.filter(([, v]) => v.category === 'meat')
|
|
405
|
+
.map(([k]) => parseInt(k, 10)),
|
|
406
|
+
dairy: Object.entries(CLASS_LABELS)
|
|
407
|
+
.filter(([, v]) => v.category === 'dairy')
|
|
408
|
+
.map(([k]) => parseInt(k, 10)),
|
|
409
|
+
packaged: Object.entries(CLASS_LABELS)
|
|
410
|
+
.filter(([, v]) => v.category === 'packaged')
|
|
411
|
+
.map(([k]) => parseInt(k, 10)),
|
|
412
|
+
bakery: Object.entries(CLASS_LABELS)
|
|
413
|
+
.filter(([, v]) => v.category === 'bakery')
|
|
414
|
+
.map(([k]) => parseInt(k, 10)),
|
|
415
|
+
snack: Object.entries(CLASS_LABELS)
|
|
416
|
+
.filter(([, v]) => v.category === 'snack')
|
|
417
|
+
.map(([k]) => parseInt(k, 10)),
|
|
418
|
+
beverage: Object.entries(CLASS_LABELS)
|
|
419
|
+
.filter(([, v]) => v.category === 'beverage')
|
|
420
|
+
.map(([k]) => parseInt(k, 10)),
|
|
421
|
+
condiment: Object.entries(CLASS_LABELS)
|
|
422
|
+
.filter(([, v]) => v.category === 'condiment')
|
|
423
|
+
.map(([k]) => parseInt(k, 10)),
|
|
424
|
+
spice: Object.entries(CLASS_LABELS)
|
|
425
|
+
.filter(([, v]) => v.category === 'spice')
|
|
426
|
+
.map(([k]) => parseInt(k, 10)),
|
|
427
|
+
frozen: Object.entries(CLASS_LABELS)
|
|
428
|
+
.filter(([, v]) => v.category === 'frozen')
|
|
429
|
+
.map(([k]) => parseInt(k, 10)),
|
|
430
|
+
unknown: Object.entries(CLASS_LABELS)
|
|
431
|
+
.filter(([, v]) => v.category === 'unknown')
|
|
432
|
+
.map(([k]) => parseInt(k, 10)),
|
|
433
|
+
};
|
|
434
|
+
// Export the categorize function for use elsewhere
|
|
435
|
+
export { categorizeLabel };
|
|
436
|
+
//# sourceMappingURL=classLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classLabels.js","sourceRoot":"","sources":["../../../src/hooks/classLabels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class label mappings for YOLOv8 COCO model
|
|
3
|
+
*
|
|
4
|
+
* These labels correspond to the 80 classes in the COCO dataset.
|
|
5
|
+
* Food-related classes: banana (46), apple (47), sandwich (48), orange (49),
|
|
6
|
+
* broccoli (50), carrot (51), hot dog (52), pizza (53), donut (54), cake (55)
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* COCO class names in order
|
|
10
|
+
*/
|
|
11
|
+
export const COCO_CLASSES = [
|
|
12
|
+
'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck',
|
|
13
|
+
'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench',
|
|
14
|
+
'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra',
|
|
15
|
+
'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
|
|
16
|
+
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove',
|
|
17
|
+
'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup',
|
|
18
|
+
'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange',
|
|
19
|
+
'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
|
|
20
|
+
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse',
|
|
21
|
+
'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink',
|
|
22
|
+
'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier',
|
|
23
|
+
'toothbrush'
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Map COCO class to a product category
|
|
27
|
+
*/
|
|
28
|
+
function getCocoCategory(label) {
|
|
29
|
+
// Food items
|
|
30
|
+
const produceItems = ['banana', 'apple', 'orange', 'broccoli', 'carrot'];
|
|
31
|
+
const meatItems = ['hot dog'];
|
|
32
|
+
const bakeryItems = ['sandwich', 'pizza', 'donut', 'cake'];
|
|
33
|
+
const dairyItems = [];
|
|
34
|
+
const beverageItems = ['bottle', 'wine glass', 'cup'];
|
|
35
|
+
const condimentItems = ['bowl']; // Often contains condiments/sauces
|
|
36
|
+
if (produceItems.includes(label))
|
|
37
|
+
return 'produce';
|
|
38
|
+
if (meatItems.includes(label))
|
|
39
|
+
return 'meat';
|
|
40
|
+
if (bakeryItems.includes(label))
|
|
41
|
+
return 'bakery';
|
|
42
|
+
if (dairyItems.includes(label))
|
|
43
|
+
return 'dairy';
|
|
44
|
+
if (beverageItems.includes(label))
|
|
45
|
+
return 'beverage';
|
|
46
|
+
if (condimentItems.includes(label))
|
|
47
|
+
return 'condiment';
|
|
48
|
+
// Kitchen items (useful for context)
|
|
49
|
+
const kitchenItems = [
|
|
50
|
+
'fork', 'knife', 'spoon', 'microwave', 'oven', 'toaster', 'sink',
|
|
51
|
+
'refrigerator', 'dining table'
|
|
52
|
+
];
|
|
53
|
+
if (kitchenItems.includes(label))
|
|
54
|
+
return 'unknown'; // Not a product but kitchen context
|
|
55
|
+
return 'unknown';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Map class index to label and category for COCO
|
|
59
|
+
*/
|
|
60
|
+
export const CLASS_LABELS_COCO = Object.fromEntries(COCO_CLASSES.map((label, index) => [
|
|
61
|
+
index,
|
|
62
|
+
{ label, category: getCocoCategory(label) }
|
|
63
|
+
]));
|
|
64
|
+
/**
|
|
65
|
+
* Number of classes in COCO model
|
|
66
|
+
*/
|
|
67
|
+
export const NUM_CLASSES_COCO = 80;
|
|
68
|
+
/**
|
|
69
|
+
* Food class indices in COCO (useful for filtering)
|
|
70
|
+
*/
|
|
71
|
+
export const FOOD_CLASS_INDICES = [46, 47, 48, 49, 50, 51, 52, 53, 54, 55];
|
|
72
|
+
/**
|
|
73
|
+
* Kitchen/dining class indices (context)
|
|
74
|
+
*/
|
|
75
|
+
export const KITCHEN_CLASS_INDICES = [39, 40, 41, 42, 43, 44, 45, 60, 68, 69, 70, 71, 72];
|
|
76
|
+
/**
|
|
77
|
+
* Get label info for a COCO class index
|
|
78
|
+
*/
|
|
79
|
+
export function getCocoClassInfo(classIndex) {
|
|
80
|
+
const info = CLASS_LABELS_COCO[classIndex];
|
|
81
|
+
if (info) {
|
|
82
|
+
return info;
|
|
83
|
+
}
|
|
84
|
+
return { label: `class_${classIndex}`, category: 'unknown' };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a class index is a food item
|
|
88
|
+
*/
|
|
89
|
+
export function isFoodClass(classIndex) {
|
|
90
|
+
return FOOD_CLASS_INDICES.includes(classIndex);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get all COCO labels as an array
|
|
94
|
+
*/
|
|
95
|
+
export function getCocoLabelsArray() {
|
|
96
|
+
return [...COCO_CLASSES];
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=classLabelsCoco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classLabelsCoco.js","sourceRoot":"","sources":["../../../src/hooks/classLabelsCoco.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks exports
|
|
3
|
+
*/
|
|
4
|
+
export { useProductDetector, default as useProductDetectorDefault } from './useProductDetector';
|
|
5
|
+
export { useMultiBarcodeScanner, default as useMultiBarcodeScannerDefault } from './useMultiBarcodeScanner';
|
|
6
|
+
export { useReceiptScanner, default as useReceiptScannerDefault } from './useReceiptScanner';
|
|
7
|
+
export { useVideoScanner, default as useVideoScannerDefault, } from './useVideoScanner';
|
|
8
|
+
export { CLASS_LABELS, NUM_CLASSES, getClassInfo, getLabelsArray, CATEGORY_CLASSES } from './classLabels';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,eAAe,EACf,OAAO,IAAI,sBAAsB,GAKlC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|