videommu: open-ended predictions corrupted by xlsx round-trip, silently zeroed or crash

Aberta Para iniciantes
#1,698 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
1/5
Tempo estimado
Menos de uma hora
Facilidade para iniciantes
90/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
pandas, python

Direção de pesquisa

Comece em evaluate de vlmeval/dataset/videommmu.py (linhas 668-706) e, em seguida, inspecione parse_open_response e eval_open para confirmar que as previsões open-ended são listas. Revise o comportamento de dump/load de vlmeval/smp/file.py e reproduza o round-trip de pandas xlsx mostrado na issue. O trabalho estará concluído quando o cache de scores preservar os dados list-valued de parsed_pred e o scoring completo de VideoMMMU não calcular mais scores incorretamente de forma silenciosa nem falhar.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Bug

vlmeval/dataset/videommmu.py, evaluate (lines 668-706):

storage = get_intermediate_file_path(eval_file, '_score')  # defaults to .xlsx
...
data['parsed_pred'] = [ans[idx]['parsed_pred'] for idx in data['index']]
dump(data, storage)
...
score = aggregate_results([row for _, row in load(storage).iterrows()])

parse_open_response (line 140) returns a list for open-ended items. Writing a list column to xlsx serializes it as the string "['thirty', 30.0]"; loading it back yields that string. eval_open (line 382) then does for pred in pred_i — iterating a string character-by-character, so every open-ended item is scored wrong (single-char substring matches).

If the list column fails to write, dump (vlmeval/smp/file.py:183-187) falls back to .pkl, but load(storage) still targets the .xlsx path and crashes.

Reproduction

import pandas as pd
df = pd.DataFrame({'parsed_pred': [['thirty', 30.0], 'A']})
df.to_excel('/tmp/t.xlsx', index=False)
print([type(x).__name__ for x in pd.read_excel('/tmp/t.xlsx')['parsed_pred']])
# ['str', 'str'] — list became "['thirty', 30.0]"

Impact

Every full VideoMMMU run (includes the open-ended Adaptation subset) either silently zeroes open-ended accuracy or crashes at the end. MCQ items unaffected (plain-string parsed_pred). Silent / crash, no warning.

Fix

Use pkl for the score cache so list-typed parsed_pred survives the round-trip:

storage = get_intermediate_file_path(eval_file, '_score', 'pkl')
Linguagem predominante
Python
Estrelas
4.4k
Forks
768
Merge médio
1d 20h
PRs com merge (30d)
20

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de open-compass/VLMEvalKit

Todas as issues de open-compass/VLMEvalKit

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.