Veblen34's picture
Upload folder using huggingface_hub
cd6775d verified
Raw
History Blame Contribute Delete
2.53 kB
from transformers import pipeline
import torch
import pandas as pd
import sys
import os
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', '..', 'document_retrieval', 'Decompose_retrieval'))
from pipline import *
import openai
import logging
# 禁用 OpenAI 客户端的 INFO 级别日志
logging.getLogger("openai").setLevel(logging.ERROR)
def ask_gpt(query):
messages = [{"role": "user", "content": query}]
result = client.chat.completions.create(messages=messages, model="meta-llama/Meta-Llama-3-8B-Instruct")
return result.choices[0].message.content
def get_accuracy_re(true_imgs, re_imgs):
# print(true_imgs)
# print(re_imgs)
cnt = 0
for i in range(len(true_imgs)):
i_gt = true_imgs[i].rsplit('.', 1)[0]
image_retrieval = re_imgs[i].rsplit('.', 1)[0]
if i_gt == image_retrieval:
cnt += 1
return cnt/len(true_imgs)
def get_rag_answers(q_list, sub_q_list, dataset_name = "multiqa"):
if dataset_name == "multiqa":
ans_img_list, re_im = eval_acc(q_list, sub_q_list, patch_emb_by_img_ls)
ans = []
re_imgs = []
for i in range(len(ans_img_list)):
ans.append(ans_img_list[i][0])
re_imgs.append(re_im[i])
return ans, re_imgs
def exact_match(predictions, ground_truths):
# sum = 0
score = []
for i in range(len(predictions)):
pred = predictions[i].lower()
gt = ground_truths[i].lower()
if gt == pred:
score.append(1)
else:
score.append(0)
return score
def get_accuracy_multiqa(predictions, ground_truths):
score = exact_match(predictions, ground_truths)
return score
dataset_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "multiqa_test.csv")
client = OpenAI(api_key="0",base_url="http://0.0.0.0:8000/v1")
single_task_df = pd.read_csv(dataset_path, header=0)
raw_data = single_task_df[['query', 'answer', 'image']]
raw_queries = list(raw_data['query'])
true_answers = list(raw_data['answer'])
true_images = list(raw_data['image'])
raw_op_prompts = []
for i in range(len(raw_data)):
raw_pred = ask_gpt(raw_queries[i])
raw_op_prompts.append(raw_pred)
pred_answers, re_imgs = get_rag_answers(raw_queries, raw_op_prompts, "multiqa")
accuracy = get_accuracy_multiqa(
predictions = pred_answers,
ground_truths = true_answers
)
re_acc = get_accuracy_re(true_images , re_imgs)
accuracy = np.average(accuracy)
print(accuracy, re_acc)