基于DyHead与YOLOv11的错题自动切分系统
先来梳理一下这个项目的核心思路:将动态头部检测(DyHead)与YOLOv11相结合,打造一套能够自动识别并切分错题的智能系统。系统主要完成三项任务——利用DyHead精准切割试卷上的题目区域,借助YOLOv11识别五种常见错误符号(✕、/、✓̷、?、○),最后通过一套四级匹配策略将错题与对应的符号正确关联。
核心技术

双模型协同架构
| 功能模块 | 采用技术 | 精度表现 |
| 题目区域分割 | DyHead + Swin-Transformer | mAP@0.5: 98.2% |
| 错误符号检测 | YOLOv11-640 | F1-score: 96.5% |
在题目分割方面,采用DyHead与Swin-Transformer的组合方案,mAP@0.5达到98.2%,基本能够精准框定每道题的范围。错误符号检测则使用YOLOv11-640模型,F1-score为96.5%,对五类错误符号的识别效果相当可靠。
四级匹配策略
匹配策略是整个系统中颇具巧思的环节。如何将错题与错误符号一一对应?这里设计了四层方案,按优先级从高到低排列:
- 中心点包含(最高优先级)——若错误符号的中心点落在题目框内部,直接配对,简单直接且有效。
- 重叠面积占比 >30%——若中心点未落在框内,则检查两者重叠面积是否足够大。
- IOU相似度 >0.25——重叠面积仍不达标?再计算交并比(IOU)进行判断。
- 欧氏距离 <50px(兜底方案)——若以上均不满足,则取距离最近的错误符号与题目,50像素以内即视为匹配。
这一策略的优势在于几乎不会产生漏匹配。实际测试表明,中心点包含方案能应对绝大多数场景——毕竟大多数错误符号都位于题目区域内。后面三层主要用于处理极端情况,例如错误符号恰好写在题目边界上。
快速部署
环境配置
# 安装PyTorch+CUDA11.8
pip install torch==2.4.1 torchvision==0.19.1 --index-url https://download.pytorch.org/whl/cu118
# 安装项目依赖
pip install -e detectron2 ultralytics flask pillow==9.5.0
模型部署
下载预训练模型后,按以下路径放置:
./configs/dyhead_swint_atss_fpn_2x_ms.yaml
./yolo_ckps/best.pt
启动服务
python flask_error_detection.py # 访问 https://localhost:5004

API接口文档
错题检测接口
Endpoint: POST /detect
请求示例:
curl -X POST https://localhost:5004/detect -F "image=@test.jpg"
响应示例:
{
"success": true,
"data": {
"error_count": 3,
"questions": [
{
"bbox": [100,50,200,150],
"errors": [
{
"type": "cuo",
"confidence": 0.92,
"match_method": "中心点包含"
}
]
}
],
"visualization": {
"errors_img": "base64...",
"matches_img": "base64..."
}
}
}
接口返回的结果非常直观——错题数量、每道题的边界框、对应的错误符号类型及置信度,同时附带可视化结果图。base64编码的图片可直接在前端展示,省去了额外的图片处理环节。
系统架构
Cut/
├── core/
│ ├── dyhead_detector.py # 题目区域分割
│ └── yolo_detector.py # 错符检测
├── utils/
│ ├── matcher.py # 四级匹配算法
│ └── visualization.py # 结果可视化
└── web/
├── static/ # 前端资源
└── templates/ # HTML页面
整体架构十分轻量,核心逻辑仅包含四个文件:两个检测器、一个匹配器、一个可视化工具。Web层基于Flask搭建,前端资源直接挂载在static目录下,部署起来非常便捷。
效果演示
Web界面支持实时上传试卷图片,系统会自动标注出错题区域,并支持逐一切分下载。从实际测试看,无论是A4还是B5规格的试卷,手写批改痕迹还是印刷体符号,系统都能稳定处理。
检测效果对比示意
左:原始试卷 | 右:错题标记与切分结果
教育场景适配:支持A4/B5试卷、手写批改痕迹、多科目符号体
这套系统已在真实教育场景中稳定运行一段时间。最令人省心的是,它无需对试卷做任何预处理——拍照上传即可。当然,如果试卷歪斜严重或光线极差,建议先进行预处理,这样检测精度会更高。
