对用于训练检测卷积神经网络的先验项的自动选择

文档序号:1302101 发布日期:2020-08-07 浏览:8次 >En<

阅读说明:本技术 对用于训练检测卷积神经网络的先验项的自动选择 (Automatic selection of a priori terms for training a detection convolutional neural network ) 是由 康斯坦丁·罗德尤斯金 亚力山大·波维林 于 2018-02-05 设计创作,主要内容包括:用于选择先验项的示例装置包括训练集接收器,用于接收训练数据集。该装置包括先验项生成器,用于基于训练数据集生成冗余先验项的集合。该装置包括中间训练器,用于使用冗余先验项的集合来对检测CNN进行训练。该装置包括得分及位置接收器,用于将训练数据集的全部训练样本发送到经训练的检测CNN,并接收针对冗余先验项的集合中的所有冗余先验项的响应。该装置包括子集选择器,用于基于响应来选择冗余先验项的集合的子集。(An example apparatus for selecting an a priori term includes a training set receiver to receive a training data set. The apparatus includes a prior term generator for generating a set of redundant prior terms based on a training data set. The apparatus includes an intermediate trainer for training a detection CNN using a set of redundant priors. The apparatus includes a score and position receiver for sending all training samples of a training data set to a trained detection CNN and receiving responses for all redundant priors in a set of redundant priors. The apparatus includes a subset selector for selecting a subset of the set of redundant priors based on the response.)

具体实施方式

如上所述,类SSD的对象检测器可以在两个阶段中操作。例如,对象检测器可以首先使输入图像通过卷积神经网络(CNN)主干传递,并且每个先验项可以在每个特征图上运行其自己的分类器和位置回归器。如本文所使用的,先验项指的是具有分配给特定特征图的特定框大小的锚定边界框。特定框大小可以包括锚定边界框的宽度和高度。例如,每个先验框可以包括对象类别预测器、对象位置、和一个或多个大小回归器。作为前向传递通过CNN的结果,对于每个先验项,边界框位置和类别得分可以针对每个特征图单元计算边界框位置和类别得分。例如,这样的架构可以使用CNN作为主干来计算深度特征,并且使用一组对象位置预测器,该组对象位置预测器通过使用深度特征作为输入来预测类别得分和对象位置。在一些示例中,每个对象位置预测器可以与先验项相关联,该先验项可以由如下参数定义,这些参数包括对象边界框形状和相关联的特征图。然后,检测器可以使用非极大值抑制(NMS)过程来过滤出所有预测的边界框的列表,以获得最终检测结果。

用于这种检测器的先验项的配置通常可以手动地或使用边界框形状聚类来定义,其中该配置包括先验项的数目、先验项的边界框形状、以及相关联的特征图。但是,手动选择先验项可能涉及关于CNN及其特征图的表示能力的某种直觉和专业深入知识。另外,选择先验项的其他方法(例如,边界框形状聚类)可能未考虑检测质量度量。此外,这样的方法可能无法确定最佳的结果,也可能无法分配特征图或确定要与给定形状的先验项一起使用的深度特征层。此外,除了所选择的先验项的参数之外,使用深度学习训练的对象检测器的准确度和速度还可能高度取决于为训练该对象检测器而选择的先验项。

本公开总体上涉及用于针对对象类别、位置、和形状预测选择先验项的技术。具体地,本文描述的技术包括用于自动选择先验项的装置、方法和系统。示例装置包括训练集接收器,用于接收训练数据集。该装置包括先验项生成器,用于基于训练数据集生成冗余先验项的集合。该装置还包括中间训练器,用于使用该冗余先验项的集合来对检测卷积神经网络(CNN)进行训练。该装置还包括得分及位置接收器,用于将训练数据集的全部训练样本发送到经训练的检测CNN并接收针对该冗余先验项的集合中的全部冗余先验项的响应。该装置还包括子集选择器,用于基于该响应来从该冗余先验项的集合中选择先验项的子集。

因此,本文描述的技术使得能够自动选择改进的先验项的集合以用于训练对象检测器。例如,本文描述的技术使得能够自动估计和选择使用的先验项数目、先验项形状、以及针对先验项的相关联的特征图。在一些示例中,本文描述的技术可以用于基于使用训练数据计算出的检测质量度量来自动选择先验项的最优形状并针对每个先验项自动分配合适的特征图。因此,使用本文技术的自动驱动的先验项选择和配置可以在相同的CNN架构上提供更高的检测质量。具体地,本文描述的技术使得能够选择如下的先验项配置:该先验项配置给出更好的检测准确度并在不降低准确度的情况下减少使用的先验项的数目,从而显著降低了计算负荷。例如,取决于所使用的具体SSD架构,本文描述的技术可以将计算负荷减少15%至30%。

另外,本文描述的技术可以用于提高对象检测的速度。例如,该技术可以用于找到最优先验项配置,该最优先验项配置考虑了先验项分类器计算成本。使用本文的技术可以将先验项成本降低40%且具有改进的准确度。对于具有与先验项分类器相当的计算成本的现代轻量CNN主干而言,这种成本降低可能意义重大。此外,这种成本降低可用于在同一芯片中同时运行附加的检测器。此外,成本降低可以使得能够在功耗较低的较弱计算机芯片上进行实时检测。

本文描述的技术还使得能够避免针对每次先验项修剪迭代的CNN再训练和推断。因此,非极大值抑制(NMS)可以仅在来自测试先验项的子集的响应上运行,从而得到额外的检测效率。

图1是示出了用于自动选择最优先验项并使用所选择的先验项的集合训练检测器的示例过程的流程图。该示例过程通常由附图标记100表示,并且可以在下面的计算设备500中实现。例如,可以使用计算设备500的处理器502来实现该过程。

在框102处,处理器定义冗余数目个形状以覆盖所有训练对象。例如,冗余意味着处理器可以最初定义潜在先验项的集合中的许多形状,但是并非潜在先验项的全部形状都可以被选择并被用作最终模型中的先验项。因此,本文所使用的冗余形状指的是将被进一步修剪的形状初始集合。在一些示例中,先验项形状的数目可以基于接收到的训练数据集104,训练数据集104包含训练对象。例如,i=1..Ni可以指的是在有Ni个训练图像的情况下的训练图像的索引。在一些示例中,冗余数目个形状可以密集地覆盖训练数据集104的所有可能的对象边界框形状。作为一个示例,可以定义具有不同形状的100个先验项。在一些示例中,该过程可以输出预定数目的边界框形状106。

在框108处,处理器将边界框形状106中的每一者分配给一个或多个特征图。例如,处理器可以将每个先验项形状分配给合适的特征图。X(p)可以指被分配给先验项p的一组特征图单元。对于每个特征图单元x∈X(p),先验项p可以具有其自己的类别得分和位置预测。在一些示例中,如果针对特定的先验项标识了若干合适的特征图,则处理器可以针对该若干合适的特征图中的每一者复制先验项。结果,在一些示例中,用于不同的特征图的两个或更多个先验项可以具有相同的形状。在一些示例中,处理器随后可以执行优化过程以自动保持一个先验项,该先验项被分配给可以用于更准确地检测对象的更有效的特征图。在一些示例中,处理器可以输出其总数为NP的冗余先验项110。

在框112处,处理器使用冗余数目(NP)的先验项110来训练检测器CNN。例如,在训练过程中,处理器可以估计针对所有先验项结果的损失函数并计算后向传递期间的损失导数以用于进一步根据训练安排进行权重调节。例如,先验项结果可以包括针对每个先验项的分类结果和姿势(pose)回归结果。在一些示例中,处理器可以使用任何合适的算法(例如,随机梯度下降(SGD)、ADAM算法等)来执行权重调节。在一些示例中,对检测器CNN的训练可以得到经训练的检测器CNN 114。

在框116处,处理器使用训练数据集104在经训练的检测器CNN 114上执行前向传递以获得针对所有(NP个)先验项110的响应。例如,处理器可以针对所有(NP个)先验项110生成对象置信度和边界框位置预测。R(P)={ci,p,x,cxi,p,x,cyi,p,x,wi,p,x,hi,p,x},i=1..Ni,x∈X(p),p∈P可以指由检测器CNN 114在前向传递之后针对先验项的集合P产生的响应的集合。所有可用响应的集合可以被表示为R({1..Np}),其中,针对给定图像i、给定先验项p和给定位置x,ci,p,x指的是类别得分估计,cxi,p,x,cyi,p,x指的是对象中心估计,并且wi,p,x,hi,p,x指的是对象大小估计。在一些示例中,对象置信度可以是以类别得分的形式。在一些示例中,可以存储训练数据集104中的全部训练样本以及相关联的对象置信度和位置及大小预测,以供稍后用作输入数据以在框120处用于优化,如下面在图2中更详细地示出和描述的。

在框120处,处理器选择冗余先验项的子集以保持具有最佳形状和最佳特征图分配的最佳数目的先验项,并生成最佳先验项的集合122。例如,最佳先验项的集合122可以包括对先验项数目、先验项形状和相关联特征图的特定配置,该配置产生较高的检测质量度量。在一些示例中,处理器可以从(NP个)冗余先验项110中修剪或移除一个或多个先验项,以生成最佳先验项的集合122。在一些示例中,处理器可以基于一个或多个检测质量度量来修剪先验项。例如,一个或多个检测质量度量可以包括平均精度(average precision,AP)、平均精度均值(mean average precision,mAP)、对数平均未命中率、以及任何其他合适的检测质量度量。在一些示例中,处理器还可以通过基于一个或多个检测质量度量将一个或多个先验项添加到最佳先验项的集合122来增长(grow)最佳先验项的集合。处理器还可以配置得到的最佳先验项的集合,这不仅可以基于对象形状分布来进行,还可以考虑针对不同对象形状的不同CNN特征图的分类能力。例如,处理器可以基于一个或多个检测质量度量来选择先验项的形状和针对先验项的相关联特征图。例如,处理器可以执行第一修剪函数:

function Pt-1←prune1(Pt)

Pt-1←Pt\{p*}

其中p是来自冗余先验项的集合Pt的先验项,R(Pt\{p})是针对不包括先验项p的冗余先验项的子集的相关联响应的集合,p*是使用任何合适的检测质量度量DQM标识的最无用的先验项并且Pt-1是得到的修剪后的先验项的子集。如本文中所使用的,P表示当前先验项配置,其是先验项索引的集合。例如,P={1..Np}是包括所有Np个先验项的配置。如本文所使用的,DQM(RNMS(P))是指检测质量度量,其可以是基于最终检测结果计算出的任何种类的度量。例如,它可以是广泛使用的平均精度或平均精度均值或适合解决检测任务的任何其他度量。在一些示例中,处理器可以通过以下操作来生成最优配置:从完整的先验项的集合开始并通过运行第一修剪函数来迭代地减少先验项的数目,直到不再剩余任何先验项要修剪。然后,处理器可以选择给出最大DQM的具有多个先验项的配置来作为最优配置。例如,处理器可以将纯DQM(例如,AP、MAP或其他)用作成本函数来获得最大检测质量,而不考虑其他准则。例如,第一修剪函数可以采用以下形式:

t←Np

Pt←{1..Np}

P*←Pt

while t>1

Pt-1←prune1(Pt)

t←t-1

end

其中P*是找到的先验项配置。下面关于图3更详细地描述该第一修剪函数的示例。

在一些示例中,处理器还可以执行第二修剪函数以增加基于每秒浮点运算(floating point operations per second,FLOP)的DQM:

function Pt-1←prune2(Pt)

Pt-1←Pt\{p*}

其中FLOP(p)是计算针对第p个先验项的响应(例如,类别得分和边界框位置)所需的FLOP。在一些示例中,处理器可以重复修剪过程,直到达到给定的FLOP*为止。例如,第二修剪函数可以采用以下形式:

t←Np

Pt←{1..Np}

while FLOP(Pt)>FLOP*

Pt-1←prune2(Pt)

t←t-1

end

在查找使用最小先验项浮点运算(FLOP)的最优配置的情况下,处理器可以使用除DQM之外的其他准则。例如,代替使用纯DQM,处理器可以将DQM增加量与FLOP的比率用于修剪先验项。

在一些示例中,处理器还可以使用一个或多个增长阶段来生成改进的先验项的集合。例如,处理器可以以具有t个先验项的先验项配置Pt开始示例增长阶段,并通过添加尚未用在Pt中的最有用的先验项来产生具有t+1个先验项的配置Pt+1。然后,类似于上面讨论的修剪阶段,处理器可以使用一个或多个准则。例如,第一准则可以基于纯DQM,并且应用在如下情况中:当将仅使用最大DQM而不担心计算成本时。在一些示例中,第二准则可以基于DQM/FLOP比率,并且使用在如下的示例中:当将以最小先验项FLOP计算最优DQM时。例如,处理器可以执行示例增长函数:

function Pt+1←grow1(Pt)

Pt+1←Pt∪{p*}

function Pt+1←grow2(Pt)

Pt+1←Pt∪{p*}

在一些示例中,处理器可以将修剪和增长阶段相组合以生成改进的先验项的集合。例如,代替在每次迭代中仅执行修剪函数,处理器可以以附加的增长步骤进行交替,以尝试找到更优的配置,从而从更优的点开始新的修剪。在一些示例中,可以将这样的迭代执行重复几次,直到达到预定义的迭代次数Ns为止。例如,处理器可以使用以下函数来迭代地修剪和增长先验项以生成先验项的集合:

prune-grow1a:

t←Np

Pt←{1..Np}

P*←Pt

while t>1

Pt-1←prune1(Pt)

s←Ns

while s>0

Pt←grow1(Pt-1)

Pt-1←prune1(Pt)

s←s-1

end

t←t-1

end

prune-grow2a:

t←Np

Pt←{1..Np}

while FLOP(Pt)>FLOP*

Pt-1←prune2(Pt)

s←Ns

while s>0

Pt-1←prune2(grow2(Pt-1))

s←s-1

end

t←t-1

end

其中P*是找到的先验项配置。在一些示例中,处理器可以通过以下操作来行进:修剪掉两个先验项,增长一个先验项,以及重复该过程直到预定次数的迭代被执行为止。在一些示例中,处理器可以从空集开始执行迭代的增长-修剪。在每次迭代中,处理器可以基于其添加到优化准则的值来将尚未使用的先验项添加到当前先验项的集合。例如,处理器可以使用以下示例函数来从空集执行迭代的增长-修剪:

grow-prune1b:

t←0

Pt←{}

P*←Pt

Pt+1←grow1(Pt)

s←Ns

while s>0

Pt←prune1(Pt+1)

Pt+1←grow1(Pt)

s←s-1

end

t←t+1

end

grow-prune2b:

t←0

Pt←{}

while FLOP(Pt)<FLOP*

Pt+1←grow2(Pt)

s←Ns

while s>0

Pt+1←grow2(prune2(Pt+1))

s←s-1

end

t←t+1

end

在一些示例中,处理器可以通过以下操作来从空集进行:迭代地增长两个先验项,然后修剪掉一个先验项,以及重复该过程预定次数。

在框124处,处理器对使用最佳先验项的集合122定义的检测器CNN进行训练。例如,具有由最佳先验项的集合122定义的框数、形状的CNN可以被进一步训练,以便估计诸如分类器和回归器权重之类的附加参数。在一些示例中,可以使用任何合适的CNN训练过程来估计分类器和回归器权重。然后可以将得到的经训练的经修剪检测器CNN 126用于检测将来的输入图像中的对象。

该过程流程图并不旨在指示示例过程100的框要以任何特定顺序执行,或者所有的框要被包括在每种情况中。此外,取决于具体实现方式的细节,在示例过程100内可以包括任意数目的未示出的附加框。

图2是示出了用于生成要修剪的先验项的集合的示例系统的框图。该示例系统通常由附图标记200表示,并且可以使用下面图4的方法400在下面图5的计算设备500中实现。

示例系统200包括卷积神经网络(CNN)204。CNN 204包括示例输入图像input_image 202和多个特征图,包括特征图1(FM1)206A、FM2206B、FM3 206C、FM4 206D、FM5206E、和FM6 206F。系统200还包括分别与特征图206A、206B、206C、206D、206E、和206F相关联的多个CNN响应208A、208B、208C、208D、208E、和208F。例如,响应208A、208B、208C、208D、208E、和208F可以包括类别得分和边界框位置。该系统还包括通信地耦合到CNN 204的存储装置210。例如,存储装置210可以进行存储。

如图2所示,处理器可以使用输入图像202发起在经训练的主干CNN204上的前向传递,该输入图像通过使用特征图206A-206F被处理。特征图206A-206F可以在前向传递期间生成对应的响应208A-208F。例如,响应208A-208F中的每一者可以包括针对每个特征图206A-206F中的每个单元的类别得分和边界框位置。

在一些示例中,训练样本以及相关联的类别得分和边界框可以被保存到存储装置210以供后续使用。例如,存储的响应可以用于迭代地修剪先验项,如下面在图3中所描述的。

图2的图并不旨在指示示例系统200要包括图2所示的所有组件。而是,示例系统200可以使用更少的或附加的未在图2中示出的组件(例如,附加的输入图像、卷积层、特征图、响应等)来实现。

图3是示出用于迭代地修剪来自先验项的集合的先验项的示例过程的流程图。示例过程通常由附图标记300表示,并且可以在下面的计算设备500中实现。

在框302处,处理器针对用于所有训练样本和所有先验项的所有对象置信度和边界框位置来访问存储装置。例如,对象置信度可以是针对所有训练样本针对每个先验项计算的类别得分。边界框位置可以是如上面图2中描述地生成的位置预测。

在框304处,处理器从存储装置中检索先验项的集合Pt。例如,先验项的集合可以是如上面图2中描述的冗余先验项的集合。

在框306处,处理器加载响应的集合R(Pt),该响应集合R(Pt)通过在经训练的CNN处的前向传递来生成。例如,经训练的CNN可以已经使用先验项的集合Pt进行了训练。在一些示例中,响应R(Pt)可以包括针对先验项的集合Pt中每个先验项的边界框形状、大小、和位置预测。在一些示例中,先验项响应中的一个或多个可能已被框320的一个或多个先前迭代禁用,如下面描述的。

在框308处,处理器将“未定义”的值赋值给子集P*。在一些示例中,处理器还将先验项的集合Pt赋值给新的子集P’。

在框310处,处理器通过以下操作来从子集P’中选择先验项p以测试Pt\{p}的性能:从子集P’中移除选择的先验项p并因此将P’\{p}赋值为P’的值。因此,可以说P’具有配置。例如,所移除的先验项p可以是与其他先验项相比不那么有用的先验项。在一些示例中,可以使用一个或多个检测质量度量来计算先验项的有用性。

在框312处,处理器在响应的集合上运行非极大值抑制(NMS),该响应的集合对应于没有先验项p的先验项的集合Pt(即,Pt\{p})。例如,响应的集合R(PT\{p})可以被过滤以生成响应的子集RNMS。如本文所使用的,RNMS(P)=NMS(R(P))是这样的非极大值抑制过程:其取整个R(P)结果并返回子集以仅保留具有本地最高类别得分的响应。例如,NMS过程可以以空的子集RNMS开始。然后,可以将R中具有最高置信度的响应放入RNMS中并将其从R中移除。接下来,将预测出与最佳响应的边界框相交的边界框的所有响应都从R中移除。可以重复此过程,直到R中没有响应剩下为止。在一些示例中,可以基于任务的类型执行其他种类的非极大值抑制。

在框314处,处理器在响应的子集RNMS上计算任何合适的检测质量度量(DQM),并将得到的DQM的值赋值给度量DQM’。

在框316处,如果p*是未定义的或DQM*<DQM’,则处理器将p赋值给p*并将DQM’赋值给DQM*。例如,最初可以向DQM*的值赋值来自测试的先验项配置的任何DQP*值。在一些示例中,DQM*的最终值可以是所有测试的先验项配置中的最大值。

在框318处,处理器确定先验项的子集P’是否为空。如果先验项的子集P’不为空,则该方法可以返回至框310。如果先验项的子集P’为空,则该方法可以行进至框320。

在框320处,处理器将Pt\{p*}的值赋值给配置Pt-1 322。然后,处理器可以输出配置Pt-1 322,以用于训练检测器CNN(例如,SSD对象检测器或类SSD的对象检测器CNN)。在一些示例中,处理器可以针对附加的迭代禁用一个或多个先验项响应。

该过程流程图不旨在指示示例过程300的框要以任何特定顺序执行,或者在每种情况中都要包括所有的框。此外,取决于具体实现方式的细节,任意数目的未示出的附加框可以被包括在示例过程300内。

图4是示出了用于使用迭代修剪来选择先验项的方法的流程图。该示例方法通常由附图标记400表示,并且可以使用上面图2的系统200、下面图5的计算设备500的处理器502、或下面图6的处理器602和计算机可读介质600来实现。

在框402处,处理器接收训练数据集。例如,训练数据集可以包括如下的图像集合:其具有一个或多个类别的一个或多个带注释对象。

在框404处,处理器基于训练数据集生成冗余先验项的集合。例如,处理器可以基于训练数据集定义先验项的冗余数目个形状,并将冗余数目个形状中的每个形状分配给一个或多个特征图以生成冗余先验项的集合。

在框406处,处理器使用冗余先验项的集合对检测CNN进行训练。得到的检测CNN可以是经训练的检测CNN。

在框408处,处理器将训练数据集的所有训练样本发送到经训练的检测CNN,并从经训练的检测CNN接收针对冗余先验项的集合中的所有冗余先验项的生成的响应。例如,生成的响应可以包括针对每个冗余先验项的类别得分、边界框位置、和大小预测。

在框410处,处理器基于这些响应选择冗余先验项的集合的子集。例如,处理器可以使用迭代增长和修剪的任意组合来选择冗余先验项的子集及其配置。在一些示例中,选择子集可以包括通过以下操作来基于子集计算检测质量度量:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果,并且基于最终检测结果来计算检测质量度量。例如,检测质量度量可以是平均精度度量、平均精度均值度量、未命中率、或任何其他合适的检测质量度量。在一些示例中,处理器可以迭代地基于检测质量度量从先验项的子集中修剪冗余先验项。在一些示例中,处理器可以迭代地基于检测质量度量将附加的先验项添加到先验项的子集。在一些示例中,处理器可以迭代地从先验项的子集修剪先验项和向先验项的子集添加先验项预定数目次。例如,处理器可以使用上面图1中描述的示例修剪-增长函数来迭代地修剪先验项以及向先验项的子集添加先验项。在一些示例中,处理器可以基于检测质量度量与浮点运算的比率来迭代地修剪先验项或向先验项的子集添加先验项。例如,处理器可以使用上面在图1中描述的第二修剪函数prune2(Pt)、第二增长函数grow2(Pt)、或增长-修剪函数prune-grow2a和grow-prune2b来迭代地修剪先验项或向先验项的子集添加先验项。在一些示例中,处理器可以从最初为空的集合开始增长先验项。例如,处理器可以以空集开始迭代地增长和修剪先验项,如上面在图1中讨论的函数grow-prune1b和grow-prune2b中那样。

在框412处,处理器基于所选择的先验项的子集来训练检测CNN以生成最终检测CNN。例如,最终检测CNN可用于检测从诸如摄像头之类的成像设备接收的图像中的一个或多个对象。

该过程流程图不旨在指示示例过程400的框要以任何特定顺序执行,或者在每种情况中都要包括所有的框。此外,取决于具体实现方式的细节,任意数目的未示出的附加框可以被包括在示例过程400内。

现在参考图5,示出了图示示例计算设备的框图,该示例计算设备可以使用迭代修剪来选择先验项。计算设备500可以是例如膝上型计算机、台式计算机、平板计算机、移动设备、或可穿戴设备等等。在一些示例中,计算设备500可以是智能设备或监视摄像头。在一些示例中,计算设备500可以是物联网(IoT)设备。计算设备500可以包括被配置为执行所存储的指令的中央处理单元(CPU)502,以及存储可由CPU 502执行的指令的存储器设备504。CPU502可以通过总线506耦合至存储器设备504。此外,CPU 502可以是单核处理器、多核处理器、计算集群、或任意数目的其他配置。此外,计算设备500可以包括一个以上的CPU 502。在一些示例中,CPU 502可以是具有多核处理器架构的片上系统(SoC)。在一些示例中,CPU502可以是用于图像处理的专用数字信号处理器(DSP)。存储器设备504可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、或任何其他合适的存储器系统。例如,存储器设备504可以包括动态随机存取存储器(DRAM)。

存储器设备504可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、或任何其他合适的存储器系统。例如,存储器设备504可以包括动态随机存取存储器(DRAM)。

计算设备500还可以包括图形处理单元(GPU)508。如图所示,CPU502可通过总线506耦合至GPU 508。GPU 508可以被配置为在计算设备500内执行任意数目的图形操作。例如,GPU 508可以被配置为呈现或操纵要显示给计算设备500的用户的图形图像、图形帧、视频等。

存储器设备504可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、或任何其他合适的存储器系统。例如,存储器设备504可以包括动态随机存取存储器(DRAM)。存储器设备504可以包括设备驱动510,设备驱动器510被配置为执行用于以下操作的指令:使用迭代修剪来生成所选择的先验项的集合。设备驱动510可以是软件、应用程序、应用代码等。

CPU 502还可以通过总线506连接到输入/输出(I/O)设备接口512,该接口被配置为将计算设备500连接到一个或多个I/O设备514。I/O设备514可以包括例如键盘和指点设备,其中指点设备可以包括触摸板或触摸屏等。I/O设备514可以是计算设备500的内置组件,或者可以是从外部连接到计算设备500的设备。在一些示例中,存储器504可以通过直接存储器存取(DMA)通信地耦合至I/O设备514。

CPU 502还可以通过总线506链接到显示接口516,该显示接口516被配置为将计算设备500连接到显示设备518。显示设备518可以包括显示屏,该显示屏作为计算设备500的内置组件。显示设备518还可以包括位于计算设备500的内部或从外部连接到计算设备500的计算机监视器、电视、或投影仪等。

计算设备500还包括存储设备520。存储设备520是物理存储器,例如硬盘驱动器、光盘驱动器、拇指驱动器、驱动器阵列、固态驱动器、或其任意组合。存储设备520还可以包括远程存储驱动器。

计算设备500还可以包括网络接口控制器(NIC)522。NIC 522可以被配置为通过总线506将计算设备500连接到网络524。网络524可以是广域网(WAN)、局域网(LAN)、或互联网等。在一些示例中,该设备可以通过无线技术与其他设备通信。例如,该设备可以经由无线局域网连接与其他设备通信。在一些示例中,该设备可以经由蓝牙或类似的技术与其他设备连接并通信。

计算设备500还包括卷积神经网络(CNN)检测器526。例如,CNN检测器526可以是单步多框检测器(SSD)或任何类SSD的对象检测器。

计算设备500还包括CNN检测器训练器528。例如,CNN检测器训练器528可以用于使用所选择的先验项的集合来训练CNN检测器。CNN检测器训练器528可以包括训练集接收器530、先验项生成器532、中间训练器534、得分及位置接收器536、子集选择器538、和最终训练器540。在一些示例中,CNN检测器训练器528的组件530-540中的每一者可以是微控制器、嵌入式处理器、软件模块、或其任意组合。训练集接收器530可以接收训练数据集。例如,训练数据集可以包括训练样本,这些训练样本包括带有标记对象的图像。先验项生成器532可以基于训练数据集来生成冗余先验项的集合。在一些示例中,先验项生成器532可以基于训练数据集来定义先验项的冗余数目个形状,并且将冗余数目个形状中的每个形状分配给一个或多个特征图以生成冗余先验项的集合。中间训练器534可以使用冗余先验项的集合来训练检测卷积神经网络(CNN)。得分及位置接收器536可以将训练数据集的所有训练样本发送到经训练的检测CNN,并接收针对冗余先验项的集合中的所有冗余先验项的响应。例如,响应可以包括针对冗余先验项的类别得分、边界框位置、和大小预测。子集选择器538可以基于响应从冗余先验项的集合中选择先验项的子集。在一些示例中,子集选择器538可以通过以下操作来基于子集计算检测质量度量:

在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果并基于最终检测结果来计算检测质量度量。例如,检测质量度量可以是平均精度度量、平均精度均值度量、未命中率、或任何其他合适的检测质量度量。在一些示例中,子集选择器538可以迭代地基于检测质量度量从先验项的子集中修剪冗余先验项。在一些示例中,子集选择器538可以迭代地基于检测质量度量将附加的先验项添加到先验项的子集。在一些示例中,子集选择器538可以迭代地从先验项的子集修剪先验项并将先验项添加到先验项的子集预定数目次,以选择先验项的子集。最终训练器540可以基于所选择的先验项的子集来训练检测CNN,以生成最终检测CNN。

图5的框图不旨在指示计算设备500要包括图5中所示的所有组件。而是,计算设备500可以包括更少的或附加的未在图5中示出的组件(例如,附加的缓冲器、附加的处理器等)。取决于具体实现方式的细节,计算设备500可以包括任意数目的图5中未示出的附加组件。此外,训练集接收器530、先验项生成器532、中间训练器534、得分及位置接收器536、子集选择器538、和最终训练器540的任何功能可以部分地或全部地实现在硬件和/或处理器502中。例如,功能可以用专用集成电路来实现,可以以在处理器502中实现的逻辑来实现,或可以实现在任何其他设备中。另外,CPU 502的任何功能可以部分地或全部地实现在硬件和/或处理器中。例如,CNN检测器训练器528的功能可以用专用集成电路来实现,可以以在处理器中实现的逻辑来实现,可以以在诸如GPU 508之类的专用图形处理单元中实现的逻辑来实现,或可以实现在任何其他设备中。

图6是示出存储用于使用迭代修剪来选择先验项的代码的计算机可读介质600的框图。处理器602可以通过计算机总线604来访问计算机可读介质600。此外,计算机可读介质600可以包括被配置为指导处理器602执行本文描述的方法的代码。在一些实施例中,计算机可读介质600可以是非暂态计算机可读介质。在一些示例中,计算机可读介质600可以是存储介质。

本文讨论的各种软件组件可以存储在一个或多个计算机可读介质600上,如图6所示。例如,训练集接收器模块606可以被配置为接收训练数据集。先验项生成器模块608可以被配置为基于训练数据集来生成冗余先验项的集合。在一些示例中,先验项生成器模块608可以被配置为基于训练数据集来定义先验项的冗余数目个形状。先验项生成器模块608可以被配置为然后将冗余数目个形状中的每个形状分配给一个或多个特征图,以生成冗余先验项的集合。中间训练器模块610可以被配置为使用冗余先验项的集合来对检测CNN进行训练。得分及位置接收器模块612可以被配置为将训练数据集的所有训练样本发送到经训练的检测CNN,并从经训练的检测CNN接收针对冗余先验项的集合中的所有冗余先验项的生成的响应。例如,响应可以包括针对冗余先验项的类别得分、边界框位置、和大小预测。子集选择器模块614可以被配置为基于响应来选择冗余先验项的集合的子集。例如,子集选择器模块614可以被配置为通过以下操作来基于子集计算检测质量度量:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果并基于最终检测结果来计算检测质量度量。例如,检测质量度量可以是平均精度均值度量、平均精度均值、未命中率、或其任意组合。在一些示例中,子集选择器模块614可以被配置为迭代地基于检测质量度量从先验项的子集修剪冗余先验项。在一些示例中,子集选择器模块614可以被配置为迭代地基于检测质量度量将附加的先验项添加到先验项的子集。在一些示例中,子集选择器模块614可以被配置成迭代地从先验项的子集修剪先验项并将先验项添加到先验项的子集预定数目次。在一些示例中,子集选择器模块614可以被配置为基于检测质量度量与浮点运算的比率来迭代地修剪先验项或将先验项添加到先验项的子集。最终训练器模块616可以被配置为基于所选择的先验项的子集来训练检测CNN,以生成最终检测CNN。在一些示例中,然后可以使用最终检测CNN来检测接收到的图像中的对象。

图6的框图不旨在指示计算机可读介质600要包括图6中所示的所有组件。此外,取决于具体实现方式的细节,计算机可读介质600可以包括任意数目的未在图6中示出的附加组件。

示例

示例1是一种用于选择先验项的装置。该装置包括训练集接收器,用于接收训练数据集。该装置还包括先验项生成器,用于基于训练数据集来生成冗余先验项的集合。该装置还包括中间训练器,用于使用冗余先验项的集合来对检测卷积神经网络(CNN)进行训练。该装置还包括得分及位置接收器,用于将训练数据集的全部训练样本发送到经训练的检测CNN,并接收针对冗余先验项的集合中的全部冗余先验项的响应。该装置还包括子集选择器,用于基于响应来从冗余先验项的集合中选择先验项的子集。

示例2包括示例1的装置,包括或不包括可选特征。在该示例中,该装置包括最终训练器,用于基于所选择的先验项的子集来训练检测CNN,以生成最终检测CNN。

示例3包括示例1至2中任一项的装置,包括或不包括可选特征。在该示例中,子集选择器用于通过以下操作来基于子集计算检测质量度量:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果,并基于最终检测结果来计算检测质量度量。

示例4包括示例1至3中任一项的装置,包括或不包括可选特征。在该示例中,检测质量度量包括平均精度度量、平均精度均值、未命中率、或其任意组合。

示例5包括示例1至4中任一项的装置,包括或不包括可选特征。在该示例中,先验项生成器用于基于训练数据集来定义先验项的冗余数目个形状,并将冗余数目个形状中的每个形状分配给一个或多个特征图,以生成冗余先验项的集合。

示例6包括示例1至5中任一项的装置,包括或不包括可选特征。在该示例中,响应包括类别得分、边界框位置、和大小预测。

示例7包括示例1至6中任一项的装置,包括或不包括可选特征。在该示例中,子集选择器用于迭代地基于检测质量度量从先验项的子集修剪冗余先验项。

示例8包括示例1至7中任一项的装置,包括或不包括可选特征。在该示例中,子集选择器用于迭代地基于检测质量度量将附加的先验项添加到先验项的子集。

示例9包括示例1至8中任一项的装置,包括或不包括可选特征。在该示例中,子集选择器用于迭代地进行预定数目次的以下操作以选择先验项的子集:从先验项的子集修剪先验项并向先验项的子集添加先验项。

示例10包括示例1至9中任一项的装置,包括或不包括可选特征。在该示例中,检测CNN包括类单步多框检测器(SSD)的对象检测器。

示例11是一种用于选择先验项的方法。该方法包括经由处理器接收训练数据集。该方法还包括经由处理器基于训练数据集来生成冗余先验项的集合。该方法还包括经由处理器使用冗余先验项的集合来对检测CNN进行训练。该方法还包括经由处理器将训练数据集的全部训练样本发送到经训练的检测CNN,并接收针对冗余先验项的集合中的全部冗余先验项生成的响应。该方法还包括经由处理器基于响应来从冗余先验项的集合中选择先验项的子集。

示例12包括示例11的方法,包括或不包括可选特征。在该示例中,该方法包括:经由处理器基于所选择的先验项的子集来训练检测CNN,以生成最终检测CNN。

示例13包括示例11至12中任一项的方法,包括或不包括可选特征。在该示例中,选择先验项的子集包括通过以下操作来基于子集计算检测质量度量:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果,并基于最终检测结果来计算检测质量度量。

示例14包括示例11至13中任一项的方法,包括或不包括可选特征。在该示例中,检测质量度量包括平均精度度量、平均精度均值、未命中率、或其任意组合。

示例15包括示例11至14中任一项的方法,包括或不包括可选特征。在该示例中,基于训练数据集生成冗余先验项的集合包括:基于训练数据集来定义先验项的冗余数目个形状,并将冗余数目个形状中的每个形状分配给一个或多个特征图以生成冗余先验项的集合。

示例16包括示例11至15中任一项的方法,包括或不包括可选特征。在该示例中,响应包括针对冗余先验项中的每一者的类别得分、边界框位置、和大小预测。

示例17包括示例11至16中任一项的方法,包括或不包括可选特征。在该示例中,选择先验项的子集包括:迭代地基于检测质量度量从先验项的子集修剪冗余先验项。

示例18包括示例11至17中任一项的方法,包括或不包括可选特征。在该示例中,选择先验项的子集包括:迭代地基于检测质量度量将附加的先验项添加到先验项的子集。

示例19包括示例11至18中任一项的方法,包括或不包括可选特征。在该示例中,选择先验项的子集包括迭代地进行预定数目次的以下操作:从先验项的子集修剪先验项并向先验项的子集添加先验项。

示例20包括示例11至19中任一项的方法,包括或不包括可选特征。在该示例中,选择先验项的子集包括:迭代地基于检测质量度量与浮点运算的比率来修剪先验项或将先验项添加到先验项的子集。

示例21是至少一种用于选择先验项的计算机可读介质,其中存储有指令。该计算机可读介质包括指导处理器进行以下操作的指令:接收训练数据集。该计算机可读介质还包括指导处理器进行以下操作的指令:基于训练数据集来生成冗余先验项的集合。该计算机可读介质还包括指导处理器进行以下操作的指令:使用冗余先验项的集合来对检测CNN进行训练。该计算机可读介质还包括指导处理器进行以下操作的指令:将训练数据集的全部训练样本发送到经训练的检测CNN,并从经训练的检测CNN接收针对冗余先验项的集合中的全部冗余先验项的生成的类别得分、边界框位置、和大小预测。该计算机可读介质还包括指导处理器进行以下操作的指令:基于类别得分、边界框位置、和大小预测来选择冗余先验项的集合的子集。该计算机可读介质还包括指导处理器进行以下操作的指令:基于所选择的先验项的子集来训练检测CNN,以生成最终检测CNN。

示例22包括示例21的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于通过以下操作来基于子集计算检测质量度量的指令:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果,并基于最终检测结果来计算检测质量度量。

示例23包括示例21至22中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,检测质量度量包括平均精度均值度量、平均精度均值、未命中率、或其任意组合。

示例24包括示例21至23中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于进行以下操作的指令:基于训练数据集来定义先验项的冗余数目个形状。

示例25包括示例21至24中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于进行以下操作的指令:将冗余数目个形状中的每个形状分配给一个或多个特征图以生成冗余先验项的集合。

示例26包括示例21至25中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,响应包括针对冗余先验项中的每一者的类别得分、边界框位置、和大小预测。

示例27包括示例21至26中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于进行以下操作的指令:迭代地基于检测质量度量从先验项的子集修剪冗余先验项。

示例28包括示例21至27中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于进行以下操作的指令:迭代地基于检测质量度量将附加的先验项添加到先验项的子集。

示例29包括示例21至28中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于迭代地进行预定数目次的以下操作的指令:从先验项的子集修剪先验项并向先验项的子集添加先验项。

示例30包括示例21至29中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,该计算机可读介质包括用于进行以下操作的指令:迭代地基于检测质量度量与浮点运算的比率来修剪先验项或将先验项添加到先验项的子集。

示例31是一种用于选择先验项的系统。该系统包括训练集接收器,用于接收训练数据集。该系统还包括先验项生成器,用于基于训练数据集来生成冗余先验项的集合。该系统还包括中间训练器,用于使用冗余先验项的集合来对检测卷积神经网络(CNN)进行训练。该系统还包括得分及位置接收器,用于将训练数据集的全部训练样本发送到经训练的检测CNN,并接收针对冗余先验项的集合中的全部冗余先验项的响应。该系统还包括子集选择器,用于基于响应来从冗余先验项的集合中选择先验项的子集。

示例32包括示例31的系统,包括或不包括可选特征。在该示例中,系统包括最终训练器,用于基于所选择的先验项的子集来训练检测CNN,以生成最终检测CNN。

示例33包括示例31至32中任一项的系统,包括或不包括可选特征。在该示例中,子集选择器用于通过以下操作来基于子集计算检测质量度量:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果并基于最终检测结果来计算检测质量度量。

示例34包括示例31至33中任一项的系统,包括或不包括可选特征。在该示例中,检测质量度量包括平均精度度量、平均精度均值、未命中率、或其任意组合。

示例35包括示例31至34中任一项的系统,包括或不包括可选特征。在该示例中,先验项生成器用于基于训练数据集来定义先验项的冗余数目个形状,并将冗余数目个形状中的每个形状分配给一个或多个特征图,以生成冗余先验项的集合。

示例36包括示例31至35中任一项的系统,包括或不包括可选特征。在该示例中,响应包括类别得分、边界框位置、和大小预测。

示例37包括示例31至36中任一项的系统,包括或不包括可选特征。在该示例中,子集选择器用于迭代地基于检测质量度量从先验项的子集修剪冗余先验项。

示例38包括示例31至37中任一项的系统,包括或不包括可选特征。在该示例中,子集选择器迭代地基于检测质量度量将附加的先验项添加到先验项的子集。

示例39包括示例31至38中任一项的系统,包括或不包括可选特征。在该示例中,子集选择器用于迭代地进行预定数目次的以下操作以选择先验项的子集:从先验项的子集修剪先验项并向先验项的子集添加先验项。

示例40包括示例31至39中任一项的系统,包括或不包括可选特征。在该示例中,检测CNN包括类单步多框检测器(SSD)的对象检测器。

示例41是一种用于选择先验项的系统。该系统包括用于接收训练数据集的构件。该系统还包括用于基于训练数据集来生成冗余先验项的集合的构件。该系统还包括用于使用冗余先验项的集合来对检测卷积神经网络(CNN)进行训练的构件。该系统还包括用于将训练数据集的全部训练样本发送到经训练的检测CNN并接收针对冗余先验项的集合中的全部冗余先验项的响应的构件。该系统还包括用于基于响应来从冗余先验项的集合中选择先验项的子集的构件。

示例42包括示例41的系统,包括或排除可选特征。在该示例中,系统包括用于基于所选择的先验项的子集来训练检测CNN以生成最终检测CNN的构件。

示例43包括示例41至42中任一项的系统,包括或不包括可选特征。在该示例中,用于选择先验项的子集的构件用于通过以下操作来基于子集计算检测质量度量:在来自先验项的子集的响应上运行非极大值抑制以生成最终检测结果,并基于最终检测结果来计算检测质量度量。

示例44包括示例41至43中任一项的系统,包括或不包括可选特征。在该示例中,检测质量度量包括平均精度度量、平均精度均值、未命中率、或其任意组合。

示例45包括示例41至44中任一项的系统,包括或不包括可选特征。在该示例中,用于生成冗余先验项的集合的构件用于基于训练数据集来定义先验项的冗余数目个形状,并将冗余数目个形状中的每个形状分配给一个或多个特征图,以生成冗余先验项的集合。

示例46包括示例41至45中任一项的系统,包括或不包括可选特征。在该示例中,其中,响应包括类别得分、边界框位置、和大小预测。

示例47包括示例41至46中任一项的系统,包括或不包括可选特征。在该示例中,用于选择先验项的子集的构件用于迭代地基于检测质量度量从先验项的子集修剪冗余先验项。

示例48包括示例41至47中任一项的系统,包括或不包括可选特征。在该示例中,用于选择先验项的子集的构件用于迭代地基于检测质量度量将附加的先验项添加到先验项的子集。

示例49包括示例41至48中任一项的系统,包括或不包括可选特征。在该示例中,用于选择先验项的子集的构件用于迭代地进行预定数目次的以下操作以选择先验项的子集:从先验项的子集修剪先验项并向先验项的子集添加先验项。

示例50包括示例41至49中任一项的系统,包括或不包括可选特征。在该示例中,检测CNN包括类单步多框检测器(SSD)的对象检测器。

并非本文描述和图示的所有组件、特征、结构、特性等都需要被包括在一个或多个特定的方面中。如果说明书陈述了例如组件、特征、结构、或特性“可以”、“可能”、“可”或“能够”被包括,则不要求该特定的组件、特征、结构、或特性被包括。如果说明书或权利要求书提及“一”或“某”元素,则这不意味着仅存在一个元素。如果说明书或权利要求书提及“附加”元素,则这不排除存在一个以上的附加元素。

要注意的是,尽管已经参考特定实现方式描述了一些方面,但是根据一些方面,其他实现方式也是可能的。另外,附图中图示和/或本文描述的电路元件或其他特征的布置和/或顺序不需要以所图示和描述的特定方式来布置。根据一些方面,许多其他布置也是可能的。

在图中所示的每个系统中,元素在某些情况下可以各自具有相同的附图标记或不同的附图标记,以表明所表示的元素可以是不同的和/或相似的。然而,元素可以足够灵活以具有不同的实现方式并且可以与本文示出或描述的一些或全部系统一起工作。附图中所示的各种元素可以是相同的或不同的。哪个元素被称为第一元素以及哪个元素被称为第二元素是任意的。

应该理解,在一个或多个方面的任何地方都可以使用前述示例中的细节。例如,还可关于本文描述的方法或计算机可读介质来实现以上描述的计算设备的所有可选特征。此外,尽管流程图和/或状态图在本文中已被用于描述各方面,但是技术不限于那些图或本文中的相应描述。例如,流程不必经过每个图示的框或状态或者以与本文图示和描述的完全相同的顺序进行。

本技术不限于本文列出的特定细节。实际上,受益于本公开的本领域技术人员将理解,可以在本技术的范围内对前述描述和附图进行许多其他变型。因此,本技术的范围是由包括了对其的任何修改的所附权利要求来限定的。

25页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:使用神经网络

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!