Views
No views yet
# EmotionCLIP 自帶 label,不用你自定義
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
probs = outputs.logits_per_image.softmax(dim=1).detach().cpu().numpy()[0]
labels = model.config.text_labels # 模型內建的情緒標籤
top = probs.argmax()
mood = labels[top]
conf = probs[top]
# --- 長條圖 ---
fig, ax = plt.subplots(figsize=(5,4))
ax.barh(labels, probs, color="skyblue")
ax.set_xlim(0, 1)
ax.set_xlabel("Confidence")
ax.set_title("Emotion Probabilities (EmotionCLIP)")
plt.tight_layout()
buf = io.BytesIO()
plt.savefig(buf, format="png")
plt.close(fig)
buf.seek(0)
chart_img = Image.open(buf)
return f"Mood: {mood.capitalize()}", f"Confidence: {conf:.2f}", chart_img
except Exception as e:
return f"❌ Error: {str(e)}", "", None