Skip to content

"智能视频标注分析平台(慧影)- VIAL (Video Intelligent Annotation Lab)"是一个基于 PyQt5 的视频数据集标注程序,通过大模型生成 AI 视频推理数据。

License

Notifications You must be signed in to change notification settings

QiZishi/Video_Intelligent_Annotation_Lab

Repository files navigation

智能视频标注分析平台(慧影)

目录

这是一个基于 PyQt5 的视频数据集标注程序,通过大模型生成 AI 推理数据。该系统为"智能视频标注分析平台(慧影)- VIAL (Video Intelligent Annotation Lab)"。

中文版使用说明:中文介绍 英文版使用说明:English README

功能特点

  • 数据管理:导入多级文件夹,程序会依次加载每个子文件夹中的视频和图片
  • 视频播放:支持播放/暂停、变速播放(0.1x-2.0x)、进度控制、缩放和重置功能
  • 视频标注:可对视频任意片段添加标签和描述(如"00:30-00:32:左眼向上看")
  • 图片查看:支持查看相关文档图片,可放大、缩小、旋转和翻页
  • 标签管理:自定义诊断标签分类,可多选或添加自定义标签
  • AI 分析集成:调用大模型 API,基于标注描述和诊断结果生成分析结果
  • 数据格式化:将标注数据和 AI 分析结果保存为标准 JSONL 格式
  • 历史回溯:支持查看和修改已标注的历史数据
  • 丰富快捷键:提供多种快捷键提高标注效率

安装和运行

环境要求

  • Windows 10 及以上操作系统(需连接互联网)
  • Python 3.8 或更高版本
  • 安装相关依赖包
pip install -r requirements.txt

运行程序

cd Video_Intelligent_Annotation_Lab
python main.py

打包成可执行文件

本项目支持使用 Nuitka 将 Python 代码封装为独立的 Windows 可执行文件(EXE),无需用户安装 Python 环境即可运行。

安装 Nuitka

pip install nuitka

依赖要求

  • 安装 Visual C++ Build Tools (可从 Microsoft 官方网站下载)
  • 确保已安装所有项目依赖 pip install -r requirements.txt

执行打包

  1. 在项目目录(注意项目目录地址必须全部为英文,不可以出现中文地址,否则会打包失败)中使用提供的 build.bat 脚本:
cd Video_Intelligent_Annotation_Lab
build.bat
  1. 打包过程可能需要几分钟时间,完成后将在 dist 目录生成 main.exe 可执行文件
  2. 生成的 EXE 文件已包含所有依赖,可直接分发给最终用户使用

打包选项说明

当前 build.bat 脚本配置如下:

  • --onefile: 生成单个独立可执行文件
  • --enable-plugin=pyqt5: 启用 PyQt5 插件支持
  • --windows-icon-from-ico=logo.ico: 设置应用程序图标
  • --include-data-dir=config=config: 包含配置文件目录
  • --output-dir=dist: 设置输出目录为 dist

自定义打包选项

可根据需要修改 build.bat 脚本,调整以下参数:

  • 添加--windows-console-mode=disable隐藏控制台窗口
  • 使用--include-package包含特定 Python 包
  • 使用--include-data-files包含额外数据文件

更多 Nuitka 打包选项请参考Nuitka 官方文档

项目结构

Video_Intelligent_Annotation_Lab/
├── main.py                 # 程序入口
├── modules/
│   ├── main_window.py      # 主窗口实现
│   ├── video_player.py     # 视频播放器组件
│   ├── image_viewer.py     # 图片查看器组件
│   ├── annotation_manager.py # 标注管理器
│   ├── api_handler.py      # API调用处理
│   ├── file_handler.py     # 文件处理工具
│   └── help_dialog.py      # 帮助对话框
├── config/
│   ├── default_api_config.json  # 默认API配置
│   ├── user_api_config.json     # 用户API配置
│   ├── diagnosis_labels_config.json # 诊断标签配置
│   └── output_folder_config.json    # 输出文件夹配置
├── logo.ico              # 应用程序图标
├── logo.png               # 应用程序图标原始图片
├── convert_to_ico.py  # 图标转换脚本
├── build.bat              # 软件打包脚本
├── requirements.txt        # 依赖包列表
└── README-zh.md               # 项目说明文档(中文)
└── README-en.md               # 项目说明文档(英文)

详细使用说明

基本流程

  1. 导入数据文件夹:点击工具栏上的"导入数据文件夹"按钮,选择包含子文件夹的目录
  2. 设置输出文件夹:通过工具栏"输出文件夹设置"按钮配置标注数据保存位置(默认保存到桌面文件夹"视频标注结果")
  3. 视频标注
    • 使用播放器控制视频播放和暂停(空格键)
    • 使用剪刀按钮(✂)或 Ctrl+D 两次标记片段(开始和结束时间)
    • 在弹出对话框中添加标签描述
    • 也可以点击"添加"按钮手动添加片段标注
  4. 图片查看:切换到"图片"选项卡查看当前文件夹中的图片文档
  5. 添加视频总描述:在右侧文本框中输入对整个视频的描述(必须不少于 10 个字)
  6. 选择诊断结果:在"诊断结果"区域勾选一个或多个符合视频表现的诊断标签
  7. 生成 AI 分析:点击"生成标注数据"按钮,程序会调用大模型 API 生成分析结果
  8. 查看/编辑 AI 结果:在"思维链"和"大模型回答"文本框中查看和编辑 AI 生成的内容
  9. 保存数据:点击"确定保存"按钮,程序会保存所有标注信息到 JSONL 文件
  10. 处理下一个:保存后自动加载下一个未处理的子文件夹内容

键盘快捷键

  • 视频播放器

    • 空格键:播放/暂停视频
    • 左/右箭头:视频后退/前进
    • Ctrl+D:标记视频片段开始/结束时间
    • Ctrl+鼠标滚轮:缩放视频
    • Ctrl+0:重置视频缩放
  • 图片查看器

    • Ctrl+鼠标滚轮:缩放图片
    • Ctrl+R:旋转图片
    • 左/右箭头:查看上一张/下一张图片

高级功能设置

  • 模型参数设置:支持配置 API 连接、模型名称、API 密钥、系统提示语、用户提示语模板 (用于 AI 分析) 和人类提问模板 (用于 JSONL 输出)
  • 诊断标签管理:自定义诊断结果标签列表,支持添加、编辑、删除操作
  • 历史记录浏览:查看和编辑已保存的标注数据

输入文件夹格式要求

程序可以处理的输入文件夹的具体结构要求如下:

根文件夹/
├── 样本1/
│   ├── video.mp4          # 视频文件 (只处理一个视频)
│   ├── pic1.jpg         # 图片文件 (支持多个)
│   ├── pic2.png       # 图片文件
│   └── ...                # 其他图片文件
├── 样本2/
│   ├── test.mp4           # 视频文件
│   ├── pic1.jpg           # 图片文件
│   └── pic2.png           # 图片文件
└── ...                    # 更多样本文件夹

格式说明

  1. 根文件夹:通过"导入数据文件夹"按钮选择的文件夹

  2. 样本文件夹:根文件夹下的每个子文件夹视为一个独立样本(如一个患者的数据)

  3. 文件要求

    • 每个样本文件夹需包含一个视频文件(如有多个,只会处理找到的第一个)
    • 可以包含零个或多个图片文件(用于参考查看)
    • 视频文件支持格式:mp4, avi, mov, wmv, mkv
    • 图片文件支持格式:jpg, jpeg, png, bmp, gif

标注数据格式

生成的 JSONL 文件格式如下:

{
  "video": "videos/video_filename.mp4",
  "conversations": [
    {
      "from": "human",
      "value": "<image>\n人类提问 "
    },
    {
      "from": "gpt",
      "value": "<think>思维链分析内容</think>\n\n<answer>模型回答内容</answer>"
    }
  ],
  "duration": 23.77147,
  "raw_description": "视频总描述:\nxxx\n\n标注片段:\n00:10-00:15: xxx\n00:30-00:35: xxx\n\n最终诊断结果:xxxx",
  "id": "1"
}

API 支持

软件支持多种 API 服务提供商:

常见问题解答

Q: 点击 "生成标注数据" 时提示 API 调用失败怎么办?

A: 请检查以下几点:

  • 电脑是否已连接到互联网。
  • 工具栏 -> 模型参数设置 -> API 密钥 是否已正确添加。
  • API Base URL 和模型名称是否适用于您添加的密钥。
  • 您的 API 账户是否有效或有足够余额。
  • 尝试在设置中 "恢复默认设置",然后重新添加您的密钥。
  • 如果使用本地模型或代理,请确保服务正在运行且地址正确。

Q: 视频无法播放或显示黑屏?

A: 请尝试:

  • 确认视频文件本身没有损坏,可以用其他播放器打开。
  • 确认视频格式是常见的格式 (如 .mp4, .avi, .mov, .mkv)。
  • 可能是缺少视频解码器。对于 Windows 系统,安装 K-Lite Codec Pack 等解码器包可能会有帮助。

Q: 如何提高标注效率?

A:

  • 熟练使用快捷键进行播放控制和片段标记 (空格, 左右箭头, Ctrl+D)。
  • 使用变速播放功能快速浏览视频。
  • 对于常见的片段描述,可以先在别处写好,然后复制粘贴到标签描述框中。
  • 提前在设置中配置好常用的诊断标签。

Q: 生成的标注数据保存在哪里?

A:

  • 数据保存在您通过工具栏设置的 "输出文件夹" 中。
  • 程序会在输出文件夹内创建一个与您导入的根文件夹同名的子目录。
  • 该子目录内包含一个 videos 文件夹 (存放复制过来的视频文件) 和一个与子目录同名的 .jsonl 文件 (包含所有标注信息)。

Q: 如何修改已经保存的标注数据?

A:

  • 推荐方式: 使用程序的回溯功能。点击 "查看上一条已存数据" 找到要修改的记录,修改完成后点击 "确定保存" 即可覆盖更新。
  • 手动方式: 直接用文本编辑器打开对应的 .jsonl 文件进行修改。请注意 JSONL 格式要求,每行是一个完整的 JSON 对象。修改后程序下次加载会读取修改后的内容。

Q: 如何自定义诊断标签?

A:

  • 在工具栏点击 "诊断结果标签设置" (扳手图标)。
  • 在弹出的对话框中,您可以 "新增"、"编辑" 或 "删除" 标签。
  • 也可以 "恢复默认设置"。
  • 修改后的标签列表将在下次程序启动时或重新加载数据时生效。
  • "其他" 选项始终存在,用于输入不在列表中的诊断。

Q: 为什么有时候点击剪刀按钮(✂)或按 Ctrl+D 没反应?

A:

  • 标记片段需要点击两次:第一次标记开始,第二次标记结束。请确保您点击了两次。
  • 第一次点击后,剪刀按钮会变色 (橙色),提示您需要再次点击以标记结束。
  • 如果正在进行其他操作(如 API 调用),按钮可能会暂时禁用。

注意事项

  • 请确保安装了所有必要的依赖包
  • 使用前需要在模型参数设置中配置有效的 API 密钥
  • 视频文件支持格式: mp4, avi, mov, wmv, mkv
  • 图片文件支持格式: jpg, jpeg, png, bmp, gif
  • 视频总描述不能少于 10 个字,诊断结果必须至少选择一项
  • 保存操作会自动复制视频到输出目录并创建 JSONL 文件

更多信息

请在软件中使用"帮助"按钮查看详细使用说明。

About

"智能视频标注分析平台(慧影)- VIAL (Video Intelligent Annotation Lab)"是一个基于 PyQt5 的视频数据集标注程序,通过大模型生成 AI 视频推理数据。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published