File size: 2,725 Bytes
71db072
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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']))