1.本发明涉及机器学习的技术领域,特别涉及一种图像标注方法及装置。
背景技术:
2.使用深度模型解决实际问题的第一步是获得相应应用场景的标注数据。一般来说,训练出一个表现较好的模型需要成千上万的标注数据,标注量巨大,且当标注任务涉及到垂直领域的专业知识时,还需要对相关人员进行上岗培训,导致人力成本和时间成本急剧上升。
3.标注的精度也是至关重要的一环,人工打标存在较强的不确定性和偶然性,需要根据不同的场景设计不同的质检方式,培训更为专业的质检人员,综合成本很高。因此,亟需自动化图像标注方法在减少标注成本的同时,获得高精度的标注数据。
技术实现要素:
4.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种图像标注方法,能够在减少标注成本的同时,提高标注数据的精度。
5.本发明还提出一种具有上述图像标注方法的图像标注装置。
6.本发明还提出一种具有上述图像标注方法的计算机可读存储介质。
7.根据本发明的第一方面实施例的图像标注方法,包括以下步骤:接收目标深度学习模型对未标注的样本图像的预测结果,基于所述预测结果筛选出若干样本图片的预测标签,作为训练标注图像;获取所述训练标注图像的多尺度图像金字塔,复制为两份;对其中一份的所述多尺度图像金字塔执行第一数据处理,得到第一图像,并对另一份的所述多尺度图像金字塔执行与所述第一数据处理不同的第二数据处理或不执行处理,得到第二图像;将所述第一图像和第二图像输入至所述目标深度学习模型,得到相应的第一预测标签和第二预测标签,根据所述第一预测标签及所述第二预测标签,计算相应的损失函数,对所述目标深度学习模型进行迭代更新。
8.根据本发明实施例的图像标注方法,至少具有如下有益效果:能够充分利用原目标深度学习模型输出的标注数据,筛选出若干训练标注图像,对于每一训练标注图像,分别做两种不同的处理,作为一组样本,输入目标深度学习模型,根据得出的两份预测标签计算损失函数,对该目标深度学习模型进行迭代,在减少标注成本的同时,有效地提高标注数据的精度。
9.根据本发明的一些实施例,基于所述预测结果筛选出若干样本图片的预测标签,作为训练标注图像的方法包括:接收未标注的样本图像的所述预测结果;从所述预测结果中,选取置信度在预设阈值以上的预测框作为所述样本图像的标注;将具有标注的所述样本图像作为所述训练标注图像。
10.根据本发明的一些实施例,所述第一数据处理为数据强增加,所述第二数据处理为数据弱增强。
11.根据本发明的一些实施例,所述根据所述第一预测标签及所述第二预测标签,计算相应的损失函数,包括:将所述第二预测标签作为执行所述第一数据处理后的所述第一多尺度图像金字塔的真实标签,并与所述第一预测标签进行比对,计算相应的损失函数。
12.根据本发明的一些实施例,对所述目标深度学习模型的迭代更新方法包括:将所述第一图像和第二图像输入至所述目标深度学习模型的第二多尺度细化分支,并计算出所述第二多尺度细化分支的损失函数,合并至所述目标深度学习模型的主分支相应的损失函数中,对所述目标深度学习模型进行迭代更新。
13.根据本发明的一些实施例,所述目标深度学习模型的所述第二多尺度细化分支与所述目标深度学习模型的主分支的特征提取网络的权值共享。
14.根据本发明的一些实施例,对所述目标深度学习模型的迭代更新方法包括:将所述第一图像和第二图像输入至所述目标深度学习模型,并计算出相应的损失函数,对所述目标深度学习模型进行迭代更新。
15.根据本发明的第二方面实施例的图像标注装置,包括:选取模块,用于接收目标深度学习模型对未标注的样本图像的预测结果,基于所述预测结果筛选出若干样本图片的预测标签,作为训练标注图像;图像处理模块,用于获取所述训练标注图像的多尺度图像金字塔,复制为两份;对其中一份的所述多尺度图像金字塔执行第一数据处理,得到第一图像,并对另一份的所述多尺度图像金字塔执行与所述第一数据处理不同的第二数据处理或不执行处理,得到第二图像;训练模块,用于将所述第一图像和第二图像输入至所述目标深度学习模型,得到相应的第一预测标签和第二预测标签,根据所述第一预测标签及所述第二预测标签,计算相应的损失函数,对所述目标深度学习模型进行迭代更新。
16.根据本发明实施例的图像标注装置,至少具有如下有益效果:能够充分利用原目标深度学习模型输出的标注数据,筛选出若干训练标注图像,对于每一训练标注图像,分别做两种不同的处理,作为一组样本,输入目标深度学习模型,根据得出的两份预测标签计算损失函数,对该目标深度学习模型进行迭代,在减少标注成本的同时,有效地提高标注数据的精度。
17.根据本发明的第三方面实施例的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据本发明的第一方面实施例的方法。
18.根据本发明实施例的计算机可读存储介质,至少具有与本发明的第一方面实施例的方法同样的有益效果。
19.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
20.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
21.图1为本发明实施例的方法的主要流程示意图;
22.图2为本发明实施例的方法中的数据交互示意图;
23.图3为目标深度学习模型的两个示例;
24.图4为使用本发明实施例的方法对一个目标深度学习模型示例的训练过程的示意
框图;
25.图5为本发明实施例的系统的模块示意框图。
26.附图标记:
27.选取模块100、图像处理模块200、训练模块300。
具体实施方式
28.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
29.在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。在本发明的描述中,步骤标号仅是为了描述的方便或者引述的方便所作出的标识,各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
30.参照图1,本发明的实施例的方法包括:
31.(1)接收目标深度学习模型对未标注的样本图像的预测结果,基于预测结果筛选出若干样本图片的预测标签,作为训练标注图像;
32.(2)获取训练标注图像的多尺度图像金字塔,复制为两份;对其中一份的多尺度图像金字塔执行第一数据处理,得到第一图像,并对另一份的多尺度图像金字塔执行与第一数据处理不同的第二数据处理或不执行处理,得到第二图像;
33.(3)将第一图像和第二图像输入至目标深度学习模型,得到相应的第一预测标签和第二预测标签;根据第一预测标签及第二预测标签,计算相应的损失函数,对目标深度学习模型进行迭代更新。
34.下面将以图2为例,描述将本方法应用至进行小样本训练的深度学习模型后的实施例,整个系统处理数据的流程。本发明实施例的方法在图2中对应半监督循环训练。应理解的是,图2仅为示例,本发明实施例的方法并不限于此,也可以应用于对其它的目标深度学习模型,以在减少标注成本的同时,提升图像标注的精度。
35.首先,用户通过数据集上传接口上传图像数据,并进行数据清洗,数据清洗过程包括:去除损坏图像、去除重复图像、去除不支持格式图像、数据质量评估(数量、分辨率)等。然后,从清洗后的图像数据通过聚类方法选取一部分的图像作为待标注的启动图像数据,这些数据通过界面交互供用户进行标注;用户可以配合使用标注工具对启动图像数据进行标注。输入标注好的启动图像数据(相当于样本标注数据),通过小样本深度学习模型(图2中的few-shot模型)进行训练,得到粗标模型。通过该粗标模型可抽样返回部分数据通过交互界面供用户确认标注效果,若达到精度则停止训练,输出标注结果。若小样本深度学习模型训练得到的模型精度不满足预设要求时,则追加半监督循环训练,以提升模型精度。
36.在本实施例中,小样本深度学习的训练方法可以通过应用多尺度细化分支来实现,该多尺度细化分支的训练方法可以适用于如图3所示的单阶段检测模型和双阶段检测
模型。如图3所示,单阶段检测模型中,将训练数据输入至特征提取器得到特征图,根据特征图直接查找出目标的位置和类别。双阶段检测模型中,第一阶段,将训练数据输入至特征提取器得到特征图;第二阶段,根据特征图确定候选区域,从候选区域中确定出存在目标的目标区域,然后根据目标区域进行分类和目标定位。一般地,双阶段检测模型相比于单阶段检测模型,其目标定位更为精确。
37.下面将在应用多尺度细化分支的情况下,以双阶段检测模型为例,说明在如图2所示的实施例中,小样本深度学习的具体训练过程。该训练过程包括以下步骤s110至s140。
38.步骤s110、输入样本标注图像,从样本标注图像中剪裁出正样本目标,对剪裁的正样本目标进行多尺度缩放,生成多尺度图像金字塔,作为第一多尺度细化分支的输入。
39.步骤s120、将原样本标注图像输入主干(也称为主分支)中,其相应的多尺度图像金字塔输入第一多尺度细化分支中,通过第二特征提取网络后获得相应的图像特征。其中,第二特征提取网络与第一特征提取网络的权值共享。
40.步骤s130、主分支中的原始图像特征为正常训练流程,将样本标注图像输入主干网络,通过第一特征提取网络后,计算出相应的损失函数。
41.步骤s140、将多尺度图像金字塔输入第一多尺度细化分支,计算出该分支相应的损失函数,并合并到主分支的损失函数中,对检测网络进行迭代更新。
42.图4中示一个示例的双阶段检测模型的小样本训练过程。在上述步骤s130中,将样本标注图像输入主干网络,通过第一特征提取网络后,进入roi(region of interest,感兴趣区域)分类回归网络得到最终的预测结果。计算主干网络的相应的函数函数,例如图4中所示的背景分类损失,rpn边框回归损失、类别分类损失和roi边框回归损失,对主干网络进行迭代更新。本实施例中,第一特征提取网络可以是fpn网络也可以是其它网络。
43.在上述步骤s140中,由于第一多尺度细化分支的得到图像特征为正样本图像特征,因此,仅需计算该分支相应的类别分类损失和背景分类损失。参照图4,将第一多尺度细化分支的类别分类损失合并至主干的类别分类损失;将第一多尺度细化分支的背景分类损失合并至主干的背景类别分类损失。通过更新后的主干网络的背景分类损失和类别分类损失后,以及,主干网络的rpn边框回归损失和roi边框回归损失,对主干网络进行迭代更新。在迭代更新过程中,第一特征提取网络的权值通过权值共享同步给第二特征提取网络。
44.若检测模型为单阶段检测模型,则在执行上述步骤步骤s110至s140时,与单阶段检查模型不同的是,计算的损失函数不同。对于单阶段检测模型,第一多尺度细化分支仅需要计算,例如,分类损失,并合并至主干网络即可。
45.检测模型也可以是其他任何类型的神经网络结构,包括各种公知的结构。该检测模型中的损失函数也可以是其它类型的损失函数。此时,只需要在上述步骤s130和s140中计算相应的损失函数即可。
46.显然,小样本深度学习的训练方法也可以不通过应用多尺度细化分支来实现。即将原样本标注图像及对应的多尺度图像金字塔均输入至主干网络,计算相应的损失函数对检测网络进行迭代。此时,检测网络仅存在主干网络(参照图4中的中间方框),不存在多尺度细化分支。
47.通过第一多尺度细化分支的强化作用,有效增强了模型对样本特征的识别能力,提升了模型的检测精度。该模型一般能以几十张数据量达到全部数据80%的检测精度。
48.当小样本学习模型的标注效果无法达到预设精度时,在在如图2所示的实施例实施例中还将开启半监督循环训练,使用本发明实施例的方法,以进一步提升模型精度。参照图4中的第二多尺度细化分支,训练过程包括以下步骤:
49.步骤1、使用上一轮训练的检测网络模型(相当于目标深度学习模型)对所有未标注的数据进行预测,选取出置信度在一定阈值以上的预测框作为该图像的标注,作为本轮训练输入的样本标注图像。
50.也就是说,本轮训练输入的样本标注图像,其标注的预测框仅包括置信度在一定阈值以上的预测框。
51.步骤2、将多尺度图像金字塔复制为两份,对其中一份进行第一数据处理,得到第一图像,对另一份不作处理或者进行第二数据处理,得到第二图像;将得到的两份图像数据,即第一图像和第二图像,作为作为一组输入样本,输入至第二多尺度细化分支,通过第三特征提取网络进行预测;其中,第三特征提取网络与第一特征提取网络和第二特征提取网络共享权值。
52.本实施例中,第一数据处理为数据强增强,第二数据处理为数据弱增强。图4示出了对复制得到的两份多尺度图像金字塔分别进行数据强增加及数据弱增加,得到相应的强增强图像和弱增强图像。
53.在本实施例中,若对另一份不作处理,即表示直接输入多尺度图像金字塔。
54.其中,数据强增强为各种数据增强方式的结合,可以是同时包含改变和不改变图像数据结构、特性的方法的结合,也可以是仅包含改变图像数据结构、特性的各种方法的结合,即数据强增强为通过至少一种改变图像数据结构、特性的方法对输入图像进行处理,例如高斯模糊或增加噪点等。而数据弱增强为翻转平移等不改变图像数据结构、特性的数据增强方法。也就是说,强增强可以视为弱增强以及改变数据构、特性的方法或其结合。
55.步骤3、对于一组输入样本,将第二图像(相当于图4中的弱增加图像)输出的第一预测结果标签作为伪标签,即令其为第一图像(相当于图4中的强增强图像)的真实标签,计算出第二多尺度细化分支相应的相应的损失函数,然后该损失函数合并至主干网络的损失函数中,对主干网络进行迭代更新,优化网络。
56.以图4中的双阶段检测模型为例,例如,在第二多尺度细化分支中计算出类别分类损失及背景分类损失,合并至主干网络中的类别分类损失及背景分类损失,对主干网络进行迭代更新,优化网络。
57.若目标深度学习模型为单阶段检测模型,则例如在第二多尺度细化分支中计算出分类损失,合并至主干网络中的分类损失,对主干网络进行迭代更新,优化网络。
58.本实施例中的目标深度学习模型并不限定于上述的单阶段检测模型或双阶段检测模型,也可以是其他任何类型的神经网络结构,包括各种公知的结构。该检测模型中的损失函数也可以是其它类型的损失函数。此时,只需要在上述步骤s130和s140中计算相应的损失函数即可。本实施例中的目标深度学习模型中的损失函数也可以是其它类型的损失函数。
59.步骤4、重复步骤1-3进行循环训练,直到模型满足精度要求或设定的最大循环次数。
60.通过这种训练方式,可削弱噪声标签对网络精度的影响,且通过不同的数据增强,
网络学到了更多的目标模式,对复杂环境的鲁棒性更高,能更好的学习到目标的代表性特征,提升模型精度。
61.在本发明的另一些实施例中,可以将处理后的第一图像及第二图像直接输入至目标深度学习模型,并计算出相应的损失函数对目标深度学习模型进行迭代更新。即,此时不再构建目标深度学习模型的多尺度细化分支,而是直接输入至该目标深度学习模型的主分支中,计算相应的损失,对目标深度学习模型进行迭代更新。以如图4所示的双阶段检测模型为例,需要计算的损失函数包括,例如,类别分类损失、背景分类损失、rpn边框回归损失和roi边框回归损失。以单阶段检测模型为例,需要计算的损失函数包括,例如,分类损失。应理解的是,本文中的双阶段检测模型及单阶段检测模型仅为目标深度学习模型的示例,并不是对目标深度学习模型的限定。上述损失函数也仅为说明性的示例,本发明实施例的损失函数并不限于此。
62.参照图5,为本发明实施例的装置的内部模块,包括:选取模块100、图像处理模块200和训练模块300。
63.选取模块100,用于接收目标深度学习模型对未标注的样本图像的预测结果,其中,对于每张样本图像,预测结果中包括多个预测标签;然后,从预测结果筛选出若干样本图片及该样本图片对应的预测标签,作为训练标注图像。具体地,可以根据预测标签的置信度对预测标签进行挑选。也就是说,仅将图片中置信度在一定阈值以上的预测框作为标注预测框;若某图片中不存在置信度在一定阈值以上的预测框,则不将其列为训练标注图像。
64.图像处理模块200,用于接收选取模块100选取的训练标注图像,获取训练标注图像的多尺度图像金字塔,复制为两份;对这两份多尺度图像金字塔进行不同的处理,得到第一图像和第二图像。具体地,对其中一份的多尺度图像金字塔执行第一数据处理,得到第一图像,并对另一份的多尺度图像金字塔执行与第一数据处理不同的第二数据处理,得到第二图像。或者具体地,对其中一份的多尺度图像金字塔执行第一数据处理,得到第一图像,对另一份的多尺度图像金字塔不做任何处理,直接作为第二图像。
65.上述第一数据处理,具体地为:数据强增强。第二数据处理,具体地为:数据弱增加。
66.训练模块300,用于接收图像处理模块200输入的第一图像和第二图像,将第一图像和第二图像输入至目标深度学习模型,得到相应的第一预测标签和第二预测标签,根据第一预测标签及第二预测标签,计算相应的损失函数,对目标深度学习模型进行迭代更新。
67.目标深度学习模型在迭代过程中,可以根据上一轮的预测结果,通过选取模块100重新挑选新的训练标注图像,对目标深度学习模型进行训练。
68.本发明实施例的装置可削弱噪声标签对网络精度的影响,且通过不同的数据增强,网络学到了更多的目标模式,对复杂环境的鲁棒性更高,能更好的学习到目标的代表性特征,提升模型精度。
69.尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
70.上文参考根据示例性实施方案所述的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
71.因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。
72.本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
73.软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。
74.软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。
75.上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
转载请注明原文地址:https://tc.8miu.com/read-172.html