一种目标对象检测方法、装置、电子设备及存储介质
技术领域
本申请涉及目标检测领域,尤其涉及一种目标对象检测方法、装置、电子设备及存储介质。
背景技术
在畜牧业中,随着养殖规模的增大,人工巡检以及喂料,已经无法满足当前的需求,以养鸡企业为例,随着养鸡规模的日益扩大,目前鸡场中通常都设有料线,料线上设有料车,通过料车定时喂料。但采用料车进行喂料时,人工无法对鸡的健康情况进行监控,导致无法及时发现有疾病的鸡,容易造成疾病蔓延从而使鸡场面临损失。
为了解决上述的料车喂料无法发现病鸡的问题,可以在料车后面安装摄像头,料车撒料后通过摄像头采集图像进而根据图像采用目标检测方法对鸡只进行计数,因为每个笼子都有固定数目的鸡,所以如果根据计数结果发现少了一只或几只鸡,那么可能就是出现病鸡了,此时及时通知饲养员进行巡查,可以有效防止疾病的蔓延。
目前通过目标检测方法进行计数通常有基于检测的方法、基于回归的方法和基于密度图的方法,但是基于检测的方法通常适用于对稀疏的目标进行检测,而由于鸡笼空间狭小,鸡羽毛丰满等原因,使得鸡与鸡之间接触很近,遮掩严重,所以基于检测的方法不适用,而基于回归的方法通常用于对大数量的群体数量进行估计,准确率低,基于密度图的方法很容易将离的比较近或遮挡较严重的多个目标看成一个目标,导致最终检测到的鸡的数量不准确。
发明内容
为了解决现有目标检测方法检测数量不够准确的技术问题,本申请提供了一种目标对象检测方法、装置、电子设备及存储介质。
第一方面,本申请提供了一种目标对象检测方法,包括:
获取待检测图像;
将所述待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图;
根据所述特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。
在一种可能的实现方式中,所述目标图像语义分割模型包括编码器和解码器,所述编码器由多个依次连接的密集块和相邻两个密集块之间的过渡层组成;
将所述待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图,包括:
将所述待检测图像作为输入数据输入到所述编码器中的第一个密集块;
所述编码器中的密集块对输入该密集块的输入数据进行特征提取,并将提取的特征通过与下一个密集块之间的过渡层进行下采样后输入到下一个密集块,将所述编码器中最后一个密集块输出的特征作为所述编码器的输出数据;
将所述编码器的输出数据输入所述解码器;
所述解码器对输入的特征进行上采样,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图。
在一种可能的实现方式中,所述密集块包含多个密集层;
所述编码器中的密集块对输入该密集块的输入数据进行特征提取,包括:
所述密集块中的第一个密集层对输入所述密集块的输入数据进行特征提取;
除所述第一个密集层之外的其他密集层均以该密集层之前的所有密集层的输出数据作为输入数据进行特征提取;
将密集块中最后一个密集层提取的特征作为该密集块提取的特征。
在一种可能的实现方式中,在将所述编码器的输出数据输入所述解码器之前,所述方法还包括:
采用空洞空间卷积池化金字塔对所述编码器的输出数据进行融合处理,以对融合处理后的所述编码器的输出数据执行输入所述解码器的步骤。
在一种可能的实现方式中,根据所述特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置,包括:
采用轮廓检测函数对所述特征图进行检测,确定目标对象所在的区域,一个区域对应一个目标对象;
将区域的数量作为所述待检测图像中包含的目标对象的数量,确定各区域的位置分别为其对应的目标对象的位置。
在一种可能的实现方式中,所述特征图为0和1组成的二值图像,其中0表示填充值,1表示目标对象标注;
采用轮廓检测函数对所述特征图进行检测,确定目标对象所在的区域,包括:
采用轮廓检测函数对所述特征图中的目标对象标注进行检测,确定被0包围的1对应的区域为目标对象所在的区域。
第二方面,本申请实施例还提供了一种目标对象检测装置,包括:
获取模块,用于获取待检测图像;
特征图生成模块,用于将所述待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图;
检测模块,用于根据所述特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。
在一种可能的实现方式中,所述目标图像语义分割模型包括编码器和解码器,所述编码器由多个依次连接的密集块和相邻两个密集块之间的过渡层组成;
所述特征图生成模块,包括:
第一输入子模块,用于将所述待检测图像作为输入数据输入到所述编码器中的第一个密集块;
编码子模块,用于所述编码器中的密集块对输入该密集块的输入数据进行特征提取,并将提取的特征通过与下一个密集块之间的过渡层进行下采样后输入到下一个密集块,将最后一个密集块输出的特征作为所述编码器的输出数据;
第二输入子模块,用于将所述编码器的输出数据输入所述解码器;
解码子模块,用于所述解码器对输入的特征进行上采样,并输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图。
在一种可能的实现方式中,所述密集块包含多个密集层;
所述编码子模块具体用于:
所述密集块中的第一个密集层对输入所述密集块的输入数据进行特征提取;
除所述第一个密集层之外的其他密集层均以该密集层之前的所有密集层的输出数据作为输入数据进行特征提取;
将密集块中最后一个密集层提取的特征作为该密集块提取的特征。
在一种可能的实现方式中,所述特征图生成模块还包括:融合子模块;
所述融合子模块,用于在将所述编码器的输出数据输入所述解码器之前,采用空洞空间卷积池化金字塔对所述编码器的输出数据进行融合处理,以对融合处理后的所述编码器的输出数据执行输入所述解码器的步骤。
在一种可能的实现方式中,所述检测模块包括:
轮廓检测子模块,用于采用轮廓检测函数对所述特征图进行检测,确定目标对象所在的区域,一个区域对应一个目标对象;
确定子模块,用于将区域的数量作为所述待检测图像中包含的目标对象的数量,确定各区域的位置分别为其对应的目标对象的位置。
在一种可能的实现方式中,所述特征图为0和1组成的二值图像,其中0表示填充值,1表示目标对象标注;
所述轮廓检测子模块具体用于:
采用轮廓检测函数对所述特征图中的目标对象标注进行检测,确定被0包围的1对应的区域为目标对象所在的区域。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现第一方面所述目标对象检测方法。
第四方面,本申请实施例还提供了一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面所述目标对象检测方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的一种目标对象检测方法,获取待检测图像,将待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图,根据特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。本方案采用图像语义分割模型确定目标对象的数量和位置,因为图像语义分割模型是以卷积神经网络为基础建立的模型,所以相较于现有的目标对象检测方法,本方案提供的方法检测到的数量更加准确,并且因为图像语义分割模型输出的特征图的目标对象标注是像素级的,所以根据目标对象标注还可以确定目标对象的位置。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种目标对象检测方法的流程图;
图2为本申请实施例提供的一种样本图像的示意图;
图3为本申请实施例提供的一种图像语义分割模型的结构示意图;
图4为本申请实施例提供的一种S12的实现流程示意图;
图5为本申请实施例提供的一种密集卷积网络的示意图;
图6为本申请实施例提供的一种密集块的结构示意图;
图7为本申请实施例提供的一种ASPP的示意图;
图8为本申请实施例提供的一种目标对象检测装置的框图;
图9为本申请实施例提供的一种电子设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
图像语义分割的目的在于标记图像中每一个像素,并将每一个像素与其表示的类别对应起来,图像经过图像语义分割后会生成对应的特征图,也就是掩膜(mask),掩膜指的是图像标注的类别矩阵。
一个通用的图像语义分割体系结构可以被广泛认为是一个编码器网络和一个解码器网络:
编码器网络通常是一个预先训练好的卷积神经网络。
解码器的任务是将编码器学习到的识别特征(低分辨率)语义投影到像素空间(高分辨率)上,得到密集的分类。
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deeplearning)的代表算法之一。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariantclassification),因此也被称为“平移不变人工神经网络(Shift-Invariant ArtificialNeural Networks,简称SIANN)”。卷积神经网络仿造生物的视知觉(visual perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求。
密集卷积网络(Densely connected convolutional networks,简写为DenseNet),也称为密集连接的卷积网络,密集卷积网络由多个密集连接的密集块和相邻密集块之间的过渡层组成,例如图5所示。密集块主要执行特征提取,过渡层(即TransitionLayer)执行卷积和合并也就是下采样。其中密集块由多个密集层组成,每个密集层的输入都是前面所有密集层的拼接,例如图6所示一个密集块中包含5个密集层。其中过渡层由卷积层,池化层,Relu(Rectified Linear Unit,修正线性单元)激活函数和BN(batchnormalization,批量归一化)层等组成,其中卷积层可以为1×1的卷积层,卷积层可以根据预先设定的压缩系数(0-1之间)来压缩原来的通道数(即channel数),以减小参数,平均池化层可以为2×2平均池化层。
空洞空间卷积池化金字塔(Atrous Spatial Pyramid Pooling,简称ASPP),对所给定的输入以不同采样率的空洞卷积并行采样,相当于以多个比例捕捉图像的上下文,如图7所示,ASPP的Concat包括1个1×1卷积,3个3×3空洞卷积还有pooled image feature,其中空洞卷积的rate表示空洞间隔的跨度,每个卷积核都有256个且都有BN层。
为了解决背景技术中提及的问题,根据本申请实施例的一个方面,提供了一种目标对象检测方法的实施例,其中目标对象为用户想要检测出来的对象,根据用户的需求确定,如图1所示,该方法可以包括如下步骤:
S11.获取待检测图像。
可以通过图像采集装置采集待检测图像,比如通过相机采集待检测图像。
S12.将所述待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图。
在执行S12之前,需要先获取预先训练好的与目标对象对应的目标图像语义分割模型,因为图像语义分割模型通常是用来将某一对象从图像中分割出来的,所以一般一个图像语义分割模型会对应一种对象。
在一实施例中,可以预先设置模型库,模型库中包含多个预先训练好的图像语义分割模型,每个图像语义分割模型都设有对象标签,对象标签用于与目标对象的关键词/名称进行匹配,例如对象标签为“鸡”,则其对应的对象就是鸡,若对象标签为“猫”,则其对应的对象的就是猫。
在一个例子中,在获取目标图像语义分割模型时,可以先确定与目标对象对应的关键词/名称,其中关键词/名称可以由用户输入,将目标对象的关键词/名称与模型库中各图像语义分割模型的对象标签进行匹配,将对象标签与目标对象的关键词/名称相匹配的图像语义分割模型作为目标图像语义分割模型,通过此种方式可以很方便地获取到目标图像语义分割模型。
在一实施例中,目标图像语义分割模型还可以通过用户输入的方式获取,即在进行目标对象检测时,将用户输入的图像语义分割模型作为目标图像语义分割模型,通过此种方式,用户可以自主选取最合适的模型作为目标图像语义分割模型,保证了最终结果的准确性。
当然除了上述两种方式,还可以采用其他方式获取目标图像语义分割模型,此处不再一一赘述。
在本实施例中,目标图像语义分割模型可以采用下述步骤进行训练:
步骤1:获取包含目标对象的样本图像集。
步骤2:为样本图像添加目标对象标注。
因为本申请的目的是识别出目标对象的数量和位置,所以无需识别目标对象的整体,只需识别出目标对象的一部分即可,无需识别出目标对象的整体,所以只需对目标对象的一部分进行标注就可以,而且若对对象整体进行标注的话有可能会导致最终得到的目标对象的数量不准确,因为图像中包含多个目标对象时,多个目标对象之间有可能会距离很近或存在重叠,就是有的目标对象的一部分被其他目标对象遮挡了,这就使得若目标图像语义分割模型是利用对目标对象整体进行了标注的样本图像训练得到的,则可能会导致将多个距离很近或存在遮挡的目标对象识别成一个,从而导致最终的目标对象的数量和位置不准确。
在一个例子中,在添加标注时,只对目标对象的一部分进行标注,例如目标对象为鸡头,样本图像是包含鸡头的图像,则在为样本图像添加目标对应标注时,可以只在鸡头上选取一小块区域进行目标对象标注,例如图2是通过设置在料车后面的摄像头采集到的鸡在吃食时的图像,将图2作为样本图像,在进行标注时可以只对鸡头的位置标注一个点即可(例如图2所示的鸡头上的圆形区域),该点既包含了位置信息也包含了计数信息无需对整个鸡头进行标注,所以此种标注方式更加简单、方便,减少了标注的工作量且节省了时间。
在一个例子中,为了提高最终确定的目标对象数量的准确性,避免将多个距离太近或有重叠部分的对象识别成一个对象,在进行标注时选取没有重叠和遮挡的部位进行标注。
步骤3:利用添加了目标对象标注的样本图像集对构建的初始语义分割模型进行训练,将训练后的模型作为目标图像语义分割模型。
其中初始语义分割模型可以是Deeplab V3+、U-Net、FCN、PSPNet等模型。
语义分割模型的训练方法为现有方法,此处不再赘述。
训练得到目标图像语义分割模型后根据目标对象为目标图像语义分割模型设置对象标签,并将添加了对象标签的目标图像语义分割模型存储到模型库中,方便随时取用。
在一实施例中,将目标图像语义分割模型存储到模型库中后,若对目标图像语义分割模型进行了更新,则将更新后的目标图像语义分割模型存储到模型库中,并将之前存储的未更新的目标图像语义分割模型筛除,保证模型库中的图像语义分割模式始终是最新的。
将待检测图像输入到图像语义分割模型后,会输出待检测图像对应的特征图,其中特征图是对待检测图像中的每个像素点添加标注后的图像,对目标对象对应的像素点添加目标对象标注,对其他像素点添加填充值,例如目标对象标注可以为1,填充值可以为0,至于将待检测图像输入到图像语义分割模型后是如何得到特征图的,在下文中结合附图进行说明,这里先不详述。
S13.根据所述特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。
图像语义分割模型的输出是特征图,也就是mask图,mask图中包含目标对象标注,根据目标对象标注就可以将待检测图像中的目标对象与其他内容区分开,从而可以根据目标对象标注确定目标对象的数量和位置。至于是如何根据目标对象标注确定目标对象的数量和位置的,在下文中进行说明,这里先不详述。
本申请实施例提供的一种目标对象检测方法,获取待检测图像,将待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图,根据特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。本方案采用图像语义分割模型确定目标对象的数量和位置,因为图像语义分割模型是以卷积神经网络为基础建立的模型,所以相较于现有的目标对象检测方法,本方案提供的方法检测到的数量更加准确,并且因为图像语义分割模型输出的特征图的目标对象标注是像素级的,所以根据目标对象标注还可以确定目标对象的位置。
以上从整体上对本申请实施例提供的目标对象检测方法进行了说明,下面以具体实施例对上述S12-S13做进一步的解释说明,实施例并不构成对本申请实施例的限定。
首先,结合附图以具体实施例对上述S12作进一步的解释说明:
本申请实施例的图像语义分割模型为编码器-解码器结构,例如图3所示。其中编码器主要负责对待检测图像进行特征提取和下采样,解码器主要负责对编码器的输出进行上采样从而得到待检测图像的特征图,其中编码器为预先训练好的密集卷积网络即DenseNet,上面以对DenseNet的结构进行了描述,此处不再赘述。
参加图4,为本申请实施例提供的一种S12的实现流程,该流程可以包括如下步骤:
S121.将所述待检测图像作为输入数据输入到所述编码器中的第一个密集块。
S122.所述编码器中的密集块对输入该密集块的输入数据进行特征提取,并将提取的特征通过与下一个密集块之间的过渡层进行下采样后输入到下一个密集块,将最后一个密集块输出的特征作为所述编码器的输出数据,并输入到所述解码器。
一个编码器中会包含多个密集块,第一个密集块以待检测图像为输入,其余密集块就以其前一个密集块的输出经过过渡层下采样后的数据为输入。
在一实施例中,一个密集块包含多个密集层;
所述编码器中的密集块对输入该密集块的输入数据进行特征提取,包括如下步骤:
步骤1:所述密集块中的第一个密集层对输入所述密集块的输入数据进行特征提取。
步骤2:除所述第一个密集层之外的其他密集层均以该密集层之前的所有密集层的输出数据作为输入数据进行特征提取。
步骤3:将密集块中最后一个密集层提取的特征作为该密集块提取的特征。
S123.将所述编码器的输出数据输入所述解码器。
S124.所述解码器对输入的特征进行上采样,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图。
在一实施例中,可以利用双线性插值进行上采样,除了双线性插值还可以采用最近邻插值、均值插值,中值插值等方法进行上采样,上述上采样的方式均为现有成熟技术,所以对于上采样的具体流程本实施例不再赘述。
尺寸相同就是长和宽都相同,例如待检测图像为1280x720x3的一个3通道彩色图像,则输出的特征图就是一个1280x720x1的mask结果。
在一实施例中,为了提高特征图的准确性,在S123之前,还包括:
采用空洞空间卷积池化金字塔对所述编码器的输出数据进行融合处理,对融合处理后的所述编码器的输出数据执行输入所述解码器的步骤。
在一实施例中,还包括:采用空洞空间卷积池化金字塔对编码器的输出数据进行融合后,融合后的数据再经过1个1×1卷积后再输入解码器,通过对编码器的输出数据进行融合提高了最后得到的特征图的准确度。
在一实施例中,数据的融合处理也可以在上采样的过程中进行,比如解码器需要进行4次上采样,则可以对第一次、第二次或第三次上采样后的得到的数据采用空洞空间卷积池化金字塔对数据进行融合处理。
在本实施例中,图像语义分割模型采用密集卷积网络作为主干网络,密集卷积网络这种密集的连接模式与传统的卷积网络相比,体积更小,减轻了梯度消失问题,增强了特征传播,鼓励功能重用,需要更少的参数,因为它不需要重新学习冗余的特征图。
本申请实施例提供的一种S13的实现方法可以包括以下步骤:
步骤1:采用轮廓检测函数对所述特征图进行检测,确定目标对象所在的区域,一个区域对应一个目标对象。
在一实施例中,特征图是由目标对象标注和填充值组成的二值图像,例如填充值为0,目标对象标注为1,而特征图就是0和1组成的二值图像也就是一个0/1矩阵,当然除了0和1填充值和目标对象标注还可以是其他不同的数值,此处不再一一列举。
采用轮廓检测函数对所述特征图进行检测,确定目标对象所在的区域,可以包括:
采用轮廓检测函数对所述特征图中的目标对象标注进行检测,确定被0包围的1对应的区域为目标对象所在的区域。
需要注意的是,所述包围并不一定是四面包围,也可以是三面包围或两面包围,只要一个1所组成的区域周围除了0之外没有其他数字,就确定该区域是被0包围的。
其中轮廓检测函数可以为cv2.findContours函数,也可以为其他可以进行轮廓检测的函数。
在一实施例中,因为特征图中所有的目标对象都是采用同样的目标对象标注,例如1,不便于区分,因此在采用轮廓检测函数对所述特征图进行检测时,可以按照每个区域被检测出的先后顺序,对检测到的区域添加不同标注,比如第一个检测到的区域提交标注“1”,第二个检测到的区域添加标注“2”,第三个检测到的区域添加标注“3”,以此类推,每检测到一个区域标注的数字就加1,这样最后根据最大的标注数字就可以确定区域的数量,比如待检测图像中的区域全部检测完后,所有区域中最大的标注为“5”,则确定该待检测图像中共有5个区域,其中为区域添加标注也可以为在区域确定后对区域中的目标对象标注进行替换,不同的区域采用不同的目标对象标注。
一个例子中,例如特征图是如下所示的0/1矩阵:
[0,1,1,0,0,0,0,0,0;
0,1,1,0,0,0,0,0,0;
0,1,0,0,0,1,1,1,0;
0,0,0,0,1,1,1,0,0;
0,0,0,0,0,1,0,0,0;
0,1,0,1,1,0,0,0,0;
1,1,0,1,1,0,1,1,0;
0,1,0,1,1,0,1,1,0;
0,0,0,0,0,1,1,0,0]
采用轮廓检测函数对上述特征图进行检测,可以得到5个被0包围的区域,按照每个区域被检测出的顺序对每个区域用不同的数字进行标注后得到如下矩阵:
[0,4,4,0,0,0,0,0,0;
0,4,4,0,0,0,0,0,0;
0,4,0,0,0,1,1,1,0;
0,0,0,0,1,1,1,0,0;
0,0,0,0,0,1,0,0,0;
0,2,0,5,5,0,0,0,0;
2,2,0,5,5,0,3,3,0;
0,2,0,5,5,0,3,3,0;
0,0,0,0,0,3,3,0,0]
从上述矩阵可以看出,该特征图中共包含5个区域。
步骤2:将区域的数量作为所述待检测图像中包含的目标对象的数量,确定各区域的位置分别为其对应的目标对象的位置。
即通过步骤1检测到多少个区域就确定待检测图像包含多少个目标对象,例如特征图包含5个区域,则特征图对应的待检测图像就包含5个目标对象。
因为特征图是对待检测图像中的每个像素点进行标注后的图像,所以根据目标对象标注对应的像素点的位置可以确定出目标对象的位置。
一个具体的例子:
应用场景为对养鸡场中的鸡只进行计数,通过料车后面设置的摄像头采集鸡吃食时的图像,将采集的图像输入预先训练好的与鸡对应的目标图像语义分割模型中,输出一个0/1矩阵,利用轮廓检测函数对矩阵进行区域划分,划分出的区域个数就是目标对象也就是鸡的只数,每个区域的位置就是其对应的鸡的位置。
与前述目标对象检测方法的实施例相对应,本申请还提供目标对象检测装置的实施例。
参见图8,为本申请实施例提供的一种目标对象检测装置的实施例框图,该装置可以包括:获取模块801,特征图生成模块802,检测模块803。
其中,获取模块801,用于获取待检测图像;
特征图生成模块802,用于将所述待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图;
检测模块803,用于根据所述特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。
在一种可能的实现方式中,所述目标图像语义分割模型包括编码器和解码器,所述编码器由多个依次连接的密集块和相邻两个密集块之间的过渡层组成;
所述特征图生成模块802,可以包括如下子模块:
第一输入子模块,用于将所述待检测图像作为输入数据输入到所述编码器中的第一个密集块;
编码子模块,用于所述编码器中的密集块对输入该密集块的输入数据进行特征提取,并将提取的特征通过与下一个密集块之间的过渡层进行下采样后输入到下一个密集块,将最后一个密集块输出的特征作为所述编码器的输出数据;
第二输入子模块,用于将所述编码器的输出数据输入所述解码器;
解码子模块,用于所述解码器对输入的特征进行上采样,并输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图。
在一种可能的实现方式中,所述密集块包含多个密集层;
所述编码子模块具体用于:
所述密集块中的第一个密集层对输入所述密集块的输入数据进行特征提取;
除所述第一个密集层之外的其他密集层均以该密集层之前的所有密集层的输出数据作为输入数据进行特征提取;
将密集块中最后一个密集层提取的特征作为该密集块提取的特征。
在一种可能的实现方式中,所述特征图生成模块802还可以包括:融合子模块;
所述融合子模块,用于在将所述编码器的输出数据输入所述解码器之前,采用空洞空间卷积池化金字塔对所述编码器的输出数据进行融合处理,以对融合处理后的所述编码器的输出数据执行输入所述解码器的步骤。
在一种可能的实现方式中,所述检测模块803可以包括:
轮廓检测子模块,用于采用轮廓检测函数对所述特征图进行检测,确定目标对象所在的区域,一个区域对应一个目标对象;
确定子模块,用于将区域的数量作为所述待检测图像中包含的目标对象的数量,确定各区域的位置分别为其对应的目标对象的位置。
在一种可能的实现方式中,所述特征图为0和1组成的二值图像,其中0表示填充值,1表示目标对象标注;
所述轮廓检测子模块具体用于:
采用轮廓检测函数对所述特征图中的目标对象标注进行检测,确定被0包围的1对应的区域为目标对象所在的区域。
在本申请另一实施例中,还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信;
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现如下步骤:
获取待检测图像;
将所述待检测图像输入预先训练好的与目标对象对应的目标图像语义分割模型,输出尺寸与所述待检测图像的尺寸相同且包含目标对象标注的特征图;
根据所述特征图中包含的目标对象标注,确定所述待检测图像中包含的目标对象的数量及各目标对象的位置。
上述电子设备提到的通信总线904可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线904可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口902用于上述电子设备与其他设备之间的通信。
存储器903可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器901可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请另一实施例中,还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有目标对象检测方法程序,所述目标对象检测方法程序被处理器执行时实现上述任一所述的目标对象检测方法的步骤。
本发明实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。