本发明涉及一种基于深度学习的智能阅卷定位方法,属于计算机视觉图像处理技术领域。
背景技术:
随着信息技术的不断发展,教育信息技术化也取得了令人骄傲的进展。对于教师而言,批改大量试卷是极其繁琐以及耗时的工作,而且未必能保证批改地完全正确,随着人工智能在各行各业的广泛应用,人工智能可以帮助教师批改试卷,从而减轻教师的工作负担,而且也能保证阅卷的准确率。目前计算机视觉领域对图片的识别通常使用ocr文字识别系统,但是ocr不能准确地对图片进行分区域识别,当面对有着众多题目的试卷时,ocr虽然能准确的识别文字,但是当图片中出现大量文字时,容易发生文字混乱的现象,这是因为ocr无法实现对图片进行分区域识别,它只能整张图片一起识别,从而导致无法判别题目的对错,所以在使用ocr文字识别前,需先对试卷上的题目进行定位。
技术实现要素:
本发明的目的在于提供一种基于深度学习的智能阅卷定位方法,解决了ocr文字识别系统无法自动分区域识别的问题。
基于深度学习的智能阅卷定位方法,包括以下步骤:
1)创建数据集,具体过程如下:
11)通过拍摄的方式获取若干张试题的jpg格式图片,其中,每张试题图片中包含若干个试题,将试题图片分为训练集和测试集;
12)采用labelimg标注工具对训练集中每张试题图片使用boundingbox进行标注,标记出每张试题图片中每个试题的具体位置;
13)完成标注后,将jpg格式的图片生成xml格式的文件;
14)将xml格式的文件转化为txt格式的标签文件,每个标签文件里面储存该图片中每个试题边界框的五个数值;所述五个数值中第一个值表示该试题图片的类别编号,第二个值表示归一化后的边界框的中心点x坐标,第三个值表示归一化后的边界框的中心点y坐标,第四个值表示归一化后的边界框宽度,第五个值表示归一化后的边界框的高度,所述边界框是指包含该试题的boundingbox标注的方框;
2)采用基于深度学习的yolov3算法对每个试题进行定位,具体过程如下:
21)对每个试题的边界框进行预测;
22)对所预测的边界框采用多标签分类法进行分类,分为0和1两类,表示0的边界框在图片中去掉,保留代表1的边界框;
23)采用yolov3算法预测三种不同尺度的box;
24)构建darknet-53网络,进行特征提取;
3)将训练集放入darknet-53网络中进行训练,输出每个试题的定位,训练完成以后自动生成权重文件;
4)对测试集中的图片进行测试,输出测试图片上每个试题精准定位的boundingbox。
前述的步骤11)中,训练集和测试集按照设定比例进行划分。
前述的步骤14)中,采用yolov3算法中voc_label.py文件进行格式转化。
前述的格式转化后,将每张试题图片的标签文件和原jpg格式的图片放在同一个文件夹里。
前述的步骤21),边界框预测值如下:
bx=σ(tx)+cx(1)
by=σ(ty)+cy(2)
其中,(bx,by)为预测得到的边界框的中心点坐标,bw为预测得到的边界框的宽度,bh为预测得到的边界框的宽度,σ(tx)、σ(ty)是坐标的平方误差损失,(tx,ty)表示归一化后的边界框的中心点坐标值,tw,th表示归一化后的边界框的宽度和高度,(cx,cy)为左上角的偏移,pw,ph为预测前的边界框的宽度和高度。
前述的边界框预测过程中,对每个边界框通过逻辑回归预测一个object的得分,所述得分用重叠率来表示,如果重叠率没有达到设定的阈值,则该预测的边界框就会被忽略;所述重叠率是指预测得到的边界框和真实的边界框之间的比重。
前述的阈值取为0.5。
前述的步骤3)在训练过程中,当迭代次数不足1000次时,每100次保存一次,当迭代次数超过1000次时,则每10000次保存一次。
本发明所达到的有益效果为:
本发明创造性地建立深度学习的模型,并将其应用在人工智能阅卷定位领域,经过yolov3算法训练从而提取口算题的特征,实现对口算题的精准定位。
本发明只需要拍摄口算题图片即可对图中若干口算题实现精准定位的功能,克服了ocr文字识别系统不能分区域识别的问题,测试结果具有较高的准确性和鲁棒性,为实现智能阅卷奠定了良好的基础。
附图说明
图1是本发明方法的流程图;
图2是本发明中yolov3网络结构图;
图3是测试集中的口算题图片;
图4是图3经过测试实现口算题定位的效果图。
具体实施方式
下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明在python平台上实现,参见图1,主要包括以下几个步骤:
步骤一:创建数据集
本发明提出了一种基于深度学习的智能阅卷定位方法,本方法采用有监督的学习方法。深度学习在各行各业的发展离不开数据集的发展,所以建立良好的数据集为深度学习提供了良好的前提条件。为了更好的训练深度学习网络,本发明以口算题的定位为例,创建了一个小型口算题数据集。具体创建过程如下:
11)对若干小学生口算题本进行拍摄,将其分为训练集和测试集。
例如,通过手机拍摄120张小学生口算题的高清图片,并将其中90张作为训练集,剩余30张作为测试。
12)采用labelimg标注工具对训练集中每张图片使用boundingbox进行标注,标记出每个口算题的具体位置,使得每个口算题都包含在一个boundingbox内,从而便于yolov3网络的训练。对口算题在图片中具体位置进行标注时,由于每个口算题的距离较近,一定要精准的框出其位置,为yolov3的训练提供了良好的前提条件,并且经过测试具有很好的准确性和鲁棒性。
13)对图片中每个口算题进行精准标注后,一张图片生成一个xml文件。将jpg格式的图片生成xml格式的文件,例如原图片为“88.jpg”格式生成为“88.xml”格式的文件。
本发明采用基于深度学习的yolov3算法(youonlylookonce算法)实现定位,运行yolov3算法中voc_label.py文件将生成的xml格式文件转化为适用于yolov3网络训练的txt格式的标签文件。每张图片的标签文件(txt格式)和原图片(jpg格式)放在同一个文件夹里。每个标签文件(txt格式)里面储存原始图片上每条口算题边界框的五个数值,例如:(1,0.314706855353,0.318333223444,0.273583234244,0.12)。
边界框指的是包含每个目标位置(每条口算题)的方框。假设边界框的左下角的坐标是(x1,y1),右上角的坐标是(x2,y2),宽和高分别为w和h。五个数值中第一个值表示该图的类别编号,该类别编号可自行定义,第二个值表示归一化后的中心点tx坐标,第三个值表示归一化后的中心点ty坐标,第四个值表示归一化后的目标框宽度tw,第五个值表示归一化后的目标框的高度th,中心点指边界框的中心。
步骤二:采用基于深度学习的yolov3算法实现对每个口算题定位
本发明对基于深度学习的yolov3算法进行修改,加入小学生口算题的类别。
21)预测边界框
yolov3算法通过聚类的方法得到anchorboxes。yolov3对每个边界框预测tx,ty,tw,th这四个坐标值,(tx,ty)表示中心点坐标值,tw,th表示边界框的宽和高。
对于预测的cell(一张图片分成s×s个网格状的cell),根据图片左上角的偏移(cx,cy)——偏移图片左上角的距离,以及预测前的边界框的宽和高pw,ph,可以对边界框依据如下公式预测:
bx=σ(tx)+cx(1)
by=σ(ty)+cy(2)
bx,by,bw,bh就是预测得到的boundingbox的中心点坐标和size。σ(tx)、σ(ty)是坐标的损失,采用的是平方误差损失。
在训练bx,by,bw,bh的时候使用sumofsquarederrorloss(平方和距离误差损失),采用这种方式,可以很快算出误差。
yolov3对每个边界框通过逻辑回归预测一个object的得分(重叠率),重叠率指预测框和真实框之间的比重。如果预测的这个边界框与真实的边界框大面积重叠,而且比其他所有边界框的预测值都好,那么这个值就是1。如果重叠率没有达到一个阈值(这里设定为0.5),那么这个预测的边界框就会被忽略,代表无损失值。
22)对边界框进行分类
对每个边界框预测分类(0和1分类),表示0的边界框在图中去掉,保留代表1的边界框,边界框使用多标签分类(multi-labelclassification)。yolov3算法使用简单的逻辑回归进行分类,采用二值交叉熵损失(binarycross-entropyloss)函数。
23)跨尺度预测
该网络可以预测三种不同尺度的box。yolov3使用一个特征金字塔网络来提取特征。在基本特征提取器中,添加了几个卷积层。其中最后一层预测三维tensor编码的boundingbox(边界框),objectness(物体)和类别预测。使用k-means聚类来确定boundingboxpriors(先验边界框),选择九个clusters(聚类)和三个scales(尺度),然后在整个scales(尺度)上均匀分割clusters(聚类)。
24)进行特征提取
yolov3的特征提取模型将多种模型进行混合,它使用了yolov2,darknet-19以及残差网络,这个模型采用了性能较好的3×3和1×1的卷积层,也添加了shortcutconnection结构。最终它具有53个卷积层,因此将其命名为darknet-53网络。参见图2,darknet-53表示有53个卷积层,实际共占74层(按运行时输出的网络结构来算)。detection层负责预测某个规模(划分grid数目,有3个规模13、26和52分别于82,94,106层预测)的boxes回归值(每个格子预测3个boxes的回归值包括坐标,对象和类别,共3*(4+1+20)=75个值)。route层若有两个参数,表示连接两个层,如86层连接85和61;一个参数表示这个route层跟那层参数一致(如83层跟79一致)。shortcut层的参数层跟这一层连接。darknet-53网络运用了残差网络的跳层连接方式,性能优于resnet-152和resnet-101网络,因为网络基本单元存在差异,而且网络层数越少,参数也少,需要的计算量少。darknet-53网络可以实现每秒最高的浮点运算,这代表着网络结构能够更有效地利用gpu。
步骤四、将训练集放入darknet-53网络中进行训练,输出每条口算题的定位,训练完成以后自动生成权重文件。当迭代次数不足1000次时,每100次保存一次,当迭代次数超过1000次时,则每10000次保存一次。
步骤五、对测试集中的图片进行测试,输出测试图片上每个口算题精准定位的boundingbox,从而完成对一张图片上多个口算题的定位。如图3为一张口算题图片,图4为经过测试实现口算题定位的效果图。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。