系统概述
协同进化标注系统基于 PyQt5 构建图形界面,后端使用 PyTorch 实现多模态特征提取与元学习模型。主要功能包括:
-
多源数据导入:支持表格数据(CSV),并可扩展图像、文本等类型。
-
智能样本选择:支持不确定性、多样性、混合等多种策略,优先推荐高价值样本。
-
人工标注界面:提供直观的标注工具,可记录标签和标注置信度。
-
在线学习:每新增一批人工标注,系统自动增量训练,持续提升性能。
-
自动标注:利用当前模型对低置信度样本进行预标注,人工只需审核。
-
性能评估与可视化:实时监控准确率、损失、人机一致性,绘制学习曲线和混淆矩阵。
-
系统状态持久化:可保存/加载完整的系统状态,包括模型权重、标注池、历史记录。
安装与环境准备
依赖库
系统运行需要以下 Python 库:
-
Python 3.8+
-
PyQt5
-
torch(建议 1.9+)
-
numpy, pandas
-
scikit-learn
-
matplotlib, seaborn
-
pickle(内置)
使用 pip 一键安装:
pip install pyqt5 torch numpy pandas scikit-learn matplotlib seaborn
文件结构
├── launcher.py # 启动脚本
├── annotation_ui.py # 图形界面主程序
├── enhanced_annotation_system.py # 核心算法与数据模型
├── config.py # 系统配置参数
启动系统
打开终端,进入源码目录,执行:
python launcher.py
若想使用不同的配置或指定数据目录,可附加参数:
# 使用专业配置(更多类别、更高阈值)
python launcher.py –config professional
# 指定数据目录(目前仅用于扩展,GUI中可自由选择)
python launcher.py –data-dir ./my_data
启动后,将出现主窗口,界面布局如下:
主界面布局

主窗口分为左右两大区域:
-
左侧面板:系统监控(样本统计、数据分布、实时性能) + 系统控制按钮(训练、自动标注、选择样本、评估)。
-
右侧标签页:包含四个子页面 —— 人工标注、数据管理、模型训练、分析可视化。
下方为状态栏,显示当前系统状态和进度信息。
数据管理
1. 导入数据
点击左侧 “加载数据” 菜单或数据管理页的 “导入数据” 按钮,选择 CSV 文件。CSV 应包含特征列,可选的 label 列作为真实标签(用于评估)。系统会自动为每一行生成一个样本对象。
示例 CSV 格式:
feature1,feature2,feature3,label
0.1,0.5,0.2,0
0.3,0.1,0.7,1
…
2. 生成演示数据
若暂无真实数据,可点击菜单 工具 → 生成演示数据,系统将创建 1000 个随机样本(100 维特征,5 分类),方便测试功能。
3. 查看与编辑样本
在数据管理页的表格中,双击任意行可打开样本详情对话框,查看原始数据、AI 预测、人工标注、难度分数等信息。
4. 导出数据
点击 “导出数据”,可将当前标注池的所有元数据(ID、数据类型、标签、置信度等)保存为 CSV 文件。
5. 清空数据
如需重置系统,点击 “清空数据” 并确认。
人工标注
1. 选择待标注样本
在左侧控制区点击 “选择标注样本”,弹出对话框:
-
选择策略:hybrid(混合)、uncertainty(不确定性)、diversity(多样性)、random(随机)。
-
批量大小:本次需要标注的样本数量(例如 10)。
系统将根据策略从未标注的样本池中选出高价值样本,并自动切换到 人工标注 标签页。
2. 标注界面操作
-
左侧列表:显示当前批次所有待标注样本,带有 AI 预测值和置信度。
-
右侧信息区:展示当前样本的 ID、数据类型、AI 预测、置信度、难度和学习价值。
-
数据预览:显示样本原始数据(若为表格数据,展示形状和前几个值)。
-
标注控件:
-
标签选择:单选按钮对应各个类别(类别数由配置决定)。
-
置信度:高/中/低,反映您对自己标注的确信程度。
-
操作按钮:确认标注、跳过(进入下一个)、查看详情(弹出完整对话框)。
-
3. 标注流程
在左侧列表中点击某个样本,右侧信息自动刷新。
观察 AI 预测(可作为参考),选择合适的标签和置信度。
点击 “确认标注”,该样本将被记录,并自动跳转到下一个样本。已标注样本在左侧列表会显示“✓”标记。
重复直至完成所有样本。
4. 自动触发训练
系统会统计已标注样本数量,每当数量达到 10 的倍数时,会自动触发一次增量训练(训练 1 个 epoch),实现边标边学。
模型训练
1. 手动训练
若需调整训练参数,可切换到 模型训练 标签页:
-
训练配置:设置训练周期、批次大小、学习率。
-
点击 “开始训练”,进度条和日志窗口将显示训练过程。
2. 监控训练
训练过程中,左侧监控面板的 实时性能 区域会更新损失、准确率和人机一致性。训练结束后,日志区会打印最终指标。
3. 停止训练
如需中断训练,点击 “停止训练” 即可。
自动标注
当模型积累了一定能力后,可对大量未标注样本进行自动预标注:
点击左侧 “自动标注” 按钮。
设置置信度阈值(默认 0.75),高于此阈值的 AI 预测将被直接采纳为“人工标注”,低于阈值的样本放入待审核列表。
系统运行后弹窗报告自动标注数量和需要审核的数量。自动标注的样本会直接更新到标注池,待审核样本可后续人工处理。
注:自动标注不会覆盖已有的人工标注。
系统评估
点击 “评估性能” 按钮,系统会基于真实标签(优先使用人工标注,若无则使用样本自带的 true_label)计算:
-
准确率
-
平均置信度
-
校准误差
-
人机一致性
-
混淆矩阵(可用于后续绘图)
评估结果会显示在 分析可视化 标签页的文本区域,同时状态栏显示准确率。
可视化分析
在 分析可视化 标签页,提供了三个绘图按钮:
-
学习曲线:绘制训练历史中的损失和准确率曲线(需要至少一次训练记录)。
-
置信度分布:展示所有样本 AI 预测置信度的直方图,并标注高/中/低阈值线。
-
混淆矩阵:基于最近评估结果绘制热力图。
点击按钮即可弹出 matplotlib 窗口查看图表,帮助分析模型行为和样本分布。
系统保存与加载
保存当前状态
菜单 文件 → 保存系统,可将整个系统状态(模型权重、标注池、训练历史、反馈记录)保存为 .pkl 文件。便于后续继续标注或部署。
加载已有系统
菜单 文件 → 加载系统,选择之前保存的 .pkl 文件,系统将恢复至保存时的状态。
配置文件说明
系统的主要参数集中在 config.py 中,您可以按需修改:
-
input_dims:不同数据类型的输入维度,默认表格数据为 100。
-
num_classes:分类任务类别数。
-
hidden_dim:特征提取器和元学习器的隐藏层维度。
-
confidence_thresholds:高/中/低置信度的阈值。
-
auto_annotation_threshold:自动标注采纳阈值。
-
device:自动选择 CUDA 或 CPU。
系统提供了两个预定义配置:DEFAULT_CONFIG 和 PROFESSIONAL_CONFIG(适合大规模项目),可在启动时通过 –config professional 切换。
高级技巧
1. 批量导入更多数据
除了单个 CSV 导入,您也可以编写脚本批量生成 AnnotationSample 对象并调用 system.add_samples()。未来版本将支持文件夹批量导入。
2. 自定义采样策略
如果您想实现自己的样本选择算法,可以在 enhanced_annotation_system.py 中修改 select_samples_for_annotation 方法,添加新的策略分支。
3. 多模态扩展
系统已预留 DataType 枚举(IMAGE、TEXT、AUDIO)和对应的特征编码器,您可以扩展相应数据处理逻辑,实现图像、文本等类型的标注。
总结
协同进化标注系统通过将 AI 模型与人工标注紧密结合,大幅降低了标注成本,提升了标注质量。本文详细介绍了从安装到使用的各个环节,希望您能借助该工具,更高效地完成数据标注任务,并从中体验人机协同的乐趣。







