JunJiaGuo commited on
Commit
8c64992
·
verified ·
1 Parent(s): 0dd3f3d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -17
app.py CHANGED
@@ -109,19 +109,6 @@ CATEGORY_MAPPING = {
109
  "Cinematography": ["camera_movement", "camera_angle", "shot_size"]
110
  }
111
 
112
- def save_class_accuracy_to_csv(model_name, class_accuracy):
113
- """ 将模型的 class 正确率追加到 CSV,按固定顺序存储 """
114
- data = {"Model Name": model_name}
115
- for cls in CLASS_LIST:
116
- data[cls] = class_accuracy.get(cls, 0) # 确保所有列都有数据
117
-
118
- df = pd.DataFrame([data])
119
-
120
- # 如果 CSV 文件不存在,则创建并写入表头,否则追加数据
121
- if not os.path.exists(CSV_FILE):
122
- df.to_csv(CSV_FILE, index=False)
123
- else:
124
- df.to_csv(CSV_FILE, mode='a', header=False, index=False) # 追加模式
125
 
126
  def load_id_answer_mapping():
127
  id_answer_mapping = os.getenv("ID_ANSWER_MAPPING")
@@ -160,7 +147,7 @@ def evaluate_uploaded_json(user_file, model_name):
160
  class_correct[question_class] += 1
161
  correct += 1
162
 
163
- # 计算每个 class 的正确率
164
  class_accuracy = {
165
  cls: class_correct[cls] / class_total[cls] if class_total[cls] > 0 else 0
166
  for cls in CLASS_LIST[:-5] # 只计算二级子类,最后5个是一级分类
@@ -177,10 +164,13 @@ def evaluate_uploaded_json(user_file, model_name):
177
  # **保存 class 正确率到 CSV**
178
  save_class_accuracy_to_csv(model_name, class_accuracy)
179
 
180
- # 格式化输出
181
  class_accuracy_str = "\n".join(
182
- [f"- {cls}: {acc:.2%} ({class_correct[cls]}/{class_total[cls]} correct)"
183
- for cls in CLASS_LIST]
 
 
 
184
  )
185
 
186
  return (
@@ -189,6 +179,20 @@ def evaluate_uploaded_json(user_file, model_name):
189
  f"Class-wise Accuracy:\n{class_accuracy_str}"
190
  )
191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
 
193
 
194
  demo = gr.Blocks(css=custom_css)
 
109
  "Cinematography": ["camera_movement", "camera_angle", "shot_size"]
110
  }
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
  def load_id_answer_mapping():
114
  id_answer_mapping = os.getenv("ID_ANSWER_MAPPING")
 
147
  class_correct[question_class] += 1
148
  correct += 1
149
 
150
+ # 计算每个二级子类的正确率
151
  class_accuracy = {
152
  cls: class_correct[cls] / class_total[cls] if class_total[cls] > 0 else 0
153
  for cls in CLASS_LIST[:-5] # 只计算二级子类,最后5个是一级分类
 
164
  # **保存 class 正确率到 CSV**
165
  save_class_accuracy_to_csv(model_name, class_accuracy)
166
 
167
+ # **修复 NameError 并避免 KeyError**
168
  class_accuracy_str = "\n".join(
169
+ [
170
+ f"- {cls}: {class_accuracy[cls]:.2%} "
171
+ f"({class_correct.get(cls, 0)}/{class_total.get(cls, 0)} correct)"
172
+ for cls in CLASS_LIST
173
+ ]
174
  )
175
 
176
  return (
 
179
  f"Class-wise Accuracy:\n{class_accuracy_str}"
180
  )
181
 
182
+ def save_class_accuracy_to_csv(model_name, class_accuracy):
183
+ """ 将模型的 class 正确率追加到 CSV,按固定顺序存储 """
184
+ data = {"Model Name": model_name}
185
+ for cls in CLASS_LIST:
186
+ data[cls] = class_accuracy.get(cls, 0) # 确保所有列都有数据
187
+
188
+ df = pd.DataFrame([data])
189
+
190
+ # 如果 CSV 文件不存在,则创建并写入表头,否则追加数据
191
+ if not os.path.exists(CSV_FILE):
192
+ df.to_csv(CSV_FILE, index=False)
193
+ else:
194
+ df.to_csv(CSV_FILE, mode='a', header=False, index=False) # 追加模式
195
+
196
 
197
 
198
  demo = gr.Blocks(css=custom_css)