Spaces:
Sleeping
Sleeping
revised all
Browse files- app.py +77 -97
- logs/evaluation_ui_log_2025-07-30_17-22-55_355099.log +2 -0
- logs/evaluation_ui_log_2025-07-30_17-24-13_896139.log +9 -0
- results/P99/LLM-based/P99_LLM-based_all_predictions.jsonl +0 -26
- results/P99/Ours/P99_Ours_all_predictions.jsonl +0 -26
- results/P99/evaluation_results_P99_20250730_172643.json +112 -0
- results/P99/w_o_HitL/P99_w_o_HitL_all_predictions.jsonl +0 -26
- results/P99/w_o_Proto_Loss/P99_w_o_Proto_Loss_all_predictions.jsonl +0 -26
- results/P99/w_o_Tuning/P99_w_o_Tuning_all_predictions.jsonl +1 -27
app.py
CHANGED
|
@@ -11,7 +11,6 @@ from collections import defaultdict, Counter
|
|
| 11 |
import gradio as gr
|
| 12 |
from loguru import logger
|
| 13 |
|
| 14 |
-
# --- Global State (unchanged) ---
|
| 15 |
# --- Global State (unchanged) ---
|
| 16 |
GLOBAL_STATE = {
|
| 17 |
"participant_id": None,
|
|
@@ -28,7 +27,6 @@ GLOBAL_STATE = {
|
|
| 28 |
"end_time": None,
|
| 29 |
"current_ranks": {},
|
| 30 |
"current_absolute_score": None,
|
| 31 |
-
# ▼▼▼ 追加 ▼▼▼
|
| 32 |
"current_absolute_score_worst": None,
|
| 33 |
}
|
| 34 |
|
|
@@ -54,7 +52,7 @@ CRITERIA_GUIDANCE_EN = [
|
|
| 54 |
IMAGE_LABELS = ['A', 'B', 'C', 'D', 'E']
|
| 55 |
|
| 56 |
|
| 57 |
-
# --- Helper Functions ---
|
| 58 |
def get_image_path_from_prediction(prediction: dict) -> str:
|
| 59 |
if not GLOBAL_STATE["image_mapping"]:
|
| 60 |
logger.error("Image mapping is not loaded.")
|
|
@@ -72,7 +70,6 @@ def get_image_path_from_prediction(prediction: dict) -> str:
|
|
| 72 |
return os.path.join(GLOBAL_STATE["image_dir"], filename)
|
| 73 |
|
| 74 |
|
| 75 |
-
# ▼▼▼ 2. prompt_categoryを読み込むように修正 ▼▼▼
|
| 76 |
def load_evaluation_data(participant_id: str):
|
| 77 |
mapping_path = os.path.join(COMBINED_DATA_DIR, MAPPING_FILENAME)
|
| 78 |
if not os.path.exists(mapping_path):
|
|
@@ -115,7 +112,6 @@ def load_evaluation_data(participant_id: str):
|
|
| 115 |
{"prompt": p, "predictions": d["predictions"], "category": d["category"]}
|
| 116 |
for p, d in merged_data.items() if len(d["predictions"]) == len(CONDITIONS)
|
| 117 |
]
|
| 118 |
-
# ▲▲▲ END OF UPDATE ▲▲▲
|
| 119 |
|
| 120 |
if not GLOBAL_STATE["all_eval_data"]:
|
| 121 |
return "<p class='feedback red'>Error: No valid evaluation data could be loaded.</p>", gr.update(
|
|
@@ -136,8 +132,7 @@ def load_evaluation_data(participant_id: str):
|
|
| 136 |
return done_msg, gr.update(interactive=False, visible=False), gr.update(interactive=True)
|
| 137 |
|
| 138 |
|
| 139 |
-
# --- Core Logic ---
|
| 140 |
-
|
| 141 |
def _create_button_updates():
|
| 142 |
updates = []
|
| 143 |
for img_label in IMAGE_LABELS:
|
|
@@ -163,7 +158,6 @@ def handle_absolute_score_click(score):
|
|
| 163 |
GLOBAL_STATE["current_absolute_score"] = None
|
| 164 |
else:
|
| 165 |
GLOBAL_STATE["current_absolute_score"] = score
|
| 166 |
-
|
| 167 |
updates = []
|
| 168 |
for i in range(1, 8):
|
| 169 |
if i == GLOBAL_STATE["current_absolute_score"]:
|
|
@@ -173,13 +167,11 @@ def handle_absolute_score_click(score):
|
|
| 173 |
return updates
|
| 174 |
|
| 175 |
|
| 176 |
-
# ▼▼▼ 追加 ▼▼▼
|
| 177 |
def handle_absolute_score_worst_click(score):
|
| 178 |
if GLOBAL_STATE["current_absolute_score_worst"] == score:
|
| 179 |
GLOBAL_STATE["current_absolute_score_worst"] = None
|
| 180 |
else:
|
| 181 |
GLOBAL_STATE["current_absolute_score_worst"] = score
|
| 182 |
-
|
| 183 |
updates = []
|
| 184 |
for i in range(1, 8):
|
| 185 |
if i == GLOBAL_STATE["current_absolute_score_worst"]:
|
|
@@ -188,8 +180,8 @@ def handle_absolute_score_worst_click(score):
|
|
| 188 |
updates.append(gr.update(variant='secondary'))
|
| 189 |
return updates
|
| 190 |
|
| 191 |
-
# ▼▼▼ 1. UIフリーズ問題を修正 ▼▼▼
|
| 192 |
|
|
|
|
| 193 |
|
| 194 |
# ▼▼▼ 修正後の display_current_prompt_and_criterion 関数 ▼▼▼
|
| 195 |
def display_current_prompt_and_criterion():
|
|
@@ -198,10 +190,10 @@ def display_current_prompt_and_criterion():
|
|
| 198 |
empty_button_updates = [gr.update(variant='secondary')] * 25
|
| 199 |
empty_abs_updates = [gr.update(variant='secondary')] * 7
|
| 200 |
return [
|
| 201 |
-
gr.update(value="Finished! / 完了!"),
|
| 202 |
-
gr.update(value=""),
|
| 203 |
-
gr.update(value=
|
| 204 |
-
gr.update(value=
|
| 205 |
*[gr.update(value=None)] * 5,
|
| 206 |
*empty_button_updates,
|
| 207 |
gr.update(visible=False), # abs_group_best
|
|
@@ -220,8 +212,38 @@ def display_current_prompt_and_criterion():
|
|
| 220 |
criterion_name = CRITERIA[criterion_idx]
|
| 221 |
|
| 222 |
progress_text = f"Prompt {GLOBAL_STATE['current_prompt_index'] + 1} / {len(GLOBAL_STATE['all_eval_data'])} - **{criterion_name}**"
|
| 223 |
-
|
| 224 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 225 |
|
| 226 |
if criterion_idx == 0:
|
| 227 |
GLOBAL_STATE["image_orders"] = {}
|
|
@@ -249,7 +271,6 @@ def display_current_prompt_and_criterion():
|
|
| 249 |
|
| 250 |
button_updates = _create_button_updates()
|
| 251 |
|
| 252 |
-
# --- Absolute Score (Best) ---
|
| 253 |
is_alignment_criterion = (criterion_name == "Alignment")
|
| 254 |
abs_group_update = gr.update(visible=is_alignment_criterion)
|
| 255 |
saved_abs_score = GLOBAL_STATE["evaluation_results"].get(prompt_text, {}).get("absolute_score")
|
|
@@ -260,7 +281,6 @@ def display_current_prompt_and_criterion():
|
|
| 260 |
variant = 'primary' if i == GLOBAL_STATE["current_absolute_score"] else 'secondary'
|
| 261 |
abs_button_updates.append(gr.update(variant=variant))
|
| 262 |
|
| 263 |
-
# --- Absolute Score (Worst) ---
|
| 264 |
abs_group_worst_update = gr.update(visible=is_alignment_criterion)
|
| 265 |
saved_abs_score_worst = GLOBAL_STATE["evaluation_results"].get(prompt_text, {}).get("absolute_score_worst")
|
| 266 |
GLOBAL_STATE["current_absolute_score_worst"] = saved_abs_score_worst if is_alignment_criterion else None
|
|
@@ -272,9 +292,9 @@ def display_current_prompt_and_criterion():
|
|
| 272 |
|
| 273 |
return [
|
| 274 |
gr.update(value=progress_text),
|
|
|
|
| 275 |
gr.update(value=prompt_display_text),
|
| 276 |
-
gr.update(value=
|
| 277 |
-
gr.update(value="", visible=False),
|
| 278 |
*image_updates,
|
| 279 |
*button_updates,
|
| 280 |
abs_group_update,
|
|
@@ -287,14 +307,13 @@ def display_current_prompt_and_criterion():
|
|
| 287 |
]
|
| 288 |
|
| 289 |
|
| 290 |
-
# ▼▼▼ 修正後の validate_and_navigate 関数 ▼▼▼
|
| 291 |
def validate_and_navigate():
|
| 292 |
ranks = GLOBAL_STATE["current_ranks"]
|
| 293 |
error_msg = None
|
| 294 |
criterion_name = CRITERIA[GLOBAL_STATE["current_criterion_index"]]
|
| 295 |
is_alignment_criterion = (criterion_name == "Alignment")
|
| 296 |
|
| 297 |
-
# --- Validation ---
|
| 298 |
if any(r is None for r in ranks.values()):
|
| 299 |
error_msg = "Please rank all 5 images. / 5つすべての画像を評価してください。"
|
| 300 |
elif 1 not in ranks.values():
|
|
@@ -303,28 +322,24 @@ def validate_and_navigate():
|
|
| 303 |
error_msg = "Please provide an absolute score for the BEST matching image (1-7). / 最も一致している画像について、絶対評価(1~7)を選択してください。"
|
| 304 |
elif is_alignment_criterion and GLOBAL_STATE["current_absolute_score_worst"] is None:
|
| 305 |
error_msg = "Please provide an absolute score for the WORST matching image (1-7). / 最も一致していない画像について、絶対評価(1~7)を選択してください。"
|
| 306 |
-
# ▼▼▼ 変更箇所 ここから ▼▼▼
|
| 307 |
elif (
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
):
|
| 313 |
error_msg = (
|
| 314 |
"The score for the WORST matching image cannot be higher than the score for the BEST matching image.<br>"
|
| 315 |
"「最も一致していない画像」のスコアが「最も一致している画像」のスコアを上回ることはできません。"
|
| 316 |
)
|
| 317 |
-
# ▲▲▲ 変更箇所 ここまで ▲▲▲
|
| 318 |
|
| 319 |
if error_msg:
|
| 320 |
-
# The number of components to update is now 53 (1 tab + 52 eval components)
|
| 321 |
no_change_updates = [gr.update()] * 53
|
| 322 |
-
no_change_updates[4] = gr.update(
|
| 323 |
value=f"<p class='feedback red' style='font-size: 1.2em; text-align: center;'>{error_msg}</p>",
|
| 324 |
visible=True)
|
| 325 |
return no_change_updates
|
| 326 |
|
| 327 |
-
# ... (Rank tie-breaking validation logic is unchanged) ...
|
| 328 |
sorted_ranks = sorted(list(ranks.values()))
|
| 329 |
rank_counts = Counter(sorted_ranks)
|
| 330 |
i = 0
|
|
@@ -335,7 +350,7 @@ def validate_and_navigate():
|
|
| 335 |
next_rank = sorted_ranks[i + count]
|
| 336 |
expected_next_rank = current_rank + count
|
| 337 |
if next_rank < expected_next_rank:
|
| 338 |
-
error_msg = f"Ranking rule violation (tie-breaking). After {count} instance(s) of rank '{current_rank}', the next rank must be >= {expected_next_rank}, but it is '{next_rank}'. /
|
| 339 |
break
|
| 340 |
i += count
|
| 341 |
if error_msg:
|
|
@@ -344,7 +359,6 @@ def validate_and_navigate():
|
|
| 344 |
value=f"<p class='feedback red' style='font-size: 1.2em; text-align: center;'>{error_msg}</p>",
|
| 345 |
visible=True)
|
| 346 |
return no_change_updates
|
| 347 |
-
# --- End of Validation ---
|
| 348 |
|
| 349 |
prompt_idx = GLOBAL_STATE["shuffled_indices"][GLOBAL_STATE["current_prompt_index"]]
|
| 350 |
current_data = GLOBAL_STATE["all_eval_data"][prompt_idx]
|
|
@@ -378,12 +392,11 @@ def validate_and_navigate():
|
|
| 378 |
if GLOBAL_STATE["current_prompt_index"] >= len(GLOBAL_STATE["all_eval_data"]):
|
| 379 |
GLOBAL_STATE["end_time"] = datetime.now()
|
| 380 |
eval_panel_updates = display_current_prompt_and_criterion()
|
| 381 |
-
# Activate export tab on completion
|
| 382 |
return [gr.update(interactive=True)] + eval_panel_updates
|
| 383 |
else:
|
| 384 |
-
# Keep export tab state as is
|
| 385 |
return [gr.update()] + display_current_prompt_and_criterion()
|
| 386 |
|
|
|
|
| 387 |
def navigate_previous():
|
| 388 |
GLOBAL_STATE["current_criterion_index"] -= 1
|
| 389 |
if GLOBAL_STATE["current_criterion_index"] < 0:
|
|
@@ -392,7 +405,8 @@ def navigate_previous():
|
|
| 392 |
GLOBAL_STATE["current_prompt_index"] = max(0, GLOBAL_STATE["current_prompt_index"])
|
| 393 |
return display_current_prompt_and_criterion()
|
| 394 |
|
| 395 |
-
|
|
|
|
| 396 |
def export_results(participant_id, alignment_reason, naturalness_reason, attractiveness_reason, optional_comment):
|
| 397 |
if not alignment_reason.strip() or not naturalness_reason.strip() or not attractiveness_reason.strip():
|
| 398 |
error_msg = "<p class='feedback red'>Please fill in the reasoning for all three criteria (Alignment, Naturalness, Attractiveness). / 3つの評価基準(一致度, 自然さ, 魅力度)すべての判断理由を記入してください。</p>"
|
|
@@ -428,7 +442,6 @@ def export_results(participant_id, alignment_reason, naturalness_reason, attract
|
|
| 428 |
"naturalness_ranks": ranks_data.get("Naturalness", {}),
|
| 429 |
"attractiveness_ranks": ranks_data.get("Attractiveness", {}),
|
| 430 |
"alignment_absolute_score": data.get("absolute_score"),
|
| 431 |
-
# ▼▼▼ 追加 ▼▼▼
|
| 432 |
"alignment_absolute_score_worst": data.get("absolute_score_worst")
|
| 433 |
})
|
| 434 |
|
|
@@ -467,7 +480,7 @@ def export_results(participant_id, alignment_reason, naturalness_reason, attract
|
|
| 467 |
return gr.update(value=filepath, visible=True), status_message
|
| 468 |
|
| 469 |
|
| 470 |
-
|
| 471 |
def create_gradio_interface():
|
| 472 |
css = """
|
| 473 |
.gradio-container { font-family: 'Arial', sans-serif; }
|
|
@@ -475,24 +488,10 @@ def create_gradio_interface():
|
|
| 475 |
.feedback.green { background-color: #e6ffed; color: #2f6f4a; }
|
| 476 |
.feedback.red { background-color: #ffe6e6; color: #b30000; }
|
| 477 |
.image-label { font-size: 2.5em; font-weight: bold; margin-bottom: 10px; color: #333; }
|
| 478 |
-
.prompt-display { text-align: center; margin-bottom:
|
| 479 |
-
.prompt-sub-guidance { text-align: center; font-size: 0.9em; color: #555; margin-top: 5px; margin-bottom: 15px; }
|
| 480 |
-
.rank-instruction {
|
| 481 |
-
color: #D32F2F;
|
| 482 |
-
font-size: 1.1em;
|
| 483 |
-
text-align: left;
|
| 484 |
-
margin-bottom: 20px;
|
| 485 |
-
padding: 15px;
|
| 486 |
-
border: 1px solid #f5c6cb;
|
| 487 |
-
border-radius: 8px;
|
| 488 |
-
background-color: #f8d7da;
|
| 489 |
-
line-height: 1.6;
|
| 490 |
-
}
|
| 491 |
-
.rank-instruction ul { padding-left: 20px; margin: 0; }
|
| 492 |
-
.rank-guidance { text-align: center; margin-bottom: 10px; font-size: 1.2em; }
|
| 493 |
.rank-btn-row { justify-content: center; gap: 5px !important; }
|
| 494 |
-
.rank-btn {
|
| 495 |
-
min-width: 65px !important;
|
| 496 |
max-width: 65px !important;
|
| 497 |
height: 45px !important;
|
| 498 |
font-size: 1.2em !important;
|
|
@@ -514,6 +513,15 @@ def create_gradio_interface():
|
|
| 514 |
padding: 15px;
|
| 515 |
margin-top: 20px;
|
| 516 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 517 |
"""
|
| 518 |
|
| 519 |
with gr.Blocks(title="Expression Evaluation Experiment", css=css) as app:
|
|
@@ -545,6 +553,9 @@ def create_gradio_interface():
|
|
| 545 |
|
| 546 |
with gr.TabItem("2. Evaluation / 評価", interactive=False) as tab_evaluation:
|
| 547 |
progress_text = gr.Markdown("Prompt 0 / 0")
|
|
|
|
|
|
|
|
|
|
| 548 |
|
| 549 |
image_components = []
|
| 550 |
rank_buttons = []
|
|
@@ -558,38 +569,14 @@ def create_gradio_interface():
|
|
| 558 |
with gr.Row(elem_classes="rank-btn-row"):
|
| 559 |
rank_list = ["1位", "2位", "3位", "4位", "5位"]
|
| 560 |
for rank_val in range(1, 6):
|
| 561 |
-
btn = gr.Button(str(rank_list[rank_val-1]), variant='secondary',
|
|
|
|
| 562 |
rank_buttons.append(btn)
|
| 563 |
|
| 564 |
-
prompt_display = gr.Markdown("## \"Prompt Text Here\"", elem_classes="prompt-display")
|
| 565 |
-
gr.Markdown(
|
| 566 |
-
"<p class='prompt-sub-guidance'>You may use AI or web search for the meaning of the text. However, please do not ask an AI about the emotion of the image itself.<br>意味についてはAIに聞いたりネット検索しても構いません。ただし、画像そのものの感情をAIに尋ねるのを止めてください。</p>")
|
| 567 |
-
guidance_display = gr.Markdown("### Guidance", elem_classes="rank-guidance")
|
| 568 |
-
error_display = gr.Markdown(visible=False)
|
| 569 |
-
|
| 570 |
-
gr.Markdown(
|
| 571 |
-
"""
|
| 572 |
-
<b>ランキングの付け方 / How to Rank:</b>
|
| 573 |
-
<ul>
|
| 574 |
-
<li><b>全く同じ表情の画像には、同じ順位</b>を付けてください。(Assign the <b>same rank</b> to identical expressions.)</li>
|
| 575 |
-
<li><b>少しでも違う表情の画像には、違う順位</b>を付けてください。(Assign <b>different ranks</b> to different expressions.)</li>
|
| 576 |
-
<li><b>必ず1位から</b>順位を付けてください。(You <b>must</b> assign a rank of '1' to at least one image.)</li>
|
| 577 |
-
<li>同順位がある場合、<b>その人数分だけ次の順位を飛ばしてください</b>。(When you have ties, <b>skip the next rank(s) accordingly</b>.)
|
| 578 |
-
<ul>
|
| 579 |
-
<li>例1: 1位が2つある場合、次は3位になります (Ex. 1: If there are two '1st' places, the next rank is '3rd'. e.g., <code>1, 1, 3, 4, 5</code>).</li>
|
| 580 |
-
<li>例2: 1位が1つ、2位が3つある場合、次は5位になります (Ex. 2: If there is one '1st' and three '2nd' places, the next rank is '5th'. e.g., <code>1, 2, 2, 2, 5</code>).</li>
|
| 581 |
-
</ul>
|
| 582 |
-
</li>
|
| 583 |
-
</ul>
|
| 584 |
-
""",
|
| 585 |
-
elem_classes="rank-instruction"
|
| 586 |
-
)
|
| 587 |
-
|
| 588 |
-
# ▼▼▼ 修正: 絶対評価(Best)のUI ▼▼▼
|
| 589 |
with gr.Group(visible=False, elem_classes="absolute-eval-group") as absolute_eval_group_best:
|
| 590 |
gr.Markdown("---")
|
| 591 |
gr.Markdown(
|
| 592 |
-
"#### 絶対評価 (Best) / Absolute Score (Best)\n
|
| 593 |
absolute_score_buttons = []
|
| 594 |
with gr.Row():
|
| 595 |
with gr.Column(scale=1):
|
|
@@ -603,10 +590,9 @@ def create_gradio_interface():
|
|
| 603 |
with gr.Column(scale=1):
|
| 604 |
gr.Markdown("<p style='text-align: left; margin-top: 10px;'>7 (完全に一致 / Absolutely)</p>")
|
| 605 |
|
| 606 |
-
# ▼▼▼ 追加: 絶対評価(Worst)のUI ▼▼▼
|
| 607 |
with gr.Group(visible=False, elem_classes="absolute-eval-group") as absolute_eval_group_worst:
|
| 608 |
gr.Markdown(
|
| 609 |
-
"#### 絶対評価 (Worst) / Absolute Score (Worst)\n
|
| 610 |
absolute_score_worst_buttons = []
|
| 611 |
with gr.Row():
|
| 612 |
with gr.Column(scale=1):
|
|
@@ -632,11 +618,11 @@ def create_gradio_interface():
|
|
| 632 |
with gr.Group():
|
| 633 |
gr.Markdown("#### Reasoning for Judgments (Required) / 判断理由(必須)")
|
| 634 |
alignment_reason_box = gr.Textbox(label="Alignment / 一致度", lines=3,
|
| 635 |
-
placeholder="Why did you rank them this way for alignment? /
|
| 636 |
naturalness_reason_box = gr.Textbox(label="Naturalness / 自然さ", lines=3,
|
| 637 |
-
placeholder="Why did you rank them this way for naturalness? /
|
| 638 |
attractiveness_reason_box = gr.Textbox(label="Attractiveness / 魅力度", lines=3,
|
| 639 |
-
placeholder="Why did you rank them this way for attractiveness? /
|
| 640 |
|
| 641 |
with gr.Group():
|
| 642 |
gr.Markdown("#### Overall Comments (Optional) / 全体的な感想(任意)")
|
|
@@ -651,7 +637,7 @@ def create_gradio_interface():
|
|
| 651 |
download_file = gr.File(label="Download JSON", visible=False)
|
| 652 |
export_status = gr.Markdown()
|
| 653 |
|
| 654 |
-
# --- Event Handlers ---
|
| 655 |
def check_and_confirm_id(pid):
|
| 656 |
pid = pid.strip()
|
| 657 |
if re.fullmatch(r"P\d{2}", pid):
|
|
@@ -664,9 +650,8 @@ def create_gradio_interface():
|
|
| 664 |
confirm_id_btn.click(check_and_confirm_id, [participant_id_input], [setup_warning, setup_main_group])
|
| 665 |
load_data_btn.click(load_evaluation_data, [participant_id_input], [setup_status, load_data_btn, tab_evaluation])
|
| 666 |
|
| 667 |
-
# ▼▼▼ 修正: all_eval_outputs に新しいUIコンポーネントを追加 ▼▼▼
|
| 668 |
all_eval_outputs = [
|
| 669 |
-
progress_text,
|
| 670 |
*rank_buttons,
|
| 671 |
absolute_eval_group_best, *absolute_score_buttons,
|
| 672 |
absolute_eval_group_worst, *absolute_score_worst_buttons,
|
|
@@ -691,7 +676,6 @@ def create_gradio_interface():
|
|
| 691 |
absolute_score_buttons
|
| 692 |
)
|
| 693 |
|
| 694 |
-
# ▼▼▼ 追加: 新しいボタンのイベントハンドラを接続 ▼▼▼
|
| 695 |
for i, btn in enumerate(absolute_score_worst_buttons):
|
| 696 |
btn.click(
|
| 697 |
partial(handle_absolute_score_worst_click, i + 1),
|
|
@@ -700,20 +684,15 @@ def create_gradio_interface():
|
|
| 700 |
)
|
| 701 |
|
| 702 |
tab_evaluation.select(display_current_prompt_and_criterion, [], all_eval_outputs)
|
| 703 |
-
|
| 704 |
-
# ▼▼▼ 修正: next_btn の出力に tab_export を追加 ▼▼▼
|
| 705 |
next_btn.click(validate_and_navigate, [], [tab_export, *all_eval_outputs])
|
| 706 |
-
|
| 707 |
prev_btn.click(navigate_previous, [], all_eval_outputs)
|
| 708 |
|
| 709 |
export_tab_interactive_components = [alignment_reason_box, naturalness_reason_box, attractiveness_reason_box,
|
| 710 |
optional_comment_box, export_btn]
|
| 711 |
|
| 712 |
def on_select_export_tab():
|
| 713 |
-
# end_time is set only when all evaluations are complete
|
| 714 |
if GLOBAL_STATE.get("end_time"):
|
| 715 |
return [gr.update(interactive=True)] * 5
|
| 716 |
-
# This logic is now handled by next_btn click, but kept as a fallback.
|
| 717 |
return [gr.update(interactive=False)] * 5
|
| 718 |
|
| 719 |
tab_export.select(on_select_export_tab, [], export_tab_interactive_components)
|
|
@@ -727,6 +706,7 @@ def create_gradio_interface():
|
|
| 727 |
|
| 728 |
return app
|
| 729 |
|
|
|
|
| 730 |
if __name__ == "__main__":
|
| 731 |
os.makedirs(LOG_DIR, exist_ok=True)
|
| 732 |
log_file_path = os.path.join(LOG_DIR, "evaluation_ui_log_{time}.log")
|
|
|
|
| 11 |
import gradio as gr
|
| 12 |
from loguru import logger
|
| 13 |
|
|
|
|
| 14 |
# --- Global State (unchanged) ---
|
| 15 |
GLOBAL_STATE = {
|
| 16 |
"participant_id": None,
|
|
|
|
| 27 |
"end_time": None,
|
| 28 |
"current_ranks": {},
|
| 29 |
"current_absolute_score": None,
|
|
|
|
| 30 |
"current_absolute_score_worst": None,
|
| 31 |
}
|
| 32 |
|
|
|
|
| 52 |
IMAGE_LABELS = ['A', 'B', 'C', 'D', 'E']
|
| 53 |
|
| 54 |
|
| 55 |
+
# --- Helper Functions (unchanged) ---
|
| 56 |
def get_image_path_from_prediction(prediction: dict) -> str:
|
| 57 |
if not GLOBAL_STATE["image_mapping"]:
|
| 58 |
logger.error("Image mapping is not loaded.")
|
|
|
|
| 70 |
return os.path.join(GLOBAL_STATE["image_dir"], filename)
|
| 71 |
|
| 72 |
|
|
|
|
| 73 |
def load_evaluation_data(participant_id: str):
|
| 74 |
mapping_path = os.path.join(COMBINED_DATA_DIR, MAPPING_FILENAME)
|
| 75 |
if not os.path.exists(mapping_path):
|
|
|
|
| 112 |
{"prompt": p, "predictions": d["predictions"], "category": d["category"]}
|
| 113 |
for p, d in merged_data.items() if len(d["predictions"]) == len(CONDITIONS)
|
| 114 |
]
|
|
|
|
| 115 |
|
| 116 |
if not GLOBAL_STATE["all_eval_data"]:
|
| 117 |
return "<p class='feedback red'>Error: No valid evaluation data could be loaded.</p>", gr.update(
|
|
|
|
| 132 |
return done_msg, gr.update(interactive=False, visible=False), gr.update(interactive=True)
|
| 133 |
|
| 134 |
|
| 135 |
+
# --- Core Logic (unchanged) ---
|
|
|
|
| 136 |
def _create_button_updates():
|
| 137 |
updates = []
|
| 138 |
for img_label in IMAGE_LABELS:
|
|
|
|
| 158 |
GLOBAL_STATE["current_absolute_score"] = None
|
| 159 |
else:
|
| 160 |
GLOBAL_STATE["current_absolute_score"] = score
|
|
|
|
| 161 |
updates = []
|
| 162 |
for i in range(1, 8):
|
| 163 |
if i == GLOBAL_STATE["current_absolute_score"]:
|
|
|
|
| 167 |
return updates
|
| 168 |
|
| 169 |
|
|
|
|
| 170 |
def handle_absolute_score_worst_click(score):
|
| 171 |
if GLOBAL_STATE["current_absolute_score_worst"] == score:
|
| 172 |
GLOBAL_STATE["current_absolute_score_worst"] = None
|
| 173 |
else:
|
| 174 |
GLOBAL_STATE["current_absolute_score_worst"] = score
|
|
|
|
| 175 |
updates = []
|
| 176 |
for i in range(1, 8):
|
| 177 |
if i == GLOBAL_STATE["current_absolute_score_worst"]:
|
|
|
|
| 180 |
updates.append(gr.update(variant='secondary'))
|
| 181 |
return updates
|
| 182 |
|
|
|
|
| 183 |
|
| 184 |
+
# --- UI Logic ---
|
| 185 |
|
| 186 |
# ▼▼▼ 修正後の display_current_prompt_and_criterion 関数 ▼▼▼
|
| 187 |
def display_current_prompt_and_criterion():
|
|
|
|
| 190 |
empty_button_updates = [gr.update(variant='secondary')] * 25
|
| 191 |
empty_abs_updates = [gr.update(variant='secondary')] * 7
|
| 192 |
return [
|
| 193 |
+
gr.update(value="Finished! / 完了!"), # progress_text
|
| 194 |
+
gr.update(value=""), # combined_instructions_display
|
| 195 |
+
gr.update(value=""), # prompt_display
|
| 196 |
+
gr.update(value=done_msg, visible=True), # error_display
|
| 197 |
*[gr.update(value=None)] * 5,
|
| 198 |
*empty_button_updates,
|
| 199 |
gr.update(visible=False), # abs_group_best
|
|
|
|
| 212 |
criterion_name = CRITERIA[criterion_idx]
|
| 213 |
|
| 214 |
progress_text = f"Prompt {GLOBAL_STATE['current_prompt_index'] + 1} / {len(GLOBAL_STATE['all_eval_data'])} - **{criterion_name}**"
|
| 215 |
+
|
| 216 |
+
# ▼▼▼ 修正1: プロンプト表示のフォントサイズを3倍に変更 ▼▼▼
|
| 217 |
+
prompt_display_text = f"<p style='font-size: 3em; font-weight: bold;'>テキスト(TEXT): {prompt_text}</p>"
|
| 218 |
+
|
| 219 |
+
# ▼▼▼ 修正2: 統合された指示文を生成(注意文の変更) ▼▼▼
|
| 220 |
+
guidance_part = (
|
| 221 |
+
f"<p style='color: red; font-weight: bold; font-size: 1.1em;'>"
|
| 222 |
+
f"5つの画像を、「{CRITERIA_GUIDANCE_JP[criterion_idx]}」を基準にランキングしてください。<br>"
|
| 223 |
+
f"Please rank the 5 images based on {CRITERIA_GUIDANCE_EN[criterion_idx]}"
|
| 224 |
+
|
| 225 |
+
f"</p>"
|
| 226 |
+
)
|
| 227 |
+
rules_part = (
|
| 228 |
+
"<b>ランキングの方法 / How to Rank:</b>"
|
| 229 |
+
"<ul>"
|
| 230 |
+
"<li><b>全く同じ表情の画像には、同じ順位</b>を付け���ください。(Assign the <b>same rank</b> to identical expressions.)</li>"
|
| 231 |
+
"<li><b>少しでも違う表情の画像には、違う順位</b>を付けてください。(Assign <b>different ranks</b> to different expressions.)</li>"
|
| 232 |
+
"<li><b>必ず1位から</b>順位を付けてください。(You <b>must</b> assign a rank of '1' to at least one image.)</li>"
|
| 233 |
+
"<li>同順位がある場合、<b>その人数分だけ次の順位を飛ばしてください</b>。(When you have ties, <b>skip the next rank(s) accordingly</b>.)"
|
| 234 |
+
"<ul>"
|
| 235 |
+
"<li>例1: 1位が2つある場合、次は3位になります (Ex. 1: If there are two '1st' places, the next rank is '3rd'. e.g., <code>1, 1, 3, 4, 5</code>).</li>"
|
| 236 |
+
"<li>例2: 1位が1つ、2位が3つある場合、次は5位になります (Ex. 2: If there is one '1st' and three '2nd' places, the next rank is '5th'. e.g., <code>1, 2, 2, 2, 5</code>).</li>"
|
| 237 |
+
"</ul></li></ul>"
|
| 238 |
+
)
|
| 239 |
+
ai_note_part = (
|
| 240 |
+
"<p style='font-size: 0.9em; color: #555;'>"
|
| 241 |
+
"設問や英単語の意味についてはAIに質問したり検索したりしても構いません。ただし、画像そのものが示す感情をAIに質問するのはお控えください。<br>"
|
| 242 |
+
"You are welcome to use AI or web search to understand the questions or the meaning of English words. However, please refrain from asking an AI about the emotion shown in the images themselves."
|
| 243 |
+
|
| 244 |
+
"</p>"
|
| 245 |
+
)
|
| 246 |
+
combined_instructions = f"{guidance_part}<hr>{rules_part}<hr>{ai_note_part}"
|
| 247 |
|
| 248 |
if criterion_idx == 0:
|
| 249 |
GLOBAL_STATE["image_orders"] = {}
|
|
|
|
| 271 |
|
| 272 |
button_updates = _create_button_updates()
|
| 273 |
|
|
|
|
| 274 |
is_alignment_criterion = (criterion_name == "Alignment")
|
| 275 |
abs_group_update = gr.update(visible=is_alignment_criterion)
|
| 276 |
saved_abs_score = GLOBAL_STATE["evaluation_results"].get(prompt_text, {}).get("absolute_score")
|
|
|
|
| 281 |
variant = 'primary' if i == GLOBAL_STATE["current_absolute_score"] else 'secondary'
|
| 282 |
abs_button_updates.append(gr.update(variant=variant))
|
| 283 |
|
|
|
|
| 284 |
abs_group_worst_update = gr.update(visible=is_alignment_criterion)
|
| 285 |
saved_abs_score_worst = GLOBAL_STATE["evaluation_results"].get(prompt_text, {}).get("absolute_score_worst")
|
| 286 |
GLOBAL_STATE["current_absolute_score_worst"] = saved_abs_score_worst if is_alignment_criterion else None
|
|
|
|
| 292 |
|
| 293 |
return [
|
| 294 |
gr.update(value=progress_text),
|
| 295 |
+
gr.update(value=combined_instructions),
|
| 296 |
gr.update(value=prompt_display_text),
|
| 297 |
+
gr.update(value="", visible=False), # Error display
|
|
|
|
| 298 |
*image_updates,
|
| 299 |
*button_updates,
|
| 300 |
abs_group_update,
|
|
|
|
| 307 |
]
|
| 308 |
|
| 309 |
|
| 310 |
+
# ▼▼▼ 修正後の validate_and_navigate 関数 (変更なし) ▼▼▼
|
| 311 |
def validate_and_navigate():
|
| 312 |
ranks = GLOBAL_STATE["current_ranks"]
|
| 313 |
error_msg = None
|
| 314 |
criterion_name = CRITERIA[GLOBAL_STATE["current_criterion_index"]]
|
| 315 |
is_alignment_criterion = (criterion_name == "Alignment")
|
| 316 |
|
|
|
|
| 317 |
if any(r is None for r in ranks.values()):
|
| 318 |
error_msg = "Please rank all 5 images. / 5つすべての画像を評価してください。"
|
| 319 |
elif 1 not in ranks.values():
|
|
|
|
| 322 |
error_msg = "Please provide an absolute score for the BEST matching image (1-7). / 最も一致している画像について、絶対評価(1~7)を選択してください。"
|
| 323 |
elif is_alignment_criterion and GLOBAL_STATE["current_absolute_score_worst"] is None:
|
| 324 |
error_msg = "Please provide an absolute score for the WORST matching image (1-7). / 最も一致していない画像について、絶対評価(1~7)を選択してください。"
|
|
|
|
| 325 |
elif (
|
| 326 |
+
is_alignment_criterion
|
| 327 |
+
and GLOBAL_STATE["current_absolute_score"] is not None
|
| 328 |
+
and GLOBAL_STATE["current_absolute_score_worst"] is not None
|
| 329 |
+
and GLOBAL_STATE["current_absolute_score_worst"] > GLOBAL_STATE["current_absolute_score"]
|
| 330 |
):
|
| 331 |
error_msg = (
|
| 332 |
"The score for the WORST matching image cannot be higher than the score for the BEST matching image.<br>"
|
| 333 |
"「最も一致していない画像」のスコアが「最も一致している画像」のスコアを上回ることはできません。"
|
| 334 |
)
|
|
|
|
| 335 |
|
| 336 |
if error_msg:
|
|
|
|
| 337 |
no_change_updates = [gr.update()] * 53
|
| 338 |
+
no_change_updates[4] = gr.update(
|
| 339 |
value=f"<p class='feedback red' style='font-size: 1.2em; text-align: center;'>{error_msg}</p>",
|
| 340 |
visible=True)
|
| 341 |
return no_change_updates
|
| 342 |
|
|
|
|
| 343 |
sorted_ranks = sorted(list(ranks.values()))
|
| 344 |
rank_counts = Counter(sorted_ranks)
|
| 345 |
i = 0
|
|
|
|
| 350 |
next_rank = sorted_ranks[i + count]
|
| 351 |
expected_next_rank = current_rank + count
|
| 352 |
if next_rank < expected_next_rank:
|
| 353 |
+
error_msg = f"Ranking rule violation (tie-breaking). After {count} instance(s) of rank '{current_rank}', the next rank must be >= {expected_next_rank}, but it is '{next_rank}'. / ランキングのルール違反です。'{current_rank}'位が{count}個あるため、次の順位は{expected_next_rank}位以上である必要がありますが、'{next_rank}'位が入力されています。"
|
| 354 |
break
|
| 355 |
i += count
|
| 356 |
if error_msg:
|
|
|
|
| 359 |
value=f"<p class='feedback red' style='font-size: 1.2em; text-align: center;'>{error_msg}</p>",
|
| 360 |
visible=True)
|
| 361 |
return no_change_updates
|
|
|
|
| 362 |
|
| 363 |
prompt_idx = GLOBAL_STATE["shuffled_indices"][GLOBAL_STATE["current_prompt_index"]]
|
| 364 |
current_data = GLOBAL_STATE["all_eval_data"][prompt_idx]
|
|
|
|
| 392 |
if GLOBAL_STATE["current_prompt_index"] >= len(GLOBAL_STATE["all_eval_data"]):
|
| 393 |
GLOBAL_STATE["end_time"] = datetime.now()
|
| 394 |
eval_panel_updates = display_current_prompt_and_criterion()
|
|
|
|
| 395 |
return [gr.update(interactive=True)] + eval_panel_updates
|
| 396 |
else:
|
|
|
|
| 397 |
return [gr.update()] + display_current_prompt_and_criterion()
|
| 398 |
|
| 399 |
+
|
| 400 |
def navigate_previous():
|
| 401 |
GLOBAL_STATE["current_criterion_index"] -= 1
|
| 402 |
if GLOBAL_STATE["current_criterion_index"] < 0:
|
|
|
|
| 405 |
GLOBAL_STATE["current_prompt_index"] = max(0, GLOBAL_STATE["current_prompt_index"])
|
| 406 |
return display_current_prompt_and_criterion()
|
| 407 |
|
| 408 |
+
|
| 409 |
+
# ▼▼▼ 修正後の export_results 関数 (変更なし) ▼▼▼
|
| 410 |
def export_results(participant_id, alignment_reason, naturalness_reason, attractiveness_reason, optional_comment):
|
| 411 |
if not alignment_reason.strip() or not naturalness_reason.strip() or not attractiveness_reason.strip():
|
| 412 |
error_msg = "<p class='feedback red'>Please fill in the reasoning for all three criteria (Alignment, Naturalness, Attractiveness). / 3つの評価基準(一致度, 自然さ, 魅力度)すべての判断理由を記入してください。</p>"
|
|
|
|
| 442 |
"naturalness_ranks": ranks_data.get("Naturalness", {}),
|
| 443 |
"attractiveness_ranks": ranks_data.get("Attractiveness", {}),
|
| 444 |
"alignment_absolute_score": data.get("absolute_score"),
|
|
|
|
| 445 |
"alignment_absolute_score_worst": data.get("absolute_score_worst")
|
| 446 |
})
|
| 447 |
|
|
|
|
| 480 |
return gr.update(value=filepath, visible=True), status_message
|
| 481 |
|
| 482 |
|
| 483 |
+
# ▼▼▼ 修正後の create_gradio_interface 関数 (変更なし) ▼▼▼
|
| 484 |
def create_gradio_interface():
|
| 485 |
css = """
|
| 486 |
.gradio-container { font-family: 'Arial', sans-serif; }
|
|
|
|
| 488 |
.feedback.green { background-color: #e6ffed; color: #2f6f4a; }
|
| 489 |
.feedback.red { background-color: #ffe6e6; color: #b30000; }
|
| 490 |
.image-label { font-size: 2.5em; font-weight: bold; margin-bottom: 10px; color: #333; }
|
| 491 |
+
.prompt-display { text-align: center; margin-bottom: 15px; padding: 10px; background-color: #f0f8ff; border-radius: 8px; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 492 |
.rank-btn-row { justify-content: center; gap: 5px !important; }
|
| 493 |
+
.rank-btn {
|
| 494 |
+
min-width: 65px !important;
|
| 495 |
max-width: 65px !important;
|
| 496 |
height: 45px !important;
|
| 497 |
font-size: 1.2em !important;
|
|
|
|
| 513 |
padding: 15px;
|
| 514 |
margin-top: 20px;
|
| 515 |
}
|
| 516 |
+
.instructions-container {
|
| 517 |
+
padding: 15px;
|
| 518 |
+
border: 1px solid #ccc;
|
| 519 |
+
border-radius: 8px;
|
| 520 |
+
margin-bottom: 20px;
|
| 521 |
+
background-color: #fafafa;
|
| 522 |
+
}
|
| 523 |
+
.instructions-container ul { padding-left: 20px; margin-top: 5px; margin-bottom: 5px; }
|
| 524 |
+
.instructions-container hr { margin: 15px 0; }
|
| 525 |
"""
|
| 526 |
|
| 527 |
with gr.Blocks(title="Expression Evaluation Experiment", css=css) as app:
|
|
|
|
| 553 |
|
| 554 |
with gr.TabItem("2. Evaluation / 評価", interactive=False) as tab_evaluation:
|
| 555 |
progress_text = gr.Markdown("Prompt 0 / 0")
|
| 556 |
+
combined_instructions_display = gr.Markdown("", elem_classes="instructions-container")
|
| 557 |
+
prompt_display = gr.Markdown("", elem_classes="prompt-display")
|
| 558 |
+
error_display = gr.Markdown(visible=False)
|
| 559 |
|
| 560 |
image_components = []
|
| 561 |
rank_buttons = []
|
|
|
|
| 569 |
with gr.Row(elem_classes="rank-btn-row"):
|
| 570 |
rank_list = ["1位", "2位", "3位", "4位", "5位"]
|
| 571 |
for rank_val in range(1, 6):
|
| 572 |
+
btn = gr.Button(str(rank_list[rank_val - 1]), variant='secondary',
|
| 573 |
+
elem_classes="rank-btn")
|
| 574 |
rank_buttons.append(btn)
|
| 575 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 576 |
with gr.Group(visible=False, elem_classes="absolute-eval-group") as absolute_eval_group_best:
|
| 577 |
gr.Markdown("---")
|
| 578 |
gr.Markdown(
|
| 579 |
+
"#### 絶対評価 (Best) / Absolute Score (Best)\n最もテキストと一致している画像について、どの程度一致しているかを評価してください。\n(Please evaluate the degree of alignment for the image that **best** matches the text.)")
|
| 580 |
absolute_score_buttons = []
|
| 581 |
with gr.Row():
|
| 582 |
with gr.Column(scale=1):
|
|
|
|
| 590 |
with gr.Column(scale=1):
|
| 591 |
gr.Markdown("<p style='text-align: left; margin-top: 10px;'>7 (完全に一致 / Absolutely)</p>")
|
| 592 |
|
|
|
|
| 593 |
with gr.Group(visible=False, elem_classes="absolute-eval-group") as absolute_eval_group_worst:
|
| 594 |
gr.Markdown(
|
| 595 |
+
"#### 絶対評価 (Worst) / Absolute Score (Worst)\n最もテキストと一致していない画像について、どの程度一致しているかを評価してください。\n(Please evaluate the degree of alignment for the image that **least** matches the text.)")
|
| 596 |
absolute_score_worst_buttons = []
|
| 597 |
with gr.Row():
|
| 598 |
with gr.Column(scale=1):
|
|
|
|
| 618 |
with gr.Group():
|
| 619 |
gr.Markdown("#### Reasoning for Judgments (Required) / 判断理由(必須)")
|
| 620 |
alignment_reason_box = gr.Textbox(label="Alignment / 一致度", lines=3,
|
| 621 |
+
placeholder="Why did you rank them this way for alignment? / なぜ一致度について、このようなランキングにしましたか?")
|
| 622 |
naturalness_reason_box = gr.Textbox(label="Naturalness / 自然さ", lines=3,
|
| 623 |
+
placeholder="Why did you rank them this way for naturalness? / なぜ自然さについて、このようなランキングにしましたか?")
|
| 624 |
attractiveness_reason_box = gr.Textbox(label="Attractiveness / 魅力度", lines=3,
|
| 625 |
+
placeholder="Why did you rank them this way for attractiveness? / なぜ魅力度について、このようなランキングにしましたか?")
|
| 626 |
|
| 627 |
with gr.Group():
|
| 628 |
gr.Markdown("#### Overall Comments (Optional) / 全体的な感想(任意)")
|
|
|
|
| 637 |
download_file = gr.File(label="Download JSON", visible=False)
|
| 638 |
export_status = gr.Markdown()
|
| 639 |
|
| 640 |
+
# --- Event Handlers (unchanged) ---
|
| 641 |
def check_and_confirm_id(pid):
|
| 642 |
pid = pid.strip()
|
| 643 |
if re.fullmatch(r"P\d{2}", pid):
|
|
|
|
| 650 |
confirm_id_btn.click(check_and_confirm_id, [participant_id_input], [setup_warning, setup_main_group])
|
| 651 |
load_data_btn.click(load_evaluation_data, [participant_id_input], [setup_status, load_data_btn, tab_evaluation])
|
| 652 |
|
|
|
|
| 653 |
all_eval_outputs = [
|
| 654 |
+
progress_text, combined_instructions_display, prompt_display, error_display, *image_components,
|
| 655 |
*rank_buttons,
|
| 656 |
absolute_eval_group_best, *absolute_score_buttons,
|
| 657 |
absolute_eval_group_worst, *absolute_score_worst_buttons,
|
|
|
|
| 676 |
absolute_score_buttons
|
| 677 |
)
|
| 678 |
|
|
|
|
| 679 |
for i, btn in enumerate(absolute_score_worst_buttons):
|
| 680 |
btn.click(
|
| 681 |
partial(handle_absolute_score_worst_click, i + 1),
|
|
|
|
| 684 |
)
|
| 685 |
|
| 686 |
tab_evaluation.select(display_current_prompt_and_criterion, [], all_eval_outputs)
|
|
|
|
|
|
|
| 687 |
next_btn.click(validate_and_navigate, [], [tab_export, *all_eval_outputs])
|
|
|
|
| 688 |
prev_btn.click(navigate_previous, [], all_eval_outputs)
|
| 689 |
|
| 690 |
export_tab_interactive_components = [alignment_reason_box, naturalness_reason_box, attractiveness_reason_box,
|
| 691 |
optional_comment_box, export_btn]
|
| 692 |
|
| 693 |
def on_select_export_tab():
|
|
|
|
| 694 |
if GLOBAL_STATE.get("end_time"):
|
| 695 |
return [gr.update(interactive=True)] * 5
|
|
|
|
| 696 |
return [gr.update(interactive=False)] * 5
|
| 697 |
|
| 698 |
tab_export.select(on_select_export_tab, [], export_tab_interactive_components)
|
|
|
|
| 706 |
|
| 707 |
return app
|
| 708 |
|
| 709 |
+
|
| 710 |
if __name__ == "__main__":
|
| 711 |
os.makedirs(LOG_DIR, exist_ok=True)
|
| 712 |
log_file_path = os.path.join(LOG_DIR, "evaluation_ui_log_{time}.log")
|
logs/evaluation_ui_log_2025-07-30_17-22-55_355099.log
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
2025-07-30 17:23:11.312 | INFO | __main__:load_evaluation_data:82 - Successfully loaded image mapping. Image directory: ./combined_data\lapwing\images
|
| 2 |
+
2025-07-30 17:23:11.339 | INFO | __main__:load_evaluation_data:130 - Loaded and merged data for 28 prompts.
|
logs/evaluation_ui_log_2025-07-30_17-24-13_896139.log
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
2025-07-30 17:24:33.918 | INFO | __main__:load_evaluation_data:82 - Successfully loaded image mapping. Image directory: ./combined_data\lapwing\images
|
| 2 |
+
2025-07-30 17:24:33.919 | INFO | __main__:load_evaluation_data:130 - Loaded and merged data for 2 prompts.
|
| 3 |
+
2025-07-30 17:25:07.255 | INFO | __main__:validate_and_navigate:384 - Saved rank for P:P99, Prompt:'sad', Criterion:Alignment, Ranks:{'LLM-based': 5, 'w_o_Proto_Loss': 2, 'Ours': 2, 'w_o_Tuning': 1, 'w_o_HitL': 4}
|
| 4 |
+
2025-07-30 17:25:27.280 | INFO | __main__:validate_and_navigate:384 - Saved rank for P:P99, Prompt:'sad', Criterion:Naturalness, Ranks:{'w_o_Tuning': 1, 'w_o_HitL': 4, 'Ours': 2, 'w_o_Proto_Loss': 2, 'LLM-based': 5}
|
| 5 |
+
2025-07-30 17:25:51.255 | INFO | __main__:validate_and_navigate:384 - Saved rank for P:P99, Prompt:'sad', Criterion:Attractiveness, Ranks:{'Ours': 2, 'w_o_Proto_Loss': 2, 'LLM-based': 5, 'w_o_Tuning': 1, 'w_o_HitL': 4}
|
| 6 |
+
2025-07-30 17:26:08.090 | INFO | __main__:validate_and_navigate:384 - Saved rank for P:P99, Prompt:'happy', Criterion:Alignment, Ranks:{'w_o_Tuning': 5, 'w_o_Proto_Loss': 1, 'Ours': 1, 'w_o_HitL': 4, 'LLM-based': 1}
|
| 7 |
+
2025-07-30 17:26:22.237 | INFO | __main__:validate_and_navigate:384 - Saved rank for P:P99, Prompt:'happy', Criterion:Naturalness, Ranks:{'w_o_HitL': 5, 'LLM-based': 1, 'w_o_Proto_Loss': 1, 'w_o_Tuning': 4, 'Ours': 1}
|
| 8 |
+
2025-07-30 17:26:31.796 | INFO | __main__:validate_and_navigate:384 - Saved rank for P:P99, Prompt:'happy', Criterion:Attractiveness, Ranks:{'LLM-based': 1, 'w_o_HitL': 4, 'w_o_Proto_Loss': 1, 'Ours': 1, 'w_o_Tuning': 5}
|
| 9 |
+
2025-07-30 17:26:43.784 | INFO | __main__:export_results:467 - Successfully exported results to: ./results\P99\evaluation_results_P99_20250730_172643.json
|
results/P99/LLM-based/P99_LLM-based_all_predictions.jsonl
CHANGED
|
@@ -1,28 +1,2 @@
|
|
| 1 |
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "にこり"}, "blendshape_index": {"0": 1, "1": 3}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 2 |
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "困る"}, "blendshape_index": {"0": 4, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 3 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "angry", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 4 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "surprised", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "上"}, "blendshape_index": {"0": 3, "1": 4}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 5 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "disgusted", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "困る"}, "blendshape_index": {"0": 4, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 6 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "fearful", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "困る"}, "blendshape_index": {"0": 3, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 7 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "neutral", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "none"}, "blendshape_index": {"0": -1, "1": -1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 8 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "contempt", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 9 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "anger", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 10 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "annoyed", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 11 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "calm down", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "真面目"}, "blendshape_index": {"0": 2, "1": 0}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 12 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "envy", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "困る"}, "blendshape_index": {"0": 4, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 13 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "fear", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "困る"}, "blendshape_index": {"0": 3, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 14 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "fun", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "にこり"}, "blendshape_index": {"0": 1, "1": 3}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 15 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "irritated", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 16 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "rage", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 17 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "success", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "にこり"}, "blendshape_index": {"0": 1, "1": 3}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 18 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "champion", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "にこり"}, "blendshape_index": {"0": 1, "1": 3}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 19 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "achievement", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "にこり"}, "blendshape_index": {"0": 1, "1": 3}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 20 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "danger", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 21 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "violent", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 22 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "assault", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 23 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "despised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 24 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "compromised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "困る"}, "blendshape_index": {"0": 4, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 25 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "endured", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "困る"}, "blendshape_index": {"0": 4, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 26 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "peace", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "none"}, "blendshape_index": {"0": 2, "1": -1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 27 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "meditation", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "none"}, "blendshape_index": {"0": 2, "1": -1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 28 |
-
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "faith", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "真面目"}, "blendshape_index": {"0": 2, "1": 0}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
|
|
|
| 1 |
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "にこり"}, "blendshape_index": {"0": 1, "1": 3}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
| 2 |
{"participant_id": "P99", "condition": "LLM-based", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "困る"}, "blendshape_index": {"0": 4, "1": 1}, "blendshape_confidence": {"0": 1.0, "1": 1.0}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
results/P99/Ours/P99_Ours_all_predictions.jsonl
CHANGED
|
@@ -1,28 +1,2 @@
|
|
| 1 |
{"participant_id": "P99", "condition": "Ours", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.8829594850540161, "1": 0.918801486492157}}}
|
| 2 |
{"participant_id": "P99", "condition": "Ours", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9188652038574219, "1": 0.9860095977783203}}}
|
| 3 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "angry", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9934472441673279, "1": 0.9964340925216675}}}
|
| 4 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "surprised", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "上"}, "blendshape_index": {"0": 3, "1": 4}, "blendshape_confidence": {"0": 0.9867932200431824, "1": 0.40988487005233765}}}
|
| 5 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "disgusted", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9183335900306702, "1": 0.9852670431137085}}}
|
| 6 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "fearful", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "none"}, "blendshape_index": {"0": 6, "1": -1}, "blendshape_confidence": {"0": 0.9025203585624695, "1": 0.8258314728736877}}}
|
| 7 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "neutral", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "none"}, "blendshape_index": {"0": -1, "1": -1}, "blendshape_confidence": {"0": 0.9684476256370544, "1": 0.9315744638442993}}}
|
| 8 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "contempt", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "上"}, "blendshape_index": {"0": -1, "1": 4}, "blendshape_confidence": {"0": 0.738766074180603, "1": 0.3185594081878662}}}
|
| 9 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "anger", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.99409419298172, "1": 0.9966574907302856}}}
|
| 10 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "annoyed", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 0, "1": 6}, "blendshape_confidence": {"0": 0.9798097610473633, "1": 0.9802103638648987}}}
|
| 11 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "calm down", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9884201288223267, "1": 0.9626672267913818}}}
|
| 12 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "envy", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "にこり"}, "blendshape_index": {"0": 5, "1": 3}, "blendshape_confidence": {"0": 0.9306393265724182, "1": 0.4057946801185608}}}
|
| 13 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "fear", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "none"}, "blendshape_index": {"0": 6, "1": -1}, "blendshape_confidence": {"0": 0.8775139451026917, "1": 0.8733732104301453}}}
|
| 14 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "fun", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.8810413479804993, "1": 0.9187805652618408}}}
|
| 15 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "irritated", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "怒り"}, "blendshape_index": {"0": 0, "1": 2}, "blendshape_confidence": {"0": 0.9913926124572754, "1": 0.9711134433746338}}}
|
| 16 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "rage", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": -1, "1": 7}, "blendshape_confidence": {"0": 0.9819115400314331, "1": 0.9587745666503906}}}
|
| 17 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "success", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "none"}, "blendshape_index": {"0": 2, "1": -1}, "blendshape_confidence": {"0": 0.7905964851379395, "1": 0.7364094257354736}}}
|
| 18 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "champion", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": -1, "1": 6}, "blendshape_confidence": {"0": 0.225070059299469, "1": 0.2288871556520462}}}
|
| 19 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "achievement", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.84685879945755, "1": 0.9233157634735107}}}
|
| 20 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "danger", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9890667200088501, "1": 0.9955976605415344}}}
|
| 21 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "violent", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.991489052772522, "1": 0.9950138926506042}}}
|
| 22 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "assault", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.9711559414863586, "1": 0.9611696600914001}}}
|
| 23 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "despised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9023531675338745, "1": 0.9861067533493042}}}
|
| 24 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "compromised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.9876964688301086, "1": 0.9633303880691528}}}
|
| 25 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "endured", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.9792107939720154, "1": 0.9455814957618713}}}
|
| 26 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "peace", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9869998097419739, "1": 0.9589342474937439}}}
|
| 27 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "meditation", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.987371563911438, "1": 0.9588003754615784}}}
|
| 28 |
-
{"participant_id": "P99", "condition": "Ours", "text_prompt": "faith", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "none"}, "blendshape_index": {"0": 6, "1": -1}, "blendshape_confidence": {"0": 0.8768095374107361, "1": 0.7420511245727539}}}
|
|
|
|
| 1 |
{"participant_id": "P99", "condition": "Ours", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.8829594850540161, "1": 0.918801486492157}}}
|
| 2 |
{"participant_id": "P99", "condition": "Ours", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9188652038574219, "1": 0.9860095977783203}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
results/P99/evaluation_results_P99_20250730_172643.json
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"participant_id": "P99",
|
| 4 |
+
"export_timestamp": "2025-07-30T17:26:43.784967",
|
| 5 |
+
"total_prompts_evaluated": 2,
|
| 6 |
+
"evaluation_duration_seconds": 117.877614,
|
| 7 |
+
"reasoning": {
|
| 8 |
+
"alignment": "AAAA",
|
| 9 |
+
"naturalness": "BBB",
|
| 10 |
+
"attractiveness": "CCC"
|
| 11 |
+
},
|
| 12 |
+
"optional_comment": "DDD"
|
| 13 |
+
},
|
| 14 |
+
"results": [
|
| 15 |
+
{
|
| 16 |
+
"prompt": "happy",
|
| 17 |
+
"prompt_category": "basic_emotion",
|
| 18 |
+
"image_order_alignment": [
|
| 19 |
+
"w_o_Tuning",
|
| 20 |
+
"w_o_Proto_Loss",
|
| 21 |
+
"Ours",
|
| 22 |
+
"w_o_HitL",
|
| 23 |
+
"LLM-based"
|
| 24 |
+
],
|
| 25 |
+
"image_order_naturalness": [
|
| 26 |
+
"w_o_HitL",
|
| 27 |
+
"LLM-based",
|
| 28 |
+
"w_o_Proto_Loss",
|
| 29 |
+
"w_o_Tuning",
|
| 30 |
+
"Ours"
|
| 31 |
+
],
|
| 32 |
+
"image_order_attractiveness": [
|
| 33 |
+
"LLM-based",
|
| 34 |
+
"w_o_HitL",
|
| 35 |
+
"w_o_Proto_Loss",
|
| 36 |
+
"Ours",
|
| 37 |
+
"w_o_Tuning"
|
| 38 |
+
],
|
| 39 |
+
"alignment_ranks": {
|
| 40 |
+
"w_o_Tuning": 5,
|
| 41 |
+
"w_o_Proto_Loss": 1,
|
| 42 |
+
"Ours": 1,
|
| 43 |
+
"w_o_HitL": 4,
|
| 44 |
+
"LLM-based": 1
|
| 45 |
+
},
|
| 46 |
+
"naturalness_ranks": {
|
| 47 |
+
"w_o_HitL": 5,
|
| 48 |
+
"LLM-based": 1,
|
| 49 |
+
"w_o_Proto_Loss": 1,
|
| 50 |
+
"w_o_Tuning": 4,
|
| 51 |
+
"Ours": 1
|
| 52 |
+
},
|
| 53 |
+
"attractiveness_ranks": {
|
| 54 |
+
"LLM-based": 1,
|
| 55 |
+
"w_o_HitL": 4,
|
| 56 |
+
"w_o_Proto_Loss": 1,
|
| 57 |
+
"Ours": 1,
|
| 58 |
+
"w_o_Tuning": 5
|
| 59 |
+
},
|
| 60 |
+
"alignment_absolute_score": 6,
|
| 61 |
+
"alignment_absolute_score_worst": 1
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"prompt": "sad",
|
| 65 |
+
"prompt_category": "basic_emotion",
|
| 66 |
+
"image_order_alignment": [
|
| 67 |
+
"LLM-based",
|
| 68 |
+
"w_o_Proto_Loss",
|
| 69 |
+
"Ours",
|
| 70 |
+
"w_o_Tuning",
|
| 71 |
+
"w_o_HitL"
|
| 72 |
+
],
|
| 73 |
+
"image_order_naturalness": [
|
| 74 |
+
"w_o_Tuning",
|
| 75 |
+
"w_o_HitL",
|
| 76 |
+
"Ours",
|
| 77 |
+
"w_o_Proto_Loss",
|
| 78 |
+
"LLM-based"
|
| 79 |
+
],
|
| 80 |
+
"image_order_attractiveness": [
|
| 81 |
+
"Ours",
|
| 82 |
+
"w_o_Proto_Loss",
|
| 83 |
+
"LLM-based",
|
| 84 |
+
"w_o_Tuning",
|
| 85 |
+
"w_o_HitL"
|
| 86 |
+
],
|
| 87 |
+
"alignment_ranks": {
|
| 88 |
+
"LLM-based": 5,
|
| 89 |
+
"w_o_Proto_Loss": 2,
|
| 90 |
+
"Ours": 2,
|
| 91 |
+
"w_o_Tuning": 1,
|
| 92 |
+
"w_o_HitL": 4
|
| 93 |
+
},
|
| 94 |
+
"naturalness_ranks": {
|
| 95 |
+
"w_o_Tuning": 1,
|
| 96 |
+
"w_o_HitL": 4,
|
| 97 |
+
"Ours": 2,
|
| 98 |
+
"w_o_Proto_Loss": 2,
|
| 99 |
+
"LLM-based": 5
|
| 100 |
+
},
|
| 101 |
+
"attractiveness_ranks": {
|
| 102 |
+
"Ours": 2,
|
| 103 |
+
"w_o_Proto_Loss": 2,
|
| 104 |
+
"LLM-based": 5,
|
| 105 |
+
"w_o_Tuning": 1,
|
| 106 |
+
"w_o_HitL": 4
|
| 107 |
+
},
|
| 108 |
+
"alignment_absolute_score": 6,
|
| 109 |
+
"alignment_absolute_score_worst": 1
|
| 110 |
+
}
|
| 111 |
+
]
|
| 112 |
+
}
|
results/P99/w_o_HitL/P99_w_o_HitL_all_predictions.jsonl
CHANGED
|
@@ -1,28 +1,2 @@
|
|
| 1 |
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "none"}, "blendshape_index": {"0": 3, "1": -1}, "blendshape_confidence": {"0": 0.9955354928970337, "1": 0.48252469301223755}}}
|
| 2 |
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9925839900970459, "1": 0.9879806637763977}}}
|
| 3 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "angry", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9901167750358582, "1": 0.9958637952804565}}}
|
| 4 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "surprised", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 3, "1": 6}, "blendshape_confidence": {"0": 0.9973410964012146, "1": 0.8971224427223206}}}
|
| 5 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "disgusted", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9930424690246582, "1": 0.9849758744239807}}}
|
| 6 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "fearful", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 4, "1": 6}, "blendshape_confidence": {"0": 0.9604305624961853, "1": 0.5642914175987244}}}
|
| 7 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "neutral", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "none"}, "blendshape_index": {"0": -1, "1": -1}, "blendshape_confidence": {"0": 0.948350727558136, "1": 0.7772430181503296}}}
|
| 8 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "contempt", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "none"}, "blendshape_index": {"0": 3, "1": -1}, "blendshape_confidence": {"0": 0.9248173832893372, "1": 0.808703601360321}}}
|
| 9 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "anger", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9907746911048889, "1": 0.9962483048439026}}}
|
| 10 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "annoyed", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9843609929084778, "1": 0.9936684966087341}}}
|
| 11 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "calm down", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "困る"}, "blendshape_index": {"0": 0, "1": 1}, "blendshape_confidence": {"0": 0.8480381965637207, "1": 0.36084139347076416}}}
|
| 12 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "envy", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "none"}, "blendshape_index": {"0": 5, "1": -1}, "blendshape_confidence": {"0": 0.9658690094947815, "1": 0.8019410371780396}}}
|
| 13 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "fear", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 4, "1": 6}, "blendshape_confidence": {"0": 0.9659411907196045, "1": 0.5346943736076355}}}
|
| 14 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "fun", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 3, "1": 6}, "blendshape_confidence": {"0": 0.9964733719825745, "1": 0.601479709148407}}}
|
| 15 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "irritated", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9969378709793091, "1": 0.9883919358253479}}}
|
| 16 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "rage", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 6, "1": 7}, "blendshape_confidence": {"0": 0.512029230594635, "1": 0.9891716837882996}}}
|
| 17 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "success", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 0, "1": 6}, "blendshape_confidence": {"0": 0.7897265553474426, "1": 0.29503968358039856}}}
|
| 18 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "champion", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 3, "1": 7}, "blendshape_confidence": {"0": 0.7256515026092529, "1": 0.8692778944969177}}}
|
| 19 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "achievement", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "none"}, "blendshape_index": {"0": 3, "1": -1}, "blendshape_confidence": {"0": 0.994852602481842, "1": 0.8096010684967041}}}
|
| 20 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "danger", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 6, "1": 7}, "blendshape_confidence": {"0": 0.6568341255187988, "1": 0.9906275272369385}}}
|
| 21 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "violent", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.5889117121696472, "1": 0.9689963459968567}}}
|
| 22 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "assault", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.5944083333015442, "1": 0.9854176044464111}}}
|
| 23 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "despised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.992882490158081, "1": 0.9865531325340271}}}
|
| 24 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "compromised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "怒り"}, "blendshape_index": {"0": 4, "1": 2}, "blendshape_confidence": {"0": 0.683573305606842, "1": 0.8146002888679504}}}
|
| 25 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "endured", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "none"}, "blendshape_index": {"0": 5, "1": -1}, "blendshape_confidence": {"0": 0.9586669206619263, "1": 0.8098506331443787}}}
|
| 26 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "peace", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "困る"}, "blendshape_index": {"0": 0, "1": 1}, "blendshape_confidence": {"0": 0.8249197602272034, "1": 0.34819987416267395}}}
|
| 27 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "meditation", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "困る"}, "blendshape_index": {"0": 0, "1": 1}, "blendshape_confidence": {"0": 0.8307234644889832, "1": 0.31552064418792725}}}
|
| 28 |
-
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "faith", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "none"}, "blendshape_index": {"0": 4, "1": -1}, "blendshape_confidence": {"0": 0.9788743853569031, "1": 0.5678081512451172}}}
|
|
|
|
| 1 |
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "none"}, "blendshape_index": {"0": 3, "1": -1}, "blendshape_confidence": {"0": 0.9955354928970337, "1": 0.48252469301223755}}}
|
| 2 |
{"participant_id": "P99", "condition": "w_o_HitL", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9925839900970459, "1": 0.9879806637763977}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
results/P99/w_o_Proto_Loss/P99_w_o_Proto_Loss_all_predictions.jsonl
CHANGED
|
@@ -1,28 +1,2 @@
|
|
| 1 |
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.857072114944458, "1": 0.9783397912979126}}}
|
| 2 |
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9462782144546509, "1": 0.9948987364768982}}}
|
| 3 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "angry", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9993799924850464, "1": 0.9989461302757263}}}
|
| 4 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "surprised", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "びっくり", "Eye Brow": "真面目"}, "blendshape_index": {"0": 3, "1": 0}, "blendshape_confidence": {"0": 0.9913455247879028, "1": 0.864502489566803}}}
|
| 5 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "disgusted", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9513380527496338, "1": 0.9959030747413635}}}
|
| 6 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "fearful", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "真面目"}, "blendshape_index": {"0": 6, "1": 0}, "blendshape_confidence": {"0": 0.9989352822303772, "1": 0.9337480068206787}}}
|
| 7 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "neutral", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "none"}, "blendshape_index": {"0": -1, "1": -1}, "blendshape_confidence": {"0": 0.9624476432800293, "1": 0.4305327236652374}}}
|
| 8 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "contempt", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9994403719902039, "1": 0.9996170997619629}}}
|
| 9 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "anger", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9993559718132019, "1": 0.9988413453102112}}}
|
| 10 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "annoyed", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 0, "1": 6}, "blendshape_confidence": {"0": 0.9998692274093628, "1": 0.9998729228973389}}}
|
| 11 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "calm down", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.999714195728302, "1": 0.9999082088470459}}}
|
| 12 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "envy", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.9988638162612915, "1": 0.5486642122268677}}}
|
| 13 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "fear", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "真面目"}, "blendshape_index": {"0": 6, "1": 0}, "blendshape_confidence": {"0": 0.9982534050941467, "1": 0.941937267780304}}}
|
| 14 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "fun", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.5580471754074097, "1": 0.9738865494728088}}}
|
| 15 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "irritated", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "怒り"}, "blendshape_index": {"0": 0, "1": 2}, "blendshape_confidence": {"0": 0.9998677968978882, "1": 0.9999879598617554}}}
|
| 16 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "rage", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": -1, "1": 7}, "blendshape_confidence": {"0": 0.9556686282157898, "1": 0.9913602471351624}}}
|
| 17 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "success", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.9657526612281799, "1": 0.9810805916786194}}}
|
| 18 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "champion", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.9621233344078064, "1": 0.9804757237434387}}}
|
| 19 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "achievement", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.966451108455658, "1": 0.9806578159332275}}}
|
| 20 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "danger", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.9937561750411987, "1": 0.9963276982307434}}}
|
| 21 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "violent", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9988694787025452, "1": 0.9984512329101562}}}
|
| 22 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "assault", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.9951441287994385, "1": 0.996715784072876}}}
|
| 23 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "despised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9212708473205566, "1": 0.9962344765663147}}}
|
| 24 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "compromised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "真面目"}, "blendshape_index": {"0": 6, "1": 0}, "blendshape_confidence": {"0": 0.9983739852905273, "1": 0.9489043951034546}}}
|
| 25 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "endured", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.9979373216629028, "1": 0.7368946671485901}}}
|
| 26 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "peace", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9995680451393127, "1": 0.9997628331184387}}}
|
| 27 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "meditation", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "真面目"}, "blendshape_index": {"0": 0, "1": 0}, "blendshape_confidence": {"0": 0.9996834993362427, "1": 0.9998527765274048}}}
|
| 28 |
-
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "faith", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "怒り"}, "blendshape_index": {"0": 2, "1": 2}, "blendshape_confidence": {"0": 0.5842269659042358, "1": 0.7885485887527466}}}
|
|
|
|
| 1 |
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "none"}, "blendshape_index": {"0": 1, "1": -1}, "blendshape_confidence": {"0": 0.857072114944458, "1": 0.9783397912979126}}}
|
| 2 |
{"participant_id": "P99", "condition": "w_o_Proto_Loss", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "笑い", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 1, "1": 6}, "blendshape_confidence": {"0": 0.9462782144546509, "1": 0.9948987364768982}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
results/P99/w_o_Tuning/P99_w_o_Tuning_all_predictions.jsonl
CHANGED
|
@@ -1,28 +1,2 @@
|
|
| 1 |
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.5656874179840088, "1": 0.587822437286377}}}
|
| 2 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 0, "1": 6}, "blendshape_confidence": {"0": 0.49758368730545044, "1": 0.881377637386322}}}
|
| 3 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "angry", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 5, "1": 7}, "blendshape_confidence": {"0": 0.7024096846580505, "1": 0.9571686387062073}}}
|
| 4 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "surprised", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.6473039388656616, "1": 0.6241310238838196}}}
|
| 5 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "disgusted", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.9167402982711792, "1": 0.9840804934501648}}}
|
| 6 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "fearful", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 2, "1": 6}, "blendshape_confidence": {"0": 0.8649620413780212, "1": 0.8262342810630798}}}
|
| 7 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "neutral", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.9152483344078064, "1": 0.8729645609855652}}}
|
| 8 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "contempt", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "怒り"}, "blendshape_index": {"0": 2, "1": 2}, "blendshape_confidence": {"0": 0.5805065631866455, "1": 0.6281013488769531}}}
|
| 9 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "anger", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 5, "1": 7}, "blendshape_confidence": {"0": 0.7506015300750732, "1": 0.945537269115448}}}
|
| 10 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "annoyed", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 5, "1": 7}, "blendshape_confidence": {"0": 0.8491242527961731, "1": 0.8375992178916931}}}
|
| 11 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "calm down", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "怒り"}, "blendshape_index": {"0": 2, "1": 2}, "blendshape_confidence": {"0": 0.6149319410324097, "1": 0.6593886613845825}}}
|
| 12 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "envy", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 5, "1": 7}, "blendshape_confidence": {"0": 0.9379934072494507, "1": 0.48363927006721497}}}
|
| 13 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "fear", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "怒り"}, "blendshape_index": {"0": 0, "1": 2}, "blendshape_confidence": {"0": 0.5811231732368469, "1": 0.5288116931915283}}}
|
| 14 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "fun", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.6222245097160339, "1": 0.4919931888580322}}}
|
| 15 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "irritated", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 0, "1": 6}, "blendshape_confidence": {"0": 0.5047039985656738, "1": 0.8154596090316772}}}
|
| 16 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "rage", "prompt_category": "nuanced_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 2, "1": 7}, "blendshape_confidence": {"0": 0.5938590168952942, "1": 0.9473985433578491}}}
|
| 17 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "success", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "下"}, "blendshape_index": {"0": 5, "1": 5}, "blendshape_confidence": {"0": 0.7538629174232483, "1": 0.7491976022720337}}}
|
| 18 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "champion", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "none", "Eye Brow": "下"}, "blendshape_index": {"0": -1, "1": 5}, "blendshape_confidence": {"0": 0.5761227607727051, "1": 0.7323084473609924}}}
|
| 19 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "achievement", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "none"}, "blendshape_index": {"0": 5, "1": -1}, "blendshape_confidence": {"0": 0.8863269090652466, "1": 0.4595271646976471}}}
|
| 20 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "danger", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.7954729795455933, "1": 0.9560970067977905}}}
|
| 21 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "violent", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 0, "1": 7}, "blendshape_confidence": {"0": 0.6612104177474976, "1": 0.9520323276519775}}}
|
| 22 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "assault", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 4, "1": 7}, "blendshape_confidence": {"0": 0.6521270275115967, "1": 0.9032843708992004}}}
|
| 23 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "despised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 2, "1": 6}, "blendshape_confidence": {"0": 0.761615514755249, "1": 0.8073769211769104}}}
|
| 24 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "compromised", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.7742058634757996, "1": 0.7452492117881775}}}
|
| 25 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "endured", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browDownAngry"}, "blendshape_index": {"0": 5, "1": 7}, "blendshape_confidence": {"0": 0.6713556051254272, "1": 0.6093238592147827}}}
|
| 26 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "peace", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "じと目", "Eye Brow": "下"}, "blendshape_index": {"0": 4, "1": 5}, "blendshape_confidence": {"0": 0.7654731869697571, "1": 0.4338940978050232}}}
|
| 27 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "meditation", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "なごみ", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 2, "1": 6}, "blendshape_confidence": {"0": 0.561039924621582, "1": 0.6305902600288391}}}
|
| 28 |
-
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "faith", "prompt_category": "zero_shot_emotion", "prediction": {"blendshape_names": {"Eyes": "irisShrink", "Eye Brow": "下"}, "blendshape_index": {"0": 6, "1": 5}, "blendshape_confidence": {"0": 0.7023880481719971, "1": 0.6855201125144958}}}
|
|
|
|
| 1 |
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "happy", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "irisSwap", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 5, "1": 6}, "blendshape_confidence": {"0": 0.5656874179840088, "1": 0.587822437286377}}}
|
| 2 |
+
{"participant_id": "P99", "condition": "w_o_Tuning", "text_prompt": "sad", "prompt_category": "basic_emotion", "prediction": {"blendshape_names": {"Eyes": "まばたき", "Eye Brow": "browArcDown"}, "blendshape_index": {"0": 0, "1": 6}, "blendshape_confidence": {"0": 0.49758368730545044, "1": 0.881377637386322}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|