| import sys | |
| from pathlib import Path | |
| import evaluate | |
| import gradio as gr | |
| from evaluate import parse_readme | |
| module = evaluate.load("sunhill/spice") | |
| def compute_spice(references, predictions): | |
| predictions = [[predictions]] | |
| references = [[ref.strip() for ref in references.split(";") if ref.strip()]] | |
| return module.compute(predictions=predictions, references=references)[0] | |
| iface = gr.Interface( | |
| fn=compute_spice, | |
| inputs=[ | |
| gr.Textbox( | |
| label="References", | |
| placeholder="Enter reference texts here, separated by semicolon... (e.g. ref1; ref2; ref3)", | |
| ), | |
| gr.Textbox( | |
| label="Predictions", | |
| placeholder="Enter prediction text here, Only one prediction is allowed...", | |
| ), | |
| ], | |
| outputs=gr.JSON(label="SPICE Score"), | |
| title="SPICE Score Evaluator", | |
| description="Evaluate the alignment between an image and a text using SPICE Score.", | |
| examples=[ | |
| [ | |
| ( | |
| "a train traveling down tracks next to lights; " | |
| "a blue and silver train next to train station and trees; " | |
| "a blue train is next to a sidewalk on the rails; " | |
| "a passenger train pulls into a train station; " | |
| "a train coming down the tracks arriving at a station;" | |
| ), | |
| "train traveling down a track in front of a road", | |
| ] | |
| ], | |
| article=parse_readme(Path(sys.path[0]) / "README.md"), | |
| ) | |
| iface.launch() | |