论文部分内容阅读
甲骨文又称殷墟文字,是古代汉字的一种形式。甲骨文主要指商代晚期王室用于占卜的甲骨文或兽骨文字,商朝灭亡、周朝兴起后,甲骨文也在一段时期内得到应用,是研究商周社会史的重要资料。甲骨文的内容涉及自然生态、气候灾害、政治制度、皇室结构、宗法庙宇制度、文化礼制、土地所有权等,也包括商朝都城的社会经济生产、交通运输、外交考察以及权贵阶层的衣食住行、健康与疾病死亡、婚姻、养老等日常生活状况。过去研究古代汉字的主要依据是商周青铜器上的铭文,如东汉的《说文解字》,而甲骨文是直接从出土文物中发掘出来的,比《说文解字》早1500年,具有较高的学术价值可靠性。一方面,甲骨文对于研究汉字的起源和发展,纠正《说文解字》中的疏漏具有重要价值;另一方面,甲骨文是中华文明几千年历史的重要组成部分,是中国道教文化的重要组成部分。可以说,现代汉字是从甲骨文演变而来的。2017年,甲骨文成功入选联合国教科文组织“世界记忆名录”,标志着甲骨文在世界文化中的重要地位及其对社会历史发展的持久影响。因此,研究和认识甲骨文具有重要意义。本文正文共包含五章内容,第一章为全文的简介,介绍了本文的研究背景、当前研究的挑战、本文的研究目标和贡献以及文章的整体结构。第二章介绍了目前该领域的相关的工作,针对甲骨文识别,分别介绍了基于机器学习、图论的传统方法以及基于卷积神经网络的现代方法。同时,还额外对胶囊网络、不平衡数据集的处理作了简要的介绍。第三章介绍了基于胶囊网络的甲骨文字符分类器,同时对胶囊网络的核心点与创新点、和卷积神经网络相比有哪些优缺点进行了详细的描述,最后介绍了实验之前的预处理工作以及对于不平衡问题解决方法的探索。第四章是本文所进行的实验,包括实验设置、实验结果以及分析、总结三部分。在实验设置中叙述了本文所采用的数据集,以及本文实验的软硬件环境。在第五章中,对本文的研究结果进行了总结,同时实验中的不足也在第五章中进行阐释,并由此讨论了未来的研究方向。由于甲骨文是一种历史悠久的象形文字,缺乏参考资料,长期以来甲骨文的研究进展十分缓慢。甲骨文图像可分为临摹甲骨文图像和拓片甲骨文图像两类,拓片的图像是从龟甲、动物骨骼等载体上获得的原始图像,而临摹的图像是专家对拓片字符进行处理后获得的高分辨率图像,它修复了拓片字符图像的缺陷和噪声。甲骨文拓片很难获得,由于缺乏训练样本,很难达到较高的识别精度。实验中使用的数据集是OBC306,其中大部分图片都是来自于拓片。OBC306数据集包括309551个图片样本,共分为306个类,每个类代表一种唯一的甲骨文字符。尽管图片总量多,但类与类之间极不平衡,大量低频字符占所有不同字符类中的很大比例;同时图片噪声大,每个字符可能包含着多个变体,这对本实验来说也增加了许多难度。本文的主要贡献如下:首先:提出了一种甲骨文字符分类器,该分类器基于传统的胶囊网络,同时计算Top-k预测准确率并与之前的研究结果进行比较。其次,对数据集进行了标准化和归一化处理,并在此基础上加入验证集以得到最高的识别准确率。再次:对于识别准确率较低的类别,利用解码器对图像进行重构,进一步分析问题。最后尝试了数据增强和加权随机采样来观察分类器在少数类上的识别效果和表现。本文在Windows 10操作系统、Pytorch框架下进行实验,同时启用了 GPU加速。由于数据集中的图片大小不同,为了便于处理,将原始图片缩放为长宽均为28像素大小的图片。同时,数据集按6:2:2的比例划分为训练集、验证集和测试集。由于数据集中的标签是一串六位数字,因此本实验创建了一个数字编码表,其中0到305分别代表306个类。对于预处理之后的图片,首先它被送到胶囊网络的第一层,即卷积层(Conv1)。Conv1将图片转换为特征输出,作为第二层(PrimaryCaps)的输入。PrimaryCaps层中的胶囊通过卷积核读取低层特征图的信息,并将其各自的8维活动向量作为第三层(OracleCaps)的输入。OracleCaps有306个胶囊(对应306个类别),每个胶囊接受所有低层胶囊的输出,然后计算并输出16维活动向量。最后,通过计算向量的长度来决定输出哪一个类别。除此之外,在训练期间,OracleCaps层后面会附加一个全连接层,用来计算重构损失:作为损失函数的一部分。动态路由算法是胶囊网络的核心。因此,本实验首先测试了动态路由算法的迭代次数对分类准确率的影响。结果显示,当迭代次数为1时,在测试集上的识别准确率约为77%;当迭代次数为3时,在测试集上的识别准确率约为72%。实验还对测试集中每个类别各自的分类准确率进行了统计,结果显示当迭代次数为1时,在测试集上大多数类的分类效果的确优于迭代次数为3时的分类效果。本实验还计算了top1、top3、top5 和 top10 的准确率指标,分别为 77.90%、87.28%、90.13%、92.59%。结果显示,在各个指标上都优于之前基于卷积神经网络的方法。其次,为了确定最佳训练轮数和在测试集上的最高准确率,在动态路由算法迭代次数为1的基础上对整个数据集进行归一化,并设置验证集。结果显示在验证集上的识别准确率达到了79.53%,在测试集上的识别准确率略有提高,达到了 79.12%。为了解决少数类识别准确率低的问题,利用重构网络将OracleCaps层输出的向量输入到全连接层并观察输出的图像。本实验随机抽取了两个类别:一类是识别准确率高的类别,另一类是识别准确率低的类别。前者为27,对应于数据集中的002000类,在测试集上的识别准确率为89%,共有549个测试样本。后者为75,对应于数据集中的018031类,在测试集上的识别准确率为6%,测试样本为16个。从重构图像可以看出,对于样本数量多的类别,分类器的确提取出有用的特征;而对于样本数量稀缺的类别,分类器没有提取出有用的特征。通过观察原始数据集可以推测,这类图像噪声大,对应的字符变体多,这是造成识别准确率低的主要原因。另一方面,数据的缺乏也是造成识别准确率低的原因之一。基于以上分析,本实验进行了一系列的尝试。首先,利用数据增强技术对数据集进行了扩充。由于数据集本身包含翻转和未翻转的图像,所以实验中只进行了旋转(在-15到15度之间)和随机区域裁剪,其中旋转和随机区域裁剪是按一定概率进行的。从结果来看,采用旋转和随机区域裁剪后,在测试集上的识别准确率分别为78.03%和77.52%,即准确率没有提高,反而略有下降。虽然整体识别准确率没有提高,但通过将测试集中每个类的识别效果与之前的识别效果进行比较,可以发现采用数据增强后部分类的识别准确率有所提高。采样也是处理不平衡数据集的一种方法,在大多数情况下,它也显示出相对于基准方法显著提高的性能。通过对少数类进行过采样和对多数类进行欠采样,可以达到很好的效果。加权随机采样是具有概率加权的随机采样版本,对于样本集中的每个样本,每个样本被选择的概率由权重确定。在本实验中,权重只显示了样本中被选择概率的相对关系,这是由每个类中样本的数量决定的。在进行加权随机采样后,在测试集上的识别准确率为73.42%,这可能是由于权重参数设置问题,导致多数类的特征没有得到很好的识别。但是应当注意的是,少数类的识别准确率有所提高。结果表明,采样确实在一定程度上提高了少数类的识别效果,但需要与其他技术相结合来提高整体识别准确率。尽管总体识别准确率相比之前提高了 9%左右,本文中的实验仍存在一些不足之处。首先,由于时间限制,对于不平衡数据集的处理并没有更多的尝试。其次,动态路由算法迭代次数减少时反而效果更好,因此该算法还需要进一步的探究。在未来的研究中,为了获得更好的识别效果,首先需要对数据集本身进行适当的降噪处理。其次,应该从算法和数据两方面针对数据集不平衡的特点做更多的探究。最后,采用胶囊网络的不同版本对甲骨文识别作进一步的探索。