v2.0.0 新变化:项目使用 C/S 架构重新实现。
本项目取材自 2024 年 MathorCup 数学应用挑战赛 B 题,基于 YOLOv8 的甲骨文原始拓片图像单字分割识别系统。针对原始拓片图像中的甲骨文文字分割识别包括以下两个阶段:
-
目标检测:基于 YOLOv8 目标检测模型,对甲骨文文字所在的矩形区域进行提取。
-
字符识别:基于 YOLOv8 图像分类模型,对文字图像进行分类,判断该字形所代表的具体字符内容。
同时实现基于 Flask 的后端推理接口和 Web UI 可视化界面。
本项目训练数据集来自 殷契文渊,对原始数据集进行了增强,采用 YOLOv8s 模型进行训练,能识别 其中195 中不同的甲骨文字符,其中目标检测模型各项指标如下:
mAP50 | mAP50-95 | Precision | Recall |
---|---|---|---|
0.928 | 0.608 | 0.905 | 0.865 |
字符分类模型各项指标如下:
Top1_acc | Top5_acc |
---|---|
0.897 | 0.969 |
首先需要安装本项目依赖的各种库和工具包。
pip install -r requirements.txt
可以在本项目 Releases 中下载我训练好的模型权重文件,解压到目录 inferences/models 下,运行以下命令以启动服务端程序。
python -m flask --app servers.server:app run --host=0.0.0.0 --port=8080
本项目识别程序默认的配置文件为 inferences/configs/config.toml,其中各个字段的描述如下。
字段名 | 字段描述 |
---|---|
providers | 模型推理 ONNX Runtime Execution Providers 列表。 |
precision | 推理运算精度,可取 "fp32"(单精度)或 "fp16"(半精度)。 |
detection-model-path | 目标检测模型加载路径。 |
classification-model-path | 字符识别模型加载路径。 |
conf-threshold | 目标检测置信度阈值。 |
iou-threshold | 目标检测非极大值抑制 IoU 阈值。 |
客户端程序位于 clients 目录下,可通过 Nginx 或其他前端服务器部署,其中 clients/js/names.js 内为字符类别名列表,可根据实际需要调整。此外还需要安装配置并启动 Nginx 服务进行后端服务和前端服务之间的反向代理。
如果需要使用自己的数据集训练模型,则需要安装 Ultralytics 框架,参照 Ultralytics 官方文档 进行模型的训练,最后将模型转换为 ONNX 格式进行部署即可。
pip install ultralytics