基于深度学习和YOLOv11的错题自动切分系统
基于DyHead和YOLOv11的错题自动切分系统
先说说这个项目的核心思路:把动态头部检测和YOLOv11结合起来,做一个能自动识别错题的系统。它主要干三件事——用DyHead把试卷上的题目区域精确切出来,用YOLOv11识别五种常见的错误符号(✕、/、✓̷、?、○),最后通过一套四重匹配策略把错题和符号对应上。
核心技术

双模型协同架构
| 模块 | 技术方案 | 精度指标 |
| 题目分割 | DyHead+Swim-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——重叠面积还不达标?再算算交并比。
- 欧氏距离 <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 # 访问 http://localhost:5004

API接口文档
错题检测接口
Endpoint: POST /detect
请求示例:
curl -X POST http://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试卷、手写批改痕迹、多科目符号体
这套系统在真实教育场景中已经跑通了一段时间。最让人省心的一点是,它不用对试卷做任何预处理——拍照上传就行。当然,如果试卷歪斜严重或者光线极差,建议先做一下预处理,这样检测精度会更高。