chen459664's picture
Add files using upload-large-folder tool
71db072 verified
Raw
History Blame Contribute Delete
2.73 kB
import json
import pandas as pd
from collections import defaultdict
import os
def get_latest_file(directory):
# 获取指定目录下的所有文件
files = [os.path.join(directory, f) for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
# 获取文件的修改时间,并按时间排序,返回最新的文件
latest_file = max(files, key=os.path.getmtime)
return latest_file
print(get_latest_file("/mnt/bn/life-mllm/users/cxr/hallucination/VLMEvalKit/case_study"))
base_data = []
# jsonl_path = "/mnt/bn/life-mllm/users/cxr/hallucination/VLMEvalKit/case_study/qwen2.5vl_case_20250910_162157.jsonl"
# jsonl_path = "/mnt/bn/life-mllm/users/cxr/hallucination/VLMEvalKit/case_study/qwen2.5vl_case_20250910_162157.jsonl"
base_jsonl_path = \
"/mnt/bn/life-mllm/users/cxr/hallucination/VLMEvalKit/outputs/20251114_174347/Qwen2.5-VL-7B-Instruct/T20251114_G/01_POPE.jsonl"
with open(base_jsonl_path, "r", encoding="utf-8") as f:
for line in f:
if line.strip(): # 跳过空行
base_data.append(json.loads(line))
ours_data = []
ours_jsonl_path = \
"/mnt/bn/life-mllm/users/cxr/hallucination/VLMEvalKit/outputs/20251114_175000/Qwen2.5-VL-7B-Instruct/T20251114_G/01_POPE.jsonl"
# "/mnt/bn/life-mllm/users/cxr/hallucination/VLMEvalKit/outputs/20251114_165742/llava_v1.5_7b/T20251114_G/01_POPE.jsonl"
with open(ours_jsonl_path, "r", encoding="utf-8") as f:
for line in f:
if line.strip(): # 跳过空行
ours_data.append(json.loads(line))
tsv_path = "/mnt/bn/life-mllm/users/cxr/zhy/LMUData/POPE.tsv"
pope_path = "/mnt/bn/life-mllm/users/cxr/hallucination/OPERA/pope_coco/coco_pope_random.jsonl"
# 修改 jsonl_path, pope_path或者tsv_path,label2id就好
def load_data(path):
data = []
if path.endswith(".jsonl"):
with open(path, "r", encoding="utf-8") as f:
for line in f:
if line.strip(): # 跳过空行
data.append(json.loads(line))
elif path.endswith(".tsv"):
data = pd.read_csv(path, sep="\t")
return data
# if True:
if False:
pope_data = load_data(tsv_path)
pope_data = pope_data['answer']
else:
pope_data_t = load_data(pope_path)
pope_data = [item['label'] for item in pope_data_t]
# print(pope_data_t)
for base, ours, pope in zip(base_data, ours_data, pope_data):
if base['response'].lower().strip('.') != pope.lower() and ours['response'].lower().strip('.') == pope.lower():
print(base['index'], base['response'].lower(), ours['response'], pope_data_t[base['index']]['text'], os.path.join("/mnt/bn/life-mllm/users/cxr/hallucination/datasets/val2014", pope_data_t[base['index']]['image']))