Skip to content

基于Yolov5的古谱识别

古谱图片标注及训练集数据准备

训练的数据来源是128页的《西安鼓乐大典》,其中有125页是有谱字的,即数据集将从这125页《西安鼓乐大典》中得到。

古谱图片切割

将125页1410×1888的图片切割成256×256的图片,1张1410×1888的图片可以切割出35张256×256的图片。随机选择3张1410×1888图片,然后将这3张图片切割出75张图片。

分割前图片如下:

在切割成256×256的图片后,还需要对这些图片进行边缘修剪,以免一些残缺的谱字降低模型的训练正确率。分割后的图片如下:

古谱图片标注

利用labelImg工具包,对数据进行标注,并通过xml文件格式进行保存。标注过程如下图所示:

除此之外我们需要给标注的不同谱字形符化,简单来说就是要给所有的谱字都进行标号,具体标号如下图所示:

在古谱中还有用圆圈表示的小节结束符,用word+stop表示它的分类标签。75张训练集图片中的分类数目如下图所示:

模型训练

选择了Yolov5l版本的模型进行模型的训练,调整数据参数,将已有的数据集按照4:1的比例分成训练集和验证集对模型进行训练,训练结果如下图所示:

得到的混淆矩阵如下图所示:

利用Yolov5进行检测

将125张1410×1888大小的古谱字图片输入到模型中,模型反馈所有谱字的位置,可视化形式如下图所示:

可以利用检测器检测一张大小为1911*2500的手写古谱谱字图片,检测结果如下图所示:

可见检测的结果还是比较可观的。

提取音高数据

根据 识别结果 ,从右到左、从上到下依次提取识别结果的分类结果,将分类结果转换至数字音高,保存至txt文件。

Author: 陈帅嘉

Create Time: 2022-07-05

Update Time: 2023-06-13