Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
# 计算每个
|
| 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 |
-
[
|
| 183 |
-
|
|
|
|
|
|
|
|
|
|
| 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)
|