{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 生成效果抽查" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 40/40 [00:00<00:00, 171.67it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[{\"Q\": \"What color is the reporter's coat during the interview?',\n", " 'Options': [\n", " 'A. Red.',\n", " 'B. Black.',\n", " 'C. Blue.',\n", " 'D. White.'\n", " ],\n", " 'Answer': 'B\"}]\n", "[{\"Q\": \"What color is the man's jacket in the video?', 'Options': ['A. Red.', 'B. Blue.', 'C. Green.', 'D. Black.'], 'Answer': 'B\"}]\n", "[{\"Q\": \"What is the person's hands manipulating in the video clip?', 'Options': ['A. A small electronic component.', 'B. A large mechanical part.', 'C. A piece of paper.', 'D. A tool from the workspace.'], 'Answer': 'A\"}]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "import json\n", "import os\n", "import random\n", "import shutil\n", "from tqdm import tqdm\n", "import re\n", "\n", "def parse(generated_text):\n", " generated_text = generated_text.strip()\n", " if \"```json\" in generated_text:\n", " generated_text = re.sub(r\"^```json\\s*|\\s*```$\", \"\", generated_text.strip())\n", " try:\n", " data = eval(generated_text)\n", " except:\n", " generated_text = generated_text.replace('\\'Q\\': \\'', \"\\\"Q\\\": \\\"\").replace('\\', \\'A\\': \\'', \"\\\", \\\"A\\\": \\\"\").replace('\\'}', \"\\\"}\")\n", " print(generated_text)\n", " data = eval(generated_text)\n", "\n", " return data\n", "\n", "def load_jsonl(path):\n", " datas = []\n", " with open(path, 'r') as file:\n", " for line in file:\n", " data = json.loads(line)\n", " datas.append(data)\n", " return datas\n", "\n", "\n", "results_dir = '/share/minghao/VideoProjects/Sythesis2/ObjectRecognition/Results/object_0_40'\n", "file_names = os.listdir(results_dir)\n", "all_datas = []\n", "for name in file_names:\n", " file_path = os.path.join(results_dir, name)\n", " if os.path.isdir(file_path):\n", " continue\n", " datas = load_jsonl(file_path)\n", " all_datas.extend(datas)\n", "\n", "total_size = len(all_datas)\n", "check_size = total_size//10\n", "check_size = 40\n", "check_datas = random.sample(all_datas, check_size)\n", "observation_dir = '/share/minghao/VideoProjects/Sythesis2/ObjectRecognition/Observations'\n", "\n", "for data in tqdm(check_datas):\n", " video_id = data['video_id']\n", " generated_text = data['generated_qa']\n", " try:\n", " result = parse(generated_text)\n", " except:\n", " continue\n", " with open(os.path.join(observation_dir, video_id+'.json'), 'w') as file:\n", " json.dump(result, file, indent=4)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 2700/2700 [00:00<00:00, 1360151.43it/s]\n" ] } ], "source": [ "import json\n", "from tqdm import tqdm\n", "\n", "path = '/share/minghao/VideoProjects/VideoChat-Flash/lmms-eval_videochat/videochat-flash-7B@448_eval_log_videomme.json'\n", "\n", "with open(path, 'r') as f:\n", " datas = json.load(f)\n", "\n", "score_task_type = {}\n", "score_duration_task_type = {\n", " 'short': {},\n", " 'medium': {},\n", " 'long': {}\n", "}\n", "\n", "record_error = {\n", " 'short': [],\n", " 'medium': [],\n", " 'long': []\n", "}\n", "\n", "for data in tqdm(datas['logs']):\n", " duration = data['doc']['duration']\n", " task_type = data['doc']['task_type']\n", " if task_type != 'Action Reasoning':\n", " continue\n", " pred_answer = data['videomme_percetion_score']['pred_answer']\n", " answer = data['videomme_percetion_score']['answer']\n", " if pred_answer == answer:\n", " correct_flag = True\n", " else:\n", " correct_flag = False\n", "\n", " if not correct_flag:\n", " info = {\n", " 'url' : data['doc']['url'],\n", " 'Q': data['doc']['question'],\n", " 'Options': data['doc']['options'],\n", " 'Answer': answer,\n", " 'pred': pred_answer\n", " }\n", "\n", "\n", " record_error[duration].append(info)\n", "\n", "import os\n", "\n", "ob_dir = '/share/minghao/VideoProjects/Sythesis/ActionReasoning/ErrorObservation'\n", "for duration, error_infos in record_error.items():\n", " ob_path = os.path.join(ob_dir, f'{duration}.json')\n", " with open(ob_path, 'w') as file:\n", " json.dump(error_infos, file, indent=4)\n", " " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.15" } }, "nbformat": 4, "nbformat_minor": 2 }