项目简介
本项目源自2024年MathorCup数学应用挑战赛B题,旨在开发一个基于YOLOv8的甲骨文原始拓片图像单字分割识别模型。甲骨文作为中国最古老的文字形式之一,其研究对于理解中国古代历史和文化具有重要意义。然而,由于甲骨文字符形态复杂且多变,传统的文字识别方法难以满足高精度要求。因此,我们利用深度学习技术,特别是YOLOv8目标检测和图像分类的强大能力,来构建一个能够高效、准确地对甲骨文进行分割和识别的系统。
针对原始拓片图像中的甲骨文文字分割识别包括两个主要阶段:
- 目标检测:使用YOLOv8目标检测模型,精确提取出甲骨文文字所在的矩形区域。
- 字符识别:通过YOLOv8图像分类模型,对每个分割出来的文字图像进行分类,确定该字形所代表的具体字符内容。
此外,为了方便用户操作,我们还基于PyQt5开发了一个简易的前端程序,使得非专业人员也能够轻松上手使用此工具进行甲骨文的自动识别。
效果展示与性能评估
在效果展示方面,我们的模型已经能够成功识别并正确分类大量的甲骨文字符。训练数据集来源于殷契文渊,经过严格的数据清洗和图像增强处理后,确保了数据的质量和多样性。采用YOLOv8s轻量级模型进行训练,实现了对195种不同甲骨文字符的有效识别。
关于性能评估,以下是具体指标:
-
目标检测模型:
- mAP50: 0.928
- mAP50-95: 0.608
- Precision: 0.905
- Recall: 0.865
-
字符分类模型:
- Top1_acc: 0.897
- Top5_acc: 0.969
以上结果表明,我们的模型不仅拥有较高的准确性,而且在面对多种变化时也能保持良好的鲁棒性。特别是在640x640分辨率的输入条件下,平均推理时间仅为约190ms(使用PyTorch),而在ONNX Runtime下则进一步缩短至大约120ms,这充分证明了模型的实时性和效率。上述测试是在CPU为11th Intel Core i5-1155G7 2.50GHz环境下完成的,使用的是YOLOv8s模型。
使用说明
为了帮助用户顺利运行该项目,以下是详细的使用指南:
环境搭建
首先需要安装环境依赖包。如果计划仅在CPU上运行,可以通过以下命令安装基础依赖:
pip install -r requirements.txt
若您希望加速推理过程,并且您的计算机支持GPU,则应安装带有GPU支持的版本:
pip install onnxruntime-gpu
模型下载与配置
请从项目的Releases页面下载预先训练好的模型权重文件,并将其解压到inferences/models/
目录中。接着,您就可以直接运行main.py
来启动应用程序了。
python main.py
配置文件解析
默认情况下,识别程序将读取位于configs/inference.yaml
的配置文件。该文件包含了用于控制模型推理行为的各项参数,例如:
precision
: 推理运算精度,可选值为"fp32"
(单精度)或"fp16"
(半精度)。session-providers
: ONNX Runtime Providers 参数列表,默认设置为仅使用CPU执行提供者。detection-model-path
和character-model-path
: 分别指定了目标检测和字符分类模型的路径。conf-threshold
和iou-threshold
: 目标检测过程中使用的置信度阈值和非极大值抑制IoU阈值。character-codes
: 包含所有字符类别对应的标签编码列表。
自定义数据集训练与推理代码
import sys
from PyQt5.QtWidgets import QApplication
from views.mainwindow import MainWindow
if __name__ == '__main__':
app = QApplication(sys.argv)
center_x = app.primaryScreen().availableGeometry().center().x()
center_y = app.primaryScreen().availableGeometry().center().y()
window = MainWindow()
window.move(center_x - window.width() // 2, center_y - window.height() // 2)
window.show()
sys.exit(app.exec())
如果您打算使用自己的数据集来训练模型,那么还需要安装ultralytics
框架,并参考官方文档指导完成模型训练流程。最后,记得将训练完成后的模型转换成ONNX格式,以便于部署。
综上所述,这个基于YOLOv8的甲骨文原始拓片图像单字分割识别项目不仅展示了深度学习在古文字研究领域的潜力,同时也提供了一套完整的解决方案,可用于其他类似任务的研究和开发。随着更多高质量数据的积累和技术的发展,我们可以期待未来这一领域会有更加卓越的表现。