这是一个基于 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.txtcd Video_Intelligent_Annotation_Lab
python main.py本项目支持使用 Nuitka 将 Python 代码封装为独立的 Windows 可执行文件(EXE),无需用户安装 Python 环境即可运行。
pip install nuitka- 安装 Visual C++ Build Tools (可从 Microsoft 官方网站下载)
- 确保已安装所有项目依赖
pip install -r requirements.txt
- 在项目目录(注意项目目录地址必须全部为英文,不可以出现中文地址,否则会打包失败)中使用提供的 build.bat 脚本:
cd Video_Intelligent_Annotation_Lab
build.bat- 打包过程可能需要几分钟时间,完成后将在 dist 目录生成 main.exe 可执行文件
- 生成的 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 # 项目说明文档(英文)
- 导入数据文件夹:点击工具栏上的"导入数据文件夹"按钮,选择包含子文件夹的目录
- 设置输出文件夹:通过工具栏"输出文件夹设置"按钮配置标注数据保存位置(默认保存到桌面文件夹"视频标注结果")
- 视频标注:
- 使用播放器控制视频播放和暂停(空格键)
- 使用剪刀按钮(✂)或 Ctrl+D 两次标记片段(开始和结束时间)
- 在弹出对话框中添加标签描述
- 也可以点击"添加"按钮手动添加片段标注
- 图片查看:切换到"图片"选项卡查看当前文件夹中的图片文档
- 添加视频总描述:在右侧文本框中输入对整个视频的描述(必须不少于 10 个字)
- 选择诊断结果:在"诊断结果"区域勾选一个或多个符合视频表现的诊断标签
- 生成 AI 分析:点击"生成标注数据"按钮,程序会调用大模型 API 生成分析结果
- 查看/编辑 AI 结果:在"思维链"和"大模型回答"文本框中查看和编辑 AI 生成的内容
- 保存数据:点击"确定保存"按钮,程序会保存所有标注信息到 JSONL 文件
- 处理下一个:保存后自动加载下一个未处理的子文件夹内容
-
视频播放器
- 空格键:播放/暂停视频
- 左/右箭头:视频后退/前进
- 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 # 图片文件
└── ... # 更多样本文件夹
-
根文件夹:通过"导入数据文件夹"按钮选择的文件夹
-
样本文件夹:根文件夹下的每个子文件夹视为一个独立样本(如一个患者的数据)
-
文件要求:
- 每个样本文件夹需包含一个视频文件(如有多个,只会处理找到的第一个)
- 可以包含零个或多个图片文件(用于参考查看)
- 视频文件支持格式: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 服务提供商:
- 推荐使用 DeepSeek API (https://api.deepseek.com)
- 支持 WiseDiag API (https://api.wisediag.com/v1)
- 兼容标准 OpenAI API 格式的其他服务商
A: 请检查以下几点:
- 电脑是否已连接到互联网。
- 工具栏 -> 模型参数设置 -> API 密钥 是否已正确添加。
- API Base URL 和模型名称是否适用于您添加的密钥。
- 您的 API 账户是否有效或有足够余额。
- 尝试在设置中 "恢复默认设置",然后重新添加您的密钥。
- 如果使用本地模型或代理,请确保服务正在运行且地址正确。
A: 请尝试:
- 确认视频文件本身没有损坏,可以用其他播放器打开。
- 确认视频格式是常见的格式 (如 .mp4, .avi, .mov, .mkv)。
- 可能是缺少视频解码器。对于 Windows 系统,安装 K-Lite Codec Pack 等解码器包可能会有帮助。
A:
- 熟练使用快捷键进行播放控制和片段标记 (空格, 左右箭头, Ctrl+D)。
- 使用变速播放功能快速浏览视频。
- 对于常见的片段描述,可以先在别处写好,然后复制粘贴到标签描述框中。
- 提前在设置中配置好常用的诊断标签。
A:
- 数据保存在您通过工具栏设置的 "输出文件夹" 中。
- 程序会在输出文件夹内创建一个与您导入的根文件夹同名的子目录。
- 该子目录内包含一个
videos文件夹 (存放复制过来的视频文件) 和一个与子目录同名的.jsonl文件 (包含所有标注信息)。
A:
- 推荐方式: 使用程序的回溯功能。点击 "查看上一条已存数据" 找到要修改的记录,修改完成后点击 "确定保存" 即可覆盖更新。
- 手动方式: 直接用文本编辑器打开对应的
.jsonl文件进行修改。请注意 JSONL 格式要求,每行是一个完整的 JSON 对象。修改后程序下次加载会读取修改后的内容。
A:
- 在工具栏点击 "诊断结果标签设置" (扳手图标)。
- 在弹出的对话框中,您可以 "新增"、"编辑" 或 "删除" 标签。
- 也可以 "恢复默认设置"。
- 修改后的标签列表将在下次程序启动时或重新加载数据时生效。
- "其他" 选项始终存在,用于输入不在列表中的诊断。
A:
- 标记片段需要点击两次:第一次标记开始,第二次标记结束。请确保您点击了两次。
- 第一次点击后,剪刀按钮会变色 (橙色),提示您需要再次点击以标记结束。
- 如果正在进行其他操作(如 API 调用),按钮可能会暂时禁用。
- 请确保安装了所有必要的依赖包
- 使用前需要在模型参数设置中配置有效的 API 密钥
- 视频文件支持格式: mp4, avi, mov, wmv, mkv
- 图片文件支持格式: jpg, jpeg, png, bmp, gif
- 视频总描述不能少于 10 个字,诊断结果必须至少选择一项
- 保存操作会自动复制视频到输出目录并创建 JSONL 文件
请在软件中使用"帮助"按钮查看详细使用说明。