论文部分内容阅读
过去50年来,电子技术的进步和应用产业快速发展,人们经历了从手写纸张传递文字信息到键盘鼠标输入文字信息的转变。但是最近几年,随着计算机和智能手机走入每一个普通家庭,手写输入信息越来越受欢迎。在这样的背景下,手写识别技术能发挥的作用也越来越大,在各行各业都能帮助增加工作效率、降低人力成本。但是手写识别技术应用在手写化学式的识别上还面临着很多难题,特别是多环手写化学式。原因之一在于多环化学式结构非常复杂,结构式的表达千变万化,再加上每个人的手写习惯都不一样,这更是大大增加了识别的难度,这导致多环化学机构式识别的研究一直难以做出成果。另一个原因就是现在的目标检测技术对于小目标的检测精度还不够高,无法精确地检测到每一个object。但是随着近年来神经网络开始受到广泛的关注,深度学习利用多层计算模型来学习抽象的数据表示,能够发现大数据中的复杂结构。目前,这项技术已成功地应用在包括目标领域在内的多种模式分类问题上。本文整理了自从RCNN发表以来的主流目标检测论文,包括RCNN、Faster-RCNN、YOLO、SSD、YOLOv2等文章,其中综合分析了各个检测框架的优劣点。SSD借鉴了 Faster-RCNN的锚点等思想对YOLO检测小目标精度不足的缺点提出了改进,在实验阶段,SSD达到了与Faster-RCNN相似的检测精度,但是速度更快。YOLO的作者也对YOLO不擅长检测多维目标等缺点做出了改进,从而提出了YOLOv2,使其检测的精确度达到了能够与Faster-RCNN、SSD一战的程度。在本项目开始之前已有研究者利用SSD对手写化学机构式进行检测,其中检测精度已经达到了 89%以上,但是研究者本人也指出SSD对于化学结构式子中碱基团(文字链)的部分检测结果并不满意,实验中出现了不少令人费解的重复检测以及遗漏检测的现象。本项为了解决这个问题,在翻阅文献之后发现对象之间的relation可以帮助进行对象识别,这种想法被Relation Network模块在深度网络中得到了很好的实践。目前大部分的目标检测算法都是独立地检测图像中的object,显然如果模型能学到object之间的关系显然对于检测效果提升会有帮助,因此本项目希望利用检测对象之间的关系信息来加强检测的成功率,包括在检测过程中可以通过利用图像中object之间的相互关系或者叫图像内容来优化检测效果,这种关系既包括相对位置关系也包括图像特征关系。在之前使用CNN进行目标检测的方法中,都是每个对象被单独识别,而Relation Network模块将一组对象同时做了 Relation Module处理,即一个对象上融合了其他对象的关系特征,好处在于丰富了特征,而且Relation Module处理前后,维度不会发生变化,这意味着该模型可以扩展到经典的任意基于CNN的目标检测框架中。再将Relation Network模块插入NMS模块后,图像特征通过预测框得分的高低顺序和预测框特征的融合得到,然后将该融合特征与预测框坐标作为relation模块的输入得到attention结果,最后将NMS当作是一个二分类过程,并基于relation模块输出特征计算分类概率。这样就完成了对于Faser-RCNN的改进,能够利用Relation Network模块来对原本的数据集中的各个对象之间关系特征的提取,并且应用到最后的分类和回归中,这样的做法将会有效的提高对于手写化学结构式各个部分的检测准确率。并且能够改进小目标的检测情况以及碱基团(文字链)的检测准确率。本文还提出了一种多环结构解释算法,在得到更准确的目标检测信息以后,该算法利用检测到各个object box的位置信息来计算解释手写化学结构,使用化学知识可以直接恢复检测到的苯环的化学结构并输出LateX代码。算法根据输入检测到的object box的坐标,计算出每一个object box的中心点,中心点的坐标代表了每一个object的位置。接下来以每个‘ben’的中心点为原点建立直角坐标系,判断每个标签与‘ben’的位置关系,从而推断出手写化学结构式的位置关系。由于苯环的结构是正6边形,而手绘正六边形一般有水平和竖直两种方式,所以苯环连接其他部分的碳原子最多处于12个角度。文章首先根据各个标签与苯环的角度位置判断苯环的绘制方式是水平还是竖直,然后连接各个苯环的中心点根据各个苯环在对方坐标系的角度和长度判断各个苯环之间的连接关系,然后将已经连接苯环的碳原子删除,表示无法再连接新的部分。根据这样的方法,连接其他所有object中心点和苯环的中心点,根据连接线的长度依次判断其他所有object和中心苯环的位置关系,直到判断完所有标签为止。由于是对多环化学结构式进行判断,有可能出现一个object连接在多个苯环都合理的情况。针对这样的情况,算法设置了一个阈值,如果超过了这个阈值,就记录下所有可能的结构。这样算法就得到了多环手写化学结构式的结构,并且根据之前得到的位置信息解释结构并输出LateX代码。通过Faser-RCNN的改进,本文对多环手写化学结构式的各个结构进行检测,实验检测了预设的包括苯、苯环、双键、碱基团(文字链)的4个预设标签,并且综合准确率达到了 91.3%,其中苯环的成功检测率达到了 95%以上。在相对比较难以检测的碱基团(文字链)对象上,也得到了 88.1%的检测成功率,基本上已经达到了期待中的效果,尤其是苯环的检测,这是大目标检测中最基础部分,而本项目重点解决的小目标部分也取得了很好的效果。相比较于仅仅使用无嵌入Relation Network模块的Faser-RCNN框架的检测结果而言Faser-RCNN检测准确率高出了接近10%,这个数据表现直接证明了 Relation Network模块嵌入有效地提升了 Faser-RCNN框架的检测成功率,也证明了本项目进行的改进是成功的。另外相比较于使用SSD进行检测的方法而言,准确率也高出了接近3%,并且大大减少了在对象碱基团(文字链)中的出现重复检测和错误删除应该保留的检测框的情况。这个数据表明在手写化学结构式检测的方面,本项目成功的做出一些了贡献。最后针对Relation Network模块而言,本文的实验表明,关系模块已经学习了对象之间的信息,而这些信息将会提升苯环对于文字链以及其他标签的联系程度,从而能够检测出不同的标签,提升检测的准确率。在结构解释算法的实验上,本项目使用100张多环手写化学结构式对算法进行实验,实验结果显示共有78张结构式被正确解释,这个准确率并没有非常高,但是也已经达到了本项目的预期,而且就算是没有输出正确的结果,错误的结果依然具有参考意义,能够降低人力劳动的成本。然而,本项目在实验过程中也暴露几个明显的问题,其中之一是在对只有单个对象的数据进行检测时候发现的,关系模块已经学习了对象之间的信息在对单个对象执行学习时会丢失,经过分析后发现出现这样的结果是由于在提取两个对象之间的关系特征时候其中一部分信息的丢失,所以两个对象的关系特征信息变为了单个对象的特征信息。然而这并不影响实验的有效性,因为失去了对象之间的联系也就是说明数据集中的图片只有一个苯环,预测的结果依然是正确的。由此可以得知,本项目的局限性在于,如果一个项目所期望的检测结果更多的依赖于关系检测模块所检测到的关系数据,那么这个算法可能并不适用于此项目。本项目的第二个局限性在于,关系模块在进行预测的两个不同对象之简单关系时,不清楚在关系模块在数据集中学到了什么,尤其是当多个模块堆叠在一起时,直接导致了检测综合准确率的下降。不过幸运的是苯环的手写结构并不容易写出堆叠的情况,这是化学式的书写方式规定的,而本项目的应用目标也是书写比起普通人相对更加规范的中学生群体,所以这个瑕疵可能并不影响项目的实际应用,然而如果需要移植本项目代码到其他的项目中可能就需要着手解决这个问题,即,在检测对象重叠的较为普遍的项目中如何降低或者加强两个对象的关系数据从而让类似于NMS的算法不至于重复检测相同的对象或者错误删除本应该保留的检测框。该算法的实现直接实现了对学生所写化学答案的智能检测和解释,并为化学教育的智能化提供了解决方案,使计算机能够检测和标记试卷标记系统。