Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1046,42 +1046,34 @@ request_header = {
|
|
1046 |
}
|
1047 |
|
1048 |
|
1049 |
-
def change_language(
|
1050 |
# compute text embeddings
|
1051 |
labels = babel_imagenet["EN"][1]
|
1052 |
class_order = list(range(len(labels)))
|
1053 |
np.random.shuffle(class_order)
|
1054 |
-
text_features = None
|
1055 |
correct_text = gr.Text(
|
1056 |
f"Correct was: ''. Question 1/{len(babel_imagenet['EN'][0])} ", label="Game"
|
1057 |
)
|
1058 |
player_score_text = gr.Text(f"Your choice: (Score: 0) ", label="Player")
|
1059 |
-
clip_score_text = gr.Text(f"mSigLIP chose: '' (Score: 0)", label="Opponent")
|
1060 |
|
1061 |
return (
|
1062 |
-
text_features,
|
1063 |
-1,
|
1064 |
class_order,
|
1065 |
correct_text,
|
1066 |
player_score_text,
|
1067 |
-
clip_score_text,
|
1068 |
-
0,
|
1069 |
0,
|
1070 |
)
|
1071 |
|
1072 |
|
1073 |
-
def select(idx, choice, correct,
|
1074 |
-
# checks if answer choice is correct and updated scores
|
1075 |
correct_name, correct_value = correct
|
1076 |
-
model_choice_name, model_choice_value = model_choice
|
1077 |
player_choice = choices[choice][0]
|
1078 |
-
|
1079 |
player_correct = choice == correct_value
|
1080 |
-
model_correct = model_choice_value == correct_value
|
1081 |
-
|
1082 |
player_score = player_score + int(player_correct)
|
1083 |
-
|
1084 |
-
|
1085 |
correct_text = gr.Text(
|
1086 |
f"Correct was: '{correct_name}'. Question {idx+1}/{len(babel_imagenet['EN'][0])} ",
|
1087 |
label="Game",
|
@@ -1090,15 +1082,11 @@ def select(idx, choice, correct, model_choice, player_score, clip_score, choices
|
|
1090 |
f"Your choice: {player_choice} {'✅' if player_correct else '❌'} (Score: {player_score}) ",
|
1091 |
label="Player",
|
1092 |
)
|
1093 |
-
clip_score_text = gr.Text(
|
1094 |
-
f"mSigLIP chose: '{model_choice_name}' {'✅' if model_correct else '❌'} (Score: {clip_score})",
|
1095 |
-
label="Opponent",
|
1096 |
-
)
|
1097 |
|
1098 |
-
return correct_text, player_score_text,
|
1099 |
|
1100 |
|
1101 |
-
def prepare(raw_idx,
|
1102 |
# prepared next question, loads image, and computes choices
|
1103 |
|
1104 |
raw_idx = (raw_idx + 1) % len(babel_imagenet["EN"][0])
|
@@ -1123,15 +1111,15 @@ def prepare(raw_idx, text_embeddings, class_order):
|
|
1123 |
) # precomputing script uses torch.topk which sorts in reverse here
|
1124 |
if idx not in choices:
|
1125 |
choices = [idx] + choices[1:]
|
1126 |
-
model_choice_idx = choices[-1]
|
1127 |
|
1128 |
numpy.random.shuffle(choices)
|
1129 |
|
1130 |
choice_names = [class_labels[idx] for idx in choices]
|
1131 |
choice_values = [0, 1, 2, 3]
|
1132 |
|
1133 |
-
model_choice_idx = choices.index(model_choice_idx)
|
1134 |
-
model_choice = [choice_names[model_choice_idx], choice_values[model_choice_idx]]
|
1135 |
correct_choice_idx = choices.index(idx)
|
1136 |
correct_choice = [
|
1137 |
choice_names[correct_choice_idx],
|
@@ -1146,7 +1134,11 @@ def prepare(raw_idx, text_embeddings, class_order):
|
|
1146 |
new_choice_values = [correct_tuple, keep]
|
1147 |
random.shuffle(new_choice_values)
|
1148 |
|
1149 |
-
warnings.warn(
|
|
|
|
|
|
|
|
|
1150 |
|
1151 |
next_radio = gr.Radio(
|
1152 |
choices=new_choice_values,
|
@@ -1161,7 +1153,14 @@ def prepare(raw_idx, text_embeddings, class_order):
|
|
1161 |
label="What class does this image belong to?",
|
1162 |
)
|
1163 |
|
1164 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1165 |
|
1166 |
|
1167 |
with gr.Blocks(title="Babel-ImageNet Quiz", css=css) as demo:
|
@@ -1169,13 +1168,13 @@ with gr.Blocks(title="Babel-ImageNet Quiz", css=css) as demo:
|
|
1169 |
# setup state
|
1170 |
class_idx = gr.State(-1)
|
1171 |
player_score = gr.State(0)
|
1172 |
-
clip_score = gr.State(0)
|
1173 |
class_order = gr.State([])
|
1174 |
choices = gr.State([])
|
1175 |
|
1176 |
-
text_embeddings = gr.State(None)
|
1177 |
correct_choice = gr.State(["nan", 0]) # 0, 1, 2, 3
|
1178 |
-
model_choice = gr.State(["nan", 0])
|
1179 |
|
1180 |
# Title Area
|
1181 |
gr.Markdown(
|
@@ -1206,7 +1205,7 @@ with gr.Blocks(title="Babel-ImageNet Quiz", css=css) as demo:
|
|
1206 |
# with gr.Row():
|
1207 |
correct_text = gr.Text("Please click start to begin.")
|
1208 |
player_score_text = gr.Text(f"Player score: 0")
|
1209 |
-
clip_score_text = gr.Text(f"mSigLIP score: 0")
|
1210 |
|
1211 |
options.select(
|
1212 |
fn=select,
|
@@ -1214,49 +1213,48 @@ with gr.Blocks(title="Babel-ImageNet Quiz", css=css) as demo:
|
|
1214 |
class_idx,
|
1215 |
options,
|
1216 |
correct_choice,
|
1217 |
-
model_choice,
|
1218 |
player_score,
|
1219 |
-
clip_score,
|
1220 |
choices,
|
1221 |
],
|
1222 |
outputs=[
|
1223 |
correct_text,
|
1224 |
player_score_text,
|
1225 |
-
clip_score_text,
|
1226 |
player_score,
|
1227 |
-
clip_score,
|
1228 |
],
|
1229 |
).then(
|
1230 |
fn=prepare,
|
1231 |
inputs=[
|
1232 |
class_idx,
|
1233 |
-
text_embeddings,
|
1234 |
class_order,
|
1235 |
],
|
1236 |
-
outputs=[options, image, class_idx, correct_choice,
|
1237 |
)
|
1238 |
|
1239 |
start_btn.click(
|
1240 |
fn=change_language,
|
1241 |
inputs=[],
|
1242 |
outputs=[
|
1243 |
-
text_embeddings,
|
1244 |
class_idx,
|
1245 |
class_order,
|
1246 |
correct_text,
|
1247 |
player_score_text,
|
1248 |
-
clip_score_text,
|
1249 |
player_score,
|
1250 |
-
clip_score,
|
1251 |
],
|
1252 |
).then(
|
1253 |
fn=prepare,
|
1254 |
inputs=[
|
1255 |
class_idx,
|
1256 |
-
text_embeddings,
|
1257 |
class_order,
|
1258 |
],
|
1259 |
-
outputs=[options, image, class_idx, correct_choice,
|
1260 |
)
|
1261 |
|
1262 |
|
|
|
1046 |
}
|
1047 |
|
1048 |
|
1049 |
+
def change_language():
|
1050 |
# compute text embeddings
|
1051 |
labels = babel_imagenet["EN"][1]
|
1052 |
class_order = list(range(len(labels)))
|
1053 |
np.random.shuffle(class_order)
|
|
|
1054 |
correct_text = gr.Text(
|
1055 |
f"Correct was: ''. Question 1/{len(babel_imagenet['EN'][0])} ", label="Game"
|
1056 |
)
|
1057 |
player_score_text = gr.Text(f"Your choice: (Score: 0) ", label="Player")
|
1058 |
+
# clip_score_text = gr.Text(f"mSigLIP chose: '' (Score: 0)", label="Opponent")
|
1059 |
|
1060 |
return (
|
|
|
1061 |
-1,
|
1062 |
class_order,
|
1063 |
correct_text,
|
1064 |
player_score_text,
|
1065 |
+
# clip_score_text,
|
1066 |
+
# 0,
|
1067 |
0,
|
1068 |
)
|
1069 |
|
1070 |
|
1071 |
+
def select(idx, choice, correct, player_score, choices):
|
|
|
1072 |
correct_name, correct_value = correct
|
|
|
1073 |
player_choice = choices[choice][0]
|
|
|
1074 |
player_correct = choice == correct_value
|
|
|
|
|
1075 |
player_score = player_score + int(player_correct)
|
1076 |
+
|
|
|
1077 |
correct_text = gr.Text(
|
1078 |
f"Correct was: '{correct_name}'. Question {idx+1}/{len(babel_imagenet['EN'][0])} ",
|
1079 |
label="Game",
|
|
|
1082 |
f"Your choice: {player_choice} {'✅' if player_correct else '❌'} (Score: {player_score}) ",
|
1083 |
label="Player",
|
1084 |
)
|
|
|
|
|
|
|
|
|
1085 |
|
1086 |
+
return correct_text, player_score_text, player_score
|
1087 |
|
1088 |
|
1089 |
+
def prepare(raw_idx, class_order):
|
1090 |
# prepared next question, loads image, and computes choices
|
1091 |
|
1092 |
raw_idx = (raw_idx + 1) % len(babel_imagenet["EN"][0])
|
|
|
1111 |
) # precomputing script uses torch.topk which sorts in reverse here
|
1112 |
if idx not in choices:
|
1113 |
choices = [idx] + choices[1:]
|
1114 |
+
# model_choice_idx = choices[-1]
|
1115 |
|
1116 |
numpy.random.shuffle(choices)
|
1117 |
|
1118 |
choice_names = [class_labels[idx] for idx in choices]
|
1119 |
choice_values = [0, 1, 2, 3]
|
1120 |
|
1121 |
+
# model_choice_idx = choices.index(model_choice_idx)
|
1122 |
+
# model_choice = [choice_names[model_choice_idx], choice_values[model_choice_idx]]
|
1123 |
correct_choice_idx = choices.index(idx)
|
1124 |
correct_choice = [
|
1125 |
choice_names[correct_choice_idx],
|
|
|
1134 |
new_choice_values = [correct_tuple, keep]
|
1135 |
random.shuffle(new_choice_values)
|
1136 |
|
1137 |
+
warnings.warn(
|
1138 |
+
f"""\
|
1139 |
+
choices: {choices}\n\n
|
1140 |
+
correct_choice: {correct_choice}\n\n"""
|
1141 |
+
)
|
1142 |
|
1143 |
next_radio = gr.Radio(
|
1144 |
choices=new_choice_values,
|
|
|
1153 |
label="What class does this image belong to?",
|
1154 |
)
|
1155 |
|
1156 |
+
return (
|
1157 |
+
next_radio,
|
1158 |
+
next_image,
|
1159 |
+
raw_idx,
|
1160 |
+
correct_choice,
|
1161 |
+
# model_choice,
|
1162 |
+
new_choice_values,
|
1163 |
+
)
|
1164 |
|
1165 |
|
1166 |
with gr.Blocks(title="Babel-ImageNet Quiz", css=css) as demo:
|
|
|
1168 |
# setup state
|
1169 |
class_idx = gr.State(-1)
|
1170 |
player_score = gr.State(0)
|
1171 |
+
# clip_score = gr.State(0)
|
1172 |
class_order = gr.State([])
|
1173 |
choices = gr.State([])
|
1174 |
|
1175 |
+
# text_embeddings = gr.State(None)
|
1176 |
correct_choice = gr.State(["nan", 0]) # 0, 1, 2, 3
|
1177 |
+
# model_choice = gr.State(["nan", 0])
|
1178 |
|
1179 |
# Title Area
|
1180 |
gr.Markdown(
|
|
|
1205 |
# with gr.Row():
|
1206 |
correct_text = gr.Text("Please click start to begin.")
|
1207 |
player_score_text = gr.Text(f"Player score: 0")
|
1208 |
+
# clip_score_text = gr.Text(f"mSigLIP score: 0")
|
1209 |
|
1210 |
options.select(
|
1211 |
fn=select,
|
|
|
1213 |
class_idx,
|
1214 |
options,
|
1215 |
correct_choice,
|
1216 |
+
# model_choice,
|
1217 |
player_score,
|
1218 |
+
# clip_score,
|
1219 |
choices,
|
1220 |
],
|
1221 |
outputs=[
|
1222 |
correct_text,
|
1223 |
player_score_text,
|
1224 |
+
# clip_score_text,
|
1225 |
player_score,
|
1226 |
+
# clip_score,
|
1227 |
],
|
1228 |
).then(
|
1229 |
fn=prepare,
|
1230 |
inputs=[
|
1231 |
class_idx,
|
|
|
1232 |
class_order,
|
1233 |
],
|
1234 |
+
outputs=[options, image, class_idx, correct_choice, choices],
|
1235 |
)
|
1236 |
|
1237 |
start_btn.click(
|
1238 |
fn=change_language,
|
1239 |
inputs=[],
|
1240 |
outputs=[
|
1241 |
+
# text_embeddings,
|
1242 |
class_idx,
|
1243 |
class_order,
|
1244 |
correct_text,
|
1245 |
player_score_text,
|
1246 |
+
# clip_score_text,
|
1247 |
player_score,
|
1248 |
+
# clip_score,
|
1249 |
],
|
1250 |
).then(
|
1251 |
fn=prepare,
|
1252 |
inputs=[
|
1253 |
class_idx,
|
1254 |
+
# text_embeddings,
|
1255 |
class_order,
|
1256 |
],
|
1257 |
+
outputs=[options, image, class_idx, correct_choice, choices],
|
1258 |
)
|
1259 |
|
1260 |
|