Update app.py
Browse files
app.py
CHANGED
@@ -118,15 +118,35 @@ else:
|
|
118 |
print("Skipping TensorFlow model loading because prerequisite Hugging Face models failed to load.")
|
119 |
|
120 |
# Load parts list from JSON
|
|
|
121 |
PARTS_LIST_FILE = 'cars117.json'
|
122 |
all_parts = []
|
123 |
if os.path.exists(PARTS_LIST_FILE):
|
124 |
with open(PARTS_LIST_FILE, 'r', encoding='utf-8') as f:
|
125 |
data = json.load(f)
|
|
|
126 |
all_parts = sorted(list(set(part for entry in data.values() for part in entry.get('replaced_parts', []))))
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
else:
|
131 |
print(f"Error: Parts list file '{PARTS_LIST_FILE}' not found. Predicted part names will be unavailable.")
|
132 |
|
|
|
118 |
print("Skipping TensorFlow model loading because prerequisite Hugging Face models failed to load.")
|
119 |
|
120 |
# Load parts list from JSON
|
121 |
+
# --- (Corrected Code) ---
|
122 |
PARTS_LIST_FILE = 'cars117.json'
|
123 |
all_parts = []
|
124 |
if os.path.exists(PARTS_LIST_FILE):
|
125 |
with open(PARTS_LIST_FILE, 'r', encoding='utf-8') as f:
|
126 |
data = json.load(f)
|
127 |
+
# Get the unique, sorted list of parts from the JSON file
|
128 |
all_parts = sorted(list(set(part for entry in data.values() for part in entry.get('replaced_parts', []))))
|
129 |
+
|
130 |
+
# FIX: Dynamically handle mismatch between model output and parts list
|
131 |
+
if dl_model is not None:
|
132 |
+
model_output_size = dl_model.output_shape[-1]
|
133 |
+
parts_list_size = len(all_parts)
|
134 |
+
|
135 |
+
if model_output_size != parts_list_size:
|
136 |
+
print(f"WARNING: Model output size ({model_output_size}) and parts list size ({parts_list_size}) do not match.")
|
137 |
+
|
138 |
+
# If the model expects more outputs, pad the parts list with dummy values
|
139 |
+
if model_output_size > parts_list_size:
|
140 |
+
diff = model_output_size - parts_list_size
|
141 |
+
print(f"Padding the parts list with {diff} dummy entries to prevent a crash.")
|
142 |
+
for i in range(diff):
|
143 |
+
all_parts.append(f"_dummy_part_{i+1}_")
|
144 |
+
|
145 |
+
# If the model expects fewer outputs, truncate the parts list
|
146 |
+
else:
|
147 |
+
diff = parts_list_size - model_output_size
|
148 |
+
print(f"Truncating the parts list by {diff} entries to match the model's output.")
|
149 |
+
all_parts = all_parts[:model_output_size]
|
150 |
else:
|
151 |
print(f"Error: Parts list file '{PARTS_LIST_FILE}' not found. Predicted part names will be unavailable.")
|
152 |
|